Next Previous Contents

5. 了解 Debian 系統的哲學

5.1 什麼是 GNU/Linux Distribution ( GNU/Linux 套件 ) ?

What is Debian?很多人可能已經照著筆者介紹的步驟安裝完基本的 Debian 系統了,但遇到這樣問題,在您心裡頭是否仍存在同樣的問號?本篇文章重點雖不在介紹 Debian 的歷史,但是有許多 Debian 的基本觀念,仍舊會盡可能以最簡短的方式讓您了解。

我們都知道所謂的 GNU/Linux Distribution ( 常見的有 Redhat 、Mandrake 、SuSE 、Debian ) 是一堆軟體及 Linux kernel 所組成的一個大套件,但是因為一般使用者很難了解到完整的 Linux 發展歷史,因此現在大多數的人都將 Linux 與 Redhat 、Mandrake 等等商業性發展的 Distrbution 劃上等號,也常有人把 X Window System 歸納成 Linux 的一部分,這些觀念都很荒謬,但是本文重點並非釐清這些名詞的差異,不過希望大家有一些基本而且正確的認知。筆者姑且就分成三大類來解釋:

上面所述的前兩大項就可以完成一個基本的 Linux Distribution,X 則是又是另外一項大的 GUI ( Graphic User Interface ) 課題。如果您只是把 Debian 拿來當作提供某項網路服務的伺服器,其實壓根就不需要安裝 X Window System ,但是如果您想像筆者一樣把他拿來當作自己的 Desktop ,那就非常需要有 X ,沒有 X 就失色很多。

而以 Debian 來說,當然含蓋了上述三大部份,與一般商業發行的 Linux Distribution 包山包海作法不同的是 Debian 習慣從最基本的系統開始,需要甚麼軟體再堆疊上去,或許您會反駁 Redhat、 Mandrake 也可以做到與 Debian 一樣從安裝基本系統開始,筆者絕對同意,只是筆者認為使用 Debian 可以很輕鬆達成這樣的目的。如果您是重頭開始閱讀本文,而且跟著筆者的步驟安裝了 Debian ,您應該很清楚 Debian 先天設計的哲學便是如此。

原則上 Debian 就如同其他商業公司發行的 Linux Distribution 一樣,由 Linux 核心再加上一堆軟體組合而成的 Linux Distribution. 但是很特別的是 Debian 是非營利組織,但是組織架構嚴謹,有一套完善的軟體管理方式,貢獻者來自全世界各地,我是認為最起碼這樣的組織比較不會有像公司的營運壓力,另外也較能廣納各方意見,所以即使經濟在不景氣也不會有倒閉的風險。

在 Debian 組織內部很套很特別的 Distribution 等級制度,分別為 stable 、 testing 、 unstable,光從字面上就可以看出一些端倪,stable 是最穩定的版本,unstable 則為開發中的版本。很多人都誤以為只有像 Redhat 、 Mandrake 這樣的 Linux Distribution 所包出來的軟體最多,而 Debian 一定沒有那麼多的軟體,這當然是錯誤的觀念,目前 Debian 已經有超過 3950 個軟體囉,而且還會陸續增加,因為 Debian 並非商業公司,所以人員並不會受到公司盛衰影響。

我們都習慣稱 Redhat 、 Mandrake ..等等為 『 Linux Distribution 』,事實上這觀念是錯誤而且有偏頗之處,這些 Distribution 講穿了只是用了 Linux 為系統核心,但是輔以更多跟 Linux 核心無關的軟體,例如: glibc、X Window System..etc。其中以 GNU 的軟體最為重要,因為 GNU 的自由軟體包含了最底層的 C 函式庫 ( glibc )、編譯器 ( gcc )..等等,因此光靠 Linux kernel 是無法完成一個完備的系統,所以 『 GNU/Linux 』 才是正確的稱呼。

5.2 以水平的觀點來看 Debian 特有的三大族群制度:stable、testing、unstable

5.3 以垂直的觀點來看 Debian 軟體的分佈:main、contrib、non-free、non-us

Debian distribution 是一個很注重 『 純 』 度的 Linux Distribution ,我說純是 Free 的純度很高,『 Free 』 這個英文字很有趣,但代表了自由、免費兩種含意,正因為如此常常造成初學者的困擾,國內很多相關書籍都各自出現不同的解釋,不過所謂 『 Free Software 』 原意應為 『 自由軟體 』,而非 『 免費軟體 』,何謂自由?就是你可以對該軟體做任何你想做的事情,例如:你可以使用、修改..甚至販賣它。這些都是自由軟體的特色之一,但是自由軟體是不是就沒有版權了呢?其實不然,它們或多或少都會宣告成幾種特殊的版權發行,最常見的有下列三種:

其中以 GPL 運用最廣, BSD License 最有彈性,版權問題並不在本篇文章的討論之列,法律也不是筆者的專長,有興趣的朋友請直接前往相關網址研究。

由於 Debian 對 『 Free 』 純度的堅持,但是有時候有些軟體雖然不為自由軟體,但卻相當的著名,例如: Mozilla ,這樣的情況讓 Debian 陷入兩難,於是 Debian 對於旗下所有軟體套件 ( Packages ) 進行分類,底下就是 Debian Packages 的主要分類項目:

5.4 區別版本的『 sources.list 』及兩個基本的軟體安裝指令:tasksel、apt-get

透過上一節的說明,相信您對 Debian 的分級制度已經有了初步的認識,整體的輪廓也逐漸的明顯,不過以現實中實際使用的狀況而言,每種版本並非是涇渭分明的。

『 頭上冒出了幾個問號了嗎? 』,簡單的說,就算我是使用 『 testing 』 版本的人,我還是可以使用 『 stable 』 或 『 unstable 』 中的軟體,這並不是假設,舉個例子,目前僅 『 unstable 』 中提供最新的 Mozilla 軟體,如果您是使用 『 stable 』 或 『 testing 』 的人仍舊是可以安裝 『 unstable 』 中的最新版 Mozilla ,怎麼做到呢?閱讀完 『 由修改 『 sources.list 』 來決定軟體來源版本 』 這一小節,您就會清楚了。

儘管如此,筆者並不建議同時大量使用不同層級的軟體,因為很多軟體之間都有不同程度的相依性,強行的結果會造成更多軟體相依、相斥問題的產生,最終可能影響系統穩定與整個軟體升級制度的正常運作。

筆者個人使用的是 『 testing 』 版本,但由於一些個別軟體如 Mozilla 、 Gimp 等等因素,免不了還是會使用到部份的 『 unstable 』 軟體,使用至今也無大的 Troubles 出現,我的建議是越接近系統底層的軟體如:glibc、xfree86,越是要小心謹慎,因為這些軟體多半牽連廣泛,一個不留神系統可能得重新再造囉!

由修改 『 sources.list 』 來決定軟體來源版本

如何決定安裝的軟體屬於何種層級?方法相當容易,所有的資訊都記載在 『 /etc/apt/sources.list 』 這個文字檔之中。

sources.list 檔案裡頭的設定格式十分單純,如下:

deb uri distribution [component1] [componenent2] [...]

底下就各個選項作細部說明:

了解 『 sources.list 』 的撰寫規範之後,我們便可以經由修改此檔達成轉換不同版本的需求,例如在 『 stable 』 版本底下,我們把 『 sources.list 』 內容記載的軟體伺服器改為指向 『 unstable 』 , 如下:

# See sources.list(5) for more information, especialy
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
#deb http://http.us.debian.org/debian stable main contrib non-free
#deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
#deb http://security.debian.org stable/updates main contrib non-free


# Uncomment if you want the apt-get source function to work
#deb-src http://http.us.debian.org/debian stable main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US stable non-US

deb http://http.us.debian.org/debian/ stable main non-free contrib
deb-src http://http.us.debian.org/debian/ stable main non-free contrib
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
        
改為:
# See sources.list(5) for more information, especialy
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
#deb http://http.us.debian.org/debian stable main contrib non-free
#deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
#deb http://security.debian.org stable/updates main contrib non-free

# Uncomment if you want the apt-get source function to work
#deb-src http://http.us.debian.org/debian stable main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US stable non-US

deb http://http.us.debian.org/debian/ unstable main non-free contrib
deb-src http://http.us.debian.org/debian/ unstable main non-free contrib
deb http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free
deb-src http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free
        

如此一來即使身處在 Debian 『 stable 』 的環境底下,也能透過 『 apt-get 指令 』 去安裝 Debian 『 unstable 』 中的軟體。

關於 『 sources.list 』 一些注意事項

儘管藉由 『 sources.list 』 就能讓我們同時取得不同版本的軟體,但是有一點必須特別提醒大家,依照筆者的習慣,除了原先第一次安裝時的 『 sources.list 』檔案之外,我還會將這個檔案分別修改成指向 『 testing 』 的 『 sources.list.testing 』以及指向 『 unstable 』 的 『 sources.list.unstable 』,如需安裝其他版本的 Debian 只需置換原來的 『 sources.list 』 再配合 『 apt-get 』 指令即可。

如果您堅持只維護一個 『 sources.list 』 檔也是可以的,但請記住一個原則,如果您的 『 sources.list 』 中同時包含了 『 stable 』、『 testing 』、『 unstable 』 三種來源時,系統會以最新版本為主,換言之,這麼做幾乎就等於設定為 『 unstable 』 了,因為軟體版本的新舊為 『 unstable 』 新於 『 testing 』 新於 『 stable 』。

照這麼說根本就不需要混和使用,因為系統總是會認最新的嘛,其實會這麼做的同常以使用 『 testing 』 版本的人最常見,這是由於 『 testing 』 裡頭軟體是三種版本之中最少的,所以有時候會找不到 Debian 裡頭 『 應該 』 有的軟體,這種情況筆者就會建議, 『 stable 』 與 『 testing 』 混用,如此一來如果您要安裝的軟體不在 『 testing 』 裡頭,系統還可以到 『 stable 』 裡頭去搜尋,如果還是找不著那可以肯定 Debian 沒有納入該軟體 。

如果您決定跟筆者一樣使用 『 testing 』 版本的話,請切記不要同時把 『 unstable 』 的伺服器來源加進你的 『 sources.list 』,因為一旦更新完畢,您的系統也已經變成 『 unstable 』 版本了,切記!切記!

底下是筆者的 『 testing sources.list 』:

# See sources.list(5) for more information, especialy
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.

deb http://http.us.debian.org/debian testing main contrib non-free
deb http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free

deb-src http://http.us.debian.org/debian testing main contrib non-free
deb-src http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free

#for gnome

#deb http://spidermonkey.ximian.com/distributions/debian unstable main 
#deb http://red-carpet.ximian.com/debian testing main
       

台灣 debian mirror site 列表

我知道每個朋友網路品質不盡相同,以筆者為例連接美國速度還不錯,但是一定有更多朋友連連上美國都有困難,沒關係,別氣餒,您可以試試底下的台灣 Mirror 站台:

apt-get 指令操作

我常跟朋友戲稱" 要學 Debian 只要學會 apt-get 這個指令就行了 ",當然這是玩笑話,也絕對不可能如此單純,不過我會這麼說是因為等到您的 Debian 系統完全安裝完畢之後,您就會像我一樣退化到每天就只會下 『 apt-get update;apt-get upgrade 』 指令了。 :-)

在 Debian 裡面,關於軟體的安裝、移除、升級完全靠 dpkg 這個指令來完成 ( 關於 dpkg 更詳細的介紹,請參考 dpkg 一節 ),dpkg 指令功能很強大,但卻相對的複雜了許多,也造成使用上的不便,因此目前衍生出許多 dpkg 的前端 ( front end ) 軟體管理程式 ( 請參考 眾多的 dpkg 前端軟體管理程式 一節 ) ,幫助我們簡化軟體管理的步驟,而 『 apt-get 』 是我最為熟悉也是最受 Debian 使用者喜愛的一套指令式程式。現在也經有人將『 apt-get 』 移植到其他的 GNU/Linux Distribution ( 註一 )。

或許您被上一節 " 區別版本的『 sources.list 』及兩個基本的軟體安裝指令:tasksel、apt-get" 的『 sources.list 』搞的頭暈腦脹,不過筆者相信等您了解本節介紹的 『 apt-get 』 指令之後,必然有『 豁然開朗 』、『 茅塞頓開 』 之感。

『 apt-get 』指令操作非常簡單,底下列出比較常用的選項及參數,要得到最完整的資訊請 『 man apt-get 』。

注意!!執行 『 apt-get 』 指令時需以 『 root 』 身份執行 !


Next Previous Contents