【忠告】学习 Linux 的七点忠告

【忠告】学习 Linux 的七点忠告

1、不要“玩 Linux”

       很多人用 Linux 的时候会感觉很迷茫,该用哪个发行呢?是不是我少装了什么?怎么升级这么快啊!怎么这么不稳定!每当遇到新的软件他就想试用,每当新的版本出现,他就更 新,然后用鼠标在新的菜单里选择从来没见过的程序来用用。
       其实你是为了Linux而使用Linux,而没有找到正确的理由来利用
       Linux。你首先要明确用电脑的目的,你用它是为了解决你的实际问题,而不是为了学习安装操作系统,不是为了测试哪个版本好用,不是为了“赶上潮流”,更不是因为你硬盘太大了,你想多占点空间。
       如果你启动了电脑之后不知道应该干什么,那么最好先不要用电脑,因为你可能有更重要的事情需要做。

       2、不用挑剔发行版本

       很多人刚开始用 Linux 的时候,总是在怀疑别的发行版本是否比自己正在用的这个好,总是怀疑自己以后时候会失去支持,不得不换用别的发行。所以很多人今天是 Redhat,明天又换成了 debian, 一会儿又是 gentoo, …… 甚至有的人在一台机器上装了两个版本的 Linux,然后比较哪一个好。
       其实你完全没有必要这样做,任何发行,只要你熟悉了,你在上面的工作方式几乎是不会受到任何影响的。你常常听说 Debian 的更新比 Redhat 快,包比 Redhat 多,但是你可以比 Debian 更新还要快,直接到你需要的程序的主站点下载源码来编译就是了。
       Debian, TurboLinux, SuSE, Redhat, Gentoo, ... 任何一个版本都是不错的。

       3、不要当“传教士”

       很多人在讨论区不断的引起 "Linux vs. Windows" 之类的讨论,甚至争的面红耳赤,这是没有必要的。因为各人的需要不同,生活的环境不同,你不可能得到一个定论。我们需要尊重别人的选择,这是你在进行任何 对工具的讨论前需要提醒自己的事情。面对一些容易引起争论的东西:Word 和 TeX;Emacs 和 VIM;MAXIMA,Mathematica 和 Maple;Gnome,FVWM 和 KDE;Mutt 和 Pine …… 一定要冷静。
       你需要关心的不是你的工具是什么,而是你用它做了什么。精通 Linux 并不说明任何问题,因为它只是一个工具而已。如果你用 Windows 能很好的完成你的任务,那你就没有必要费时间去熟悉 Linux。直到有一天你发现一项任务只有 Linux 才能完成的时候再换也不迟,因为你身边的 Linux 的爱好者一定会很乐意的帮助你。
       并不是喜欢一种东西就必须反对其它的。世界需要多样性,人们都需要FUN。用自己的兴趣去压制别人的,就会毁掉所有的兴趣。个人喜欢什么就用什么,完全没必要为这个争论。
       不要做“传教士”!你说我现在就是在“传教”?冤枉啊~

       4、直接从源码安装程序

       很多人放着最新的源码不用,等着有人帮他做出 rpm, deb, 才能安装。我说你为什么不用源码编译,这样版本比 rpm 高的多,有很多新功能,而没有烦人的依赖关系。可是他说:“要是我用源码编译安装,卸载的时候就不方便了,会留下很多垃圾。”
       为什么程序还没有安装你就想到卸载?难道你不知道这个程序是用来做什么的?你应该改变到处找程序来试用的作法,而应该先了解一下到底那些程序有同样的功 能,听听别人的意见,看看它们各有什么长处和短处,然后挑一个最适合你的程序来用。
       从源码编译安装程序,不但比你装rpm更适合自己的机器设置,而且它们一般会装到 /usr/local
目录,这样你以后如果换硬盘重装系统,也可以把以前 /usr/local 下的程序原封不动拷贝过去用。我的 /usr/local 下有 2G 之多的程序,你想要是我有一台新机器要重新安装,然后配置,得花费多少时间?实际上我曾经通过网络把它们传到一台新机器上,然后就出去吃晚饭,回来时我就 得到了另一台一摸一样的 Linux 机器。
       确实要卸载 make install 的程序怎么办呢?答案是直接删掉。别以为直接删掉程序会留下垃圾,引起“系统不稳定”。(btw: 这是谁教你的啊?呵呵。) make install 无非就是把可执行程序放在 /local/bin, 把某些函数库放在 /usr/local/lib,把数据文件放在 /usr/local/share下一个它自己的目录,你把这些东西都删掉就行了,不会留下垃圾,即使真的留下一点文件没有删掉也占不了多少空间,更不可 能引起系统不稳定。UNIX就是这么简单。
       但是有几个程序不建议从源码安装,它们是 Mozilla, Open Office, ... 它们编译时会占用你几个G的空间和好几个小时的时间,这种花费我觉得是不值得的,因为你不能从编译得到更多好处,不如直接安装编译好的版本。

       5、不要盲目升级

       不知道这是心理作用还是什么,有的人看到比较大的版本号,就会很想换成那个。很多人的 Redhat 本来配置的很舒服了,可是一旦 Redhat 发行新的版本,他们就会尽快下载过来,然后选择升级安装。结果很多时候把自己原来修改得很好的配置文件给冲掉了。新的软件又带来了新的问题,比如有一次我 的 rxvt 升级到 2.7.8 就跟 miniChinput 冲突了,升级到 Redhat 8.0,发现 xmms 居然缺省不能放mp3了,XFree86 的 xtt 模块在 I810 上有新的 bug,会导致 Mozilla 突然退出。
       如果你已经配置好了一切,千万别再整体升级了,这会浪费你很多很多时间的,不值得。如果需要的话,你可以只把某些部件升级,比如内核,glibc, gcc, XFree86,...
       使用 UNIX 的经典程序
       好的程序一般都是可以很方便的在很多种 UNIX 上移植的,bash, VIM, Emacs, Mutt, FVWM, xterm, 都是这样。如果你用这些程序,你就可以在 Sun, HP, ... 等工作站上也装上,这样你在各种机型上的工作环境就几乎完全一样了!你不需要在 Sun 上面用 CDE,在PC上又换成 KDE,在它们上面都装一个 FVWM,使用相同的配置文件,就能得到一致的界面。
       这些程序大部分都是久经考验的,是经过很多人多年开发的结果。它们功能完善,各种情况都考虑周全,绝对是你的好助手。

       6、不要配置你不需要的东西

       如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的科研任务和日常工作,那就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理员确实很辛苦。普通用户学习那些不经 常用到的复杂的维护系统的工具,其实是浪费时间,学了不用是会很快忘记的!
       我不是一个合格的网络管理员,我的服务器都只设置了我自己需要的功能,设置好 ssh, ftp 已经足够了,那样可以省去我很多麻烦。我从来不过度考虑“安全”,因为 Linux 缺省已经很安全了。我没有磁带机,就不用管 tar 的那些稀奇古怪的参数了,czf, xzf, ztf 已经可以满足我所有的需要。sed, awk, ... 我也只会几种常用的命令行。

       7、不用忙着看内核源码

       除非你想研究操作系统,否则还是先把怎么使用 Linux 掌握好再说吧。我以前看了那么多内核源代码,写了驱动程序,结果最后发现我还是一只很多事情不能用 Linux 解决的菜鸟吸取我的教训吧,你应该首先掌握 shell,Xwindow 的使用和原理,它们可不比内核简单。      
金玉良言!
听君一席话,胜读十年书      
“你应该首先掌握shell,Xwindow的使用和原理”
请楼主介绍一些这方面的书籍和参考资料。
谢谢!!!      
LINUX与UNIX SHELL编程指南(好像很不错,没看过)

Unix高级环境编程(非常优秀的一本书)





以下引用[url="http://learn.tsinghua.edu.cn/homepage/2001315450/x.html"]http://learn.tsinghua.edu.cn/homepage/2001315450/x.html[/url]
理解 Xwindow



很多人在用 Xwindow,但是他们是在用一些包装掩盖下的 Xwindow,那些包装有些很不稳定,占用大量资源,以至于有人说 Xwindow 是垃圾。其实 Xwindow 是一个非常出色的图形系统,你应该抱怨的是那些不稳定的包装,而不是 Xwindow 本身。

Xwindow 是非常巧妙的设计,很多时候它在概念上比其它窗口系统先进,以至于经过很多年它仍然是工作站上的工业标准。许多其它窗口系统的概念都是从 Xwindow 学来的。

Xwindow 可以说的东西太多了。下面只分辨一些容易混淆的概念,提出一些正确使用它的建议。 分辨 X server 和 X client



这是我被别人问了好多次的问题,我实在不想再对人说一遍了,所以写在这里偷个懒,嘿嘿。

很多熟悉 Internet 原理的人首次遇到 Xwindow 的这两个概念都会搞错。如果他从一台 Windows 机器上使用 Exceed 通过 XDMCP 登录到一台 Sun 服务器,他就说 Exceed 是客户端(client),而 Sun 机器是服务器(server)。这就完全搞错了。

理解了 Xwindow 的工作原理,这个区别就会很明显。X server 不是指你登录的那台机器,而是指一个程序,它负责在某台机器上接受客户的要求,在屏幕上显示客户请求的图形,并且把消息(键盘,鼠标,窗口消息)通知客户程序。

比如上面例子里的 Exceed 就是一个 X server,它负责控制那台 Windows 机器上的显示(display),Sun 机器上的程序,xterm, xxgdb, dtwm(CDE的窗口管理器),……是客户程序。它们通常会使用 TCP 6000 号端口连接 Windows 机器,而Windows机器的 6000 号端口是由 Exceed bind 和 listen 的,怎么样,我们的 Internet 专家,Exceed 看起来是一个 server 吧

比如,当你通过 telnet 启动 Sun 机器上的 xterm,就会在 Exceed 的屏幕上显示一个窗口。实际发生的事情是: xterm 请求连接 Windows 机器的 6000 号端口,与Exceed 跟 Exceed 连接,然后xterm请求得到资源,然后 xterm 请求在屏幕上显示一个窗口。

你在 xterm 的窗口里按下"A"键时,Exceed 会把这个事件通知 xterm 进程,然后 xterm 会发送数据报,请求 Exceed, “请在坐标(100,30)处显示一个字母A,然后在后面显示一个矩形作为光标。”,这样你的 xterm 窗口里就会多显示一个字母。

这下你理解了吗?不?那还是自己多用用,体会体会吧。 Xwindow 的网络透明性



刚才那个 Exceed 用户,他的客户程序不仅可以运行在那台 Sun 机器上,而且可以运行在网络里其它的机器上,或者在本机上。比如他有可能同时通过 telnet 登录到几台 Sun 工作站,几台 Linux PC,他可以在那些机器上都起动 xterm,在这台 Windows 机器上的 Exceed 上显示。如果它安装了 cygwin,他还可以启动本机上的 cygwin里 的 xterm,用同样的方式显示。

如果他使用 xrdb 在本机的 Exceed 设置了 xterm 的样式,比如背景 midnightblue, 前景 白色,字体 -*-adobe-courier-*,……,那么,Sun, Linux, cygwin 里的 xterm,虽然没有经过配置,但是它们知道:“这个 X server 要求我用这个背景色,这个前景色,这个字体……”,它们会在你的屏幕上显示同样风格的窗口。

使用鼠标选择一段字符,然后就可以在另外的程序里按鼠标中间,把字符粘贴过去。不论这个程序运行在哪里。

看看更大的一个图景:你的屏幕上有三台机器上的 xterm, 两台机器上的 gvim,两台机器上的 mozilla 在显示,而它们都受本机的 FVWM 操纵,它们之间可以随意进行拷贝粘贴…… 从这里你可以初步体会到 Xwindow 的网络透明性,它使你方便的操作很多机器。 什么是窗口管理器?



很多人不知道窗口管理器是怎么回事。他们认为 Gnome 和 KDE 是窗口管理器,认为窗口管理器就是能够提供一个工具条,能够配置桌面背景,能够设置很多菜单的东西。而其实,窗口管理器只是 Gnome 和 KDE 的一部分,它的主要功能是你平时根本没有注意,但是却非常重要的操作。窗口管理器的主要功能是:移动窗口,改变窗口大小,图标化(最小化)窗口,改变窗口层叠顺序……

通常的X客户程序不需要知道有人想移动它,它只知道乖乖听窗口管理器的话。如果没有窗口管理器运行,你的程序会一个堆一个,你没有办法操纵被盖在下面的程序,你只能使用最上面一个程序,而且你不能移动它,你不能改变它的大小。这样的系统根本不能用!

其实你的窗口上的标题,按钮,漂亮的边框,全都是窗口管理器提供的,而不是程序自己的,这样你用窗口管理器就能改变任何窗口的样式了。当你点击关闭窗口的那个按钮,你其实点击的是窗口管理器放在你的程序窗口上面的一个小窗口,发现它受到点击后,窗口管理器就会通知那个程序:“喂!有人想关掉你,你自己准备准备后事,然后退出吧。”

不同的机器在本机显示的窗口,由窗口管理器统一装饰和指挥。比如,窗口管理器决定: xterm 窗口上面都应该有四个按钮,一个在左边,点击它会显示窗口操作菜单,另外三个在右边,分别是最大化,最小化和关闭。窗口都使用 7pixel 厚的边框,窗口首次出现的时候首先在桌面上找一个空位置,如果找不到,就找一个能够最少的遮盖其它窗口的位置……

这些都是窗口管理器的职责。 Gnome 和 KDE 是什么?



有人把 Gnome 和 KDE 叫做窗口管理器,甚至还有人把它们叫做 Xwindow。经常看到有人问:“装哪种 Xwindow 好啊?Gnome 还是 KDE?” 其实你不安装 Gnome 和 KDE 也可以使用 Xwindow.

Gnome 和 KDE 是“桌面系统”,一种很多程序和函数库的集合。它们的设计目的是提供一致的方便的操作方式来满足普通用户的需要。它们不但包含窗口管理器,还有很多实用程序和应用程序,比如配置程序,工具条,编辑器,绘图工具…… 其实 Gnome 可以和很多窗口管理器合作,在历史上,Gnome 使用过的窗口管理器包括 englightenment, sawmill, sawfish, metacity。KDE 的窗口管理器叫做 kwin。

你也知道,设计整整一套应用程序:编辑器,绘图程序,浏览器,…… 是非常不容易的。所以它们肯定是不如专用的编辑器,绘图程序,浏览器的。不过要求不太高的用户也可以用它们。 用 Xwindow 做一个有趣的试验



现在我们来做一个试验来引起你对 Xwindow 的兴趣。

很多人离开了 xdm 就不知道怎样启动 "Xwindow" 了。其实 Xwindow 的启动方式很简单。

首先,启动你的 X server。在 Linux 下,你可以直接输入 "X&",让一个 X server 在后台运行。这样,一个占据整个屏幕的布满斜纹的窗口(根窗口)就出现了。如果是 Exceed 或者 X-win32,你需要把屏幕设置为 "single window" 才能看到这个窗口。

接着,Linux 用户需要用 xauth 给你的 X server 设置一个密码,这样别人就不能非法连接你的 X server。你需要Ctrl-Alt-F1切换到tty1才能输入这个命令。Exceed 和 X-win32 的用户不需要这步。以下的例子只用 Linux 作为实例,其它系统的用户可以依葫芦画瓢。



xauth add :0 . `mcookie`

</PRE>


好了,现在你可以试试启动一个 xterm 到这个 X server 上:



xterm -display :0

</PRE>


按 Alt-F7 切换到 X,你看到了一个不受窗口管理器管理的 xterm。试试移动它呢?再切换到 tty1 启动另一个 xterm,两个 xterm 重合了吗?你怎样在第一个 xterm 里输入呢?这样用起来很痛苦吧?那么你可以在 xterm 里启动一个窗口管理器,比如 twm,直接运行 "twm&" 就行了。

你发现xterm的窗口都被加上了标题栏,按钮和边框,你现在可以移动它们了。试试把 twm 杀死,看看那些标题栏,按钮,边框是不是都消失了?你知道了窗口管理器的作用了吧。

现在告诉你怎样不用 XDMCP broadcast,绕过 CDE 的登陆界面,而使用 Sun 机器上的 CDE。其实你只需要把刚才那个例子里的 "twm" 换成 CDE 的窗口管理器 dtwm 就行了,或者启动 dtsession。它们一般在 /usr/dt/bin 下。Sun 还有另外一个窗口管理器叫做 OpenLook, 它在系统里的名字叫做 olwm,你自己找找吧。

现在如果你自己在 Sun 机器上装一个 FVWM,你知道怎么绕过 CDE 登录而启动 FVWM 了吧?你不需要成为 root 就可以使用你喜欢的FVWM了。 .Xdefaults 文件的作用



弄明白 X 的工作原理后,你就可以使用 .Xdefaults 来配置你的程序了。有人不理解 .Xdefaults 是用来干什么的,喜欢用 shell alias 出一些带有很多参数的命令,或者写一些 shell script,里面只有一行带有很多参数的程序调用,然后他说:“.Xdefaults 没用。”

其实 .Xdefaults 比起这些办法有很多好处。首先,几乎所有的 X 客户程序都可以从 .Xdefaults 文件得到配置信息,比如前景色,背景色,字体…… 这样你可以在同一个文件里配置所有 X 程序的样式,而不用写那么多 shell script。

另外,如果你用 xrdb .Xdefaults 把这些配置信息写入到根窗口的数据结构里,不是本地机器上的 X 程序也会遵守同样的样式。比如如果你的 .Xdefaults 里面有这些内容:



XTerm.background: midnightblueXTerm.foreground: white

</PRE>


然后你用 xrdb ~/.Xdefaults,那么所有的 xterm 都会使用 midnightblue 作为背景色,使用白色显示字符。这些配置,用X术语叫资源(resource)。

有时候你会开很多 xterm 窗口在机器上,它们来自不同的远程机器,这时候如果它们都用同样的样色和字体,你就不容易分辨它们了。比如有一天,我在实验室的PC机上打开了很多 xterm,它们来自本机,实验室的 Sun 服务器,我宿舍的机器和数据库实验室一台 HP 服务器。在我走之前,想关闭本地的机器,我输入 “shutdown -h now” 在一个我自认是本地的 xterm 上,结果,等了一会儿,我回头看到机器没关掉,只是那个 xterm 停止了响应。我一拍脑袋:糟了,我把宿舍的机器给关掉了!

为了避免这种情况,你可以在不同的机器上编辑不同的 .Xdefaults,而不使用 xrdb 在根窗口导入这些配置。这样不同的机器上的 xterm 使用不同的颜色,你就不容易搞错了。 怎样更加深入的了解 Xwindow?



哎哟!我本来想写很多东西,后来发现要需要写的实在太多了。我没那么多时间,没办法,给参考书目吧,你们自己去看。

学习使用 Xwindow 不是学习使用 Gnome,KDE,…… 很多书籍教用户怎样使用 Gnome, KDE 的菜单,配置程序…… 结果到了最后用户还是没能知道 Xwindow 是怎么回事。用那些菜单谁不会啊?真是浪费大家时间。

学习 Xwindow,其实最好的一个办法是看看 Xlib 编程的书籍,你可以在图书馆找到这样的书,我推荐 O'reily 的那本 Xlib 程序设计书(我忘了名字了),虽然它很老,但是那上面讲解的 Xwindow 的工作原理一直都没有变过。



如果你不会编程序,你可以不看编程的部分而得到很多深入的概念上的认识,比如窗口属性,字体,颜色,…… 这些东西在你使用 Xwindow 时会有很大帮助。如果你真的要编写 Xlib 程序,这本书就过时了一点,你最好到 [url="http://www.x.org/"]www.x.org[/url] 去免费下载最新的 Xlib 手册来看。 <HR>      
版主做人厚道点好不,这东西偶前段时间已经发过了~~~~~~~~~~~~      
[QUOTE=fogs123x]版主做人厚道点好不,这东西偶前段时间已经发过了~~~~~~~~~~~~[/QUOTE]很抱歉,我并不知道:w      
补充。。。。我楼下的两位好像没看过,也算没白发了;)      
看过了!!