瞭解Debian 系統(轉)

post0發表於2007-08-11
瞭解Debian 系統(轉)[@more@]

瞭解 Debian 系統

一、什麼是 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 kernel

作業系統核心,Linux 屬於多人多工系統,這當然有賴 Linux kernel 來實作,除此之外 Linux kernel 還包含了很多硬體的驅動程式,但模組化的設計讓 Linux kernel 可以隨心所欲的新增或刪減模組,由於這樣的特性讓 Linux 也可以應用於嵌入式系統。

基本的 libc 、utility..etc

我們還需要 libc 這個基本的 C 函式庫,以 libc 為基礎我們可以開發出一些基本的程式來幫助我們運作,這些工具程式如:ls、mv、cp..等等。

當然如果有需要可以再加入其它的函式庫。

X Window System

由 MIT ( 美國麻省理工學院 ) 所研發的一套 UNIX 上頭標準的圖形視窗介面,所以 X 發展還比 Linux 早,只是後來有人將它移植到 Linux 上 ( XFree86 ),因此我們是可以把 Linux 與 X Window System 切開來討論,一般我們熟悉的 MS Windows 作業系統是把 GUI 與 OS Kernel 合在一起的系統,這跟 Linux 與 X 是完全不同的系統架構。千萬別搞混囉。

有 X 我們就可以作很多圖形相關的應用,例如用 gmc ( gnome 的圖形介面檔案管理軟體,如附圖 gmc ) 取代 mc ( 類似過去 DOS 底下的 Nortan Comand ),有 X 讓我們對計算機的視覺感受更強烈,想要看有圖案的網頁也是必須在 X 底下開啟 mozilla ( 或其它支援圖形的 Browser ),所以有 X 的圖形介面環境讓我們的計算機更有親和力、更美麗。

當然很多情況是使用指令效率大於使用圖形介面的軟體,筆者自首,其實我也不用類似剛剛提到的 gmc 圖形介面檔案總管;即使進入 X 底下,我一定還是會開啟一個 X Terminal ( 可能是 crxvt或是Eterm ),然後享受著飛快敲打指令的樂趣。但是遇到瀏覽網頁或收發電子郵件我則會藉助 Mozilla ,因為這瀏覽網頁與看電子郵件有圖形輔助還是比較令人賞心悅目。計算機是死的,人腦是活的,所以請記住是人去用計算機而不是計算機奴役人,因此我們要活用計算機。

上面所述的前兩大項就可以完成一個基本的 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 』 才是正確的稱呼。

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

stable

由 『 stable 』 這名詞就可以猜到八九分意思了吧,是的!這是 Debian 對外發行的版本,這個版本的最大特色就是穩定,但相對的各個軟體套件則通常不是最新版。

這個版本適用在最需要穩定的 Server 架設環境,所安裝軟體較少也較為固定。

testing

『 testing 』 雖名為測試版,實則已經相當接近於 『 stable 』 版本的程度,這個版本的軟體多半是在 『 unstable 』 中經由維護、開發人員不斷的測試之後流入,所以在某種程度來說,其實已經做過初步的檢測,這裡頭的軟體大多也是相當穩定的,而且個軟體套件也都會比 『 stable 』 裡頭的新,不過以軟體總量來說則比上 『 stable 』 及 『 unstable 』 中來的完整、來的多。

筆者強烈建議如果想把 Debian 拿來當作 Desktop 平臺,『 testing 』 是個很不錯的選擇。

unstable

『 unstable 』對我來說才算是 『 測試版 』,這裡頭最大的特色就是軟體更新速度快,幾乎都與該軟體同步,因為太新相對的使用 『 unstable 』 的人也必須承擔更高的風險,有時候您可能會遭遇到一早更新完所有軟體後,發現有些軟體不能正常運作的狀況,不過慶幸的是這種情形大概只會持續一兩天左右,因為我說過 『 unstable 』 的特色就是更新速度快,一旦有人回報問題,維護的人很快就會作修正。

如果你喜歡 『 玩 』 軟體,如果你不在乎有時候系統有出現一些 truobles,那趕快試試這個版本吧!

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

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

GNU General Public License (GPL) - ( )

Artistic License ( )

BSD style license ( )

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

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

main

Debian distribution 最基本及主要且符合自由軟體規範的軟體 ( packages )。

contrib

這裡頭軟體雖然可以在 Debian 裡頭運作,即使本身屬於自由軟體但多半卻是相依於非自由 ( non-free ) 軟體。

non-free

不屬於自由軟體範疇的軟體。

non-us

這個分類裡頭的軟體都來自非美國地區,當中可能有牽扯到專利、加密..等等問題。

四、區別版本的『 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] [...]

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

deb

這一欄只有兩種寫法,分別為 『 deb 』 與 『 deb-src 』,前者表示所指向的為存放 binary 格式 ( 編譯好執行檔案的軟體套件 ) 軟體套件的伺服器位置,後者則為 sources 格式 ( 包含原始碼的軟體套件 ) 軟體套件的伺服器位置。

簡言之,一般我們只想要安裝該軟體而不想要去重新編譯它時,就在這一欄填入 『 deb 』 , 如果你想取得某軟體的原始碼 ( sources code ) ,就得加入 『 deb-src 』 , 當然也可以兩行都寫,如下:

deb stable main contrib non-free

deb-src stable main contrib non-free

uri ( Universal Resource Identifier )

uri 指的就是軟體套件來源位置,這些位置可以為系統內的某個位置 ( file ) 、可以為 CD-ROM ( cdrom ) 、可以為網路遠端位置 ( http 、 ftp )..等等,當你下 apt-get 指令時,就會到這些位置去搜尋軟體資料庫。總括來說一共有 file 、 cdrom 、 http 、 ftp 、copy 、rsh 、ssh 等幾個引數,而比較常用的引數如下列:

file

可以是你係統上的某個目錄,如下:

deb file:/home/moto/debian stable main contrib non-free

也可以是你 mount 到自己系統裡頭的遠端 NFS Server,如下:

deb file:/mnt/nfs-server stable main contrib non-free

cdrom

這裡當然就是指光碟機上光碟片裡的位置囉,例如:

deb cdrom:/dists stable main contrib non-free

http

透過 http 的協議傳送,例如:

deb stable main contrib non-free

ftp 透過 ftp 的協議傳送,例如:

deb ftp://ftp.us.debian.org/debian stable main contrib non-free

值得一提的是透過這樣的機制是非常有彈性的,來源位置幾乎可以是網路上的任何一個角落,不見得是要 Debian Office 站臺,個人製作的 .deb 軟體套件也可以開放給網路上的人使用,例如目前的 Debian 官方『 stable 』版本里頭的 Linux kernel 不是最新版的,而 bunk 網友自己幫忙做了最新版本的 kernel for debian package,並提供了 『 deb bunk/debian potato main 』 這個私人的位置,則我們可以把這個位置加入 『 /etc/apt/sources.list 』 設定檔裡頭,再透過 『 apt-get update 』 就可以取得 bunk 所製作的 for debian 的 kernel package ( 目前在 testing 裡頭已經有最新的 kernel 了,所以不需要在透過其它的來源來安裝 )。更詳細的 kernel 升級方法請參考 Debian 升級 kernel 真輕鬆 一節。

這樣的分享機制很棒 ! 因為 Debian 官方對於軟體篩選有一定的規定,如果某個軟體進不了 Debian 的 package tree ,但我們又不想由 Source tallball 安裝, 我們便可以透過這樣的管道讓我們仍舊可以使用 Debian 良好的軟體管理機制而且可以安心使用額外軟體。

distribution

引數可分為 『 stable 』 、『 testing 』 、『 unstable 』,詳細定義請參考 以水平的觀點來看 Debian 特有的三大族群制度:stable、testing、unstable 一節。

component 引數共分為 『 main 』、『 contrib 』、『 non-US 』、『 non-free 』 詳細定義,請參考 以垂直的觀點來看 Debian 軟體的分佈:main、contrib、non-free、non-us 一節。

瞭解 『 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 stable main contrib non-free

#deb 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 stable main contrib non-free

#deb-src stable non-US

deb / stable main non-free contrib

deb-src / stable main non-free contrib

deb stable/non-US main contrib non-free

deb-src 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 stable main contrib non-free

#deb 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 stable main contrib non-free

#deb-src stable non-US

deb / unstable main non-free contrib

deb-src / unstable main non-free contrib

deb unstable/non-US main contrib non-free

deb-src 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 testing main contrib non-free

deb testing/non-US main contrib non-free

deb-src testing main contrib non-free

deb-src testing/non-US main contrib non-free

#for gnome

#deb unstable main

#deb testing main

臺灣 debian mirror site 列表

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

淡江

deb testing main non-free contrib

deb non-US testing/non-US main non-free contrib

debian 臺灣

deb woody main non-free contrib

deb -non-US woody/non-US main non-free contrib

中山

deb ftp://ftp.nsysu.edu.tw/Linux/Debian/ testing main contrib non-free

deb ftp://ftp.nsysu.edu.tw/Linux/Debian/debian-non-US testing/non-US main contrib non-free

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 』 身份執行 !

apt-get update

軟體資料庫同步:

這是『 apt-get 』指令的起點,在下達任何 『 apt-get 』 相關軟體安裝或升級指令前,一定得先下『 apt-get update 』指令,這會讓系統依照 『 sources.list 』 設定檔案內紀錄的軟體來源伺服器位置,進行軟體資料庫比對動作,如此才能知道目前系統上安裝的軟體跟伺服器上可抓取的軟體版本是否一致,如不一致表示有更新版的軟體可以升級或安裝,接下來的 『 apt-get install 、 apt-get upgrade 、 apt-get dist-upgrade..』才能完成後續動作。

apt-get install

軟體安裝:

安裝軟體最怕的就是軟體間的相依、相斥關係,在 『 前言 』 裡頭筆者也提到過去使用的其它 GNU/Linux Distribution 的惱人經驗,但是在 Debian 裡頭安裝軟體是一件非常愉悅的事情,只要 『 apt-get install 』一行指令簡簡單單輕輕鬆鬆即可完成,所有相依、相斥 Debian 都會幫我們 take care ,您要做的就是 『 Say Yes 』。

apt-get remove

軟體移除:

與 install 一樣,Debian 一樣會幫您處理移除軟體時所發生的相依問題。

apt-get upgrade

軟體升級:

平常我們很難顧慮到系統上所安裝的數十甚至數百套軟體的版本是否有新版出現,現在只要下這個指令 Debian 便會自動找出所有有新版的軟體套件並逐一升級。

範例:

底下是筆者執行完 『 apt-get upgrade 』 系統報告搜查情況,並詢問是否同意升級的畫面:

apt-get dist-upgrade

系統升級:

當轉移整個系統時,如 『 stable 』 轉換到 『 testing 』,或是系統執行好一段時間都應該下這個指令,它會聰明的處理到很多軟體相依、相斥的問題。

dist-upgrade

apt-get source

如果您想取得某個軟體套件 ( packages ) 的原始碼可以透過這個指令達成。

apt-get clean

我們透過 apt-get 安裝的任何軟體都會先下載到 『 /var/cache/apt/archives/ 』及 『 /var/cache/apt/archive/partial/ 』 目錄底下,一般預設 apt-get 在安裝完軟體後是不會把上述位置底下的 『 .deb 』 殺除,一段時間後您如果覺得系統空間不足,您可以下 『 apt-get clean 』讓系統自動清理這個目錄。

apt-get autoclean

類似 『 apt-get clean 』,下此引數時 apt-get 在安裝完畢後會自動刪除該軟體的 『 .deb 』 檔。

apt-get check

apt-get 不是萬能,有時候也是會出現問題,如附圖 broken,遇到有問題的時候您可以下 『 apt-get check 』來診斷問題所在。

apt-get remove --purge `deborphan` ( 清除系統多餘的 library )

當您使用 debian 一段時間後,如果您經常安裝、移除軟體一定會出現殘餘 library 在系統的狀況,原因是當您安裝軟體時, debian 依照軟體相依特性安裝了額外的 library,但是當您移除該軟體時,當初連帶安裝的 library 不見得會一起被移除,久而久之系統就會出現殘餘的 library,這個時候您便可以下這行指令,為您掃除系統中無用的 library ,確保系統的清潔性。

其它常用輔助選項:

-f ( --fix-broken )

假如無法安裝,請試著下"-f"引數。

-d ( --download-only )

只下載 『 .deb 』 而不安裝,下載的檔案會存放在 『 /var/cache/apt/archives/ 』底下。

例子:『 apt-get -d install aterm 』。

--purge

這個引數會幫助您移除跟您想要移除軟體的相關軟體。

例子:『 apt-get --purge remove aterm 』

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945853/,如需轉載,請註明出處,否則將追究法律責任。

相關文章