Label Cloud

Showing posts with label Linux文摘. Show all posts
Showing posts with label Linux文摘. Show all posts

Sunday, March 1, 2009

Ubuntu中的Load/Unload Cycle Count问题及解决方案

本文转自LinuxTOY
说明:请大家注意,本文所描述的问题只有笔记本电脑才会出现。
1. 问题描述
  几周前收到soldiers童鞋的短信说,Ubuntu伤硬盘?我说没事,好多人都用呢。过了一周,soldiers童鞋又问,Ubuntu伤硬盘?我说我查查看….
安装smart参数查看工具,由此可以查看硬盘的smart信息
$ sudo apt-get install smartmontools
查看/dev/sda这块硬盘的smart参数, 你可能需要把/dev/sda这部分修改成你的硬盘设备地址
grep 193是只查看 Load Cycle Count这项
$ sudo smartctl -a /dev/sda grep 193
193 Load_Cycle_Count 0x0012 090 090 000 Old_age Always - 109989
  这样就可以看到Load/Unload Cycle Count数目了。用Windows的童鞋可以借助Everest工具,查看存储器->SMART信息,也可以找到相应项的数据。
  不看不知道,一看吓一跳,我的是华丽的11W!!! T.T 据说到了60W,就离挂掉不远了。我才用了4个月,算下来照这个速度用下去的话,只能用4*60/10/12=2年…. 同寝的Acrest童鞋的也过了10W大关哈哈哈。
$ while true; do sudo smartctl -a /dev/sda grep 193; sleep 300; done;
  这样可以每隔5分钟查询一下LCC,一般来说每小时增长在15上下应该是正常的。这样的话即便你每天24小时开着本子,硬盘也可以坚持4年(当然是从理论上来讲)。
1.1 这个Load/Unload Cycle Count到底是什么?
  Load/Unload Cycle Count(以下简称为LCC)就是Load/Unload的次数,那么什么叫做Load/Unload呢,下面是一段非常罗嗦的解释,建议不感兴趣的同学出门右转,直接看下一节吧。
  大家都知道,硬盘的数据传输是通过磁头读写磁盘上的数据来完成的。在工作过程中,磁头并不与磁盘的盘面直接接触,两者之间有一层很薄的空气薄膜,这层空气薄膜是由于磁盘的高速旋转产生的。如果磁盘停止旋转,空气薄膜消失,磁头则会直接接触到盘片,更详细一点说,会接触到盘片的landing zone,或者叫做start/stop zone,这无疑对盘片的寿命以及对存储在这块区域的数据造成不好的影响。因此在早期阶段,硬盘制造商一般会在对盘片的表面或landing zone部分做特殊的处理,并尽量避免在landing zone存储数据。
  但是随着人们对于硬盘传输速度和硬盘容量需求的不断增加,制造商需要不断提高硬盘的面密度,同时要求盘片表面尽可能地平滑,这无疑与之前采用的技术产生了冲突,再加上其他的一些因素,硬盘制造商迫切地需要一种新的方式来替代之前采用的磁头直接接触盘面的行为。这时IBM的工程师们提出了一种叫做Load/Unload的技术。简单来说,Load/Unload技术有点像老式的点唱机,当盘片转速降低无法再产生空气薄膜的时候,就将磁臂以及磁头旋转一下,停靠到磁盘旁边的一个小斜坡上。这样就完全避免了磁头与盘片的直接接触。
  总体来说,Load/Unload技术是有利的,比如可以提高硬盘的可靠性:硬盘遭到撞击的时候磁头不会划伤盘面;可以提高硬盘的面密度:不再需要对盘片表面做特殊的处理,可以提供平滑的盘面;以及可以有效地降低功耗:低功耗的程序可以通过多次请求Load/Unload来减少盘片的旋转时间,或者设置旋转超时时间(spin down timeout)来让磁头定期的做Load/Unload等等。
1.2 这个参数值高了有啥危害?
  虽然Load/Unload技术有很多优点,但毫无疑问频繁的Load/Unload操作会造成磁头的磨损,严重的话会造成数据读写失效,也就说,硬盘挂了。
  那么到底Load/Unload多少次会挂呢?最流行的说法是到60W次,西部数据的一份产品规格说明书上也明确标示出了这一数字。
  但也有人指出SMART参数根本就是扯淡,好多坏掉的硬盘SMART值很低好的硬盘SMART值超标,因此根本不能成为评判标准以至于现在好多新机器都直接屏掉。但无论如何,频繁地卸载/挂载总不是什么好事。尤其是当你已经了解到Load/Unload次数过多有可能造成硬盘挂掉的时候,我想无论再有人辟谣,你也不会高枕无忧了。毕竟相对于硬盘本身来说,上面的数据可是要重要的多。
1.3 LCC为啥会那么高?
  简单来说,可能有下面几个原因:
1) 硬盘厂商在固件中制定的节能策略过于苛刻,以至于为了节能,硬盘频繁地Load/Unload2) 操作系统的电源策略过于苛刻。
1.4 其他的发行版有没有这个问题?Windows呢,MAC OS呢?
  各大linux发行版好像就Ubuntu被报告有这个问题,但这实际上并不是Ubuntu的电源策略太变态,恰恰相反,默认情况下Ubuntu会直接沿用硬件固件里面的设定。其他的发行版中SUSE也有类似的电源管理的BUG,除此之外的发行版似乎默认会忽略硬盘的这个节能功能,所以不会有类似的问题。
  至于Windows,也会出现类似的现象,比如说我宿舍的Acrest童鞋,但我的没有。MAC OS也有报告出现类似的问题。
  总体来说这个并不是个别现象,也并不应该算是操作系统的问题。感觉由于Windows下硬盘几乎会一直不停地运作,所以硬件厂商不太重视硬盘固件中的初始设定,比如说我的日立硬盘,电源管理级别被设置为128,结果由于Linux并不像Windows那样频繁读盘,磁头为了节能会频繁地做 Load/Unload操作。
2. 如何修复这个问题?
2.1 硬件修改法 (***推荐使用***)
  正如上面所说,如果你的硬盘在Ubuntu下有这个问题,那么有可能是硬件本身的节能策略太激进了。最简单也是最根本的方法,就是用厂商提供的固件修改工具对出厂的默认设置进行修改,比如说日立的Feature Tools。
  在Feature Tools中,有一项”Change Advanced Power Mode”,默认是128,可以选择从1到254不同的数值。
  简单来说,数字越小越节能,数字越大性能越好。Feature Tools中将1-254分成三段并分别做了简单的说明,一般来说,设置到192-254则表示不允许Load/Unload操作,而255则表示禁用APM()。这个数字也就是后文提到的APM级别。
2.2 软件修改法
  修改硬盘固件是最根本的解决方案,除此之外,关于在Ubuntu中修改相关策略,网上有很多种不同的解法,有兴趣的童鞋可以看关于这个Bug的讨论, Ubuntu Wiki上关于这个Bug的介绍,起因分析以及解决方案的总结等。基本上流传的方法有这么两种:
2.2.1 启用laptop-mode,通过修改laptop-mode.conf中的相关设置达到控制Load/Unload的目的
2.2.2 直接在/etc/acpi/start.d, resume.d等目录下放置脚本,通过hdparm命令修改APM级别和spin down time.
  具体内容见文后附注。归根结底,这两种方法都是利用hdparm工具,通过-B参数修改高级电源管理(APM)级别,通过-S参数修改旋转超时时间 (Spin Down Timeout),从而控制硬盘的Load/Unload次数。所谓APM级别就是我们上面介绍过的1~255,而Spin-down Timeout就是指硬盘空闲(或者旋转?这个拿不准)多久后才会Spin Down,也就是停转,做Unload操作。相对应的,有一个Spin up Time,这是指硬盘重新启动到正常运转所需要的时间。
  Windows下也有一款HDDScan软件可以很方便地做到这一点。这样的软件改法确实有效,但由于hdparm不会将设置写入固件,因此在关机、休眠以及待机之后,由于硬盘掉电,这些通过软件的设置会失效,需要重新启用一次。目前这两种方法在我的机器上的测试结果是待机唤醒之后参数不会重新启用。实际上,laptop-mode只会在开机的时候才会应用我们设定的参数,而 acpi的resume.d目录下放置的脚本并不会被执行,不知道这是不是个别现象。 所以如果大家非要用软件的修改方法时,推荐下面这一种。
2.2.3 pm.utils大法 (推荐使用)
  除了这两种修改方法之外,还有另外一种通过pm.utils来调用hdparm的方法。这实际上是Suse的一个解决方案。pm.utils全称是 Power Management Utilities,与acpi类似,它可以通过加入Hook脚本的方法在待机、休眠和唤醒的时候修复一些待机/休眠方面的Bug或者实现某些特定的功能。pm.utils很有可能会在8.10中就取代acpi,所以从这个意义上来讲这个方案也会有更长的效用。具体步骤如下:
1) 首先做一些配置,主要就是设置省电模式开启和关闭的模式下hdparm的参数,具体的内容脚本中有注释。
  你可能需要将“/dev/sda”修改成你的硬件设备,比如你有两个硬盘,可以修改为”/dev/sda /dev/sdb”。
$ sudo vi /etc/pm/config.d/disk
# Configure disk power management settings to ensure both# long disk life and good power management.
#
# Space delimited list of disk devices this affects.
DEVICES_DISK_PM_NAMES=”/dev/sda”
#
#
# Power management modes
#
# Powersave mode off
# Set APM as 192
# Set spin-down for 30 minutes
DEVICES_DISK_PM_POWERSAVE_OFF=”hdparm -q -B 192 -q -S 241 -q -M 128″
#
# Powersave mode on
# Enable APM to conservative 192 and set spin-down for 21 minutes
DEVICES_DISK_PM_POWERSAVE_ON=”hdparm -q -B 192 -q -S 252 -q -M 128″

2) 在power.d中加入Hook脚本,作用是在使用电池和AC电源的时候可以自动切换省电模式。
$ cd /etc/pm/power.d
$ sudo vi disk
#!/bin/bash
. /usr/lib/pm-utils/functions
. /etc/pm/config.d/disk
if test -z "${DEVICES_DISK_PM_NAMES}"; then
exit 1
fi
case "$1" in
true)
echo "**enabled pm for harddisk"
for DISK_NAME in `echo ${DEVICES_DISK_PM_NAMES}`; do
${DEVICES_DISK_PM_POWERSAVE_ON} ${DISK_NAME}
done ;;
false)
echo "**disabled pm for harddisk"
for DISK_NAME in `echo ${DEVICES_DISK_PM_NAMES}`; do
${DEVICES_DISK_PM_POWERSAVE_OFF} ${DISK_NAME}
done ;;
esac

$ sudo chmod +x disk
3) 在sleep.d中加入脚本,目的是在休眠/待机之后唤醒的时候重新设定hdparm的参数:$ cd /etc/pm/sleep.d/
$ sudo vi disk
#!/bin/bash
. /usr/lib/pm-utils/functions
. /etc/pm/config.d/disk
if test -z ${DEVICES_DISK_PM_NAMES}; then
exit 1
fi
case "$1" in
thawresume)
/usr/bin/on_ac_power;
if [ "$?" -eq 0 ]; then
echo “**disabled PM for harddisk”
for DISK_NAME in `echo ${DEVICES_DISK_PM_NAMES}`; do
${DEVICES_DISK_PM_POWERSAVE_OFF} ${DISK_NAME}
done
elif [ "$?" -eq 1 ]; then
echo “**enabled PM for harddisk”
for DISK_NAME in `echo ${DEVICES_DISK_PM_NAMES}`; do
${DEVICES_DISK_PM_POWERSAVE_ON} ${DISK_NAME}
done
fi
;;
esac

$ sudo chmod +x disk
***注意最后一定要为disk脚本添加执行权限。否则pm.tuils不会自动执行这段脚本
4) 如果你没有启用laptop mode (默认是不启用的),可以跳过这部分了。
由于Ubuntu中acpi和pm.utils是共存的,所以如果你启用了laptop mode,那么在改变电源状态(指电池->AC电源或者反之)的时候,acpi会在启用/停用laptop mode的同时设置hdparm参数,会覆盖掉pm-utils所做的设置。
所以如果你启用了laptop mode的话,需要做如下修改:
1′ $ sudo vi /etc/default/acpi-support
将最后的
SPINDOWN_TIME=12
修改为
SPINDOWN_TIME=241
2′ $ sudo vi /etc/acpi/power.sh
将function laptop_mode_enable部分的
$HDPARM -B 1 /dev/$drive 2>/dev/null
修改成
$HDPARM -B 192 /dev/$drive 2>/dev/null
上述的解决方案在Dell Inspiron 700m + Ubuntu 8.04.1上测试通过。在待机唤醒之后参数会重新被设置,但是由于我的机器上休眠有问题,所以没有办法测试休眠。但理论上来也是可以的。
3. 我想定期检测Load_Cycle_Count,怎么办?
好办,这里是一个脚本,具体用法在注释里面粗体标明了。(不好意思…注释好像比代码都长)
#!/bin/bash
#
# @Description:
#
# check_lcc v0.2
#
# Check Load_Cycle_Count from S.M.A.R.T info of your hard drive
# when power on and off and Save them to $FILE in following format:
#
# LCC TIME
# ON 110044 18:05:00 2008-09-08
# OFF 110044 18:10:03 2008-09-08
#
# "ON" indicates POWER ON while "OFF" indicates POWER OFF, LCC is
# exactly Load_Cycle_Count of your hard drive at TIME.
#
# @Usages:
#
# 1. sudo vi /etc/init.d/check_lcc
# 2. copy all the contents of this script to it
# *** Note that u need to modify "FILE" as what u want.
# save and quit.
# 3. sudo chmod +x /etc/init.d/check_lcc
# 4. sudo update-rc.d check_lcc start 1 2 . stop 99 0 6 .
# 5. Have fun.
#
# This script was tested under Ubuntu 8.04.1.
#
# @Author:
#
# breaddawson@gmail.com
# 2008/09/07
FILE="/home/bread/lcc_report.txt"
STAT=`smartctl -a /dev/sda grep 193 sed -nr "s/.*[[:space:]]([[:digit:]]{1,})$/\1/p”`”\t “`date +’%T %F’`
case “$1″ in
start)
STAT=”ON \t”$STAT
;;
stop)
STAT=”OFF\t”$STAT
;;
*)
echo “Usages: $0 {startstop}” >&2
exit 2
;;
esac
echo -e $STAT >> $FILE

按照上面的说明操作之后,LCC的结果就会存在你定义的log文件里面了。可以定期打开查看。
4. 最后附上之前的两种方法,启用laptop mode和添加acpi脚本。
4.1. 加入acpi脚本
1) 为使用电源和电池的时候定制不同的hdparm参数。你可能需要把/dev/sda修改成你的硬盘设备。
$sudo vi 99-hdd-ugly-fix.sh
#!/bin/bash
if on_ac_power; then
# on AC so don't do any head parking
hdparm -B 254 /dev/sda
# you might need 255 or a different value
else
# either on battery or power status could not be determined
# so quickly park the head to protect the disk
hdparm -B 192 /dev/sda
fi

2) 将如上脚本安装到如下4个地方
$sudo install 99-hdd-ugly-fix.sh /etc/acpi/resume.d/
$sudo install 99-hdd-ugly-fix.sh /etc/acpi/start.d/
$sudo install 99-hdd-ugly-fix.sh /etc/acpi/ac.d/
$sudo install 99-hdd-ugly-fix.sh /etc/acpi/battery.d/

这个方案比开启laptop简单且方便。因此如果你实在是不想用pm.utils的时候,推荐使用这种方法。
4.2. 启用laptop mode
Ubuntu 8.04测试有效,但是待机/休眠唤醒之后设置会丢失。laptop mode 模块在Ubuntu 8.04中是默认包含的,只是没有启用。下面是具体的设置方法。
1) /etc/default/acpi-support中修改
# 启用laptop模式ENABLE_LAPTOP_MODE=true
# 将spin down 时间改成 (241-240)*30min = 30min
# spin down time决定硬盘闲置多久以后关闭主轴电动机以节省功耗,0表示永远不关闭
# 具体的解释看 man hdparm的-S部分SPINDOWN_TIME=241
2) /etc/laptop-mode/laptop-mode.conf中修改
# 即便是接上电源也用laptop modeENABLE_LAPTOP_MODE_ON_AC=1
# 显示器关闭的时候也用laptop modeENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=1
# 让laptop mode控制硬盘闲置多长时间才卸载CONTROL_HD_IDLE_TIMEOUT=1
# 改成半小时LM_AC_HD_IDLE_TIMEOUT_SECONDS=1800LM_BATT_HD_IDLE_TIMEOUT_SECONDS=1800NOLM_HD_IDLE_TIMEOUT_SECONDS=7200
# 让laptop mode来控制硬盘的电源管理CONTROL_HD_POWERMGMT=1
# 192表示不关闭,从128-254都表示不关闭,越大能耗越大# 具体可以 man hdparm 看-BBATT_HD_POWERMGMT=192LM_AC_HD_POWERMGMT=254NOLM_AC_HD_POWERMGMT=254
3) /etc/acpi/power.sh中
把 “$HDPARM -B 1 /dev/$drive 2>/dev/null”修改为 “$HDPARM -B 192 /dev/$drive 2>/dev/null”
4) 禁用pm.utils的部分功能
$ sudo chmod -x /usr/lib/pm-utils/power.d/laptop-tools
否则laptop-mode不会随机启动。
5) 重启后,cat /proc/sys/vm/laptop_mode
结果是2表示laptop-mode已经启动,是0表示还未启动,请仔细检查上面的设置是否有遗漏。
###############我是很郁闷的分割线###############
附:关于为啥要禁用pm.utils,具体的解释如下:
  我从网上找到了laptop mode的解决方案之后,按照说明一步步操作,但是重新启动之后,查看cat /proc/sys/vm/laptop_mode,发现仍然是0.(是2才表示已经启动)。查看/etc/rc2.d/目录下确实有 S99laptop-mode,这说明系统确实会加载这个服务(这个目录下的文件都是个符号链接,会链接到/etc/init.d目录下的同名脚本)。后来Google了一下发现这样的解释:
  首先来说/proc/sys/vm/laptop_mode这个变量和初始化进程laptop-mode并不是一个意思。前者是个内核控制的变量,作用是将磁盘写操作聚簇,后者是一个脚本。
  其次,Hardy加入了pm-utils,会覆盖或忽略一部分根据linux传统的配置。为了解决这个问题,可以修改/usr/lib/pm-utils/power.d/laptop-tools中相关的内容或者运行下述命令:
$ sudo chmod -x /usr/lib/pm-utils/power.d/laptop-tools
  这条命令会禁用pm-utils的部分功能,从而修复你所遇到的问题(指laptop-mode不会随机启动)。注意得重启以后设置才会生效。
  实际上pm-utils盲目地覆盖掉laptop-mode或者是/etc/sysctl.conf中的配置,所以chmod -x禁用相关脚本后, 在从AC POWER转到电池供电的时候,pm-utils就不会执行相关的脚本(laptop-tools),从而也就不会覆盖相关的设置。这种做法改动最小,如果之后你想重新启用pm-utils的这部分功能,只需要chmod +x就可以了。
###############很郁闷的分割线又来啦###############
5. 最后是References:
  日立关于Load/Unload技术的解释: Load/Unload白皮书下载StorageView关于Load/Unload技术的解释:http://www.storagereview.com/guide2000/ref/hdd/perf/qual/featuresHead.html
西部数据的规格:http://www.wdc.com/en/library/portable/2879-001121.pdf
日立的Feature Tool下载:http://www.hitachigst.com/hdd/support/download.htm#FeatureTool
Bug报告页面: https://launchpad.net/bug59695.html
Ubuntu Wiki的Bug总结:https://wiki.ubuntu.com/DanielHahler/Bug59695
Ubuntu Dev解释:http://www.advogato.org/person/mjg59/diary/82.html
laptop mode的解决方案:https://launchpad.net/ubuntu/+source/acpi-support/+bug/59695/comments/63
acpi的解决方案:http://ubuntuforums.org/showthread.php?p=5031046
Suse的解决方案:http://en.opensuse.org/Disk_Power_Management
休眠后重新设置pm.utils的方案:https://bugs.launchpad.net/ubuntu/+source/pm-utils/+bug/235105
pm.utils的wiki:http://pm-utils.freedesktop.org/wiki/
Suse的pm.utils介绍:http://en.opensuse.org/Pm-utils
CnBeta的报道:http://www.cnbeta.com/articles/42191.htm
CnBeta的一个总结:http://www.cnbeta.com/articles/42421.htm
国内用户的一个解决方案: http://lymanrb.blogspot.com/2008/01/loadunload-bug.html
Ubuntu中文论坛的讨论: http://forum.ubuntu.org.cn/viewtopic.php?p=555500
关于laptop mode和pm.utils冲突的解释:http://ubuntuforums.org/showthread.php?t=867728
Windows下修改硬盘APM和Spin-down time的工具:http://hddscan.com/
6. 最最后
  折腾这个问题费了我一整天(实际上是半天,不过那天我中午才起…),总结这些破烂方法,再加上反复试验确定某个方法是否有效,硬着头皮分析脚本的功能,零零碎碎加起来也有一整天的时间,再加上写这篇总结,又花去一整天加上两节入学教育的时间(罪过啊罪过啊)。到此为止距离开始解决这个问题就已经过去整整一周了。就这还没总结全,好多东西都还没有写上来。不过倒是学到了不少东西,硬盘的原理是确确实实复习了一遍了又,另外学了些写Shell脚本的技巧以及 ACPI和pm.utils的机制。感觉系统里面同时有俩搞电源管理的东西实在是太FT了,因为会有冲突的部分,好在据说Intrepid要搞掉acpi 只用pm.utils,也许会清净一些。
  无论如何总算是写完了。一边实验一边记录,一度想放弃了(实在是太费时间,感觉也没太大的意义),但一个是为了我的宝贝硬盘考虑(钱啊钱啊!),又觉得折腾了那么多不记录下来,功夫不就都白费了。正好今天有两节入学教育,于是就勇敢地抱本过去,写完最后一段哈哈哈。
  贴到这里,希望会对遇到这个问题的人有所帮助。

阅读全文...

Friday, February 27, 2009

修改源并更新你的(k/x/ed)ubuntu debian lenny 最快的源国内教育网

备份当前的源列表,以便日后需要时恢复:

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

编辑源列表

Ubuntu 和 Edubuntu 中执行:
gksu gedit /etc/apt/sources.list

Kubuntu 中执行:
kdesu kate /etc/apt/sources.list

Xubuntu 中执行:
gksu mousepad /etc/apt/sources.list

适用于所有版本:
sudo vim /etc/apt/sources.list

编辑后执行
apt-get update
apt-get upgrade
apt-get dist-upgrade
  从以下各服务器列表内容中选择一段替换文件中的所有内容,一般来说加入一至两组即可,加多了影响更新速度。为防止非官方源中软件包不全的问题,请在sources.list文件中尾部添加一组官方源。
# deb file:/cdrom/ etch main contrib
#deb http://mirrors.cn99.com/debian/ lenny main non-free contrib
#deb-src http://mirrors.cn99.com/debian/ lenny main non-free contrib
#deb http://kde4.debian.net/ lenny main
deb http://mirrors.163.com/debian/ lenny main non-free contrib
deb-src http://mirrors.163.com/debian/ lenny main non-free contrib
deb http://mirror.dlut.edu.cn/debian/ lenny main non-free contrib
deb-src http://mirror.dlut.edu.cn/debian/ lenny main non-free contrib
deb http://debian.ustc.edu.cn/debian/ lenny main non-free contrib
deb-src http://debian.ustc.edu.cn/debian/ lenny main non-free contrib
deb http://ftp.tw.debian.org/debian lenny main
deb-src http://ftp.tw.debian.org/debian lenny main
以上是目前debian lenny 速度稳定的源

#deb http://mirror.dlut.edu.cn/debian-non-US stable/non-US main contrib non-free
#deb-src http://mirror.dlut.edu.cn/debian-non-US stable/non-US main contrib non-free
deb http://www.zentek-international.com/mirrors/debian/ lenny main non-free contrib
deb-src http://www.zentek-international.com/mirrors/debian/ lenny main non-free contrib

#deb http://ftp.sunet.se/pub/os/Linux/dis...an-multimedia/ lenny main
#deb http://ubuntu.cn99.com/ubuntu-cn/ hardy main restricted universe multiverse
deb http://www.debian-multimedia.org lenny main

#deb http://ftp.tw.debian.org/debian-multimedia/ lenny main
#deb-src http://ftp.tw.debian.org/debian-multimedia/ lenny main

#deb http://ftp.tw.debian.org/debian/ lenny contrib main non-free
#deb-src http://ftp.tw.debian.org/debian/ lenny contrib main nin-free
#deb http://ftp.tw.debian.org/debian-volatile/ lenny volatile
#deb-src http://ftp.tw.debian.org/debian-voatile/ lenny volatile

#deb http://ftp.hk.debian.org/debian/ lenny contrib main non-free
#deb-src http://ftp.hk.debian.org/debian/ lenny contrib main non-free

deb http://http.us.debian.org/debian/ lenny main contrib non-free
deb-src http://http.us.debian.org/debian/ lenny main contrib non-free #Added by software-properties
#deb http://http.us.debian.org/debian/ lenny-proposed-updates contrib non-free main
#deb-src http://http.us.debian.org/debian/ lenny-proposed-updates contrib non-free main
#deb http://http.us.debian.org/debian/ lenny/updates contrib non-free main
#deb-src http://http.us.debian.org/debian/ lenny/updates contrib non-free main

#deb http://www.anheng.com.cn/debian lenny main non-free contrib
#deb-src http://www.anheng.com.cn/debian lenny main non-free contrib

#deb http://debian.osuosl.org/debian/ lenny main non-free contrib

Debian GNU/Linux 4.0 Etch 源

#
# deb cdrom:[Debian GNU/Linux 4.0 r4a _Etch_ - Official i386 DVD Binary-1 20080803-20:48]/ etch contrib main

#deb cdrom:[Debian GNU/Linux 4.0 r4a _Etch_ - Official i386 DVD Binary-1 20080803-20:48]/ etch contrib main
deb http://debian.cn99.com/debian/ testing main non-free contrib
deb-src http://debian.cn99.com/debian/ testing main non-free contrib

#deb http://debian.cn99.com/debian/ etch main
#deb-src http://debian.cn99.com/debian/ etch main
deb http://update.inlsd.org/debian-multimedia testing main
deb-src http://update.inlsd.org/debian-multimedia testing main
deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib

Hardy(8.04) 版本

Archive.ubuntu.com更新服务器(欧洲,此为官方源,电信网通用户使用):
deb http://archive.ubuntu.com/ubuntu/ hardy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ hardy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ hardy-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse

Ubuntu.cn99.com更新服务器(江苏省常州市电信,推荐电信用户使用):
deb http://ubuntu.cn99.com/ubuntu/ hardy main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ hardy-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ hardy-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ hardy-proposed main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ hardy main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ hardy-security main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ hardy-updates main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ hardy-proposed main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ hardy-backports main restricted universe multiverse

Mirrors.shlug.org更新服务器(电信服务器,Ubuntu China Official Mirror, maintained by Shanghai Linux User Group):
deb http://cn.archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu hardy-proposed main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu hardy-proposed main restricted universe multiverse

Mirror.lupaworld.com更新服务器(浙江省杭州市双线服务器):
deb http://mirror.lupaworld.com/ubuntu hardy main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu hardy-security main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu hardy-updates main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu hardy-backports main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu hardy-proposed main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu hardy main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu hardy-security main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu hardy-updates main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu hardy-backports main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu hardy-proposed main restricted universe multiverse

厦门大学更新服务器(教育网服务器):
deb ftp://ubuntu.realss.cn/ubuntu/ hardy main restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ hardy-backports restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ hardy-proposed main restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ hardy-security main restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ hardy-updates main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ hardy main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ hardy-backports main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ hardy-proposed main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ hardy-security main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ hardy-updates main restricted universe multiverse

成都市 电子科技大学更新服务器(教育网,推荐校园网和网通用户使用):
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy-backports main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy-proposed main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy-security main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy-updates main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy-backports main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy-security main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy-updates main multiverse restricted universe

== 如果无法解析uestc.edu.cn域名,请使用以下地址 ==
deb http://ubuntu.dormforce.net/ubuntu/ hardy main multiverse restricted universe
deb http://ubuntu.dormforce.net/ubuntu/ hardy-backports main multiverse restricted universe
deb http://ubuntu.dormforce.net/ubuntu/ hardy-proposed main multiverse restricted universe
deb http://ubuntu.dormforce.net/ubuntu/ hardy-security main multiverse restricted universe
deb http://ubuntu.dormforce.net/ubuntu/ hardy-updates main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ hardy main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ hardy-backports main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ hardy-security main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ hardy-updates main multiverse restricted universe

上海市上海交通大学更新服务器(教育网,推荐校园网和网通用户使用):
deb http://ftp.sjtu.edu.cn/ubuntu/ hardy main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ hardy-backports main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ hardy-proposed main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ hardy-security main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ hardy-updates main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ hardy main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ hardy-backports main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ hardy-security main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ hardy-updates main multiverse restricted universe

中国科学技术大学更新服务器(教育网,推荐校园网和网通用户使用):
deb http://debian.ustc.edu.cn/ubuntu/ hardy main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ hardy-backports main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ hardy-proposed main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ hardy-security main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ hardy-updates main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ hardy main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ hardy-backports main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ hardy-security main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ hardy-updates main multiverse restricted universe

中国台湾 台湾大学更新服务器(推荐网通用户使用,电信PING平均响应速度41MS。强烈推荐此源,比较完整,较少出现同步问题):
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy main restricted universe multiverse
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy main restricted universe multiverse
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-updates main restricted universe multiverse
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-updates main restricted universe multiverse
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-backports main restricted universe multiverse
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-security main restricted universe multiverse
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-security main restricted universe multiverse
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-proposed main restricted universe multiverse

mirror.rootguide.org更新服务器(上海市 电信):
deb http://mirror.rootguide.org/ubuntu/ hardy main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ hardy main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ hardy-updates main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ hardy-updates main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ hardy-backports main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ hardy-security main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ hardy-security main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://mirror.rootguide.org/ubuntu/ hardy-proposed main restricted universe multiverse

台湾的官方源速度也相当不错,有时甚至快于内地的:
deb http://tw.archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu hardy-proposed main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu hardy-proposed main restricted universe multiverse

[Debian GNU/Linux 4.0 r4a _Etch
# deb cdrom:[Debian GNU/Linux 4.0 r4a _Etch_ - Official i386 DVD Binary-1 20080803-20:48]/ etch contrib main
#deb cdrom:[Debian GNU/Linux 4.0 r4a _Etch_ - Official i386 DVD Binary-1 20080803-20:48]/ etch contrib main
deb http://debian.cn99.com/debian/ testing main non-free contrib
deb-src http://debian.cn99.com/debian/ testing main non-free contrib
#deb http://debian.cn99.com/debian/ etch main
#deb-src http://debian.cn99.com/debian/ etch main
deb http://update.inlsd.org/debian-multimedia testing main
deb-src http://update.inlsd.org/debian-multimedia testing main
deb http://security.debian.org/ etch/updates main non-free contrib
deb-src http://security.debian.org/ etch/updates main non-free contrib

阅读全文...

Thursday, February 12, 2009

修改rules文件,给configure加上参数

本文转自Debian新维护人员手册

rules文件

  现在我们需要来看看dpkg-buildpackage(1)用来创建 软件包的精确规则了。这个实际上是另一个Makefile脚本,但同上游源代码中的 那个不同。与debian/目录中的其它文件不同的是这个文件有可执行标记。

  就象其它的Makefile一样,每个“rules”文件都有一些用来指导如何处理源代码的 规则。每个规则都由目标、文件名或者是需要执行的操作的名 称(如“build:”、“install:”)组成。当你要执行一个规则时可以在命令行参数上 加入参数(比如“./debian/rules build”或者“make -f rules install”)。在目 标名称之后,你可以写这个规则对程序活文件的倚赖性。之后,可以有任意数目 的命令,这些命令要用符号缩进。新的规则以位于第一列上目标声明 开始。空白行和以“#”(井字号)开始的行将会被作为注释忽略掉。

  现在你可能已经听糊涂了,但只要看一下dh_make为我们创建的缺省的“rules”文 件你就能明白了。另外你也应该读一下info中的“make”项目来获得更多的信息。

  有一个关于dh_make所创建的rules文件的重要问题是你应该知道的:它只是一个 建议版本。对于一些简单的软件包它可以工作,但对于稍为复杂一些的,应当敢 于增加或者删减其内容使其符合你的需求。唯一你不能修改的就是规则的名称, 因为政策手册中提到的所有工具都将使用它们。

  这里是dh_make为我们产生的缺省的debian/rules文件:

           1  #!/usr/bin/make -f
           2  # -*- makefile -*-
           3  # Sample debian/rules that uses debhelper.
           4  # This file was originally written by Joey Hess and Craig Small.
           5  # As a special exception, when this file is copied by dh-make into a
           6  # dh-make output file, you may use that output file without restriction.
           7  # This special exception was added by Craig Small in version 0.37 of dh-make.
           8  # Uncomment this to turn on verbose mode.
           9  #export DH_VERBOSE=1
          10  configure: configure-stamp
          11  configure-stamp:
          12          dh_testdir
          13          # Add here commands to configure the package.
          14          touch configure-stamp
          15  build: build-stamp
          16  build-stamp: configure-stamp
          17          dh_testdir
          18          # Add here commands to compile the package.
          19          $(MAKE)
          20          #docbook-to-man debian/testpack.sgml > testpack.1
          21          touch $@
          22  clean:
          23          dh_testdir
          24          dh_testroot
          25          rm -f build-stamp configure-stamp
          26          # Add here commands to clean up after the build process.
          27          $(MAKE) clean
          28          dh_clean
           29  install: build
          30          dh_testdir
          31          dh_testroot
          32          dh_clean -k
          33          dh_installdirs
          34          # Add here commands to install the package into debian/testpack.
          35          $(MAKE) DESTDIR=$(CURDIR)/debian/testpack install
          36  # Build architecture-independent files here.
          37  binary-indep: build install
          38  # We have nothing to do by default.
          39  # Build architecture-dependent files here.
          40  binary-arch: build install
          41          dh_testdir
          42          dh_testroot
          43          dh_installchangelogs
           44          dh_installdocs
          45          dh_installexamples
          46  #       dh_install
          47  #       dh_installmenu
          48  #       dh_installdebconf
                 49  #       dh_installlogrotate
          50  #       dh_installemacsen
          51  #       dh_installpam
          52  #       dh_installmime
          53  #       dh_python
          54  #       dh_installinit
          55  #       dh_installcron
          56  #       dh_installinfo
          57          dh_installman
          58          dh_link
          59          dh_strip
          60          dh_compress
          61          dh_fixperms
          62  #       dh_perl
          63  #       dh_makeshlibs
          64          dh_installdeb
          65          dh_shlibdeps
          66          dh_gencontrol
          67          dh_md5sums
          68          dh_builddeb
          69  binary: binary-indep binary-arch
          70  .PHONY: build clean binary-indep binary-arch binary install configure 

(我为它增加了行号。在实际的 debian/rules 文件中,行首的空白是 制表符TAB。)

  对于第1行你一定很熟悉,因为它和shell及Perl脚本很象。它告诉操作系统这个 文件应当交给/usr/bin/make来处理。

  第6到9行上提到的DH_*变量应当被简短明确的说明。要想知道关于DH_COMPAT的更 多信息,可以阅读debhelper(1)手册中关于“Debhelper compatibility levels”一节。

  第11到16行是一个支持DEB_BUILD_OPTIONS的骨架,它的描述可以在政策文档的 第10.1节“Binaries”中找到。简单的说,它们控制着在构造二进制文件的时候是 否要加入调试符号,是否要在安装的时候进行裁减。再重复一下,这只是一个骨 架,一个你应当做这件事的提示。你需要找出上游的构建系统是如何处理调试符 号和install-strip的,然后自己实现它们。

  一般情况下,你可以通过CFLAGS变量来让gcc在编译的时候使用“-g”选项——如果这 是你的软件包的情况,你可以把CFLAGS="$(CFLAGS)"附加到$(MAKE)调 用的后面来propagete这个变量(看下面)。还有另外一种方法,如果你 的软件包使用了autoconf脚本,你可以把通过给./configure调用加上前 缀来把它传递给构建规则。

  关于裁减的问题,一般情况下程序自己的安装配制都不会进行裁减,而且通常也 不会包含一个选项让 你来做这件事情。幸运的是,你有dh_strip(1),而且当你设定了DEB_BUILD_OPTIONS=nostrip时,他会安静地退出。

  第18到26行描述了“build”(和“build-stamp”)规则,它们运行应用程序自己 的Makefile来编译它。如果你的软件包使用GNU配置工具来构造,请一定要阅 读/usr/share/doc/autotools-dev/README.Debian.gz。稍后在manpage.1.ex, manpage.sgml.ex, 第 5.8 节中我们会讨 论docbook-to-man的例子。

  第28到36行的“clean”规则会清除所有不需要的二进制文件和自动产生的东西,在 每次构建软件包的时候都会首先执行。这个规则必须在所有的时候都能正常工 作(即便源代码目录已经清理被清理好的),所以请使用强制选项(比 如对于rm是“-f”),或者通过在命令的名字前加上“-”让make忽略返回值(失败)。

  “install”规则从第38行开始,它指导了安装过程。它通常去执行软件自己 的Makefile中的“install”规则,但会把软件包安装 在$(CURDIR)/debian/gentoo目录中——这就是为什么我们要 在gentoo的Makefile中指定$(DESTDIR)作为安装的跟目录。

  就象注释中说明的那样,第48行上的“binary-indep”规则是用来构建体系结构无 关的软件包的。因为这里我们并没有这样的软件包,所以什么都不用做了。

  在52-79行上是下一条规则“binary-arch”,在这里我们运行了好几个debhelper软 件包中的小工具,它们将会在你的软件包上执行不同的操作来使其符合政策。

  如果你的软件包是“Architecture: all”的,那么你需要在“binary-indep”中包含 所有的命令,而让“binary-arch”保持空白。

  debhelper程序都是以dh_开始的,剩下的部分描述了这个工具具体的作用。其实 它们的名字都已经说的很清楚了,但这里我们还是给出一些额外的解释:

  • dh_testdir(1)检查你是不是在正确的目录中(比如源代码目录的最上层);

  • dh_testroot(1)检查你是否拥有在“binary-arch”、“binary-indep”和“clean”时需要用到的root权限;

  • dh_installman(1)把手册页文件复制到正确的目标目录中你不需要告诉它究竟相对于最高层源代码目录的那个位置是哪里;

  • dh_strip(1)从可执行文件和库文件中裁减掉调试信息,使它们更小一些;

  • dh_compress(1)gzip(1)压缩所有大于4 kB的手册页和文档;

  • dh_installdeb(1)把与软件包相关的所有文件(例如维护脚本)复制到debian/gentoo/DEBIAN目录中;

  • dh_shlibdeps(1)计算库文件和可执行文件对共享库的倚赖性;

  • dh_gencontrol(1)在控制文件插入一个已经格式化(fine-tuned)好的debian/gentoo/DEBIAN文件;

  • dh_md5sums(1)为软件包中的所有文件产生MD5校验码。

  要想了解更完整的的关于这些dh_*脚本究竟会做什么的信息以及它们其它的选项, 请阅读它们相应的手册。还有一些可能是非常有用的dh_*脚本文件在这里没有提 及。如果你需要使用它们,情阅读debhelper的文档。

  在binary-arch一节中,你必须要注释掉或者删除掉你不需要的功能调用。对 于gentoo,我把关于examples、cron、init、man和info的行注释掉了,因 为gentoo根本不需要它们。而且在第68行上,我把“ChangeLog”换成了“FIXES”, 因为那是上游的changelog文件的真实名字。

  最后的两行(和其它这里未曾解释的地方)是需要的,在make的手册和Debian政策 文件都是可以找到。现在知道它们的作用并不重要。


阅读全文...

Monday, December 8, 2008

10件Linuxer没有告诉你的事情…

我给我的很多朋友都推荐过Linux,所以我算是他们的Linux朋友。

但是我似乎忘了告诉他们一些事情了,幸好发现了这篇文章。以后我再给我朋友推荐Linux时,我一定会告诉他们这10件事。

究竟是哪十件事呢?哈哈,看下文:

“Linux好,Linux稳定,Linux酷”,但是Linux也有黑暗的一面。。。

如果你安装了Linux:

你将会失去你所有运动能力;
你的新上帝将是Linus Torvalds,而且他每次在4月1日半夜,都会焚烧一张Windows的拷贝;
你将会卖掉你最好的电脑,并买一台8088机器,只因为“Linux并不需要这么快的电脑”!
你将会以每天10小时的呆在网上,写下如:“微软是恶魔!”,“Linux就像喝酒一样自由!”
你将被公司解雇,只因为在一场重要会议上,你的OpenOffice打不开你老板的电子表格;
你将花费10天的时候来配置Wine,只是为了不丢失名声,玩一个在Windows下只要双击和Yes安装的游戏;
你将试用10^10个Linux发行版,与此同时,你将使用Windows来完成部分工作;
你将会再次购买10倍于之前价格的高端电脑,因为你要安装Gentoo,需要从源代码编译这个系统;
你的电费将达到一个新高度, 因为你不能在uptime上输给irc的那个家伙(because you can’t be owned by that guy on irc on uptime!)
在五年的远离真实生活的日子里,你将会明白BSDs可能是更好的选择;
哈哈,搞笑吧。

大家要记住这10件事,不要在自己身上发生哦。

http://www.mv-v.com/blog/2007/05/11/old-mv-vcom/linux/ten-things-a-linux-fanboy-will-not-tell-you/
阅读全文...

一个LINUX狂人的语录




From the Internet ! 一些观点还是值得借鉴得! 转贴原文在此




我已经半年没有使用 Windows 的方式工作了。Linux 高效的完成了我所有的工作。

GNU/Linux 不是每个人都想用的。如果你只需要处理一般的事务,打游戏,那么你不需要了解下面这些了。

我不是一个狂热的自由软件份子,虽然我很喜欢自由软件。这篇文章也不是用来推行自由软件运动的,虽然我觉得自由软件运动是非常好的。

这 篇文章也不是用来比较 Linux 和 Windows 内核效率,文件系统,网络服务的。我现在是作为一个用户而不是一个开发者来说话的,我们的讨论是基于操作,应用层面的。是为了告诉大学里还不了解,或者不 理解 UNIX 的科学工作者和大学生,UNIX 比 Windows 更适合用于科学研究工作,请大家理解 UNIX 的工作方式,不要用 Windows 的标准来要求 Linux,而要用一个科学工作者的标准来要求自己,用UNIX 的思想来武装自己。

我显然是反对在大 学,特别是理工科专业推广 Windows 的。我也反对在对"娃娃"们的计算机启蒙教育中使用 Windows。因为 Windows 不论从技术上,经济上,思想风格上都是与我们培养高科技人才的目标格格不入的。Windows 的流行属于历史遗留问题,爷爷一级的人当然已经不可救药,但是我们不应该让下一代继续走上歧途。

UNIX 不是计算机专家的专利

当我建议一些非计算机专业的人用 Linux 的时候,很多人说:"UNIX 是计算机系的人用的,我们不能理解。" "UNIX 是男孩用的,我们女孩不用。"

但是其实世界上的大多数科学家和工程师几乎用的都是 UNIX 作为他们的电脑工具。就因为它简单,可靠,稳定,强大,有趣。甚至很多时候 UNIX 就是唯一的选择。

你说:"我们都会用 UNIX 的话,你们计算机专业的人还用来干什么?" 很容幸的告诉你,计算机专业的有一部分人就是专门为你们提供这样强大而方便的计算机工具的。如果他们制造的工具只有自己会用的话,那这个工具还有什么用?

理解 GNU/Linux 不要用 Windows 的标准来要求 Linux。

由于GNU/Linux这个词太长,下面如果没有特别指明,"Linux"就是指GNU/Linux"。

在这个年代,恐怕没有人需要我来介绍 Linux 是什么了吧?如果你觉得"Linux 只不过是跟 DOS 差不多的东西",那请问问你旁边的 Linux 用户,Linux 到底是什么?

那 为什么我还要写一篇这样的文章?因为,我发现还有很多人不不理解 Linux 和 UNIX,虽然他们也在用它,但是他们有时会问:"为什么 Linux 不能像 Windows 那样 ……?","怎么Redhat Linux不能 mount NTFS 分区!","Linux 下用什么整理硬盘?","什么时候OpenOffice才能完全兼容Word文件啊?","现在还有什么Windows能干的事情Linux干不了的? "……

他们有40G的硬盘,却只为 Linux 分配了2G空间,有时还抱怨"这个东西怎么占这么多硬盘!" 似乎 Windows 该占用大部分硬盘。他们把重要的数据装在Windows的分区,似乎信不过Linux。他们总是到处寻找新奇的,好看的GUI程序,对命令行的东西一概不 屑一顾。他们对Drag&Drop,菜单配置,自动升级非常感兴趣。他们如果找到一个很像 Windows 程序的 Linux 程序,一定会很高兴的说:"哈哈!Linux 也能……了!"如果Linux在某种测试中胜过Windows,他们会高兴得跳起来。他们没有办法用Linux 解决问题的时候,甚至用Wine来运行Windows程序。有时实在没办法,只好重起到Windows,或者干脆省得麻烦,在 Windows 下装一个 VMWare 虚拟一个 Linux 玩。

你如果出现了上面的情况,说明你的思想受到了 Windows 的某种潜移默化的影响和误导。你没有能够从本质上理解存在于 Linux 身上的 UNIX 思想。你支持 Linux,你喜欢 Linux,你能从中感觉到快乐,这非常好。你现在只需要明白的是:Linux 从来就不是一个玩具,它是天才UNIX的后代。UNIX 是自晶体管发明以来最伟大的发明,它从诞生那一天开始就比 Windows 的设计出色。

你要体会什么叫做"设计",一个糟糕的设计并不 是到后来缝缝补补就可以变好的,而一个出色的设计,不但可以以不变应万变,而且可以影响到后来者。一个出色的设计配上一个出色的实现,那就是非常出色的发 明。Linux 就是这样的一个出色的发明。Linux 并不需要追赶 Windows,也不需要打垮微软。它的最终目标是改变整个计算机世界,还人们自由,给人们乐趣和方便。

Unix 是简单的,你不需要成为一个天才也能理解这种简单。

UNIX 的设计者 Dennis Ritchie 说:"Unix is simple. It just takes a genius to understand its simplicity." 但是我不这么认为,因为我不是一个天才,但是我却勇敢的把 Windows 完全删除掉,遇到不明白的事情的时候努力用 UNIX 的方式去解决,而不是寻求 Windows 的帮助。现在我体会到了 UNIX 的思想和好处,我可以用比 Windows 高效几倍的效率工作。因为我相信这样的信念:"Windows 能办到的事 Linux 一定能办到,而且办的更好。"

这小节开头的话应该改成:"Unix 是简单的,你不需要成为一个天才或是计算机专家。但是在这个冲斥着 Windows 错误观念的世界,你需要信念和勇气才能理解它的简单。" 我下面就告诉你一些我理解到的东西。首先,你要知道的是微软在国际科学领域是根本没有地位的。

微软的地位

微软的名声在欧 洲和美国的大学里,特别是在计算机系里之坏,大家可能有所耳闻。我认识的 MIT,Stanford 的教授,贝尔实验室的专家,甚至一个欧洲小国的高中计算机老师都绝口不提微软的名字。在他们眼里,微软只是一个没有真技术,专靠在落后国家商业宣传和垄断 经营的小公司。这个"小"并不是说它人少,钱少,而是说它先进技术少。

我上次和王益合作写了一个算法演示程序,那个算法是贝尔实验室一位 科学家Steven Fortune很天才的发明,为了程序能够被身边大多数人使用,我们选择了 VC+MFC 作为平台。我在分析算法时还得到 Fortune 很热情的鼓励,寄给我一份资料,还多次回信耐心的给我讲解了很多细节。但是程序完成之后,我把样品发给 Fortune,他回信说:"对不起。我机器上没有 MFC。" 话说的很客气,但是我已经感觉到了他对 Windows的不屑。然后我把 MFC 静态编译进程序再发给他,他就没有再回信了。他显然不是瞧不起我,而是确实有难处。

你能感觉到这位科学家对微软和 Windows 是什么态度了吧?不是反感,而是他心里根本没有 Windows 这个东西!微软在高科技领域没有发展,那么它怎么生存呢?到发展中国家去发展一下,他们的人民还对电脑一无所知,我说不定甚至可以打入大学的计算机系呢。 我送他们软件,我捐钱盖大楼,我出钱找图灵奖获得者来演讲,让他们觉得我们都是科学家!

好了,现在全国的大学包括清华,几乎所有人机器必 装盗版 Win2000,Office XP,学校的选课系统是非IE不能正确浏览,论文用 Word 编辑,演示用ppt做,email 的通知附件是 doc 文件,你不用 Word 打不开,连 863 项目都用 VC 写程序了。我很久以前就看到一份报纸说,"微软为什么不严厉打击盗版?" 这篇文章说,微软非但不打击中国的盗版行为,而且有放任之趋势。放长线吊大鱼,"以后我要你们加倍的来还我!" 确实如此,它的目的快实现了。

Windows 笼罩下的中国计算机教育

说句丢脸的话,比尔盖茨很久以前是我的偶像…… //blush

在 中国,比尔盖茨被很多人奉为神圣,"少年电脑天才",甚至有的人提到他的名字就做出"抱拳对天"的姿势。很多人谈到微软的"新技术","高科技" 都是眉飞色舞。各种"VC编程圣经","深入了解 Visual C++"之类的书,在开头几页都会出现非常肉麻的字眼,"在那团团的混沌中,一个开天辟地的精灵,Windows 1.0,诞生了……"

微 软的软件被这么多人盗用,那么人们是怎样使用这些盗版程序的呢?先看看电脑培训班,教的都是一些 DOS 命令,打字,Windows 基本操作,Word 文档处理,PowerPoint,高级班可能有 Excel,Access…… 参加各种微软认证考试,MCSE,MSDE 的人络绎不绝。考试辅导班都贴出了"280元,考过为止"之类的字样。考试参考资料更是昂贵,有些电脑书店整整两书架都是"Microsoft Press"的东西。我有个同学参加认证考试,每门考试都要200多元。而且你一次考不过可以再考,又要交钱。他后来还津津乐道跟我说,看我,花了 XXXX(一个四位数)元考过了微软认证,得到一张比尔盖茨亲笔签名的证书和价值6000元的 Windows XP 内部发行版。

"电 脑要从娃娃抓起",我们再来看看娃娃们学的是什么。大部分家长给孩子买了电脑之后,他们首先就会装一个盗版的 Windows,然后买来盗版的游戏开始玩。如果哪个孩子会用 Delphi 编程序,那可不得了。报社记者,电视台争相报导,说,某某学校的初中生某某,在别人都还在玩电脑游戏这种"初级阶段"的时候就已经用 Delphi 写程序了。镜头还瞄准了他显示器上面的像框中的比尔盖茨头像!

我刚进入大学计算机系时还不懂得什么是操作系统,因为我以前只用过"中华学 习机"。看到新入学的同学们各个谈论的都是 "Windows 95","VC"…… 我简直觉得我落后了好几十年一样,整个一土人,根本跟他们答不上话。好不容易找到一个比较熟的同学问了一下:"你们天天谈论的瘟95是什么啊?"答: "win95就是一个操作系统,跟DOS是一类。""朵死是什么?" "你连DOS都不知道是什么?别在计算机系混了。" 学校上课当然不讲VC编程之类的东西,但是上 Pascal 的老师有一次就说:"嗨,我们学校真是落后。现在别人都用 C, C++,甚至 VC 了,我们还在讲 Pascal。不知道什么时候才能有VC课啊。你们出去也是要用VC的,只好自学了。" 于是,有些同学很多时候上课都捧着一本很重的"Windows 编程大全"之类的书,根本没有听课。吃饭时就念念有词的跟我说,"代码的优化是无止境的","匈牙利命名法真是伟大的发明" …… 这就是中国很多大学计算机系的情况。

感觉到无知了?这不是偶然的,而是微软长久以来埋下的伏笔。它要让无知的大家都把它奉为神圣,它要让 支持UNIX,Xwindow的人一旦说 UNIX 好,Xwindow 好的时候,都被一群人围着说教:"这个 Windows 也能做到","你对 Windows 有偏见","微软才是主流啊","你敢瞧不起 win2k?",".NET 就是世界潮流","微软的毕竟是新技术","有钱就是有技术"…… 甚至在一番论战比较后败下来还是要说:"Windows 性能差点,但是易用性强","Windows 是老百姓用的,要求别那么?quot;,"微软那么有钱,以后想超过 UNIX 还不容易吗?"……

发达国家的计算机教育

我 前段时间在 USENET 发文问有关 Scheme 语言的问题时,认识了一位丹麦人。他解决了我所有的问题,并且建议我阅读一些很"深奥"的有关程序语言语法,文法的书,他告诉我很多网站可以学习 LISP,Scheme,人工智能,算法。他叫我看 Jonathan Rees 的论文 "Syntactic Closures"。他还打包给我寄过来一份 MIT 的 "How to Design Programs"。他说他在自己的 PC 机上装的是 Linux,他用 Emacs 编辑,运行Scheme 程序。他对 Emacs 的了解和爱好真是使人惊讶。他大学本科毕业时做的毕业设计是一个 Scheme 解释器。这对于我来说是望尘末及了。

他是那么的不厌其烦,我的每一个问题他都详细的回答。我有时都觉得过于详细了,怎么这么耐心啊?我觉得他似乎是我的高中老师。他是什么样的人呢?我好奇的打听了他的情况。原来,他是丹麦一所普通高中的计算机老师。

他说他在高中里讲授程序设计和算法,计算机语言文法。他说用 Scheme,他的学生不用再为内存泄漏等程序语言本身的问题而烦恼,而专注于问题和算法本身。有利于培养学生解决问题的能力,特别是用计算机解决数学问题的能力。

天哪!为什么欧洲出现那么多数学家,几何学家?你看看别人重视的是什么!我们的计算机教育如果继续这样下去,只会沿着弯路越走越远!

微软和它的朋友们的如意算盘

下面来看看微软的收入是怎么来的。首先,Windows 98系列操作系统,一个就是 100多美元,每次升级又是几乎同样的价钱。Windows NT 还要贵几倍,而且有用户数目限制,5个用户的,10个用户的…… 以后如果要增加用户数目还要按比例付钱。

花 了如此多钱买来的操作系统就能用了吗?它竟然连压缩程序都没有提供!你装上Windows 之后一般第一件事就是去下载一个 WinZip 吧,"只要 29 美元"。Windows会中病毒啊,马上花 70 美元买一个 Norton AntiVirus 吧。还有黑客呢?再买一个Norton Internet Security 好了,100 美元。系统需要优化,磁盘需要整理,买一个Norton System Works 是你最佳的解决方案,100美元。

可是你现在还是不能干正事啊!你想要一个 Word, PowerPoint?那就买一套 Office XP 吧,一起买便宜些,$459.90。

那 些程序不会用啊!那些菜单怎么设置,到底有什么功能啊?看"帮助"也学不会。买本书看看吧,我推荐"Special Edition Using Microsoft Office XP",不贵,$27.99。这本书里面大部分是屏幕抓图,还是买一本旧的比较划算,$17.85。

你如果只是当个秘书,上面的差不多还凑合了。可是你有更高的追求,你想成为 Windows程序员。首先买一个 Visual Studio.NET 吧,要不然怎么编译程序。$494.95。

为了紧跟微软动向,世界潮流,不能不注册个 MSDN 什么的吧?这个贵一点,不过物有所值啊,$2,799。

嗯,你现在已经是上层阶级,白领人士了。你现在可以像这样"自由"的,"安全"的生活了。

为什么要反对使用 Windows

很多人都说不应该完全否定 Window,Windows 也有它的长处。不应该骂微软。

对。 Windows 容易操作,适合普通用户。如果微软把它自己定位在 P&G,Philips 那样的地位,能够给我们的百姓提供周到的,完善的,价廉物美的服务。那我肯定是很喜欢它的。但是从上面的种种情况说明,微软是一个野心极大的国际垄断组 织!它的产品没有一个是不出问题的:Windows 不稳定,容易中病毒,而微软不为大家免费提供杀毒软件。我就是要让你们花钱买我的朋友 Symantec 的杀毒软件,谁叫你们已经上了我的贼船?这叫什么售后服务啊!

你买来微软的程序,安装的时候一般都有一个协议,说:" 由于微软的程序造成你的数据损坏或丢失,微软概不负责。" 我想很多人肯定觉得这个不合理,不想按那个 "I accept"。但是你的软件买都买来了,钱都花了,现在一按 "I decline",安装程序马上就会退出。你只好被迫点击了 "I accept"!这不是不平等条约吗?

我已经目睹了好几个朋友的文档被 Microsoft Word 损坏,有的是编辑了十多天的30多页的论文,有的是费了很大工夫做出来的个人简历,那个朋友为此失去了到自己向往的P&G 工作的机会。就在他要投简历的前一个晚上,就在那一瞬间…… 不知道他痛哭的时候有没有想起要投诉微软,可是谁叫我们用的都是盗版呢,况且你还点击了 "I accept"。

微软仗势已经占有大部分PC市场,制定不符合国际标准的"微软的标准",以不合理的方式压制其它公司的软件,这个 问题已经在美国司法部闹了很久了。他甚至在 Windows系列操作系统中放置能够通过网络泄漏用户信息的代码,以至于 Windows 刚进入澳大利亚时被澳大利亚政府禁止使用。

有些人说:"微软毕竟开创了一个历史,造就了今天的 IT 行业。" 但是,如果没有微软,我们今天早就用上非常稳定,非常可靠,非常方便,非常"傻瓜"的软件了!微软是阻挡信息技术发展的罪魁祸首。

微 软的程序的工作方式(注意,我只是说操作方式,病毒的事情另外算)确实适合于一般家庭,上上网,发发邮件,打打游戏都不错。可是微软却要把自己包装成什么 "高科技"企业,要在世界各地设置"研究院",在大学计算机系赠送不适合用于科研的 Windows产品,甚至出钱请图灵奖得主来中国畅谈"二十一世纪的计算",还在大会上宣传自己的 .NET 技术。非要把别人认为自己是科学的,自己是领导世界高科技的。但是呢?它什么高科技也没有。欧洲,美国,哪一个关键部门在用微软的东西?NASA? DOE? CERN?你仔细想一想,微软的程序对人类到底有什么重大作用?

什么是 Windows 能干而 Linux 干不了的事情?---
"Windows 能干而 Linux 干不了的事情,那就是不需要干的事情。"

有个朋友看我半年没有用 Windows,有时就会问我:"你只用 Linux,有没有发现有些Windows 能处理的事情 Linux 干不了?"---
我回答说:"Windows 能干而 Linux 干不了的事情,那就是不需要干的事情。"

Windows 能做的有益的事情 Linux 都能做---
Windows 下的某些功能确实是我们需要的,那么 Linux 的开发者们和用户也需要这种功能,他们就会去实现这种功能,而且比 Windows 的方式好得多。由于大多数科学家,工程师用的都是 Linux 或者某种商业 UNIX, 所以几乎所有商业的科学工程程序,比如Matlab, Mathematica, AutoCAD, Candence的,Synopsys的,Avant! 的……全都是先有UNIX 的版本(包括Linux),然后再考虑移植给 Windows,甚至根本不移植给Windows,因为 Windows 的机器一般没有足够的能力运行这样的程序。你不要以为只有 Windows 才有 PSpice, UNIX 的 HSpice 要好得多,而且可以运行在大型主机上。当然它们不是免费的,但是它们值那个价钱。

但是 Windows 下有些东西在 Linux 下没有很相似的,或者你找到很多类似的,但是它们每一个比起 Windows 的那个程序都要差很多,那么原因有两种可能性:

有 一个完全类似的程序,但是由于它乍一看不漂亮,被你忽略了。而其它程序虽然看起来很漂亮,但是它们是一些初学编程的人写的。现在由于 Gtk, Qt 的诞生,Linux 下开发图形界面程序极其简单,很多初中生甚至小学生都可以随手编出一些漂亮不中用的程序。如果你整天寻找这样的程序挑来挑去,永远也找不到你满意的。当然 也有一流的程序用 Gtk 和 Qt,比如 GVIM 就可以用 Gtk 作为图形界面,我还知道 Synopsys 一些程序用了 Qt。

我 曾经也犯过这样的错误,从外表区分一切。结果优秀的 FVWM, lftp, Mutt, wget 都被我忽略过。当我找回它们的时候,我是那么的羞愧不已,它们现在都是我的朋友 我第一次看到 FVWM 觉得它只不过是一个有很厚很难看边框的东西。可是现在,我的同学看到 FVWM 都说:"哇!真漂亮。"

有另一种完全不同的方式可以达到相同的目的,甚至更好。

很 多人很关心 Open Office, Star Office, AbiWord, ... 他们多么盼望有一天某一个Linux 程序能够完全兼容的打开一个复杂的 doc 文档。但是你永远也不可能有那一天。为什么呢?因为微软为了占有市场,必定不会让其它系统的程序能够完全兼容它的文档格式。它一定会不断变化 doc 文档的内部结构,隐藏一些秘密,让其它公司的程序打开 doc 文档时总是有某种问题,从而你必需购买 Microsoft Office 和 Windows。

你应该想一下,那么多的高智商的大学教授,科学家,学生,他们用的都是 Linux 或者其它类型的 UNIX,他们没有 Word 可用,怎么处理文档呢?这么多年没有一个像Open Office 的程序出现,难道大家没有办法写文档吗?

显 然不是这样。你看看那些高水平的学术杂志,论文,那些大学教授的网页,那些漂亮的幻灯片,它们是什么做的?原来 UNIX 用户早就有非常方便的 troff, LaTeX, SGML等东西可以处理文档,而且它们比起 Word 都要高明的多。Word 显然被这些大拿忽略了,以至于很久以来没有人想在 Linux 下开发一个类似 Word 的程序,除非某些公司想抢微软的饭碗。

很多人 留着 Windows 在硬盘上的原因无非是为了用 Word 和 PowerPoint。我见过一个教授,他的 Windows 笔记本电脑上除了 PowerPoint 什么都没有。有一天演示的时候,他指着堆乱字符说:"对不起,这是一个公式……怎么每次都是这样……" 其实有比PowerPoint 好几百倍的东西可以制造幻灯片,你可以用最简单的方法制造世界一流效果的论文和幻灯片。你待会儿可以看看我的TeX网页,你就会知道为什么我可以完全离开 Windows。

Windows 能做的那些没用的事情 Linux 永远做不好

电脑游戏
有些人说 Linux 下不能玩 Windows 下所能得到的所有游戏。的确,Linux 下虽然也有少量的游戏,比如 Quake。但是它没有 Counter Strike, 没有 Star Craft, ……

并不是说电脑游戏不该玩,但是应该适可而止。电脑是用来处理事务,帮助你学习,解决问题的工具,而不是一个玩具!整天沉迷于电脑游戏中,而不出去感觉外面的世界,你会变得越来越冷酷,越来越缺乏人情味。你与真实的世界越来越远。

你 可以在 CS 里杀人,你可以在 Tomb Raider 里探险,你甚至可以在 Tony Hawk's Pro Skaters 里滑板…… 但是 It's not real!你虽然有很高的"反恐技巧",但是遇到歹徒的时候,你是那么的怯懦;你虽然控制 Laura 伸手敏捷,但是你打篮球的时候怎么总是被人断球?你虽然可以轻易的在 THPS 里作出一个 "360 kickflip to hangten grind to fakie",但是你踩在自己的滑板上的时候还不会 ollie!

说回来,如果你偶尔玩一下电脑游戏未尝不可。但是世 界上有远比 Windows + PC 更好的游戏方式。Sony 的 PlayStation2, SEGA 的 DreamCast, Nintendo 的 N64,Namco的街机……每一个都比 Windows 游戏精彩,每一个都有如此高的3D性能,以至于Pentium4, Itanium + GForce4 都无法与它们比美!

Linux 的用户们都是关心解决世界的关键问题的份子,他们哪里有时间用自己的机器来玩游戏啊?他们每天用Linux高效的做完自己的工作就到阳光下享受自然去了。 要玩游戏也是玩一些类似推箱子,贪吃蛇之类的智力小游戏。所以,你知道为什么 Linux 几乎没有游戏了吧?

"整理硬盘,优化系统"

这是一个非常有意思的话题,仅次于有关"病毒"的话题。相信很多 Windows 用户都有整理硬盘的经历。在很多 Windows 用户眼里,"硬盘用久了,会出现碎片,速度会减慢,需要一个程序来整理,整理硬盘的时候不要做其它工作",这好像是天经地义的事情。

我也曾经津津有味的看着 Norton Defrag 一点一点的把我的硬盘排序,调整,用图形的方式显示出来,然后报告?quot;100% 没有碎片。你的硬盘现在已经达到最佳状态。" 我现在才发觉我那时是多么的幼稚。

Linux 和 UNIX 用户似乎从来没有"整理硬盘"这种说法呢?你觉得很奇怪吗?如果你觉得很奇怪,那说明你的思想在某种程度上被微软的垃圾程序禁锢了。你需要明白,UNIX 的大型主机很多必须是一天24小时,一年365又1/4天不停运转的,要是每个星期都要整理一次硬盘,在整理的时候几乎不能干任何事情,那是绝对行不通 的!

Linux 机器根本不用整理硬盘,这就是为什么没有看到过 Linux 用户整理硬盘。Linux 的文件系统是比 Windows 的 FAT, FAT32, NTFS 高明得多的文件系统,它们不但可以对文件设置权限,实施完全的保护,而且可以"越用越整齐","越用碎片越少"!你应该把文件大部分放在 Linux 的分区,而不是 Windows 分区,因为它比 Windows分区可靠得多。

还有更滑稽的事情就是有很多"Norton System Doctor","Windows 优化大师","超级兔仔注册表魔法" 之类的程序存在,而且价格昂贵。似乎一个操作系统本来应该有很多问题,需要别的厂商做程序来"优化"它,而且为了得到优化,你需要付钱!这些问题 Linux 根本就没有,所以不需要什么优化。Linux 内核本身就是高度优化的。

IDE

有些人在抱怨为什么 Linux 没有一个良好的 IDE 开发环境。Linux 现在已经有一些IDE 了,但是总是有很多问题。你是不是正在寻找,正在期望 Linux 某一天可以有一个VC那样的开发环境?你有没有发现你正在进入微软给你设下的怪圈?你为什么一定要用 IDE?你说:"IDE 开发迅速,调试方便,适合大型程序……" 那说明微软的程序在你脑子里已经比较根深蒂固,你需要好好清醒一下了,看看我来告诉你。

高明的 UNIX 程序员不用 IDE,IDE 从来就是给初级 Windows 程序员用的。

你 看看大型的 UNIX 程序,包括 Linux 内核,各种网络服务程序,Xwindow 程序在内,哪一个是 IDE 搞出来的?我们实验室的 EDA 程序也没有一个是 IDE 弄的,我还知道Candence, Synopsys,Mentor 的高性能的图形界面 EDA 程序也都不是 IDE 写的。你信不信,微软的人在写 Windows 本身的时候也根本不用 IDE。微软内部程序员最喜欢的编辑器其实是 VIM,用 VIM 的微软程序员上次向乌干达的可怜儿童捐助了1000多美元,这是值得称赞的。

有一次某杂志采访一些出名的 Linux 内核程序员,包括 Linus 在内,没有一个人用IDE,有的人用 VIM,有的用 Emacs,只有 Linus 说"GNU Emacs is evil",但是其实他用的是一种跟 Emacs 有同样键绑定功能的 MicroEmacs。大家都是用编辑器编辑了程序文件,然后用 make 这样的自动工具调用 gcc 编译器完成编译工作的。甚至高级的 Windows 程序员也不用 IDE,他们可以从命令行调用 cl,nmake 来编译自己的程序。虽然这样的 Windows 程序员很少,但是他们却是最了解 Windows,最高明的Windows 程序员。

为 什么 UNIX 程序员不用 IDE?明白了这个道理你就能体会到 UNIX 的设计思想了。首先,一个 IDE 集成了编辑器,编译器,汇编器,调试器,跟踪器…… 这个编辑器功能肯定比不上 VIM 或 Emacs,编译器比不上 GCC,汇编器比不上 as,调试器比不上 gdb,ddd, 跟踪器比不上 strace, ltrace, truss。你得到的是一套整合的低能的程序。如果你对调试器的功能不满意,你只好换用另外一套 IDE,但是这套 IDE 的热键,菜单,编辑器功能,按钮…… 跟原来那个有很大不同。你不得不花很多时间来熟悉新的环境,而不能保持原来的某些东西。

而在 UNIX 下就不一样了。你可以用你最喜欢的 VIM 编辑程序,你在 VIM 里可以调用GNU make,make 可以调用 gcc, ld, ... make 的出错信息可以被 VIM 捕获,VIM 能帮你在源程序里定位。你如果喜欢 icc, 你可以让 make 用 icc 而不是 gcc。你如果觉得 gdb 跟踪变量时比较麻烦,你可以用 ddd 来显示各种数据结构之间的关系。你还可以在 Emacs 里调用 gdb,那样就可以同步显示源代码了。而且 VIM 和 Emacs 还可以编辑很多其它东西,比如信件,LaTeX 文档,HTML,配置文件…… 你不用另外找一个什么编辑器来干这些杂活了。很多程序比如 Mutt, tin 都可以在内部使用 VIM,这样就更方便了。实际上 make 在其它方面还能帮你很多忙,我的每一个比较大型的 LaTeX文档都是用 make 维护的。

Linux 能干的高精尖的事情 Windows 都干不了

当 然有很多事情是Linux/UNIX的专利了。因为 Windows 只能装在 PC 机上,好像以前也有 Alpha 可以使用 Windows NT,但是就是没见到有人用。PC 机的能力是很低的,像我们编程序处理 NP-Hard 问题的人,用 Windows 的机器显然速度不够,而且有时一个问题算上几天甚至几个星期,Windows 机器是以"死机"著称的,我们怎么能放心?所以几乎所有科学计算程序,EDA 程序,高性能图像处理程序都不是 Windows 的。他们有时也会移植一些给 Windows,但是常常降低那些程序的能力。你比较过 Windows 版本的 Mathematica 和 Linux 的有什么区别吗?

IBM 制造的最大的并行计算机有 8000 多个处理器,Windows 不可能有能力管理这么多处理器,它用的是什么操作系统?答案是 Linux。

《泰坦尼克号》电影里的三维动画,那么细腻逼真,Windows机器能做出来吗?不行。那也是 Linux 机器做的。

民航总局用来训练地情人员的虚拟现实训练设备,Windows 当然无能为力。那都是商业的 IRIX 机器。

UNIX 是最早支持 TCP/IP 网络协议的系统。它上面有很多可以互相协作的网络服务程序,它们经过多年的使用和修订,已经达到比较完善的程度。而就在1997年,微软的比尔盖茨还在扬 言:"Internet 是没有前途的。" 微软的这个"远见卓识"大家应该都已见识,它后来加上的网络服务程序IIS漏洞之多,让公安部都频频发出警报,大家也是见识了的。

其实你知道了,Windows 没有一样有用的事情能比 UNIX 干的更好。

Linux 干不了的有用的事情 Windows 照样干不了
当然 Linux 不是万能的。它也有不能干的事情,电脑也有干不了的事情。但是 Linux干不了的事情,Windows 肯定也干不了。这些事情就是我们需要探索,需要努力的事情了。在你探索的过程中,Linux 必定是你的好伙伴。

不要把Linux和Xwindow掩盖起来!不要把我们的用户当成傻瓜。

什么?你早就知道 Windows 是垃圾?噢!你怎么不早说呢!害我废话这么多。嘿嘿。

"好了。你知道 Windows 是垃圾,你现在用什么?quot;

"Linux + Xwindow"

"那我问你,Xwindow 是什么样的?"

"不就是跟 Windows 差不多吗?只不过 'Start' 按钮比较方,而且上面不是一个Windows 标志,而是一个脚丫子。点击一下居然还有很漂亮的中文菜单。我喜欢!"

"你知道什么是'根窗口'吗?"

"不知道。从来没听说过呢?"

"根窗口就是遮盖整个屏幕的那个最大的窗口。"

"哪儿有什么窗口啊!我没有看到呢?"

你 发现了问题吗?这些 Linux 用户说是在用 Linux 和 Xwindow,但是他们对 Linux和 Xwindow 几乎完全不了解。很多人用了那么久 Xwindow 都不知道根窗口是什么东西,不知道其实按钮也是窗口,不知道窗口管理器和其它程序有什么关系,大家都以为窗口上面的按钮是程序自己放上去的,不知道窗口? quot;class name","resource name"是什么东西。他们也不知道 .Xdefaults 是用来干什么的。特别是他们很多人都不知道 Xwindow 的字体是如何命名的,什么是 fontset,有了一个新的字体也不知道怎么安装。

他 们被遮在 Linux 之上的一层一层的包装迷惑了,他们等待有图形界面的工具来帮助完成一切事情,他们认为 Linux 跟 Windows 一样,只是麻烦一点。他们知道 Linux内核很好,但是他们感觉不到 Linux 和 Xwindow 在操作层面的天生的先进性,随后不久就把 Linux 完全删除掉了。你发现没有,要用户理解 UNIX 和 Xwindow 的操作层面的先进性,才是留住用户的最好办法。如果用户体会不到操作时的方便和高效,内核再好他们也不会理会。

但是用摹仿 Windows 的作法来吸引用户,永远会失败的。因为 Linux 如果摹仿Windows那一套低效率的方式,那么 Linux 的这套"低效率方式"永远比不上Windows 的那一套"低效率方式"。那么用户就会说:"这个 Linux,没有一样比的上 Windows。"

Linux 天生就是继承了 UNIX 的高效的工作方式,为什么我们要把它掩盖起来?我们为什么只告诉用户 KDE 的菜单怎么用?我们为什么不能像早期的 Xwindow 书籍那样第一节就告诉用户什么是 X server, 什么是 X client,什么是 Window Manager, 什么是根窗口。第二章就告诉用户窗口有哪些属性,什么是 classname, resource name, hint,怎样使用 .Xdefaults, xrdb ……

在这里我又不得不说一下那些 Linux 的发行公司和写书的人,他们把 Linux 和Xwindow 包装起来,却没有从基本上告诉用户 Xwindow 的工作原理。很多书籍讲授的层次就是在Gnome, KDE 的菜单操作的层次,靠大量抓图来占篇幅,"繁荣"Linux 书籍市场。

现在很多人已经把能够利用别人的库写出一个好看的程序作为自己编 程水平的象征。在这?quot;图形化","可视化" 的年代,你如果还在用 troff, LaTeX 写文档,你还在用VIM 自己编辑 HTML,用 Mutt 处理邮件,你还在用文本模式的 gdb 调试程序,你还在用Xlib 写程序, 你还在用 tin 上 USENET,你还在自己写 Makefile,写机器代码,你还在玩 Clossal Cave 这样的字符模式冒险游戏,那你就是老古董。

其 实这种思想是错误的。虽然你是一个坚决的 Linux 支持者,但是你的思想是 Windows的思想。你认为图形界面,菜单,按钮就可以解决一切问题,就可以给你高效方便。你还是没能摆脱微软给你的潜移默化的东西。你其实离不开 Windows 那样的环境,你迟早会删掉自己的 Linux。

GUI vs. CLI
做一个坚定不移的"两面派"

大家看到这个标题是不是热血沸腾?两派大虾都可以围攻我了:

GUI派用户:"哇!我一看你这小子就是 CLI 的。要不然自己写什么 Makefile?用什么Mutt?"

CLI派用户:"切~ 你还用 X!高手都不用 X。你是 GUI 那边的。"

可怜的我:"555~~ 你们都不要我~~ GUI 和 CLI 就那么水火不容吗?"

计 算机界这样的门派之分还很多。很有特点的就是 CLI 和 GUI 了。CLI (Command LIne)的狂热份子声称永远不用 X。我上次在实验室看到一个同学用一个 SecureCRT 登录到Sun 机器,然后用一个 vanilla vi 编辑程序,我建议他启动一个 GVIM 过来显示在Exceed 上可以有语法加亮。但是他坚决反对,说:"高手不用X。你想想,要是我在一个很慢的网络连接怎么用 X?而且好多服务器没有装 X 程序。"

但是我们实验室的网速可够快,Windows 机器都有 Exceed 啊,而且 Sun 机器有全套X 客户程序包括 GVIM。他说他是 CLI 的坚决拥护者,但是他却在用 Windows,他后来打开了好几个 SecureCRT,每次从文本框输入地址,用户名和密码,从下拉菜单选择"SSH2",然后点击"Connnect"。他还不断的夸SecureCRT 是"网络管理员投票选出的最受欢迎的登录方式"。老天,SecureCRT 本身就是个 GUI 啊,他其实没有明白Xwindow 的好处。

你 说我是 GUI 的?我虽然很少在 console 下工作。但是我对 bash, VIM 很熟悉,我可以让 bash 按照我的键绑定方式来工作。我可以在 rxvt 里使用 Mutt 来收发 email。我的每个桌面上都常常堆放着一打不同大小的 rxvt。我用 VIM 编辑 LaTeX。我自己写Makefile 来维护 LaTeX 文档。我有时用 mpg321 来放 mp3。我上BBS用的我自己写的expect 脚本。 好了,CLI 派的朋友可以收我做盟友了

你说我是 CLI 的老古董?我的 FVWM 被我配置为可以"手写操作",我只要画一个"r"就可以启动 rxvt,我只要画一个 "U" 就可以启动 GVIM,…… 我用 GVIM 语法加亮模式编辑程序,我用 Mozilla 浏览网页,…… GUI 派的现在好像认我做朋友了

好了。CLI 派的朋友,虽然我很喜欢命令行,但是我有时在屏幕上左右画一下就可以执行:

Module FvwmConsole -terminal rxvt -geometry 45x5-0+0 -bg gold -fg midnightblue -fn "-adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-*"
你是不是现在又想把我逐出师门?

GUI 派的朋友,虽然我很喜欢窗口。但是我可以在 FvwmConsole 里输入:

All (rxvt) MoveToDesk
把我所有的 rxvt 移动到我现在工作的桌面。"这家伙,怎么这么快就叛变了!"

其 实何必分什么 GUI 和 CLI,UNIX 和 Xwindow 都是工业标准,它们从设计那天开始就有非常灵活的用法,各个程序,不管是 GUI 还是命令行的都可以互相协作。UNIX 和X 是一家,何必搞的那么偏激,非此即彼?你从我上面的行为可以看出 GUI 和 CLI的模糊界线吗?我就是坚定不移的"两面派"。

UNIX 是简单的--
"我相信简单就是最好,如果太复杂,我是不能理解的。" -Seymour Cray

很 多第一次用 Linux 的人会惊奇的发现,Linux 的程序居然不?quot;安装"就可以运行,程序拷贝到随便那个目录都可以用,而不是一定要占用你第一个分区的空间。程序的设置只是一些简简单单的文本文 件。你根本不需要什么"注册表修改器" 就可以改变系统的设置。这就叫做简单,但是简单就是美。虽然这只是 UNIX 简单性的一个肤浅的认识,你已经体会到了某些东西。

但是简单并不意味着功能弱,并不意味着落后。相反,简单意味着强大,意味着生命力。

我不会再继续阐述我理解到的"UNIX 的简单",因为这个需要自己去体会。

UNIX 是永恒的
有人说:"Plan9 会取代 UNIX,Mach 会取代 Linux 内核。"

但是你如果是一个深入体会了 UNIX 的人,你就会知道:UNIX 的思想是永恒的,不管时过境迁,Plan9 是否代替 UNIX,UNIX 的灵魂都会在 Plan9 身上现形!

我 为同一个设备写过 Linux 内核和 Windows VxD 驱动程序。写 Linux 驱动程序时,我对 UNIX 设计的完美的一致性,远见性所折服。UNIX 用同样界面的 read(), write()系统调用就可以对不同的对象:普通文件,设备文件,管道,管道文件,socket,……进行统一的读写操作。我跟本不需要写一个测试用的应 用程序就可以对我的设备驱动进行测试,因为 cat, cp, dd, 它们也使用了同样的 read(), write(),设备和普通文件在应用程序眼里没有区别。在那个还没有 Smalltalk, 没有 C++ 的年代,UNIX 的设计者已经使用了所谓的 "面向对象方法"。对,C 语言也可以实现面向对象。

UNIX 的系统调用几十年都没有很大变化,这非但不是顽固,不进步的象征,反而是UNIX 的远见卓识的体现!这就跟 TeX 程序几十年都不变的情况差不多。这些才是真正的永恒的 master piece! 你应该改变所有软件都必需从 0.1, 1.0, 1.1, 1.2, 2.0,..., 3.0, 3.1, 95, 98, 2000, XP, ... 不断升级的想法。

Windows 就不同了,它在最开头只是一个 DOS 之上的图形包装而已。后来为了兼容以前的糟糕设计,不得不加上很多累赘。我写 VxD 驱动程序的时候就深有体会,Windows 95 程序对设备的操作只有用 DeviceIoControl,我不得不写了两个应用程序来对设备驱动进行测试。Windows 内核的不一致性和隐密性使我非常恼火。不过 Windows WDM驱动程序现在也有了 ReadFile, WriteFile,…… 那说明什么?那说明 Windows 在向UNIX 学习,或者有可能是某个 UNIX 设计人员在微软打了几天临工,顺手加了几个UNIX 的东西进去。这样做是没有用的,Windows 从一开始就是非常糟糕的设计,它的历史的包袱太沉重了,缝缝补补有什么用?它只能永远的被 UNIX 甩在身后!

UNIX 是强大的
让聪明人干任何他们想干的事情。

UNIX 的一个特点就是非常高的灵活性,Xwindow 也具有这种灵活性。这种灵活性体现在哪里呢?

UNIX 的程序一般都有很多参数,不管你现在用的着用不着,总有人需要某些参数。它们的行为很多都可以用配置文件来改变。比如 GNU bash, 通常缺省的命令行输入方式是 Emacs 方式,但是只要我编辑一个 .inputrc 文件,就可以把它变成 vi 的输入方式,而且我还可以自己绑定键序列到某些操作。我可以用 shopt 来设置它的很多特点,比如是否进行通配符扩展,是否可以把一个变量当作一个目录来cd,是否可以自动纠正某些明显的目录名打字错误 ……

UNIX 程序设计的思想是提供给用户"机制",而不限制用户制定"政策"。这是一个重要的尊重用户的作法。

我 们再来看看 Xwindow。Xwindow 是一个出色的设计,它把显示服务器和客户程序分开。一个显示上既可以显示本机上的程序,也可以显示别的机器上的 X 程序,而它们都遵守你的窗口管理器的统一指挥,它们之间可以方便的传送剪贴版数据,各种事件 …… 比如有时我的 XFree86 上会出现四个不同机器上的 XTerm,两个不同机器上的 GVIM,…… 它们统一受本机上的 FVWM 指挥。

Xwindow 程序都具有很多很多命令行参数和 resource 参数。你可以随意的在命令行或者 .Xdefaults 文件设置所有的颜色,字体,尺寸…… 而且如果你用 xrdb 把 .Xdefaults 导入到根窗口,那么其它机器上没有经过配置的同样的程序,显示到你的机器上的时候也会遵守同样的外观规定。

Xwindow 的窗口具有 Property, 也就是一些可以自己定义的共享数据(原子)。正是因为这些 Property 的存在,使得 Xwindow 具有无比强大的生命力。X 的窗口管理器和其它客户程序之间并没有统一的协议,但是后来出现了 ICCCM(客户程序间通信规范),这个规范就是通过 property 定义的。现在又有人定义了一套"扩展的窗口协议(EWM Hints)",使得Xwindow 可以具有某些 Windows 的特征,比如一个工具条程序可以告诉窗口管理器:"这个屏幕下面被我占据了24个像素的空间,你最大化程序的时候不要越过这个界线。"

一个强大的窗口管理程序比如 FVWM,它收到这样的提示时,可以答应工具条程序的这个要求,也可以不答应。一切选择的权力在于谁?当然是用户了!

你想想,是不是有些 Windows 程序常常弹出一个窗口要你选择 "Yes or No"?你不点击它它就不下去。你觉不觉得你的程序在侵犯你的尊严?你是一个人,一个智慧的生物,怎能受到一个程序如此的待遇?

还有就是很多 Windows 程序把人当成傻瓜,而它是"智能程序"。比如,有一个程序就是喜欢把你的每句话第一个字母都变成大写,我不说它是谁了,你遇到的时候就知道了。

如果连"一句话开头一个字母要大写"这么明显的问题都需要程序帮你纠正的话,人脑还用来干什么?况且如果你故意想要不大写的话,那就更麻烦了,我楞是没有从它那一大堆菜单里找到怎么关闭这个愚蠢的选项。

只有符号才能完全操纵计算机。

我 们来说说很多初学 Linux 的用户。虽然他们在用 Linux,但是他们打心眼儿里是觉得Windows 的工作方式好,他们希望 Linux 有一天能"像Windows那样"。你说:"我的鼠标一点,我菜单一拉,…… 就可以完成我的操作。" 但是我要告诉你:"Linux 从来没有摹仿 Windows,将来也不会。Linux 从诞生之日起,它的工作方式就比 Windows 的先进。

Linux 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。"

看 看优秀的 UNIX 程序,XFree86, FVWM, VIM, Emacs, proftpd, Mutt, wget, tin, ... 没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置?难道它们的设计者就那么低能,连个图形配置界面也写不出来?

当 然不是。因为图形界面配置方式的能力是极其有限的,而配置文件和程序语言的表达能力却是无限的。用图形界面配置这些程序的话,如果你想达到配置文件的效 果,你需要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修改的地方了!而各个程序的配置文件的语法都有很多相似之处,一般就是一些命令,设置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。如果你用惯了 awk, sed, Perl,你会觉得那才是真正的自动化啊。

鼠标虽然是很好的工具,但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全明白你的意思,它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱点。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。

各个小程序的完美配合

这 就是UNIX最重要的特点了,它就是UNIX设计的思想。让每个程序只具有一项专门的能力,然后让它们合作。Xwindow也继承了这种好传统。这恐怕就 是Windows和其它操作系统望尘末及的地方了。UNIX 程序设计之统一,配合之完美,真使我难以置信!shell, grep, find, awk, sed, make, Perl, Emacs, vi, tin, Mutt, ... 它们是那么的具有一致性!你一旦学会了 sed 的正则表达式,其它程序基本上都能用了。你一旦学会了vi 和 VIM, 你会发现它的操作是那么的有规律性,似乎vi的设计者在几十年前就已经设计好了 VIM 在今天的完美而统一的操作方式!而且vi的操作还体现在 Mutt, tin 等很多程序中。你甚至可以把 bash 设置为 vi 的输入方式来输入命令行,我就是这么做的。一个程序可以调用另外一个程序来得到数据,可以把数据交给它处理后返回来,可以在自己的窗口里"嵌入"另外一个 程序。

在 Windows 和其它非 UNIX 操作系统中,这种合作是非常困难的。我曾经在Windows下使用 Perl来进行一些自动工作。但是 Windows 的文件操作,管道是如此的不稳定,程序之间基本不能合作。你别想在 Visual Studio 窗口里面嵌入 UltraEdit 编辑器,你别想用一个 expect 脚本来控制 telnet 到水木清华BBS。

Windows 的程序都是大而全,大而杂,所有的电子邮件程序都需要自己提供编辑器,自己发送和收取邮件,自己显示邮件的附件。每一个BBS程序都提供自己的 Virtual Terminal, 自己的通讯代码。每一个 IDE 都自己提供编辑器,编译器,汇编器,调试器。人们为了使用一种新的程序,需要适应所有这些它提供的界面,而不能使用自己喜欢的编辑器的键绑定,菜单组 织…… 不能 DIY!

你要知道,最高级的电脑是定做的,自己想要什么什么CPU,什么主板,多少内存,什么硬盘,键盘,鼠标,显示器都 是自己选择的。最高级的滑板,自己想要什么牌子的版面,什么牌子的沙,什么桥,什么轮子,什么轴承,也都是自己选的。最高级的古球拍,木板,胶皮,海绵, 胶水都是可以自己选择…… 而用 Windows 程序,你得到的是大杂烩,就像你去买"品牌机",只有那么几种配置,而且附带很多你不需要的软件和服务;就像你去买组装好的滑板,你想要大一点的轮子和窄 一点的板子,但是你没有这种选择余地!Windows 程序就相当于最廉价,最次的滑板。但是它却会花你更多的钱,因为一旦一个部件坏了,或者你不喜欢了,你不能另外找一个好的换掉它,你必需重新买全套配件!

而 UNIX 和 Xwindow 就是高档的"组装货"。比如我用 Mutt 的时候,我可以用 VIM也可以用 pico 来编辑邮件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图片,我可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字签名和加密,我也可以用其它 PGP 程序。

我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办到!我可以选择我最喜欢的专门的程序来完成专门的工作,然后把它们结合在一起,我也可以分别得到它们的好处。

学 UNIX 绝对不是浪费时间
有人告诉我:"你看我用 Windows 什么都不用学。而用 Linux,光是安装就花了我一个星期!"

首 先,我要告诉你的是,你装 Linux 花了一个星期,不是因为 Linux 不好装,而是因为你已经习惯了 Windows,对 Linux 最初难以理解而已。你想一想你最初安装Windows的时候呢?你花了多少时间搞明白什么是硬盘分区?什么是盘符?什么是目录?你认为Windows 就是那么容易可以学会的吗?虽然你觉得没花时间学,但是你以前在用别人的机器的时候已经耳濡目染,自然就了解了。而且由于你想要 Linux 和 Windows 并存于硬盘上,又增加了安装难度。而且你肯定没有得到有经验的 Linux 用户的帮助,否则他们会在20分种之内帮你搞定。一个星期也太夸张了.

如果一开始用的就是Linux就没有这个问题。你想想如果你没有用 过 windows,你肯定会很习惯 /etc, /usr, /usr/local ,... 而不是 C:, D:, E:, ... 是不是?如果你只用过Linux,你第一次用 windows 时恐怕也会问:"/bin 目录哪里去了啊?"

最重要的是,你用惯了的UNIX工具,它们可以伴随你一生,而不会那么容易变化或消失。你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多,而且可以完全模拟你现在的工具。

我 们实验室一个60多岁的老师,用vi, cc, make, ...都几十年了,他以前的经验绝对没有白费,而且教会了我们一批又一批的学生。vi 伴随着 UNIX 的最初发行而诞生,直到今天还是世界上头两号编辑器之一!有些人的 FVWM 配置文件已经用了 10 多年,现在完全不经修改还可以用。

看看 Windows 的工具,你从 Borland C++ 换到 VC, 就必需适应新的环境:菜单不同了,颜色不同了,按钮不同了,帮助信息不同了,热键不同了,编译器参数,调试器功能也不同了,…… 那个时候恐怕花要花你很多时间去适应。当你刚刚适应了 VC, 你又要换成VJ, PowerBuilder, C++Builder, ...

很 多windows程序员都是这样,开头在dos下用Turbo C, 然后是 Borland C, VC, C++ Builder, ......不断追赶微软的潮流。而且微软的SDK, MFC, .NET …… 什么都在不断变化,不断出问题,又不断的在修改…… Windows 程序员不得不买又厚又重的 Microsoft Press 的书籍,看了才一个月,又过时了。今天你才学会了写 VxD,明天你就必须用WDM 了。你不得不注册 MSDN 才能赶上 Microsoft 的步伐。很多人说:"计算机是贵族的专业。" 这就是微软一手造成的。

这些 东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命!我们为什么不使用从诞生就那么一致和完美的 UNIX?你需要理解先进工具的设计理念。UNIX 的工具就像我们用的汽车,它的离合器,油门,刹车,方向盘,后视镜,永远都在同样的位置。用惯了的话,你对你的汽车的每一个部件都会了如指掌,甚至你自己 都可以修车了。这难道不好吗?

有人说:"你说我们需要了解 UNIX,难道你要开车还必须了解汽车的结构吗?" 你去问问开车的司机,哪一个不了解汽车的结构的,那他的驾照就是混来的。你难道想要傻瓜型的"微软牌汽车"吗?我们来看看:

你 买的微软牌汽车最开头只有一个座位,每加一个座位你得向汽车公司付钱。车上的防撞气囊不时会冒出来,说是为了你的安全。每开100英里要大修一次,每过一 年要换一次引擎。附带的,你还必须换用由微软汽车公司指定的石油公司提供的新型号的机油。你的车出了问题,但是法律规定,你不准私自拆开你的汽车来修理, 你必需到微软汽车公司指定的维修点去,需要付相当多的钱才能修好一个小毛病。

最可气的是,你每换一个型号的微软牌汽车,它的刹车和离合器都在不同的位置,你需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵,你受了重伤,你也不能状告微软汽车公司,因为你买来汽车之后必须签一个合同,说"由于微软牌汽车对你和家人造成的一切死伤,微软概不负责。"

怎样完全用 GNU/Linux 工作

说 了这么多 Windows 的不好。我还没有告诉你我怎么用 Linux 处理有些必要的事情。半年以前我由于中文老是配置不好,一直是双系统,不时需要重起到 Win2k 来处理汉字。后来我找到了 miniChinput, XSIM 和 SCIM 输入法。这下可以处理汉字了。而且 VIM 和Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程序,信件,网页,LaTeX 论文,MetaPost 绘图语言。

我不用 Word 这样的程序写论文,而是用 LaTeX,因为这是世界上效果最好,最方便的论文工具,是大多数学术杂志要求的格式。幻灯都是用 ConTeXt 做的,用起来很简单,而且效果非常漂亮。你可以看看我的TeX介绍。

至 于绘图,你可以用很多可视化的工具,比如 xfig,dia。但是对于我来说,任何可视化的工具都不能完成某些任务,我需要一种可以精确描述图形的语言。我找到了MetaPost。它简单又好用, 而且效果是世界一流的。我的插图,如果不是图像,都是MetaPost 画出来的。

我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完成的信件。后来我发现mozilla 的邮件处理程序确实是不稳定的,功能又弱,有经验的 UNIX 用户都不用这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮件处理程序,而且功能非常强大。我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强大的 FVWM。KDE,Gnome也能和 FVWM 一起工作。虽然 Gnome 和 KDE 总体不稳定,但是某些部件程序还不错,很多 gtk, Qt 的程序也很不错,它们很多都是可以独立于这些桌面环境运行的。

Linux 有很多强大方便的工作方式是 Windows 没有的,或者有类似的东西,但是很差劲或者用起来不方便。比如 ssh 服务,rsync,cvs,expect ……

结论

我 写这么多的目的是什么?我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌输在你脑子里的谬论,别再相信它们所谓的"新技术",别再追赶 Windows,因为追赶Windows =倒退。马克思有一个思想很重要,"新生事物并不一定是在最近出现的。"

UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。

消 除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, TeX, VIM, Emacs, Mutt ……这样强大的程序,勇敢的面对符号。不要再埋怨"Linux 为什么不能像 Windows 那样",不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNIX 的工作方式,因为那是大多数科学家的工作方式。Linux 可以成为你的好朋友,你需要认识它,了解它,信任它,才能完全的靠它来高效的工作。当然,在游戏机,手机,掌上电脑里,或者在用电脑来娱乐的时候,用一些 "傻瓜软件"还是不错的.

我希望小学,中学的计算机老师能够提高自己的素质,在孩子们的启蒙教育中充分利用Linux 神秘的特点,引起孩子们对数学,对符号的好奇心。诱导他们用计算机来解决世界上的有趣问题,而不要把教学的范围局限于计算机的操作和它自身的问题。

附录: 我用来处理日常事务的 Linux 程序
好 了好了。我知道你发现自己应该转向 Linux,你很后悔当初为什么中了微软的邪。但是不要着急。因为这些东西本来只是工具,它们是用来完成你的主要任务的辅助而已。你以前选错了工具,这不 要紧。你还是拥有你自己原来的专业技能,那才是最重要的。工具的东西只有慢慢适应转换,不能一蹴而就,否则你会感到非常没意思,甚至放弃。

如 果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的任务,那就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理员确实很辛苦。这里我对实验室的网管同学鞠一躬,谢 谢你的指点和帮助. 不用把你的机器当成网络服务器,不用开放没有必要的服务,设置好 ssh, ftp 已经足够了。这样会省去了解很多没必要了解的东西的时间。不用过度考虑"安全",因为 Linux 缺省已经很安全了。不过你有兴趣了解更多那也无妨。

下 面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们很多不是免费的,不要总是觉得什么都应该免费,自由不等于免费。它们是经过很多人辛勤劳动的产物,是可靠的程序,它们物有所值。

下面列出我常用的一些 Linux 程序。一个列表里可能有很多,那是为了方便你来选择,我列出了比较信得过的。但其实很多只有第一个是我真正在用的,我不喜欢试用程序。我不是一个合格的网络管理员,我的服务器都只设置了我自己需要的功能,那样可以省去我很多麻烦。

Shell: bash。它结合了 csh 和 ksh 的优点,并且有 readline 功能,你可以随意绑定自己的键盘。
编辑器: VIM, Emacs。
程序开发: GCC, make, ld, Scheme48, j2sdk, Perl, Python, Tcl/Tk ...
论文,幻灯工具:LaTeX, ConTeXt
绘图工具:MetaPost。这个语言太强了,以至于我只用它了。你不熟悉的话可以用xfig, dia 来画一些流程图之类的图片。
图 像处理:ImageMagick。其中的 import 程序可以屏幕抓图,convert 程序可以转换图像格式,display 可以显示图片和简单编辑(缩放,换质量,转格式,简单绘图,简单虑镜)。通常我就这么点需要。如果你要更强大的图像工具可以用 Gimp, 它几乎和Photoshop差不多。
自动管理工具:make。我可以用make来自动编译程序,自动编译文档,自动更新插图…… 全自动,而且不会重复劳动。
数值计算程序:SciLab。这个程序基本上可以代替 Matlab。
代 数计算程序:MAXIMA。这个程序基于世界上最老的计算机代数系统之一: 由美国能源部(DOE)发行的 MIT Macsyma 系统。它是用 Common Lisp 实现的。很多现在的符号计算程序比如 Maple 都从 MAXIMA 身上学到很多东西。它现在经过 DOE 批准以GPL发行,永远是一个自由软件。
加密程序:GnuPG。我的 PGP 密钥就是它搞出来的。
打包,压缩程序。什么都有: tar, gzip, bzip2, zip, rar, ...
虚拟光驱程序。Linux 不需要虚拟光驱程序,直接 mount 就行了。
ftp 服务器:proftpd, vsftpd。proftpd 功能很强,但是我只用了最简单的一种设置。
WWW 服务器:apache。(我一般没有开)
ftp 客户程序:lftp,ncftp。它们都是文本方式操作的,但是比起图形界面的方便的多。比如 lftp 几乎具有 bash 的所有方便功能,Tab 补全,bookmark, queue, 后台下载,镜像…… Linux 也有图形界面的 ftp 客户程序,但是大多不稳定,有很多问题。这就是很多人抱怨 Linux 不如 Windows 的一个小原因。还有很多人用 Wine 模拟 Windows 的leapftp,其实 lftp 比 leapftp 好很多,你需要的只是适应一下。
自动下载工具:wget。它非常稳定, 有一次我下载一个程序,用 IE 和 Mozilla 下载回来的文件都是坏的,最后还是 wget 可靠的传输了数据。用它甚至可以镜像整个网站,比起WebZip 这样的 Windows 程序强多了,而且不会因为你不付钱就在下载回来的网页里强制插入广告。
虚拟终端:rxvt, xterm, gnome-terminal, mlterm, ...
X server: XFree86
窗口管理器:FVWM。编译加入了 libstroke。
中文输入:XSIM。被我修改过以适应 FVWM 的需要。另外推荐你还可以用 SCIM。
email 处理:Mutt + Postfix + fetchmail
看 PDF, PS, DJVU 文件:Acrobat Reader, xpdf, GhostScript, gv, djvu工具包和netscape 插件。
看CAJ文档。我从来不看CAJ之类的文档,如果找不到PDF或PS,直接去图书馆借最好。
看网页:Mozilla, Phoenix, lynx。Mozilla-Xft 的显示效果比IE 好很多。
英汉字典:IBM智能词典,星际译王。
编辑网页:我用VIM 直接写 HTML。你如果想要图形方式的可以用其它的比如screem, BlueFish。
登录其它 UNIX, Linux 机器:openSSH, telnet。 我喜欢用 openSSH 把其它机器的X 程序通过 ssh 加密的隧道传到我机器上显示。
登录 Windows2000 server 的 display service: rdesktop,...我有一天试了一下,不错。后来就没有用过了。
同步程序:rsync。我用 rsync 通过 ssh 来跟某些机器同步数据,或者做自己机器上不同目录间的同步。
上BBS:rxvt(或任何一种终端) + telnet + chatbot(helloooo 机器人的程序)
QQ, ICQ: 我没有 QQ 或 ICQ。不过你可以用 Gaim, 它同时支持 QQ, ICQ 和很多其它的即时通信方式。ICQ 用户也可以用 Licq。
放 录像:MPlayer, RealPlayer。MPlayer 太好了,直接就可以放 VCD, DVD, divx, wma, wmv ... 用 Windows 的同学都很羡慕我,说 Windows 要放这个需要大堆插件。rm 最好还是用 realplayer 放,它也是免费的。
放音乐: xmms(mp3,ogg都可以), mpg321(放mp3), ogg123(放ogg)。mpg321 不如xmms管理音乐文件那么方便,但是有时我还是用 mpg321 放 mp3 作为背景音乐,因为懒得开一个xmms窗口:-)
游戏:我觉得 KDE 的那个 ksokoban(推箱子),很好玩 :-)
看 Word 文档。请 Word 用户把文档全部转为 PDF 或 PS 再给我,文档里没有特殊的格式干脆就用文本吧,何必那么麻烦。以前很奇怪的是,通知里本来没有什么特殊的格式居然还要发doc附件的email。现在好 了,我们系发通知都用文本,PDF,甚至图片了。
其它程序:还有很多我需要用而你不一定用得着的。比如,Doctor Scheme,
Scheme48, Scsh, kawa...这些程序只有 Doctor Scheme 有Windows版本。还有很多幕后工作但是你一般不察觉的:xinetd, telnetd, sshd, crond, atd, lpd, ... 他们都比 Windows 的对应者强的多,或者根本没有对应者。



阅读全文...

1999年度中国Linux十大闹剧

  话说IT大热门,时下除却因特网够得上脸面的自然是自由软件Linux。
Linux 通过自由发布源代码的市集研发方式脱身换骨,获得了够以与微软视窗操作系统抗衡的神力。得风气之先的国内媒体自然不会放过LINUX,先是以专业与微软抬 杆而出名的写手在北京各大媒体上大捧LINUX,爱屋及乌,自由软件被描绘成新世纪取代商业软件的必然;你方唱罢我登场,于是乎,以骂“骂微软出名的人” 而出名的人也匆匆亮相,正所谓“敌人赞成的我们一定要反对”,于是LINUX惹来《证券时报》上一文章的无端臭扁,尽管该撰稿人对IT一窍不通。
  年中红帽上市后股价连续翻番,媒体炒作上的是无名虚火,股市散发的可是漫街钱香。
一时间,做系统集成的、搞科研课题的、还有飘洋而来一心想着IPO(新股上市)的开始叫卖,中文Linux羊头挂了一街,不明不白的肉摆上了砧板。

  1999年,Linux在中国的营销、宣传风生水起,年终之际,近闻有媒体刊出所谓“1999Linux中国十大新闻”,观罢顿感不吐不快,自由软件在中国遭遇市场可笑之事多不胜数,在此不妨仿其例凑成“1999年度中国LINUX十大金奖”,以博众位看官一笑。

  其一,捂住源代码:Turbolinux首开违反GPL先河。
  所谓GPL(General Public License),指的正是通用公共许可证,也就是说你可以免费获得LINUX源代码,再开发后你可以发布获利,但您也必需开放你的源代码。
  1999 年四月,美国Turbolinux在推出外挂中文平台3.0.2时,该上市版本源代码并没有按照GPL的精神开放。违反GPL有例在先,其后国内不少 LINUX中文版本在推出时,多少犯有此毛病。年终之时,在媒体上常可见到Turbolinux指责对手犯有这样那样的GPL问题。
从不开放源代码到将GPL当作营销工具,为表彰Turbolinux对GPL在中国的开创性执行及阶段性深入理解,特此授之1999年度“金锄头奖”。

  二,巧借传媒:XteamLinux炒出“内核级汉化”
  几乎同一时间,北京Xteam于4月8日也正式对外公布了“国内第一套中文Linux”问世。从技术上看,北京Xteamlinux汉化了不属于LINUX内核的一个KDE窗口管理器软件,然而通过媒体发布出来的却是中国人如何开发出“内核级汉化”LINUX的动人故事。
  但见众多媒体扑上去一阵猛捧,赢来老百姓掌声一片。
  Xteam继承北京人民善于炒作的优良传统,“首个问世”的中文Linux理所当然荣获“金喇叭奖”。

  三,“封闭式测试”:蓝点BluePointlinux惹上SLASHDOT国际大批判
  7月份,国内一民间网络组织“网络工作室”( http://www.openunix.org/) 开发出直接修改LINUX底层内核的蓝点BluePoint Linux,“真正内核中文化”蓝点问世在Linux开发社群中一度引起哄动,并成为首届高交会深圳十一大重点推荐项目。奇怪的是蓝点Linux从7月份 技术开发成功到11月产品在深圳正式推出上市,期间4个月一直处于“封闭式开发” 状态,好事者将蓝点Linux案例送上国际专业Linux开发论坛——Slashdot网站,Slashdot专门为蓝点LINUX开辟专题讨论,“测试 产品是否应该遵循GPL”,蓝点成为国际Linux组织的“热门话题”。
这四个月“封闭式测试”是否正是其后蓝点Linux夺得OEM捆绑市场的技术策略?蓝点BluePoint保密有方,有效防止了肥水流入外人田,“金锁头奖”非之莫属。

  四,“自主版权”?红旗Linux恶炒出偏。
  8 月10日,方正、中软、康柏“三大头”在京城某军机地重召开新闻发布会,中央电视台、人民日报带动了国人一片欢呼声,不幸的是红旗发布的新闻中所谓中国人 “自主版权”的提法本身便违背了GPL精神,而红旗LINUX在新闻中宣称采用了“最新的LINUX2.2.15版本内核”,事实上直到1999年底 Linux的内核版本也不过是2.2.13。
  这里摘录一位署名“无泪”的网友11月11日在“红旗Linux用户论坛”上的留言以共勉:“先有 TURBO Linux 4.0 和XTEAM Linux 1.0 ,后出现了媒体报道曰:红旗LINUX 将问世,性能如何如何,对中文支持如何如何……而今见到RF1.0后,真是欲哭无泪,中国的软件业这样下去还敢说要有自己的操作系统,只能是痴人说梦! RF1.0 只能是一种想法,离实验室产品还差得远呢! 好大喜功如此,浮躁如此,红旗到底还能打多久?只愿我是杞人忧天,这可真是‘心忧炭贱愿天寒’!”论坛上,有红旗开发人员回贴言:“我们深刻体会到新闻炒 作的负面效果”。
  新闻炒糊出恶果,红旗荣获本年度“金铲子奖”。

  五,妙用GPL:Tomlinux借船出海。
  就在有关 GPL(通用公共许可证)众说纷纭时,实达旗下的实达朗新也宣布“第一个完全遵循GPL”推出唐木LINUX(TOMLINUX)。 TOMLINUX将GPL当作卖点,刚一发布便慷慨将源代码全部捧出。而此间有某家Linux开发公司便不屑地私下宣称,Tomlinux发布的源码都是 他们所开发,TOM只不过在已有的源代码捆进了几个游戏便上市。闲话归闲话,道义归道义,就GPL而言实达朗新所做似乎离真理并不远,年终时还兴高采烈地 公布了TOMLINUX在8848电子商务网站上销量第一的新闻,信不信由你。
  看来,GPL真是个好东东,“完全遵循GPL”以后,我们相信日后中国LINUX事业蒸蒸日上的景象将是指日可待,如若您隔壁的徐大爷马大婶三天两头就弄出个“徐富贵LINUX”、“马巧珍LINUX”新版本,您可千万不要奇怪。
“完全遵循GPL”的TOMLINUX以擅长拷贝的技巧长荣获本年度“金磁盘奖”

  六,国产操作系统:中软科研项目修成正果
  LINUX在中国登陆曾引起一批爱国人士高声欢呼,按他们的说法,国家要“以两弹一星的高度发展我国的国产操作系统”,印象里中国人好象从未在操作系统上争过气。
  9月28日,专业生产了十几年“国产操作系统”的中软COSIX也突然向外发布推出一个LINUX操作系统,据称这是他们“经十多年对LINUX的研究”后,开发出来的“真正外挂”的“中文安全自主品牌”LINUX操作系统。
正所谓十载寒窗苦未尽,一朝题得金榜名。然而就像“严打”期间公安叔叔突然变得万分神勇一样,十年陈年积案终于一举侦破,老百姓心里当然高兴,但也难免犯嘀咕:这十年里他们都干了些嘛?
  科研课题终于突然有了技术成果,可喜可贺。在这里,我们很高兴地将“金课题奖”授给这个国家技术研究项目。

七,“内核外挂敦优敦劣”:蓝点BluePoint Linux与Turbolinux上网骂街
  11 月底Turbolinux频频在国内大大小小媒体亮相,开始以LINUX专家身份攻击内核汉化技术,声称内核汉化不能国际化、容易造成系统不稳定。 11月24日,远在深圳的蓝点LINUX一篇“中文LINUX,真正该警惕的是什么——也谈LINUX的中文化、本地化与国际化”开始在各大网站出现,文 章对推广外挂LINUX中文平台的美国Turbolinux的各个论点一一进行技术反驳,并不客气地指明Turbo玩的是当年微软打击对手时所臭名昭著的 FUD心理恐怖战术(FUD即恐慌Fear、不确定Uncertainty、怀疑Doubt)。
  一时间,蓝点与TURBO双方文章的成为网上一景。在对骂的背后,我们注意到长城、TCL先后宣布结束与Turbolinux的捆绑合约、正式与蓝点BluePoint Linux结成战略合作伙伴关系的新闻。到底是技术争论还是市场抢夺,只有天晓得。
  这场大战中,Turbolinux以在自由软件阵营内部挑起战火荣获“金矛奖”,深圳的蓝点BluePoint linux以回击有力的反驳文章以及对美国自由软件兄弟企业伤骨入肉的市场掠夺行为荣获“金狼牙棒奖”

八,“谁最适合你”? 软件屋(SOFTHOUSE)投票闹剧。
  11月北京一家名为“软件屋”的网站开始了一轮“你认为哪一种中文Distribution最适合你?”的网上投票调查,由于投票程度设计有问题,留下一个BUG可以让同一个人无限制投票。11月30日,“软件屋”发布声明宣布投票取消。
声明称:“有人在一夜之间,竟投了7000多票!!! ”
  据软件屋所公布的最后一天的投票结果如下:Turbolinux和XteamLinux的投票率涨幅最高,一夜之间分别增至4370票及2702票,蓝点BluePoint Linux得票2780,位居涨幅第三位。
  有人愿意一夜之间不停去按动投票按钮,这种精神确实值得嘉许,现授矛涨幅最高的Turbolinux“金手指奖”,涨幅第二的Xteam Linux夺得“银手指奖”,蓝点BluePoint Linux涨幅第三,权送之“铜手指奖”以示安慰。


  九,假戏真做:Turbolinux 年终放出国际大卫星
  在软件屋11月30日宣布取消投票之后一周,美国Turbolinux12月6日在美国三藩市通过媒体郑重其事向全世界发布新闻,声称“在11月一项互联网LINUX用户投票中,Turbolinux中文版以46%被选为最佳中文版本”云云。
  新 闻稿中Turbolinux还向世界人民正式宣布“与长城、TCL、浪潮等三家中国顶尖硬件厂商达成捆绑协议,每月出货10万台”的重大新闻。 TURBO的总裁CLIFF MILLER称“我们在中国强大的用户支持及我们在与中国顶尖OEM厂商的捆绑成功体现了我们在这个庞大初现市场上开拓性成功”
  该消息作为头条新 闻在Turbolinux官方站点发布,全球各大英文站点12月也广为流传。然而就在该新闻在12月6日发布前,据报导长城与TCL电脑已正式与 Turbolinux道过一声“沙扬娜拉”匆匆结束蜜月期,反过头来向蓝点BluePoint Linux投怀送抱,结成了长远战略合作伙伴。
  把别人宣布取消的结果当作事实,把业已结束的旧事说成 “新”闻——本年度中文LINUX最高奖项“客里空金假牙奖”由Turbolinux压倒性优势夺得。

十,自弹自唱:“中国LINUX十大新闻”粉墨登场
  12 月底,CHINABYTE、SOHO、JOYO等网站纷纷刊出一篇打着“国”字号的“1999年中国十大LINUX新闻”稿件,有心读者细细一数,这 “中国”的十大新闻中TURBOLINUX公司十居其八,一付自弹自唱、自娱自乐情形,将一家公司的年终总结写成“中国十大”实在难得。然而由于文章未曾 署名,作者源自何方不得而知,此奖项无从颁发,留待明年授予厚黑可笑之人。

  这年头,搞自由软件的为的是资本运作,牙给人打掉了,血往自个儿肚里吞,还得挂着一付 “我是老大”的笑脸,套用咱京城里一方姓博士的说法:LINUX那玩意儿玩的就是“自虐式生存”。

阅读全文...

只有这些人有机会成为Linux高手!

1,对英语有亲切感。学起来一点都不费劲;看英文的文章就像看中文的文章一样的人。但是不要说你过了英语几级。我见过一些自称过了英语4级6级的人,他们的英语并不出色。
朋友们,永远不要埋怨”为什么Linux对中文支持不好?为什么Linux软件没有中文的?——“因为中国人在开发这方面做出的贡献太少。本地化不要指望外国人为我们做贡献。
这也引出了另外一个问题:几乎所有中国的Linux发行版都是骗钱的,毫无开源精神,毫无创新精神,毫无付出精神。你能指望这三无能做出什么好东西来?连kde和Gnome的帮助文件都不汉化一下,就拿出来说这是XX公司出品的Linux中文版本?!
当然,中国人还是做出了如stardict、LumaQQ这样优秀的开源软件。但是这属于个人行为。另外,stardict、LumaQQ都有中文的!

2,会使用Google搜索引擎。百度只适合老百姓搜家常用,但是对于学术文章,还是Google的搜索有权威性。熟练使用Google才可以找到一些你需要的Linux文章。

3,对QQ没有依赖性。QQ上的菜鸟菜得不是一星半点,他们是那些仅仅听说过Linux就有勇气格式化硬盘的人;QQ上的Linux高手也高不到什么地方 去,他们会的顶多也就是把Linux准确地装到自己的硬盘里能正常使用而已。真正的高手全在IRC上。在QQ上学Linux就是胡闹!哪个Linux玩家 会用一个服务器不支持自己的系统,还整天修改登录协议的通讯工具?不会用IRC,起码学用Gtalk。

4,懂得智慧的提问。不要抓到一个高手,就直接去问人家:“为什么我的Linux不能这样,不能那样?"你错了,不是你的Linux不能这样,不能那样, 是你不能把你的Linux整成那样而已。永远不要去埋怨计算机程序,从某种意义上说,它比某些人的大脑要精密很多。想提问也要先把Linux的一些概念搞 清楚。很多人张口就Linux 9.0,请你们注意,只有Suse Linux有9.0,Mandriva Linux有9.0, Red Hat Linux有9.0 ,但是Linux kernel 只有 2.6.15,没有9.0。请学习基础知识再说话,以免露怯。

5,学会自学。绝大多数菜鸟问题,互联网上已经满是答案。你根本不需要浪费高手的生命去给你解释那些你可能一无所知,但是人家已经解释了1000遍的问 题。谁都有烦的时候,你本来水平就次,还怨别人不教?Linux,任何人都是自学成才的,任何人在学习的道路上都是曲折漫长的,你想走捷径也不要去拖别人 的后腿——上学还得交学费吧?哪个高手一天免费在QQ上伺候菜鸟?还随叫随到?你去问问教委,9年义务教育有这样的服务么?

6,不埋怨操作系统不好。如果你想用Linux,但是又觉得它这样不好,那样不好,请你干脆回去用Windows。尤其在请教高手问题的时候,不要带着对Linux嘲讽的字眼。那能说明什么问题?那只能说明:一是你自己Linux技术不到位,二是你人品不到位。
Linux作为一个操作系统有自己的特征,Windows作为一个操作系统也有自己的特征。不要用Windows的眼光去比较两个操作系统。如果你用那样 的标准去看问题,只能说明你根本不懂计算机——你也别再说你是大学计算机系毕业的,不然那些自学成才的高手会笑得鼻血喷到美国去。

阅读全文...

Linux系统硬盘的整理维护及其优化

在Windows系统中,磁盘碎片是一个常见的问题,如果不注意,系统性能可能被侵蚀。Linux使用第二扩展文件系统(ext2),它以一种完全不同的方式处理文件存储。Linux没有Windows系统中发现的那种问题,这使得许多人认为磁盘碎片化根本不是一个问题。但是,这是不正确的。
所有的文件系统随着时间的推移都趋向于碎片化。Linux文件系统减少了碎片化,但是并没有消除。由于它不经常出现,所以对于一个单用户的工作站来说,可能根本不是问题。然而在繁忙的服务器中,随着时间的过去,文件碎片化将降低硬盘性能,硬盘性能只有从硬盘读出或写入数据时才能注意到。下面是优化Linux系统硬盘性能的一些具体措施。

清理磁盘

这种方法看上去很简单:清理磁盘驱动器,删除不需要的文件,清除所有需要被保存但将不被使用的文件。如果可能的话,清除多余的目录,并减少子目录的数目。这些建议似乎显而易见,但是你会惊讶地发现,每个磁盘上确实积累了非常多的垃圾。释放磁盘空间可以帮助系统更好地工作。

整理磁盘碎片

Linux系统上的磁盘碎片整理程序与Windows 98或Windows NT系统中的磁盘碎片整理程序不同。Windows 98引入FAT 32文件系统,虽然运行Windows 98不必转换为FAT 32文件系统。Windows可以被设置为使用FAT或一个叫NTFS的增强文件系统。所有这些文件系统以本质上相同的方式处理文件存储。

Linux最好的整理磁盘碎片的方法是做一个完全的备份,重新格式化分区,然后从备份恢复文件。当文件被存储时,它们将被写到连续的块中,它们不会碎片化。这是一个大工作,可能对于像/usr之类不经常改变的程序分区是不必要的,但是它可以在一个多用户系统的/home分区产生奇迹。它所花费的时间与Windows NT服务器磁盘碎片整理花费的时间大致上相同。

如果硬盘性能仍不令人满意,还有许多其它的步骤可以考虑,但是任何包含升级或购买新设备的硬件解决方案可能会是昂贵的。

从IDE升级到SCSI

如果你的硬盘是一个IDE驱动器,可以通过升级到SCSI驱动器获得更好的整体性能。因为IDE控制器必须访问CPU,CPU和磁盘密集型操作可能变得非常缓慢。SCSI控制器不用通过CPU处理读写。当IDE驱动器在读或写时,用户可能会因为CPU周期被IDE驱动器占用而抱怨系统的缓慢。

获取更快的控制器和磁盘驱动器

标准的SCSI控制器不能比标准的IDE控制器更快地读写数据,但是一些非常快的“UltraWide”SCSI控制器能够使读写速度有一个真正的飞跃。

EIDE和UDMA控制器是非常快的IDE控制器。新的UDMA控制器能够接近SCSI控制器的速度。UDMA控制器的顶级速度是猝发速度,但持续传输的速度明显慢得多。IDE控制器包括UDMA,是嵌入在驱动器本身中的。不需要购买一个控制器,只要购买一个驱动器,它就包含了控制器,可以获得UDMA性能。

磁盘驱动器经常忽视的一个方面是磁盘本身的速度。磁盘的速度以rpm为单位给出,它代表每分钟旋转多少次。rpm越大,磁盘速度也越快。如果你有这方面的预算,大多数服务器系统厂商可提供7500rpm甚至10000rpm SCSI磁盘。标准SCSI和IDE磁盘提供5400rpm速度。

使用多个控制器

IDE和SCSI磁盘可以被链接。IDE链最多包括两个设备,标准SCSI链最多包括七个设备。如果在系统中有两个或更多SCSI磁盘,很可能被链接到同一个控制器。这样对大多数操作是足够的,尤其是把计算机当作单用户的工作站时。但是如果有一个服务器,那么就能够通过对每个SCSI驱动器提供一个控制器改善性能。当然,好的控制器是昂贵的。

调整硬盘参数

使用Hdparm工具可以调整IDE硬盘性能,它设计时专门考虑了使用UDMA驱动器。在缺省情况下,Linux使用是最安全的,但是设置访问IDE驱动器是最慢的。缺省模式没有利用UDMA可能的最快的性能。

使用Hdparm工具,通过激活下面的特性可以显著地改善性能:

◆ 32位支持 缺省设置是16位;
◆ 多部分访问 缺省设置是每次中断单部分传送。
注意:在使用Hdparm之前,确保对系统已经做了完全的备份。使用Hdparm改变IDE参数,如果出错可能会引起驱动器上全部数据的丢失。Hdparm可以提供关于硬盘的大量信息。打开一个终端窗口,输入下面命令获取系统中第一个IDE驱动器的信息(改变设备名获取其它IDE驱动器的信息):



Hdparm -v /dev/had


上面命令显示出当系统启动时从驱动器获得的信息,包括驱动器操作在16位或32位模式(I/O Support)下,是否为多部分访问(Multcount)。关于磁盘驱动器的更详细信息的显示可使用-i参数。

Hdparm也可以测试驱动器传输速率。输入命令测试系统中第一个IDE驱动器:



Hdparm -Tt /dev/hda


此测试可测量驱动器直接读和高速缓冲存储器读的速度。结果是一个优化的“最好的事例”数字。改变驱动器设置,激活32位传输,输入下面的命令:



Hdparm -c3 /dev/hda


-c3参数激活32位支持,使用-c0可以取消它。-c1参数也可激活32位支持并使用更少的内存开销,但是在很多驱动器下它不工作。
大多数新IDE驱动器支持多部分传输,但是Linux缺省设置为单部分传输。注意:这个设置在一些驱动器上,激活多部分传输能引起文件系统的完全崩溃。这个问题大多数发生在较老的驱动器上。输入下面的命令激活多部分传输:



Hdparm -m16 /dev/hda


-m16参数激活16部分传输。除了西部数据的驱动器外,大多数驱动器设置为16或32部分是最合适的。西部数据的驱动器缓冲区小,当设置大于8部分时性能将显著下降。对西部数据驱动器来说,设置为4部分是最合适的。激活多部分访问能够减少CPU负载30%~50%,同时可以增加数据传输速率到50%。使用-m0参数可以取消多部分传输。Hdparm还有许多选项可设置硬盘驱动器,在此不详述。

阅读全文...

ubuntu技巧收集

如何有一个拥有显示全部安装程序的菜单?




打开应用程序菜单,你或许会疑惑:怎么有些软件没有在里面显示呢? 解释: Gnome和KDE使用freedesktop.org 最近开发的一种通用菜单格式,使得程序开发者只需要向他们的程序里加入几行文字,就可以让程序自动在菜单里出现。XFCE也使用这种标准。 不过,因为这种标准是最近才开发的,所以Ubuntu软件仓库里的很多软件包里还没有包含这种菜单信息。 好消息是Debian有自己的一套菜单系统(已经用了好几年了),所有使用apt安装的软件都会在Debian菜单里出现。你也可以在Ubuntu里使用它。 安装:
确定你启用了 universe 软件仓库
使用 synaptic 或者 apt-get 安装 menu
在终端运行: sudo update-menus 现在打开应用程序菜单,你会发现一个新的子菜单 Debian,里面包含了你安装的所以软件(deb格式)。每当一个使用debian 菜单的软件被安装了,update-menu 就会自动运行。 以上同样适用于kubuntu。Debian菜单会在K菜单里出现。 其他的桌面环境也可以使用Debian 菜单,如果不行(XFCE好像不行?),可以这样: 1 安装pdmenu 2 在终端运行 pdmenu 这样Debian菜单会在ncurses里给出。 有关menu的文档可以在以下目录找到 /usr/share/doc/menu/ 帮助页面在 /usr/share/doc/menu/html/

如何混音



为什么我在同时打开两个应用程序时不能听到声音呢? 大多数Linux初学者都遇到这样一个问题:“为什么我在同时打开两个应用程序时不能听到声音呢?”这是因为你的声卡需要“软混音”。值得庆幸的是,ALSA提供了这项功能,这使得解决这个问题并不是很难。 首先需要安装libesd-alsa0,它就在Ubuntu官方软件库中。

sudo apt-get install libesd-alsa0
然后,用sudo gedit或您喜欢的文本编辑器创建文件/etc/asound.conf(请确定您使用了sudo,因为您需要root权限):


sudo gedit /etc/asound.conf
输入一下内容并保持关闭。

pcm.card0 {
type hw
card 0
}
pcm.!default {
type plug
slave.pcm "dmixer"
}
pcm.dmixer {
type dmix
ipc_key 1025
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 4096
periods 128
rate 44100
}
bindings {
0 0
1 1
}
}


(上面的文件可以在大多数声卡上正常运行…尽管我成功地测试了三个不同的声卡,但我还是不能确保它可以使所有声卡都能正常运行)

接下来,运行

sudo gedit /etc/esound/esd.conf
,将文件改成下面的内容:

[esd]
auto_spawn=1
spawn_options=-terminate -nobeeps -as 2 -d default
spawn_wait_ms=100
# default options are used in spawned and non-spawned mode
default_options=

然后打开您的Gnome声音控制面板并启用声音服务器,接着到多媒体系统选择控制面板,将其设成ALSA或ESD,并重启计算机。 接下来您就可以将应用程序设成使用ALSA或ESD,这样您就可以一次听到多个声音了。就算是玩着用ALSA发音的游戏并听到使用ESD的GNOME应用发出的声音也没有任何问题! 有些朋友在hoary上按照上述的方法设置却遇到了问题,他们不能在mozilla/firefox/epiphany程序中听到声音,结果我发现在启动 firefox时,程序查找libesd.so.1而系统却只有libesd.so.0,所以只要运行命令

sudo ln -s /usr/lib/libesd.so.0 /usr/lib/libesd.so.1
后就可以解决这个问题了

Increase resolution
Edit /boot/grub/menu.lst

gksudo gedit /boot/grub/menu.lst

Add vga=792 to your default boot option. Example:

titleUbuntu, kernel 2.6.10-5-k7 Default
root(hd0,0)
kernel/vmlinuz root=/dev/hde6 ro quiet splash vga=792
initrd/initrd.img
savedefault
boot


Colorize "[ ok ]"
NOTE : does not work with 5.10 Breezy. Use solution given there. (ed. 28/12/2005) EDIT : This does NOT work with the default Feisty install, it will break your boot and you will need a rescue CD to fix it, until further revised, do NOT use this on Feisty.(omegabeta 01,aug,07. NOTE : This does not work in Dapper either, so I am not sure what version this how-to is written for. For Dapper see below. We make the "[ ok ]" during bootup green

Edit /lib/lsb/init-functions
gksudo gedit /lib/lsb/init-functions

Find the log_end_msg () function, all the way at the bottom of the file and add GREEN=`$TPUT setaf 2` belowRED=`$TPUT setaf 1`
Change echo "$UP$END[ ok ]" to echo "$UP$END[ ${GREEN}ok${NORMAL} ]"
The function should look like this:

log_end_msg () {

# If no arguments were passed, return
[ -z "$1" ] && return 1

# Only do the fancy stuff if we have an appropriate terminal
# and if /usr is already mounted
TPUT=/usr/bin/tput
EXPR=/usr/bin/expr
if [ -x $TPUT ] && [ -x $EXPR ] && $TPUT hpa 60 >/dev/null 2>&1; then
COLS=`$TPUT cols`
if [ -n "$COLS" ]; then
COL=`$EXPR $COLS - 7`
else
COL=73
fi

UP=`$TPUT cuu1`
END=`$TPUT hpa $COL`
START=`$TPUT hpa 0`
RED=`$TPUT setaf 1`
GREEN=`$TPUT setaf 2`
NORMAL=`$TPUT op`
if [ $1 -eq 0 ]; then
echo "$UP$END[ ${GREEN}ok${NORMAL} ]"
else
echo -e "$UP$START $RED*$NORMAL$END[${RED}fail${NORMAL}]"
fi
else
if [ $1 -eq 0 ]; then
echo " ...done."
else
echo " ...fail!"
fi
fi
return $1
}

==Colorize Dapper [ ok ]== (Also works for Feisty) You need to edit /etc/lsb-base-logging.sh

$TPUT setaf 4 # blue
printf '[ '
$TPUT setaf 2 # green
printf ok
$TPUT setaf 4 # blue
echo ' ]'
$TPUT op # normal


Finalize
Reboot, and your resolution should be increased. Your [ ok ] messages should now be green. Credits: dudinatrix
阅读全文...

UbuntuHelp:CompilingEasyHowTo/zh



第一步:为制作软件包准备系统


  默认情况下,Ubuntu并不预装需要的工具。你需要安装build-essential包,以便处理大部分的软件包。既然你可能想要得到一些不提供发行版的项目的代码,你应该同时安装cvs和subversion包——如果你觉得你需要它们。接着你应该为你自己建立一个普通的目录,你将在这个目录下制作软件包。我建议创建/usr/local/src,并运行sudo chown username /usr/local/src,以及 sudo chmod u+rwx /usr/local/src(后者只是出于安全考虑)。做完这个,你可以开始安装了,先设法获得你需要的程序(源码)。


第二步:获得所需软件


  大多数你通常需要的软件来自释放的tarball。它们只是一些压缩文档,通常的格式为.tar.gz或.tar.bz2————好比Windows上的.zip 文件和MacOSX上的.sit(如果这样的类比对你有帮助的话)。若你想装的软件的源码是这种格式的话,宜将其下载到我们在第一步 里建立的/usr/local/src目录。如果你的tarball是个.gz文件,运tar xzvf tarballname.tar.gz以解压缩,对.bz2文件,使用类似的tar xjvf tarballname.tar.bz2命令。

  在罕见的情况下,是从cvs或者subversion仓库取得程式,一般开发者会在他们的网站上提供指导的。若已安装第一步列出的软件包,只需转到 /usr/local/src目录(cd /usr/local/src),运行列出的命令。具体的步骤因程式而异,所以这里我没法帮你,但是只要有上述软件包,开发者提供的 指导应该能顺利运行。


第三步:解决依赖性问题


  现代Linux发行版有一个值得称道的地方,就是它们替用户处理依赖性问题。这就是说,如果你想安装程序,apt-get程序将确保在你安装的时候,安装 了所有需要的库以及其他依赖程序,安装一个程序再简单不过了,你永远只需要指定所要按照的程序,apt-get程序会完成剩下的工作。不幸的是, 处理tarball完全不是这回事,你得手工解决依赖性问题。正是这一阶段绊倒了一些相当有经验的使用者,他们常常由于无法搞清楚所需的依赖程序,而在 沮丧中放弃。
  作为预备,安装apt-file包,接着运行sudo apt-file update。这将下载所有可用的软件包以及这些软件包所含的所有文件的列表,这可能是个大 家伙。apt-file有一些有趣的功能,最有用的两个是apt-file search(按文件名搜索)和apt-file list(列出给定的软件包中的所有文件)。
  要检查你的出现的依赖性,转到你第二步里创建的目录(cd /usr/local/src)。解压缩tarball或者下载自cvs/subversion的文件,这会在 /usr/local/src下建立一个含有源码的子目录。这一新建目录会包含一个叫做"configure"的文件,那是一个确保程序可以在你的电脑上编译的脚本。 运行命令./configure来运行这个脚本[[FootNote(若不加任何参数运行 ./configure,你将使用程序的默认设置。大多数程序有一些你可以启用或禁用的设定,若对此感兴趣,察看README和INSTALL 文件,察看开发者的文档,许多情况下,./configure --help将列出一些可以修改的关键配置。一个非常常用的参数是./configure --prefix=/usr, 这将把你的应用程序安装到/usr,而不是如我的说明,装到/usr/local。)]]。这个命令会检查你是否有安装程序所需的所有程序————大多数情况下答案是否定的, 那它就会在运行中遇到错误,并提示需要某个程序。
  如果上述情况发生了,输出的最后一行会类似下面的:configure: error: Library requirements (gobbletygook) not met,后面还有一些 我们不关心的废话。但就在上面它会列出找不到的文件名称,据我的经验,大多数情况下,会列出一个以".pc"结尾的文件。你接着要做的是运行apt-file search 找不到的文件名称.pc,这会告诉你在哪个Ubuntu包里有缺少的文件。接下来,你只需sudo apt-get install 所需包安装 即可。接着再试试运行./configure,看看行不行。如果你得到一堆以config.status: creating Makefile结尾的文本,并且config.status: creating Makefile后面明显没有错误信息,那你就可以进入一步了。


第四步:制作和安装


  如果你已经到这里了,那你已经完成最艰难的部分了。现在你需要做的只是运行命令make,这会完成程序的实际制作(编译)。若程序很大或你的电脑非常 缓慢,去喝一杯咖啡之类的。完成后,运行sudo make install,它会为你完成最后阶段的安装。完成后(这该不会花多久),你的程序将被安装到 /usr/local/bin,你应该可以顺利地运行它。


Step 5:附言


  如果这些对你而言太难了,别为此烦恼。毕竟你用的是Ubuntu Linux,它已经把所有你实际需要的软件打包了。如果还没有软件包,它认为,除了一些特殊情形,你并不真的需要这个软件,而且不管怎样,几个月内有人会为你打包的。事实上,你需要这样制作和编译的程序仅仅是那些新的(也许现在还不稳定或者还没为你的 桌面准备好)————若嫌此编译过程过难,好,也许你该重新考虑一下为什么你想这样做,然后只要等几个月以后的下一个稳定的发行版。
  若所求软件包非常重要,并且你认为它值得适当地出现在Ubuntu中,也许你可以联系 Masters of the Universe,看看他们能否为你做这项艰难 的工作———— 如果他们将某个软件打包了,那任何人就不用编译即可安装了。但是,如果你可以顺利完成上面的编译,在通向专家级Linux用户的道路上,你将走的更好——-在你编译了几次后,你会为所有的这一切如此容易而感到惊讶的。祝你好运!
  注:容易指“比你扯下头发,一边绕着屋子跑一边尖叫Linux多么糟糕容易“。并不是真的很容易。
阅读全文...

Sunday, October 26, 2008

编译Gsmartcontrol

我是按照下面的步骤直接做的deb包。。。
然后在编译的时候报错了。。。安装好对应的包就ok了
libpcre3-dev (7.4-1ubuntu2.1)
libpcrecpp0 (7.4-1ubuntu2.1)

安装打包环境:
sudo apt-get install dh-make dpkg-dev debhelper fakeroot build-essential 

编译deb包
{
mkdir leafpad
mv leafpad-0.7.9.tar.gz leafpad/
tar zxvf leafpad-0.7.9.tar.gz
tar xvfj leafpad-0.7.9.tar.bz2 }图形界面可忽略
cd leafpad-0.7.9
dh_make -e xxxx@123.com -f ../leafpad-0.7.9.tar.gz
修改/debian/control中描述部分(非必要)
dpkg-buildpackage -rfakeroot -uc -b 将代码编译成为deb软件包
fakeroot debian/rules binary 快速构建临时 .deb 包

阅读全文...