帳號:
密碼:
最新動態
產業快訊
CTIMES / 文章 /
Debian的系統設計哲學
 

【作者: 陳漢儀】   2004年08月26日 星期四

瀏覽人次:【5861】

Debian軟體Package是以副檔名.deb作結尾,透過dpkg指令可以對於單一軟體 Package作管理,這也是Debian軟體管理系統的基本架構。dpkg與.deb和Debian 的關係就如同rpm與.rpm和Redhat一樣,但是如果單純的只使用dpkg來管理 Packages,就容易遇到rpm類似的相依性問題,為了徹底解決Package的相依性問題,Debian APT系統便呼之欲出。


十分倚賴網路的Debian APT系統

Debian的APT系統架構是將所有的Packages放置在伺服器上,而在安裝Debian OS的Client端透過apt-get指令就可以輕鬆擷取到伺服器上的Packages。假設使用者下了apt-get指令要安裝Mozilla這個Package時,APT系統在作了相依性檢查後,會自動找尋與Mozilla相依性的Package還有libnspr4 libnss3 mozilla-browser mozilla-mailnews mozilla-psm,爾後系統便再在Package伺服器上,尋找到所有相關的Packages,並全部下載安裝,實際的操作過程類似如下:



   	 debian:~# apt-get install mozilla
        讀取套件清單中... Done
        了解套件依存關係中... Done
        下列的【新】套件都將被安裝:
          libnspr4 libnss3 mozilla-browser mozilla-mailnews mozilla-psm
        Suggested packages:
          mozilla-chatzilla
        Recommended packages:
           myspell-dictionary myspell-en-us xprt-xprintorg
        下列的【新】套件都將被安裝:
           libnspr4 libnss3 mozilla mozilla-browser mozilla-mailnews mozilla-psm
        0 upgraded, 6 newly installed, 刪除 0 個套件,另不更新 11 個套件。
        需要下載 13.3MB 的檔案。
        解壓縮後將消耗 40.9MB 的空間。
        繼續執行嗎? 是按 [Y] 鍵,否按 [n] 鍵

以使用者的角度來說,安裝Mozilla是最終的目的,而使用者通常也沒興趣了解Mozilla與其他Package的相依關係。此時使用者的腦海中要的就是:「只管幫我把Mozilla安裝好就好。」而利用Debian APT系統,便可以輕鬆的應付這樣的問題。


擺放在伺服器上的Package幾乎都是最新的,使用者可以不斷地利用「apt-get upgrade」或「apt-get dist-upgrade」,並透過網路使自己的Debian永遠保持在最新的狀態,如(圖一)。


《圖一 Debian APT 網路系統》
《圖一 Debian APT 網路系統》

@內文:Debian從系統安裝開始到安裝完成後的系統更新,都可以透過網路輕鬆地完成。當然這不是說一切非得透過網路才行,透過光碟或其他媒介也是可以的,但相對地就沒有使用網路來的方便。所以說Debian是一套非常倚賴網路的Linux Distribution,或是有網路才能發揮Debian的所有潛能。


Debian的三大族群制度

有別於一般的Linux Distribution,Debian自創了三大族群制度,分別是Stable、Testing、Unstable。任何一個軟體Package進入Debian Project後都會流經這三大族群,我們亦可以將之看作是三種狀態。詳細解說分述如下:


Stable

由「Stable」這名詞就可以猜到八九分意思了吧,這就是Debian對外發行的版本例如:Debian 2.x、Debian 3.x。這個族群的最大特色就是穩定,但通常各個軟體Package並不是最新版。


「Stable」非常適合拿來作伺服器的作業系統,因為通常伺服器系統所要求的是穩定,而不需要是最新版的軟體。


Testing

「Testing」雖名為測試版,實則已經相當接近於「Stable」版本的程度。「Testing」的軟體Package多半是在「Unstable」階段中,經由一般使用者、軟體Package維護者、開發人員不斷的測試後流入,所以在某種程度上來說,已經是相對的穩定。把Debian拿來當作Desktop平台,「Testing」將會是個很不錯的選擇。


Unstable

其實「Unstable」對作者來說才算是「測試版」,這裡面最大的特色就是軟體更新速度快,幾乎都與原軟體最新版本同步。不過也因為版本太新,相對經過測試的次數便不如「Testing或Stable」那麼完整,使用「Unstable」的人必須承擔更高的風險。「Unstable」是玩家常用的版本,喜歡「玩」軟體的讀者可以試試這個版本。


Debian的版本演進

Debian把電影「玩具總動員」的角色名字拿來當作不同世代族群間的Code Name其Code Name如下:


  • * Buzz (Buzz Lightyear) was the spaceman


  • * Rex was the tyrannosaurus


  • * Bo (Bo Peep) was the girl who took care of the sheep


  • * Hamm was the piggy bank


  • * Slink (Slinky Dog) was the toy dog


  • * Sarge was a leader of the Green Plastic Army Men


  • * Potato was, of course, Mr. Potato Head


  • * Woody was the cowboy


  • * Sid was a boy next door who destroyed toys



舉例來說,目前「Stable」的Code Name為「Woody」,「Testing」為「Sarge」。


不過有一個特別的地方是「Unstable」的Code Name永遠為「Sid」,原因是Sid可視為“Still In Develop”的縮寫。


其實版本編號對於Debian的使用者來說,並沒有太大的意義,這是因為 Debian 三大族群的制度沖淡了使用者對版本編號的感覺。以比較貼近現實生活的說法是:「我們正使用Debian Stable、Testing或Unstable。」


Debian軟體的分佈:

前面研究了 Debian 特有的族群(狀態)架構 ,我們繼續要探討的是Packages在Debian分類的情形。


這裡要回過頭來思考,Debian強調的「自由」定義,所有的規範都寫在「Debian Free Software Guidelines(DFSG)」中。而在所謂的自由原則下,Debian將所有 Packages作了以下的分類:


  • * Main:Debian Distribution最基本及符合Debian自由規範(DFSG)的軟體(Packages)。


  • * Contrib:這裡的軟體雖然符合DFSG的規範,但卻相依於一些不符合DFSG的Package。此外,這個類別亦包含一些Shareware。


  • * Non - Free:不屬於DFSG定義的軟體。


  • * Non - US:由於美國專利法的規定問題,有些軟體(如牽扯到加密的一些軟體)不得輸出到美國本土外。所以對於諸如此類的Package,Debian將之規類為Non - US,並把這些Package擺放在沒有輸出限制的國家裡。



sources.list與apt - get指令

透過上述的說明,相信讀者對Debian的分級制度已經有了初步的認識。不過以現實使用的狀況而言,在選擇族群上本並非是涇渭分明。


簡單地說,就算使用「Testing」版本的人,還是可以使用「Stable」或「Unstable」中的軟體。這並不是幻想,舉個例子來說,目前僅「Unstable」中提供最新的Mozilla軟體,如果讀者使用的是「Stable」或「Testing」,仍舊是可以安裝「Unstable」中的最新版Mozilla。


儘管技術上沒有問題,但筆者並不建議同時大量混用不同層級的軟體。因為很多軟體之間都有不同程度的相依性,強行的結果會造成更多軟體相依、相斥的問題,最終可能影響系統穩定與整個軟體升級制度的正常運作。尤其是越接近系統底層的軟體,如:glibc、xfree86等,越是要小心謹慎,因為這些軟體多半牽連廣泛,一個不小心,系統可能就毀了。


或許讀者已經想到如果使用者喜愛「Stable」的穩定,但在某些軟體上又希望能使用更新的版本,那該怎麼辦呢?別擔心!這時候讀者可以選擇「Debian Backports」。


「Debian Backports」專門針對「Stable」的環境去提供一些新版軟體的Debian Package,等讀者了解sources.list的機制後,您就可以將他們的站台加入到sources.list中,並安裝這些「Debian Backports」的Packages。


sources.list的說明

Debian APT系統提供了一個很有彈性的架構,使用者可以自行決定安裝的軟體要來自那個族群。其方法相當容易,所有的資訊都記載在「/etc/apt/sources.list」的文字檔中。其檔案的格式如下:



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

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


deb

這一欄的寫法有兩種,分別為「deb」與「deb – src」。前者表示所指向的站台為專門存放Binary格式的軟體Package伺服器位置;後者則是存放Sources Code格式的軟體Package伺服器位置。換句話說,只想使用者要安裝該軟體,而不想要去重新編譯它時,就在這一欄填入「deb」,如果讀者想取得某軟體的原始碼(Sources Code),就得加入「deb – src」, 當然也可以兩行都寫,舉例如下:



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

uri(Universal Resource Identifier)

uri指的是軟體套件來源位置,這些位置可以為系統內的某個位置(file)、CD-ROM(cdrom),或網路遠端位置(http、ftp)等。當使用者下apt - get指令時,uri就會到這些位置去搜尋軟體資料庫。全部的參數共有file、cdrom、http、ftp、copy、rsh、ssh等。


Distribution

參數可分為「Stable」、「Testing」、「Unstable」。


Component

參數共分為「Main」、「Contrib」、「Non - US」、「Non – Free」。


了解「sources.list」的撰寫規範之後,我們便可經由修改此檔來達成轉換不同族群的需求。舉例來說,目前系統在「Stable」狀態下,我們將「Unstable」的站台加入到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/ 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 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
        # 加入 unstable 站台
        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的注意事項

筆者要再次強調,請盡可能不去混用不同Debian族群間的軟體,以免造成系統的不穩定。此外,值得一提的是「sources.list」具備了彈性的機制,其來源位置幾乎可以是網路上的任何一個角落,不見得是要Debian Office站台,個人製作的.deb軟體套件也可以開放給網路上的任何人使用。


不過相當受歡迎的多媒體播放軟體 - Mplayer,因為License問題而沒有被納入 Debian中,但網路的熱心人士特地製作了Mplayer的Debian Package供Debian 使用者享用。


Debian鏡像與非官方apt站台

或許有人會擔心,當大量的Debian使用者同時連上Packages伺服器時,會不會造成伺服器負擔過重而停擺。其實目前全球各地都有許多Debian的鏡像(Mirror)站台,使用者不用記住這些站台網址,因為可以透過「apt - setup」指令來選擇所要去的站台,如(圖二)。


《圖二 透過apt-setup選擇「sources.list」站台》
《圖二 透過apt-setup選擇「sources.list」站台》

apt-get指令操作

或許使用者正被Debian的「sources.list」機制搞的頭暈腦脹,不過筆者相信在熟讀本節所介紹的「apt - get」指令之後,必然會有豁然開朗、茅塞頓開的感覺。不過要注意的是,在執行「apt-get」指令時需以「root」的身份來執行。


「apt – get」指令操作非常簡單,下面列出較常使用的選項及參數。


軟體資料庫同步:apt-get update

這是「apt – get」指令的起點,在下達任何「apt – get」相關軟體安裝或升級指令前,一定得先下「apt - get update」指令。這會讓系統依照「sources.list」設定檔內記錄的軟體來源伺服器位置,進行軟體資料庫同步動作,並知道目前系統上安裝的軟體跟伺服器上可抓取的軟體版本是否一致。如不一致,就表示有更新版的軟體可以升級或安裝。


軟體安裝:apt - get install

使用者在安裝軟體時,最怕的就是惱人的相依、相斥問題,但是在Debian裡,安裝軟體是一件非常愉悅的事情,只要「apt - get install package」的一行指令,便可完成安裝的動作。而所有相依、相斥的細節Debian APT系統都會幫我們處理,使用者所要做的就是「Say Yes」。我們以安裝vim為例:



#apt-get install vim

軟體移除:apt - get remove

與Intall一樣,Debian一樣會處理移除軟體時所發生的一些問題。我們以移除vim為例:


#apt - get remove vim

軟體升級:apt - get upgrade

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


#apt - get upgrade

系統升級:apt - get dist - upgrade

當轉移整個系統時,如「Stable」 轉換到「Testing」,或是系統運行好一段時間,使用者都應該下這個指令。因為它會聰明地處理很多軟體相依、相斥的問題,並且做好系統升級的工作。其語法為:


#apt-get dist-upgrade

取得Package原始碼apt - get source

如果使用者想取得某個軟體套件(P ackages)的原始碼,可以透過這個指令來達成。我們以取得vim原始碼為例:


#apt-get source vim

這個功能對程式開發者來說十分方便,當開發者遇到瓶頸時可以輕鬆地找尋相關的程式碼來研究。


清除下載回來的.deb檔案:apt - get clean

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


圖形介面的軟體管理工具

雖然指令用熟了可以加快操作速度,但不可否認的是,圖形介面的親和力還是強了些。其實除了以指令來維護Debian,使用者還可選擇不同的圖形介面軟體來管理Debian。


Aptitute

Aptitude是Curses - Based的使用者介面,堪稱為目前功能最強大的apt介面。雖然它是文字介面下的圖形介面軟體,但Aptitute優秀的設計讓人愛不釋手。此外,Aptitute也支援滑鼠。


《圖三 Aptitute開始畫面》
《圖三 Aptitute開始畫面》

Synaptic

Synaptic是一套由GTK+開發而成的系統軟體管理程式,圖形介面的操作不需筆者多說,大家一定都很拿手。


《圖四 Synaptic主畫面 》
《圖四 Synaptic主畫面 》

結語

Debian GNU/Linux是一套非商業的Linux Distribution,雖然不是商業軟體,但卻是一套功能完整、Package管理精良的Linux Distribution。經過本篇文章的介紹,相信讀者對於Debian的Package功能有了初步的認識與了解。使用者如對強大更新功能的Linux有興趣,不妨來試試這個以指令為基礎的作業系統。


<作者為國內Debian社群之重要推動者,聯絡方式:moto_chen@Phoenix.com>


延 伸 閱 讀
很多人都只是耳聞Debain的好,但是真正敢下海的人少之又少,Debian會很難伺候嗎?其實不然,但是坦白說Debian確實比較難以入門,而且很多設定上的習慣也跟一般Distribution不同,不過如果過的了門檻的人,十個有九個不會想要再用其他Distribution了。相關介紹請見「Debian無痛起步法」一文。
Debian是一套自由作業系統,也是一款電腦運行的基本程式和工具的匯集。Debian使用Linux核心,但大部份的基本工具則來自GN 計劃,因此我們稱為 GNU/Linux。你可在「Debian是什麼?」一文中得到進一步的介紹。
Jigdo是Jigsaw Download縮寫,意思為拼圖式的下載工具。這是Debian推薦的下載Debian GNU/Linux光碟的工具。Jigdo不僅是一個好用的下載大型檔的實用工具,它也從一個側面展示了Debian GNU/Linux有別於其他GNU/Linux Distribution的特點。在「Jigdo:下載Debian光碟的新方法」一文為你做了相關的評析。
相關組織網站
非官方的Debian apt站台資料庫
Aptitute官方網站
Synaptic官方網站
相關文章
Linux核心修補程式讓第五代樹莓派增速18%
多功能嵌入式系統新未來:從Android到Raspberry Pi 3
嵌入式Linux系統轉移關鍵探討 (上)
讓Windows和Linux一起跳森巴舞
Linux 開發者的最愛 - Debian
comments powered by Disqus
相關討論
  相關新聞
» 數智創新大賽助力產學接軌 鼎新培育未來AI智客
» VicOne深植車用資安DNA再報喜 獲TISAX AL3最高等級認證
» 勤業眾信獻策5方針 解決GenAI創新3大常見風險
» Fortinet整合SASE突破組織分散管理困境 重塑雲端安全的混合未來
» UD Trucks選用VicOne解決方案 利用情境化攻擊情報洞察風險


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.3.12.163.105
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw