November 26, 2011

從Ubuntu到Arch linux

最近準備從Ubuntu轉到Arch linux。自從Ubuntu開始使用Unity之外我就非常非常的不習慣。雖然知道不同的Linux分支其實差別並沒有那麼大,但要移轉還是需要好好的研究一下。

幾個比較熱門的Linux分支:

DEB系 - Debian, Ubuntu (Mint Linux, Lubuntu, Xubuntu... )
RPM系 - Fedora, Opensuse
另外還有自行獨特的編譯系統Arch linux, Gentoo等等。

我自己試用過的Linux版本其實還蠻多的,以上的都試過之外,還有測試很多的超輕量化版本。首要的考量當然就是安裝軟體方便,雖然大部份的Linux軟體都會提供原始碼讓使用者自行編譯,但真的不是每位使用者都有這功力在編譯的過程中找出安裝錯誤的原因,然後自行除錯。所以幾個分支自行發展出來的包裝系統對初學者就顯得重要,針對特定系統可以使用的包裝 (.deb或是.rpm) ,然後用單一的包裝管理程式 (apt-get或是yum) 簡單執行安裝。

但隨著某幾個分支開始坐大,某些軟體開發者也漸漸傾向不提供原始碼 (以tar.gz等格式呈現),而是直接提供某個分支的包裝格式,這當然是有不同的考量。像是Maya等商業化的軟體,為了穩定的考量,只提供給Red Hat Enterprise的rpm包裝。而華文圈愛用的PPStream則是提供Linux最大分支的deb還有第二大分支的rpm包裝 (rpm包裝從2011年11月開始提供) 。當然,要從rpm還有deb轉到原始碼,或是在rpm或是deb包裝中互相轉換都是沒有問題的。但是最大的問題是,每個分支個別預設所安裝的環境都不同,所以單純的在各個包裝中互轉,安裝到其他Linux分支常常會失去包裝中lib所需的相依性。這一點是不同包裝轉換後安裝我個人認為最困難的問題。

Linux穩定與否,是取決於系統中的程式是否相互衝突。"某個分支就一定比較穩定",這種陳述是很經不起考驗的。每個Linux版本都可以很穩定,也可以很不穩定,完全取決於系統內程式的衝突狀態。造成衝突與否,一方面有可能是預設安裝環境造成 (初始安裝就塞了一堆軟體跟程式造成衝突) , 或是使用者在後來的安裝過程中加進了會造成衝突的程式。對於熟悉除錯的使用者而言,版本間的差異除了包裝管理程式外 (apt-get或是yum等) ,其實不同版本的Linux差距真的是很小。

那不同版本的Linux究竟是有何差異?這問題對於幾年前的我而已,我完全是覺得無所謂。而我對於不同平台之間的差異也覺得沒什麼大不了。但現在用了Linux一段時間之後,特別是當我的主要系統完全以Linux系統為主之後,漸漸的會開始在意不同分支的開發者理念跟定位。Ubuntu理念是讓使用者一安裝完系統就可以使用,大多數需要的軟體功能一次齊全,在使用者在系統的調整方面降到最小。而Fedora則是定位在Red Hat Enterprise的創新測試平台,許多未來可能會用在Red Hat Enterprise的功能常會放在這裡測試。openSUSE在我看來算是使用rpm系而又有Ubuntu快速上手的特質。當然,要把各個Linux分支的特性講完是要花不少時間,再來就是每個使用者感受也都不同,我的感受當然是為了尋找最適合我的系統的參考意見。

我用了Ubuntu蠻久的時間了,對於其快速上手的特性非常欣賞。但現在也發生了一個問題,Ubuntu的初始安裝所安裝的程式太多,有些功能我不需要,像是Unity,但是我拿掉這功能之後其他相依的檔案或程式就會出錯。這問題剛好發生在Kernel 3還有Gnome 3發行的時候。Ubuntu進到11.10版本之後,使用Kernel 3.x,但在Kernel 3.x的狀況下,Gnome 2已經不是其支援的項目,取而代之的是Gnome 3。Ubuntu團隊提到Unity是建立在Gnome 3之上。但當我在Ubuntu 11.10上嘗試使用Gnome 3時,不斷發生錯誤。原因似乎是來自Unity與Gnome 3的衝突,另外就是Gnome shell與Gnome shell extension的衝突問題。Ubuntu 11.10的repository裡並沒有特別為Gnome 3設定,所以改用Gnome 3之後window manager就不斷的失效。

我也看過一些Ubuntu使用者為了同時想要有Kernel 3的優勢 (顯示卡的支援變得超好,真的是讓人驚豔) , 同時又為了要擺脫Unity (Unity的launcher真的讓許多人受不了) , 所以在Ubuntu Form裡問人意見。可惜答案並不存在,雖然可以另外裝上Gnome shell,但Gnome shell extension衝突問題是Ubuntu系統檔案相依性所造成的。我也試著考慮xfce或是LXDE桌面。說真的,xfce真的是很不錯的桌面程式,但是我還是比較喜歡Gnome的界面跟使用模式。但是後來我又想到,為何Ubuntu每隔半年就一個大改版,而每次改版都會限制住能使用軟體的版本。像我至今為止Ubuntu最喜歡的版本是10.04,但是因為需要LyX的拼音檢查引擎Enchant,除了升到10.10或是11.04之外才能更新到LyX的最新版,進而啟用Enchant拼音檢查引擎。這問題讓我有點百思不得其解,決定軟體版本的不是最終就取決於Linux kernel的版本還有其Kernel版本相依的程式或檔案嗎,那為何Ubuntu要限制住Kernel版本?我知道一方面當然是為了在不同版本的Ubuntu repository內做到各軟體的穩定測試,所以才限制住Kernel版本。但是這問題為何一定只能由提供Ubuntu新版本才能解決呢?我想這就是Ubuntu的開發特性吧。

我用Ubuntu的包裝軟體指令也一段時間了,其實不太想轉換。Debian雖然也是deb系,但他的deb使用格式跟Ubuntu又有很大的區別,很多狀況是不能互用的。這也是Debian公開批評Ubuntu使用Debian的repository後又自成一格。加上Debian也是不同版本式的大改版更新,每次更新時間長,舊版本能用的軟體限制跟Ubuntu也不相上下,無法考慮。

幾經搜尋之後終於找到我百思不得其解的問題,"為何都要等到大改版才可以等到新功能"。我想要的功能就叫做 "滾動式更新"。這種更新模式是依特定Linux分支所決定跟採用的。目前採用滾動式更新的Linux分支並不多,Arch linux就是其中之一。

Arch linux的理念與定位與大多數流行的Linux分支有很大的不同。Ubuntu,Fedora,或是openSUSE等大多都是簡單的安裝方式,圖形化安裝界面,從安裝到開始使用的時間短,安裝完後已經有許多基本的應用程式還有管理軟體。但Arch linux採用的是最小化安裝,多數需要的程式或是軟體都需要在安裝過程中自己決定。安裝完後是終端機模式,需要自己設定及啟用桌面模式。最大的好處當然就是自己決定要裝何種登入桌面還有桌模程式。登入桌面像是gdm, kdm, 或是lightdm,桌面程式像是KDE, Gnome, xfce, 或是LXDE。其他的好處還有像是安裝的軟體如果有衝突的話多數會有提醒。像是在Ubuntu上透過apt-get可以同時安裝JACK還有JACK2,但是在Arch linux上如果已經安裝了其中一個,想要再安裝的話會告知有衝突的訊息。這些衝突訊息通常是使用者回報的。當然,滾動式更新更是我理想中的作業系統模式阿,只要安裝完Arch linux之後,Kernel都可以更新,軟體的版本也當然一起升級了。

說完優點,接下來就是缺點啦。對於我這個剛從Ubuntu移轉到Arch linux的使用者來說,Arch linux對於尚不熟悉Linux系統結構的人來說確實不容易上手。Arch linux的介紹也提到,對於不熟悉Linux系統結構的新手來說,Arch linux並不非常建議使用。至於該到何種程度才算是了解系統結構,以我的經驗來看,如果能達到下面所說的幾個步驟應該就可以在Arch linux存活了:

在純終端機的模式下
1. 能查找並進入想要的目錄跟檔案
     cd, dir ...
2. 知道如何查看目錄跟檔案的權限
     ls -al ...
3. 執行符合權限的指令
     su, sudo ...
4. 能使用vi之類的編輯器
5. 了解自己所需要的功能,善用Arch linux wiki

另外的缺點就是,Arch linux透過自己特別的包裝管理模式來安裝及管理軟體,一些只提供deb或是rpm的軟體想要安裝會有比較大的困難,但絕對不是無法安裝。這方面就需要多搜尋資料,並且了解檔案或是程式的相依性,自行將不同包裝的格式轉換後安裝了。

最後Arch linux在安裝時也該注意所加入的資料庫 (類似Ubuntu的repository),主要的資料庫如 core (一定要裝,不裝的話請了解自己在幹啥) , extra, 還有community這幾個是提供穩定來源的資料庫 (如果想要更穩定,可以只加core跟extrea,但如果這樣,很多由community提供的軟體就無法透過資料庫安裝)。除了以上幾個,剛進入Arch linux的使用者最好避開有-testing的資料庫,像是community-testing。

No comments:

Post a Comment