來源: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桌面的奧妙所在!