QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1154|回复: 0

完全用 GNU/Linux 工作(转贴)

[复制链接]
发表于 2003-7-3 08:08:34 | 显示全部楼层 |阅读模式
*****************************************************
在被频频转载后作者修改了此文,有人认为(也许应该说是指责)变得温和了

*****************************************************



Hi! 我们来看看很关键的一种计算机软件叫做"操作系统"(名词 解释略 )。GNU/Linux 是一个操作系统,如果你不知道它是怎样一 个系统,可以参考 http://www.kernel.org.


由于 GNU/Linux 这个词太长,下面如果没有特别指明,"Linux"就是指"GNU/Linux"。由于某种我不明白的稀奇古怪的法律原因,Linux 不能叫做 UNIX。我只是一个无名小卒,所以可能没有人无聊到想找我打官司,所以我可以随便提到一些专有名词,而不用声明"foo是bar公司的商标"。我可以说:Linux 实质上是 UNIX,而且是最有生命力,最有前途的 UNIX。以后我用在 Linux 身上的说法同样适用于其它 UNIX,反之也成立。


我与 Linux 的故事


这是我写过的最长的一段个人历史,因为我对 Linux 实在非常有感情。不喜欢看别人历史的人可以跳过这节。


1997年,我进入计算机系学习一学期后,和别人合伙买了一个电脑,装了一个 Windows95 系统。可是 Windows95 太不稳定了,正常使用时一天死机3次不算多,况且我是那种顽劣分子,到了我手里,如果两个小时内 Windows 没有死机是很不正常的,合伙的同学都怕了我 我很委屈,我认为这不是我的错,一个操作系统不应该是这样脆弱。我不喜欢那样小心翼翼的使用计算机,我喜欢可摔可打的结实的东西(就像滑板:)。我告诉老师我想要一种不死机的系统,老师说:"你应该使用 UNIX。" 可是 UNIX 似乎是非常昂贵的东西,而且是臭名昭著的"对用户不友好"(据同学说),所以我虽然得到了 SCO UNIX,但是一直没能安装。


后来我偶然的在一个书店的角落里发现一本上了灰的书:"个人电脑上的 UNIX: Linux"(好像是这个名字吧)。那是书店里唯一的一本有关 Linux 的书籍(想想今天书店里汗牛塞屋的 Linux 书籍:),里面讲了一些 Slackware Linux 的安装,使用等东西。我浏览了一遍之后,发现这个系统是免费的,而且可以在PC上安装,所以非常感兴趣,把这本无人问津的书买了(咳,看那个书店老板笑的


然后我就开始寻找书中所说的 Slackware,它说要40多张软盘哪!结果没能在软件商店找到。两个月之后我居然在电脑城发现了 Slackware 的光盘,我立即把它买了回去。(卖软件的人说:"总算卖出去了"。) 我顶住合伙人的强烈反对,硬是把硬盘分了一块出来,照书里的方法把 Slackware 安上了,光盘安装出其意料的简单。为了避免别人不方便,我没有在mbr安装lilo,每次都从软盘启动机器。从此我就算是一个 Linux 用户了。其实这时我只当了半年的 Windows 用户。


但是我那时候并不是很理解 Linux,我认为它只是没有钱买商业 UNIX 的人的一种无奈的选择。后来 Linux 网络功能越来越强,很多网站开始使用Linux,可是我认为 Linux 只能作为网络服务器或者程序开发平台,而不能用于普通用户。用 Linux 吧,我不知道怎么在 Linux 下放影片,不知道怎么舒舒服服的浏览网页。用 Windows 吧,我不知道怎么在 Windows 下舒舒服服的写程序,Turbo C, VC++ 的工作方式显然是不适合我的。所以很多时候我在 Windows 和 Linux 之间切换,我觉得很不方便。但是 Linux 的操作方式实在很高效,我甚至在 Windows 下安装 cygwin。


此处省略20000字……


半年前由于我对 LaTeX 的深入掌握,我移植了 gbkfonts 给 Linux,而且发现了很好的中文输入法 XSIM,SCIM 和 fcitx,所以我不再依赖 Word,而能够用 Linux 处理大部分事情了。所以我有一个月没有用 win2000, 后来我把除了 C: 以外的 Windows 分区都删掉给了 Linux,仍然没有启动 win2000。后来有一天偶然需要看一个word文档,启动win2000,可是不知道怎么它就崩溃了(难道因为我删了两个分区?),然后我干脆把 C: 也格成了 ext3,这样 Windows 就从我机器上消失了,Linux 成为了我机器上的统治者。那个 word 文档,我后来让同学帮我转成了 PDF 给我看


我相信我能用 Linux 解决电脑上的所有问题,所以遇到问题时就想办法用 Linux 解决,结果半年下来,我顺利的完成了各种工作。包括日常的网络,编程,科研和论文,presentation,娱乐……


现在我已经几乎忘记了 Windows,不是因为歧视它,只不过因为它已经对我没有什么用处,所以不要以为我想引起"宗教战争"哈,操作系统的不同不应该成为人们争执的原因。实际上我很乐意帮助爸爸解决有关 Windows 的问题,隔壁的微软研究院的王益也是我的好朋友。我以后的讨论不再涉及 Windows 的优劣的事情,我知道 Linux 能做的很多事情 Windows 也能做,但是不用提醒我啦,因为我实在对操作系统的底层不感兴趣。


自由软件的重要性


我非常高兴能够完全使用 Linux 工作。虽然 Linux 和它的朋友们在很多方面已经超过了商业 UNIX,它们在某些方面还不如某些商业 UNIX,但是可以预见,Linux 这样的自由软件在将来一定会一统天下。因为"自由"对于人们来说是非常重要的,越来越多的人意识到了这一点,他们志愿的投入到 Linux 程序的开发中来。很多大公司,IBM, SGI, HP…… 也都开始支持 Linux. 所以 Linux 的发展会越来越快。Linux 没有任何历史包袱,通过学习其它系统的优点,Linux 的程序会越来越完美。


纵观历史上造成重大影响的程序,几乎都是自由开放的软件。TeX, Linux, Xwindow, Perl ... 而商业程序的命运总是在一瞬间灰飞烟灭,被人们遗忘得不留任何痕迹。看看商业的 UNIX,四分五裂,各不兼容,给用户造成很多麻烦。商业的 MACSYMA,它的公司在一瞬间消失,让所有用户失去支持。这是我们不希望看到的。


自由软件为什么会有如此大的威力呢?首先,你会发现,自由软件的适应性比商业软件大的多。只要有人需要某种功能,就有人把这种功能加入到程序里。FVWM 浩如烟海的功能就是这样的结果。自由软件往往可移植性强很容易跟其它系统的程序相处,它们在不同系统上的编译安装一般没有问题,因为这是由很多种系统的用户共同开发而成的。而商业UNIX程序往往不能很容易的在不同的系统安装,甚至在开发时使用的那种系统上安装都需要花很大功夫。不提供源码直接导致了这种不方便。曾经有一个日本软件公司的工作人员在我们实验室抓了整整一天后脑勺,才把一个Solaris的商业软件装好 :p


自由软件的全部或者部分能够被随意的利用,改进,再次发行。你可以修改你发现的bug或者加入你自己需要的功能,或者移植给其它系统。如果你不是一个程序员,那你可以请人来做这个工作。比如你报告一个bug,很快就有人解决这个问题,你提出一个新的想法,有些感兴趣的程序员就可以帮你实现。比如,我就曾经修改了 XSIM 的代码,改正了它在屏幕保护时状态窗口不消失的问题。我移植了 gbkfonts 的代码给 Linux 和 Solaris,我就能在这些系统生成 TeX 的中文字体。我修改了 dvipdfmx 的代码,让它可以嵌入某些通常不能嵌入的字体,我使用 fcitx 的时候发现有些很不方便的地方,我给它的作者Yuking兄提了一些建议,结果一个星期之内他就满足了我的要求,推出了新版本。现在我觉得 fcitx 已经很完美了。


用户能够自己改进程序,再次发行,这样软件的功能就会越来越强大,衍生出来的软件会使更多的人受益。商业软件没有这个优点,如果出了问题,你不能很快的得到帮助,bug 不能很快的得到修改,即使修改了bug,更新的版本很可能还得要你掏钱,谁还愿意报告bug呢?至于你想要的特殊的功能,想都不要想啦!一般的软件公司根本不可能考虑你个人的需要。


自由软件具有强大的生命力,这是由它的开放性决定的。一个自由软件,哪怕只剩一个人喜欢,他都可以自己来维护这个程序的生存,适应自己的需要。说不定以后还会有更多的人对这个程序产生兴趣。MAXIMA 就是这样一个例子。Schelter 博士由于自己的兴趣,默默无闻的维护 MAXIMA 直到他生命的最后一刻,他拯救了 MACSYMA - 世界上最优秀的计算机代数系统。


自由软件有良好的社会作用。它的一切工作原理都是公开的,这体现了尊重科学,不为名利,信息公开,共同进步的良好风尚,这对于科学研究工作是非常重要的。它能够被随意的拷贝给需要它的人们去用,这体现了人们互相帮助的美德,一个理解自由软件思想的人会更加关爱社会,乐于助人,对于改善整个社会风气都有很大的好处。


消除"某些事情 Linux 干不了"的误区


Linux 比起某些其它操作系统确实有干不了的事情,但是它能干 而其它系统不能干的事情也很多。我在这里想消除的误区,只是本来 Linux 能干,而你却认为它不能干的事情。


很多人在某些事情上已经离不开 Linux,但是他却没有找到可靠 的 Linux 程序来完成某些其它操作系统能完成的某些简单的事情。 比如很多人抱怨 Linux 下的 Mozilla mail, evolution 损坏他们刚 写好要发出去的 email。 有些人认为他专业上的程序只有商业 UNIX 和 Windows 才有。比如有些人为了使用 Mathematica 而使用 Windows,他说 Linux 下没有 Mathematica 程序,商业 UNIX 又买 不起。其实完全可以用 Linux 来完成这些事情。


首先,Mozilla mail, evolution 虽然是 Linux 可以用的程序, 但是由于历史太短,它们还没有稳定下来,有很多 bug。如果你需要 可靠稳定,而不想费时间帮助 debug,你完全可以用 Mutt 这样的强大可靠的工具来发 送你的 email。Mutt 比起 Mozilla mail, evolution 都要强大的多, 但是它显然是某些"专家"才能使用的工具,普通用户还是只能用 Mozilla mail 或者 evolution。所以很感谢 Mozilla mail 和 evolution 的使用者,没有你们,这两个软件可能就不能得到用户的 反馈和改进了。别怕!什么专家啊,吓你的 其实普通对电脑有兴 趣的人都可以用 Mutt。我为你准备了一个不需要成为专家就能使用 Mutt 的入门文档,看这里。


第二,Mathematica 有 Linux 的版本,你自己去 wolfram.com 看看吧,800 多美元就能买到。由于 Linux 性能良好,很多科学家, 工程师开始使用 Linux, 所以商业的科学工程程序,比如 Matlab, Mathematica, AutoCAD, Design Compiler, HSpice ……很多都移植 给了 Linux。当然它们可能不是免费的,但是它们值那个价钱(也许 吧)。如果你喜欢自由软件,很多商业程序有对应的自由软件,比如 你可以用 MAXIMA 来代替 Mathematica,用 octave 代替 Matlab …… 而且你可能会发现它们很多时候比它们对应的商业程序好!


用惯了 Windows 的人可能会发现,Windows 下有些东西在 Linux 下没有很相似的,或者你找到很多类似的,但是它们每一个比起 Windows 的那个程序都要差很多。你找不到好程序的原因,很多时候 只是你的头脑中的固定模式在作怪。下面我们来看看两种情况:

有一个完全类似的程序,但是由于它乍一看不漂亮,被你忽略了。

用惯了 Windows 的用户最容易出现这种情况,因为 Windows 的 程序看起来都是相当漂亮的。所以大部分人看到像 Mutt, lftp 这样 的程序根本就不会考虑用它们,而另外去找一些像 Windows 程序的 程序来用。


这是一个误区,要知道:很多时候外表不是最重要的。Mutt, lftp 是经过千锤百炼的优秀程序,写一个界面对于它们的作者显然 是小菜一碟,他们没有漂亮的界面是有原因的(以后讨论)。有些程序 虽然看起来很漂亮,但是它们是一些初学编程的人写的,用起来非常 恼火。现在由于 Gtk, Qt 的诞生,Linux 下开发图形界面程序越来 越简单,很多初学者都可以随手编出一些漂亮不中用的程序(我以前 也写过:)。如果你在这样的程序中间挑来挑去,永远也找不到你满 意的。当然也有一流的程序用 Gtk 和 Qt。


我曾经也犯过这样的错误,从外表区分一切。结果优秀的 FVWM, lftp, Mutt, wget 都被我忽略过。当我被别的不稳定的程序惹恼了, 找回它们的时候,真后悔当初怎么不多试试就把它们删了。


我第一次看到 FVWM 时,觉得它只不过是一个有很厚很难看边框 的东西,可是现在,我的同学看到我的 FVWM 都说:"哇!真漂亮。" 你甚至可以让 FVWM 比 Windows XP 还漂亮。某些初次见面没有迷住 你的程序,很有可能让你二见钟情,以至于伴你终生哟。这就是所谓 的魅力吧

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

很多人很关心 Open Office, Star Office, AbiWord, ... 他们 多么盼望有一天某一个 Linux 程序能够完全兼容的打开一个复杂的 doc 文档。这显然是不容易办到的,但是你为什么不换一个思考方式 呢?我们来看看你换一种方式做幻灯片对你到底有什么损失:


你直接用 Open Office Impress 撰写你的幻灯片,存成 Open Office 的格式,要演示幻灯片时,你把你的笔记本电脑拿到会场演 示。如果你需要在别人的 Windows 机器上演示,那就存成 PPT 格式 就行了。我的一个朋友就是这么做的,他告诉我,有人觉得非得用 PowerPoint,那只是脑袋转不过弯而已。


除了"所见即所得",其实你还有更好的选择。你看看那些高水 平的学术杂志,论文,那些大学教授的网页,那些漂亮的幻灯片,它 们是什么做的?原来 UNIX 用户早就有非常方便的 LaTeX, SGML, XML 等东西可以处理文档,而且它们比起 Word 都要方便的多。用 ConTeXt 做出的幻灯片,比起 PPT 和 OpenOffice 都要炫很多。


其实我只举出了很少的例子,只是为了说明,我们的头脑似乎很 容易进入一种误区。你不一定要按照某种别人灌输给你的"模式"思 考。有人说 OOP 是最好的,有人说永远不应该用 goto 语句,有人 说大家都应该用"所见即所得"的工具,有人说全世界只需要 5 台 电脑,有人声称过 Internet 是没有前途的…… 他们中间有的人是 大科学家,有的人是世界首富,所以似乎人们很容易就把这些观点默 认了,而且到处宣传,"某某牛人说……",从来没有自己思考一下, 他们到底说的对不对。其实这些名人也很无辜的,无意之中说出一句 话,就被大家到处宣扬,没法收回。


使用配置文件定制程序行为


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


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


当然不是。因为图形界面配置方式的能力是极其有限的,而配置 文件里的符号的表达能力却是无限的。用图形界面配置这些程序的话, 如果你想达到配置文件的效果,你需要成百上千的菜单,checkbox, radio button, ... 到时候你根本没办法找到你需要修改的地方了!


配置文件其实比菜单方便。你在配置文件里可以完全发挥编辑器 的强大功能。你可以任意搜索到你需要的配置选项。配置文件的语法 都有很多相似之处,一般就是一些命令,设置一些变量,参数,…… 一旦用会了一个,其它的也就容易理解了。


你有没有发现有些菜单配置的程序,连IP地址都会被分开在4个文 本框里,你不能一次性把外面的IP地址拷贝进去,也不能拷贝出来, 也不能整体删除,多麻烦。要是以太网物理地址,那岂不是要分成6 个文本框!不知道这种程序的设计者是怎么想的,竟然还有很多人模 仿这种方式。


配置文件对程序设计者有较高要求。你发现了吗,写一个使用配 置文件的程序要比写一个菜单配置的程序难度大。有些程序的配置文 件里,有命令,有变量,有正则表达式,…… 它们的顺序可以是任 意的。你想想的设计难度有多大。而一个菜单配置的程序,所有的选 项都被设计者固定下来了,你只有那么几个选择,它的设计难度要低 的多。比如那种把IP地址分成4个文本框的程序,只不过是为了避免 写代码去验证用户输入的IP的合法性,因为这样你就不可能输入 12344.343#2344.430 这样非法的 IP,但是这给了用户很多不方便。


请用 Xwindow


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


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


他其实不懂 Xwindow 的原理,没有明白 Xwindow 的好处,或者 是他被 Gnome 和 KDE 那样不稳定的 "Xwindow" 给弄烦了。console 方式对于网络管理员可能比较方便,有时甚至是唯一的选择。但是, 对于普通人,不用 Xwindow 显然是非常不方便的,想一想你连函数 曲线都不能画出来!在X的xterm, rxvt下就能完成 console 的所有 功能,何乐而不为?


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


我写了一个 Xwindow 的入门简介,你可以看看这里。


理解 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 的输入方式来输入命令行,我 就是这么做的。一个程序可以调用另外一个程序来得到数据,可以把 数据交给它处理后返回来,可以在自己的窗口里"嵌入"另外一个程 序。


比如我用 Mutt 的时候,我可以用 VIM 也可以用 pico 来编辑邮 件,我可以用 ImageMagick 也可以用 xv 来显示附件里的图片,我 可以用 lynx 把 HTML 附件转成文本嵌入窗口中,我也可以把 HTML 附件交给 Mozilla 图形显示。我可以让 GnuPG 帮我把邮件进行数字 签名和加密,我也可以用其它 PGP 程序。我想让 Postfix 而不是 sendmail 帮我发出邮件,我想让 fetchmail 帮我收邮件,转发给 postfix,然后被我自己写的Perl过滤器处理…… 这一切我都可以办 到!我可以选择我最喜欢的专门的程序来完成专门的工作,然后把它 们结合在一起,我也可以分别得到它们的好处。


几点忠告

不要当"传教士"

很多人在讨论区不断的引起 "Linux vs. Windows" 之类的讨论, 甚至争的面红耳赤,这是没有必要的。


这种争论是浪费时间而没有任何用处的。对,你花了一下午,用 许多事实"捍卫"了 "Linux 比 Windows 好" 这个说法。但是 Windows 的支持者并不会喜欢上 Linux,他们只是稍微退缩一下,然 后找一些新的证据来跟你辩论。


世界上的人们都在利用 Linux 研究最前沿的科学,我们还在这里 讨论"要不要用 Linux"这种无聊的问题,什么时候才能赶上时代前 进的步伐?


什么叫做"Windows 支持者",什么叫做"Linux 支持者"?我 们为什么要支持某一个而反对另外一个?你不需要为 Linux "护法", 不需要成为"Linux 支持者"或者"GNU传教士",GNU/Linux 已经 用事实向世界证明了它们的威力,已经被大多数人接受。你只需要安 安静静享受 GNU/Linux 给你的乐趣和自由。


你需要关心的不是你的工具是什么,而是你用它做了什么。精 通 Linux 并不说明任何问题,因为它只是一个工具而已。如果你用 Windows 能很好的完成你的任务,那你就没有必要费时间去熟悉 Linux。直到有一天你发现一项任务只有 Linux 才能完成的时候再换 也不迟,因为你身边的 Linux 的爱好者一定会很乐意的帮助你。


工具不是人,不应该对工具有感情。这是你在进行任何对工具的 讨论前需要提醒自己的事情。面对一些容易引起争论的东西:Word 和 TeX;Emacs 和 VIM;MAXIMA,Mathematica 和 Maple;Gnome, FVWM 和 KDE;Mutt 和 Pine …… 一定要冷静的对自己说:"我不 站在它们任何一边,因为它们不是人。"


各人的需要不同,生活的环境不同。对你来说好的东西,对别人 来说不一定好,我们需要尊重别人的选择。如果你当面说别人正在用 的程序不好,没有人会乐意接受你的意见。我从来没有建议过我爸爸 不用 Windows + WPS,而用 Linux + LaTeX 来处理他的英语试卷。 因为 WPS 是我爸爸的选择,他能用 WPS 编辑出很好的试题去测试他 的学生,那就足够了。


我曾经帮我爸爸做了一个 perl 程序,能够自动从一种我自己设 计的 markup 语言转化成 LaTeX 格式的英语试卷。可以自动对试题 编号,乱序排版选择题的选项,自动生成答案表,生成老师用的显示 答案的版本,自动对短文改错题进行优化分段,自动拼写检查,图形 化的配置方式…… 我爸爸高兴的用了一段时间,可是后来他想用 WPS 里的一种标题样式,而我不在家,无法为他修改程序。所以他又 换回了 WPS。这就像有人送爱因斯坦一罐剃须泡沫一样,刚开始几天, 发现他神采飞扬,不断夸这个东西真舒服。过了几天,发现爱因斯坦 又开始用白水剃胡子了,因为剃须泡沫用完了,他懒得自己去买那个 东西。这只是习惯问题。

不要"玩 Linux"

很多人用 Linux 的时候会感觉很迷茫,该用哪个发行呢?是不是 我少装了什么?怎么升级这么快啊!怎么这么不稳定!每当遇到新的 软件他就想试用,每当新的版本出现,他就更新,然后用鼠标在新的 菜单里选择从来没见过的程序来用用。


其实你是为了Linux而使用Linux,而没有找到正确的理由来利用 Linux。你首先要明确用电脑的目的,你用它是为了解决你的实际问 题,而不是为了学习安装操作系统,不是为了测试哪个版本好用,不 是为了"赶上潮流",更不是因为你硬盘太大了,你想多占点空间。


如果你启动了电脑之后不知道应该干什么,那么最好先不要用电 脑,因为你可能有更重要的事情需要做。

不用挑剔发行版本

很多人刚开始用 Linux 的时候,总是在怀疑别的发行版本是否比 自己正在用的这个好,总是怀疑自己以后时候会失去支持,不得不换 用别的发行。所以很多人今天是 Redhat,明天又换成了 debian, 一 会儿又是 gentoo, …… 甚至有的人在一台机器上装了两个版本的 Linux,然后比较哪一个好。


其实你完全没有必要这样做,任何发行,只要你熟悉了,你在上 面的工作方式几乎是不会受到任何影响的。你常常听说 Debian 的更 新比 Redhat 快,包比 Redhat 多,但是你可以比 Debian 更新还要 快,直接到你需要的程序的主站点下载源码来编译就是了。


Debian, TurboLinux, SuSE, Redhat, Gentoo, ... 任何一个版 本都是不错的。很多人认为用 Debian 或者自己攒一个 LFS 是高水 平黑客的象征,但是我不想当什么"黑客",所以我一直用的都是 Redhat

直接从源码安装程序

很多人放着最新的源码不用,等着有人帮他做出 rpm, deb, 才能 安装。我说你为什么不用源码编译,这样版本比 rpm 高的多,有很 多新功能,而没有烦人的依赖关系。可是他说:"要是我用源码编译 安装,卸载的时候就不方便了,会留下很多垃圾。"


为什么程序还没有安装你就想到卸载?难道你不知道这个程序是 用来做什么的?你应该改变到处找程序来试用的作法,而应该先了解 一下到底那些程序有同样的功能,听听别人的意见,看看它们各有什 么长处和短处,然后挑一个最适合你的程序来用。


从源码编译安装程序,不但比你装rpm更适合自己的机器设置,而 且它们一般会装到 /usr/local 目录,这样你以后如果换硬盘重装系 统,也可以把以前 /usr/local 下的程序原封不动拷贝过去用。我的 /usr/local 下有 2G 之多的程序,你想要是我有一台新机器要重新 安装,然后配置,得花费多少时间?实际上我曾经通过网络把它们传 到一台新机器上,然后就出去吃晚饭,回来时我就得到了另一台一摸 一样的 Linux 机器。


确实要卸载 make install 的程序怎么办呢?答案是直接删掉。 别以为直接删掉程序会留下垃圾,引起"系统不稳定"。(btw: 这是 谁教你的啊?呵呵。) make install 无非就是把可执行程序放在 /usr/local/bin, 把某些函数库放在 /usr/local/lib,把数据文件 放在 /usr/local/share 下一个它自己的目录,你把这些东西都删掉 就行了,不会留下垃圾,即使真的留下一点文件没有删掉也占不了多 少空间,更不可能引起系统不稳定。UNIX 就是这么简单


但是有几个程序不建议从源码安装,它们是 Mozilla, Open Office, ... 它们编译时会占用你几个G的空间和好几个小时的时间, 这种花费我觉得是不值得的,因为你不能从编译得到更多好处,不如 直接安装编译好的版本。

不要盲目升级

不知道这是心理作用还是什么,有的人看到比较大的版本号,就 会很想换成那个。很多人的 Redhat 本来配置的很舒服了,可是一旦 Redhat 发行新的版本,他们就会尽快下载过来,然后选择升级安装。 结果很多时候把自己原来修改得很好的配置文件给冲掉了。新的软件 又带来了新的问题,比如有一次我的 rxvt 升级到 2.7.8 就跟 miniChinput 冲突了,升级到 Redhat 8.0,发现 xmms 居然缺省不 能放mp3了,XFree86 的 xtt 模块在 I810 上有新的 bug,会导致 Mozilla 突然退出。


如果你已经配置好了一切,千万别再整体升级了,这会浪费你很 多很多时间的,不值得。如果需要的话,你可以只把某些部件升级, 比如内核,glibc, gcc, XFree86,...


有句话说得好:"If it's not broken, don't fix it." 如果你的 程序能够完成你需要做的事情,你何必升级呢?

使用 UNIX 的经典程序

好的程序一般都是可以很方便的在很多种 UNIX 上移植的,bash, VIM, Emacs, Mutt, FVWM, xterm, 都是这样。如果你用这些程序, 你就可以在 Sun, HP, ... 等工作站上也装上,这样你在各种机型上 的工作环境就几乎完全一样了!你不需要在 Sun 上面用 CDE,在PC 上又换成 KDE,在它们上面都装一个 FVWM,使用相同的配置文件, 就能得到一致的界面。


这些程序大部分都是久经考验的,是经过很多人多年开发的结果。 它们功能完善,各种情况都考虑周全,绝对是你的好助手。

不要配置你不需要的东西

如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来 完成自己的科研任务和日常工作,那就可以不用系统管理员或者网络 管理员的标准来要求自己,因为当一个系统和网络管理员确实很辛苦。 普通用户学习那些不经常用到的复杂的维护系统的工具,其实是浪费 时间,学了不用是会很快忘记的!


我不是一个合格的网络管理员,我的服务器都只设置了我自己需 要的功能,设置好 ssh, ftp 已经足够了,那样可以省去我很多麻烦。 我从来不过度考虑"安全",因为 Linux 缺省已经很安全了。我没 有磁带机,就不用管 tar 的那些稀奇古怪的参数了,czf, xzf, ztf 已经可以满足我所有的需要。sed, awk, ... 我也只会几种常用的命 令行。

不用忙着看内核源码

除非你想研究操作系统,否则还是先把怎么使用 Linux 掌握好再 说吧。我以前看了那么多内核源代码,写了驱动程序,结果最后发现 我还是一只很多事情不能用 Linux 解决的菜鸟,甚至本科的有关 Linux 内核驱动程序的论文都是在 Windows 下写成的。吸取我的教 训吧,你应该首先掌握怎样用 Linux 解决自己的日常事务。

记住 Linux 只是一个内核

很多人把所有他在 Linux 下使用软件都称为 "Linux",把有关 TeX,FVWM,Emacs 的问题都往 Linux 论坛灌。用了一下 Bash,觉 得真好,结果说出来的是:" Linux 就是好。" Gnome 崩溃了,就 说:"Linux 怎么这么不稳定!" ……


人们似乎把所有光环都套在 Linux 身上,把所有臭鸡蛋也都投向 Linux。这就是为什么 Richard Stallman 不是很高兴人们把这个操 作系统叫做 "Linux" 了。


许许多多的人在各种不同的软件后面付出了辛勤的劳动。Linux 只是这些软件的一个载体。虽然是很好的载体,但是我们应该清楚的 认识到,这些软件,XFree86, Bash, FVWM,Sawfish, Mutt, lftp, Mozilla, ... 它们跟 Linux 内核是平起平坐的概念。赞美和批评都 应该指向软件本身,而不是它的载体。


虽然这么说,把基础问题都发到 Linux 的论坛其实是好事,这样 可以繁荣讨论。等到人们对这些程序认识越来越深入的时候,可能他 们就会去专门的新闻组进行讨论了。


虽然说不要把所有光环都套在 Linux 头上,但是 Linux 确实是 非常好的内核。在我们舒舒服服使用应用程序的时候,也应该从内心 感谢 Linux 内核的设计者们。

不要习惯的使用 root 帐号。在需要的时候才 su!

这是很多刚接触 UNIX 类操作系统的人常见的现象,他们不喜欢 在管理系统的时候才 su, 而是一直用 root 帐号干所有事情,配置 系统,安装程序,浏览网页,玩游戏,编程 ……


结果有一天,他不小心在某个系统目录使用了 rm * ... 后果不 堪设想……


我犯过几次这个问题,我的同学也犯过这个问题。我为他设置好 的一切,中文显示和输入,LaTeX+CJK, FVWM, ……都毁于一旦。我 不想再重复这个失败

干你的正事去

很多人跟我说,你的网页浪费我好多时间来配置这配置那,一会 儿是 FVWM,一会儿是 Mutt ……


嗯……那些东西都是我有空的时候一点一点积累的,如果你想一 次性搞定所有那些东西,恐怕得花你几个星期甚至几个月的时间!并 不是一定要搞定所有这些东西你才能正常工作的。除非你真的非得利 用某个程序,或者你闲着没事,否则你可以不管这些东西。


我写论文的时候,发现 Word 效果太差,才学会了 LaTeX。我实 现算法的时候,发现 C 和 C++ 表达能力不足,才学会了 Scheme。 我进行 Scheme 编程的时候,发现 VIM 不太方便,才换用了 Emacs ……一切都是需求驱动的。


其实我一旦设置好一台机器就很少修改我的配置,我有两台机器, 一台在宿舍,一台在实验室。实验室的新机器配置的时候迅速之极, 我把宿舍机器的 /usr/local 整个拷贝过去就了事了。我非常不喜欢 反复配置系统!


设置好了机器我就很少访问 Linux 讨论组。每天快乐的学习,研 究几何算法,探索世界的奥秘,这才是我的正事。


但是我不会忘记,在我的快乐探索的道路中,Linux 和其它很多 软件,给我无穷的力量。


Linux 应用程序简介


现在我告诉你怎样用 Linux 处理很多事情。


半年以前我由于中文老是配置不好,一直是双系统,不时需要重 起到 Win2k 来处理汉字。后来我找到了 miniChinput, XSIM, fcitx 和 SCIM 输入法。这下可以很好的处理汉字了,我最喜欢 fcitx。而 且 VIM 和 Emacs 对汉字支持越来越好。我的大部分文本是用 VIM 编辑的,包括程序,信件,网页,LaTeX 论文,MetaPost 图形。


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


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


我曾经抱怨 mozilla-mail 经常突然消失,损坏我好几封快要完 成的信件。后来我发现 mozilla 的邮件处理程序确实是不稳定的, 功能又弱,有经验的 UNIX 用户都不用这样的程序。Mutt 是一个非常稳定可靠的 UNIX 邮 件处理程序,而且功能非常强大。


我曾经为 Gnome 和 KDE 的不稳定而烦恼。现在我找到了非常强 大的 FVWM和Sawfish。KDE, Gnome 也能和 FVWM, Sawfish 一起工作。虽然 Gnome 和 KDE 现在 不是很稳定,但是某些部件程序还不错,比如我有时也用的着 gnome-panel。很多 gtk, Qt 的程序也很不错,它们很多都是可以独 立于这些桌面环境运行的。


我曾经用着盗版的 Mathematica,后来我发现了自由的 MAXIMA,经过一段时间的熟悉,我发现 MAXIMA 比 Mathematica 更严密,更方便,更自然,它是更适合处理 数学问题的工具。而且 MAXIMA 本身可以用 LISP 语言来扩展,这是 非常好的。


处理日常事务的 Linux 程序和它们的配置


下面列出我常用的一些 Linux 程序。一个列表里可能有很多,那 是为了方便你来选择,我列出了比较信得过的。但其实很多只有第一 个是我真正在用的,因为我不喜欢试用程序。


我建议一些简单的使用方式,一般就一句话。

Shell: bash。它结合了 csh 和 ksh 的优点,并且有 readline 功能,你可以随意绑定自己的键盘,使用 emacs 或者 vi 的方式都 可以帮助你高效的输入命令行。info bash 可以得到非常详细的 bash 说明书,为了高效的使用 bash,你最好看看这个。你可以按照 这个说明自己写一个 .bashrc,你还可以写一个 .inputrc 来配置 readline 库,这样其它使用 readline 的程序也可以使用同样的方 法输入,非常好。

你可以看看我写的一个 readline介绍 。

编辑器: Emacs, VIM。

Emacs 是非常强大智能的编辑器,是 世界上最强的,它有永远挖掘不完的能力。所以我当然推荐有能力的 人都使用 Emacs。


VIM 是 vi 的改进,建议熟悉一下 VIM, 因为很多其它程序比如 tin, Mutt, Firebird BBS 使用类似 VIM 的 键绑定,VIM 的键帮定跟正则表达式很有关系,比如 "^" 和 "$"。 在 UNIX 机器上,有时你被迫只能用 vi,而 vi 是 modal 的,如果 先熟悉了 Windows 的编辑器会比较难以接受 VIM 的工作方式,所以 你需要适应一下。

程序开发: gcc, make, ld, Scheme48, gcl, j2sdk, Perl, Python, Tcl/Tk ... 这个的配置没什么好说的,自己用什么就去看 看文档吧。
文档工具:LaTeX, ConTeXt, TeXmacs。LaTeX 可以用来写论文或者简单的幻 灯片,ConTeXt 可以作出非常漂亮的屏幕文档。

TeXmacs 可以非常舒服的,所见即所得(WYSIWYG)的编辑文档,它 比 Word,WordPro,WPS,lyx 都要 WYSIWYG,它才是真正的WYSIWYG, 非常漂亮。而且它是可以用 Guile/Scheme 配置的。

绘图工具:MetaPost。这个语言 太强了,以至于我只用它了。你不熟悉的话可以用 xfig, dia 来画 一些流程图之类的图片。
图像处理:ImageMagick 中的 import 程序可以屏幕抓图, convert 程序可以转换图像格式,display 可以显示图片和简单编辑 (缩放,换质量,转格式,简单绘图,简单虑镜)。通常我就这么点需 要。如果你要更强大的图像工具可以用 Gimp, 它几乎和 Photoshop 差不多。自己man一下 import, convert 就知道怎么用了,display 显示图片后在图片上点击鼠标会有菜单,很简单的,不多说了。
图片显示浏览:gThumb,CompuPic。其中 gThumb 是完全的自由 软件,浏览图片非常稳定方便。CompuPic 性能非常好,速度比 ACDSee 快 3 倍!
自动管理工具:make。我可以用make来自动编译程序,自动编译 文档,自动更新插图…… 全自动,而且不会让机器重复劳动。你看 看 info make,那是一份非常详细的教你怎么写 Makefile 的文档, 比任何其它书籍都好。
数值计算程序:Octave。这个程序基本上可以实现 Matlab 所有 的数值计算功能,而且语法跟 Matlab 一样。
代数计算程序:MAXIMA。这个程序 基于世界上最老的计算机代数系统之一: MACSYMA 系统。它是用 Common Lisp 实现的。很多现在的符号计算程序比如 Maple 都从 MAXIMA 身上学到很多东西。

我为 MAXIMA 写了一个简单的介绍, 通过这个介绍你会发现 MAXIMA 的光辉历史,体会到自由软件的重要 优势。MAXIMA现在以GPL发行,永远是一个自由软件。

加密程序:GnuPG。我的 PGP 密钥就是它搞出来的。不过说实话, 我从来没有过用的着它的地方。
打包,压缩程序。什么都有: tar, gzip, bzip2, zip, rar, ... 对于 tar 通常你只需要知道3种参数: zxf(解包),zcf(打包), ztf(看包里有什么文件)。其它的就不多说了。
虚拟光驱程序。Linux 不需要虚拟光驱程序,要看一个iso文件 的内容,直接 mount 就行了。比如 mount -o loop mycd.iso /mnt/cdrom。要把光盘做成一个iso文件,用dd就行了,比如如果你 的光驱是 /dev/hdb,那么: dd if=/dev/hdb of=mycd.iso 就可以做 一个光盘镜像文件叫做 mycd.iso.
ftp 服务器:proftpd, vsftpd。proftpd 功能很强,但是我只 用了最简单的一种设置。
WWW 服务器:apache。我曾经设置过 apache,但是发现它对我 没有用,因为我的机器不会一直开着等别人来访问。所以虽然设置好 了,但是一直闲置不用。

如果你没有这方面的特殊需要,比如为实验室设置一个 WEB 服务 器,apache, PHP, CGI ... 这些东西还是不碰为妙,它们会花掉你 很多时间的。

ftp 客户程序:lftp,ncftp。它们都是文本方式操作的,但是 比起图形界面的方便的多。比如 lftp 几乎具有 bash 的所有方便功 能,Tab 补全,bookmark, queue, 后台下载,镜像…… Linux 也有 图形界面的 ftp 客户程序,但是大多不稳定,有很多问题。这就是 很多人抱怨 Linux 不如 Windows 的一个小原因。还有很多人用 Wine 模拟 Windows 的 leapftp,其实 lftp 比 leapftp 好很多, 你需要的只是适应一下。它的工作方式很像 bash,所以建议你熟悉 一下 bash。

lftp 缺省不会显示 ftp 服务器的欢迎 信息和错误信息,这在很多时候不方便,因为你有可能想知道这个服 务器到底是因为没开机连不上,还是连接数已满。如果是这样,你可 以在 ~/.lftprc 里写入一行

debug 3
就可以看到出错 信息了。
自动下载工具:wget。它非常稳定,有一次我下载一个程序,用 IE 和 Mozilla 下载回来的文件都是坏的,最后还是 wget 可靠的传 输了数据。用它甚至可以镜像整个网站,比起 WebZip 这样的 Windows 程序强多了,而且不会因为你不付钱就在下载回来的网页里 强制插入广告。info wget 可以得到完整的使用说明。

这里给出一个用 wget 下载我的整个网页的命令:

wget -r -p -np -k http://learn.tsinghua.edu.cn/homepage/015450/index.html

虚拟终端:rxvt+screen。我在 rxvt 里启动一个 screen, 它可 以把一个终端当成好几个来用,而且可以连通 console 和 X,远程 和本机上的虚拟终端,功能非常强大!C-a ? 可以得到帮助。注意它 的 detach 功能,简直太有用了!
X server: XFree86。如果你不了解 Xwindow,可以看看这个 理解Xwindow。
窗口管理器:FVWM,Sawfish。FVWM 编译最好加入 libstroke。 详细使用方法见我的FVWM网页。我最近换 了 Sawfish,请看这 里。
中文输入:fcitx。它支持拼音,双拼,五笔和二笔输入。 安装极其方便,不依赖任何特殊的库。另外推荐你还可以用 XSIM, SCIM。
email 处理:Mutt + sendmail(Postfix) + fetchmail。配置方 法见我的 Mutt 网页。也可以使用 Gnus 来收发邮件。
看 PDF, PS, DJVU 文件:Acrobat Reader, xpdf, GhostScript, gv, djvu工具包和 netscape 插件。它们都是可以免 费得到的。
看CAJ, 超星文档。CAJviewer 好像没有 Linux 版本,不知道为 什么。如果找不到PDF,PS 或 DJVU,直接去图书馆借最好,屏幕阅 读伤眼睛
看网页:Phoenix, Mozilla, lynx。Mozilla 和 Phoenix 的 Xft 显示效果比 IE 好很多。不信可以看看我的屏幕抓图。Phoenix 比 IE 和Mozilla 都方便许多。看看我的 phoenix 抓 图。
英汉字典:dictd, WordNet,IBM 智能词典,星际译王。dictd 是字典服务器,你可以到 dict.org去下载一个服 务器和很多词库。包括 Webster 1913,WordNet, CIDE, FOLDOC, ... 我还安装了英法,法英词典,甚至魔鬼词典

我的 Emacs 可以使用一个叫做 dictionary 的扩展连接字典服务 器,我可以随时用鼠标右键查询词意,看这个抓图。我也可以使用 屏幕取词功能,看看这个抓图。


WordNet 是一个奇特的字典。你可以看看这个介绍。

编辑网页:我用 Emacs 或者 VIM 直接写 HTML。这非常方便。你从上面的抓图就可以看出。你如果想 要图形方式的可以用其它的比如 WebSphere,screem, BlueFish,它 们可以构造更复杂的网页。
登录其它 UNIX, Linux 机器:openSSH, telnet。我喜欢用 openSSH 把其它机器的 X 程序通过 ssh 加密的隧道传到我机器上显 示。
登录 Windows2000 server 的 display service: rdesktop,... 我有一天试了一下,不错。后来就没有用过了。
同步程序:rsync。我用 rsync 通过 ssh 来跟某些机器同步数 据,或者做自己机器上不同目录间的同步。
上BBS:rxvt(或任何一种终端) + telnet + chatbot(helloooo 机器人的程 序)
QQ, ICQ, MSN messenger: 我没有 QQ, ICQ 或 MSN。不过你可 以用 Gaim, 它同时支持 QQ, ICQ, MSN, AIM 和很多其它的即时通信 方式。ICQ 用户也可以用 Licq。Emacs 也有 ICQ, MSN 和 AIM 的插 件,不知道现在有没有 QQ 的。
放录像:MPlayer, RealPlayer。MPlayer 太好了,直接就可以 放 VCD, DVD, divx, wma, wmv ... rm 最好还是用 realplayer 放, 它也是免费的。
放音乐: xmms(mp3,ogg都可以), mpg321(放mp3), ogg123(放 ogg)。mpg321 不如 xmms 管理音乐文件那么方便,但是有时我还是 用 mpg321 放 mp3 作为背景音乐,因为懒得开一个xmms窗口
游戏:我已经很久没有玩电子游戏了。不过我觉得 KDE 的那个 ksokoban(推箱子),很好玩。大型游戏比如 Quake 也有 Linux 版本。
看 Word 文档或PPT。简单的就用 wvware 把它转成 HTML 看。

wvware 可以在 http://www.wvware.com免费得到。

wvHtml --charset=gb2312 your.doc your.html

就可以把doc转成 HTML。经测试,能够正确处理汉字和图片。

你可以让mutt调用 wvHtml 在 自己的窗口里直接显示转换的 doc 文档。只需要在 ~/.mailcap 文 件加入:

application/msword; wvHtml --charset=gb2312 %s - | lynx --dump -stdin;
nametemplate=%s.html; copiousoutput

在 ~/.muttrc 加入:
auto_view text/html application/msword

字处理。如果你真的要用字处理程序,那么就用 OpenOffice 里 的 oowriter。
使用 spreadsheet。我很少使用 spreadsheet,不过 OpenOffice 的 oocalc 应该能满足你的要求。看看 oocalc 打开一 个 excel 文档的抓图。
编辑复杂的幻灯片。可以用 OpenOffice 的 impress, 它可以正 确编辑和显示 PPT 很很多其它幻灯格式。可以做出很多复杂的动画 效果,投影显示效果也非常好。看看这个 抓图 就是 OpenOffice 打开一个 别人的 ppt 文档的样子。

其它专业工具


我是计算机专业的,所以我介绍的程序都接近计算机和数学方面。 有很多人问我 Linux 下的有关地理信息系统,统计分析,化学模拟…… 之类的软件。我确实不了解那些东西。


不过可以告诉你的是,世界上大部分科学家用的是 Linux,或者 是别的什么 UNIX,大部分用于学术研究的程序都有 Linux 版本,而 且大部分可以免费得到。问问你们专业的前辈,就知道你可以用哪些 程序了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-6-7 11:38 , Processed in 0.097878 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表