来源:chinaunix 作者:ecloud
在OS/X中,最大的特性就是将用户空间与系统空间分割开来
*注:这里指的不是OS概念中的系统内核和用户空间,而是在应用程序层的OS/X系统的应用程序和传统Unix用户的应用程序和图形界面用户的应用程序三者完全的分开
OS/X并没有直接改变底层Darwin UNIX的目录结构,而是在这之外另外建立了/Appliocations, /Library, /System等目录
我们就以Python举例
作为传统Unix用户程序的Python,他的site-packages包位于
/Library/Python/2.5/site-packages/
当你打开一个bash,运行easy_install安装附加Python包的时候,他们就装载了这个目录
大部分Unix风格的应用程序安装于/Libray目录,比如PostgreSQL。不放在传统的/usr/local, /opt这些地方,是为了维持那个BSD Base System的单纯和稳定。Apple尽量的保持一个小儿单纯的Base System环境
而OS/X系统自己使用的所有Python扩展包则位于
/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python
你可以看到Apple对Python的使用还是很大的,诸多扩展包都被用到了
很显然,OS/X的Python的设置给你了二元化,系统预设的packages另外存放并且不可以被随便删除,你可以使用他们,而你自己安装的package则放置在单独的目录里你可以全权删改。这样就保护了系统基本功能的不被侵犯。相反,在大部分Linux和所有BSD中,python的packages目录只有一个,用户非常容易不小心把系统其他软件需要用到的package破坏掉。Linux和BSD分别提倡使用rpm.deb和ports来管理这些软件包,这也许在某些领域可行,但是对于python来说,python本身提倡使用它自己的eggs系统,perl也有自己一套附加包的管理,这就造成了很多冲突和不便。而且靠操作系统的开发团队去维护非常庞大的软件list也不现实。debian已经是做的最好的一个了,但是仍然有很多软件没有覆盖到,比如Plone及其Products
最后我们来看Plone,由于这是个冷门软件,大多数的系统开发厂家/团队并不会提供Plone的port给你,一般都是自己单独下载的
Mac版的Plone安装包几乎类似于一个标准的Mac桌面程序,安装好了以后,它位于
/Applications/Plone
这是所有桌面用户的应用程序空间,有别于Unix shell界面用户的应用程序空间。或者说这里是纯Mac风格的应用程序所在地
Plone有一个自己内嵌的python,位于/Applications/Plone/Python-2.4/
在我们列举的Python例子中,OS/X系统空间,Unix用户空间,传统Mac桌面用户空间三者是完全分离互不干扰的。这样的好处就是:
操作系统本身维护了基本库的可靠和稳定
BSD Base System小而单纯,很少不受外界影响和污染
Unix风格用户有一个传统的,标准的工作环境,python可以放心的使用eggs,perl可以随意的使用CPAN
Mac传统桌面应用与上面两者不发生任何冲突
无论是Unix风格的应用程序还是Mac风格的应用程序,都可以简单的、安全的删除掉,甚至粗暴的rm -rf掉目录就可以了,因为他们都是绿色的,没有任何垃圾和后遗症!
操作系统的开发者不需要去维护一个庞大而莫名其妙的软件库,也不会跟诸如eggs,CPAN这些“私有派伐”产生冲突
唯一的缺点就是,要消耗较多的磁盘空间(貌似现在硬盘便宜的跟馒头似的)
我想其中有很多Linux和BSD值得学习的地方,Apple之所以能够把一个Unix做成深受欢迎的桌面系统,不单单是因为界面好看
我认为Apple对以往的那些将Unix作为桌面的失败企图进行了深刻分析和借鉴,最终找到了一条正确的道路
Apple的行为方式正好跟MS相反(包括曾经企图对Unix进行一系列改革的IBM和SUN),后者们往往更加喜欢把自己的修改直接付诸于现有的开放系统中,比如MS对java所做的那些,以及IBM曾经试图对AIX进行的“改革”
这种直接的修改虽然从技术上有先进性和合理性,但是会招致开源社区以及传统Unix用户的强烈抵制
而Apple的方式是不去触动那些传统的东西,尽量保持他们的原汁原味,在这个基础之上做一个自己的“壳”。Apple不是打土豪分田地,而是在新的大陆上建立人民公社,保持了双方和睦共存。Apple执行的是君主立宪制的改革而不是砍脑袋的革命
无论是对BSD, Mach还是gcc,我们可以看到Apple这种行为方式的巨大成功
Apple为了维护传统Unix的兼容性甚至通过了OpenGroup的UNIX认证,这真是一个了不起的事情。这更加是表现出对传统UNIX的尊敬。就如同君主立宪的国王也要被教皇封赐一下,走个形式,令其他的人都觉得你很懂规矩,可以放心打交道
另外一个例子就是google的Android,由于没有触动Java标准和核心的东西,而也是采取了另外做一个自己的“壳”的方式,就如同众多的Apache项目一样,使得这次google的行为没有招致当年MS那样来自Java界的抵制和咒骂,得以顺利的发布
Apple和Google都是聪明人,他们懂得妥善行事的方法,所以得到了广泛的尊敬,而对照着的MS则是完全一副自以为是、自作主张的强权风格,所以得到了非常负面的社会评价
这就是为什么OS/X会成为第一个,也是目前唯一的一个成功的Unix桌面的奥妙所在!