1.3 UNIX和Linux之间的摩擦
因为UNIX和Linux系统颇为相似,所以本书会同时讲解这两种系统的管理。遗憾的是,在一句话里同时用UNIX和Linux这两个称谓,就仿佛一脚踏入了政治漩涡,或许也像是陷入了一大片泥潭。不过,既然UNIX和Linux之间的关系似乎呈现出某些混淆和冲突,所以要避开不谈我们的立场也比较困难。下面是我们的观点,还有我们对事实的简要说明。有关UNIX和Linux历史的更多资料,可参考本书后面的介绍。
Linux重新实现并优化了UNIX内核。Linux遵循POSIX标准,能够在几种硬件平台上运行,兼容现有的大多数UNIX软件。它同大多数(但不是全部)别的UNIX变体不一样,区别之处在于,它是自由的,开放源代码的,而且是由成百上千不同的个人和组织无私奉献协同开发出来的。与此同时,传统的UNIX厂商则继续改善自己的系统,所以肯定存在一些领域,在这些领域内,商业UNIX系统比Linux强。
无论两种系统有什么相对而言的优缺点,Linux从法律上、从开发上以及从历史上看,都和UNIX有着明显的区别,因此不能把Linux称为UNIX,或者UNIX的一种版本。这样做会忽视Linux社区所做的工作和创新。同时,坚持认为Linux不是UNIX的话,又会有点儿误导性。如果做出来的东西走路像鸭子,叫起来像鸭子,那或许可以说,造的就是鸭子![译者注:源自一句西方谚语。If it looks like a duck, walks like a duck, and quacks like a duck, it must be a duck!看起来像鸭子,走起路来像鸭子,叫起来也像鸭子,那一定是鸭子!这里的意思是,不能因为Linux像UNIX,就把Linux当成UNIX.]
即便在Linux阵营里也存在分歧。有人举证说,把Linux发行版本简称为"Linux",那么开发人员在内核之外运行的那些软件(在一般系统上实际是很大一部分软件)上投入的工作,就没有得到承认。偏偏不巧,最常推荐的替代称谓"GNU/Linux"也有其自己的政治包袱,所以只有Debian这个发行版本才正式采用它。维基百科上有关"GNU/Linux命名争议"的条目列举出了争执双方的论点 .有意思的是,现如今,甚至在大多数UNIX系统上,也是开源软件的使用占据主导,但还没有人提GNU/UNIX这样的说法 .
Linux软件就是UNIX软件。多亏有了GNU计划,使UNIX系统更富价值的重要软件大多都以某种开放源代码的形式被开发出来 .在Linux和非Linux系统上运行的代码是相同的。比如说,Web服务器Apache全然不在意它是在Linux上还是在HP-UX上运行。从应用软件的角度来看,Linux只不过是得到最好支持的UNIX变体之一罢了。
另外还值得一提的是,Linux不是现今世界唯一的自由UNIX版本。OpenSolaris系统也是自由和开源的,虽然在某些讲求纯开源的人眼里来看,它的许可证条款存有疑点。FreeBSD、NetBSD和OpenBSD--都是从UC Berkeley(加州大学伯克利分校)的BSD(伯克利软件发布,即Berkeley Software Distribution)发展而来的分支--都有其各自的热诚追随者。虽然这些操作系统从第三方软件厂商得到的支持有点儿少,但它们在功能和可靠性上却往往可以同Linux相媲美。
UNIX和Linux系统用于生产环境已经有许多年了,而且它们都表现不错 .现在要在它们之间做出选择,更多考虑的是软件打包机制、能获得的支持以及使用习惯的惰性,而不是品质或者成熟度实际有什么样的差别。
本书里对"Linux"的评论一般也都适用于各种Linux发行版本,但不适用于传统的UNIX变体。"UNIX"的含义稍有点儿多变,因为我们偶尔也会用在包括Linux在内的所有UNIX变体所共有的属性上(例如,"UNIX文件权限")。为了避免混淆,在想表达二者都有的情况下,我们通常说"UNIX和Linux".