Debian軟體包管理系統(轉)

BSDLite發表於2007-08-15
Debian軟體包管理系統(轉)[@more@]Debian包管理系統也許是類Unix系統上最為複雜的包管理系統。Debian的機制是網路透明的(也就是他可以透過網路透明的安裝遠端器上的軟體包),而Debian也是第一個進行使用這樣打包系統的發行版本。RH的up2date是最近的與Debian相似的軟體功能,而Slackware Linux並沒有達到真正的網路透明的程度。熟悉其他作業系統,如Windows,的使用者也許會想到Windows的Update,然而Debian的機制會更為強大。這一部分將會詳細的討論Debian的包管理機制。
技術概要
Debian的包管理系統可以分為幾層。最低層次是實際的包管理系統,而最高層次的是各種用來自動處理軟體包定位,獲得與軟體包安裝過程的使用者友好的介面程式。下面的列表列出所要呼叫的主要程式:
PROGRAM BASED ON 用途
dpkg N/A 實際安裝與管理軟體包的程式
apt-get dpkg 管理軟體包源列表和獲取要安裝的軟體包
dselect apt-get,dpkg 允許使用者從源列表檔案中選擇要安裝的軟體包
tasksel apt-get,dpkg 允許使用者選擇要安裝的任務(本地軟體包組)
下面的部分將會詳細的討論Debian的包管理程式。出於演示的目的,Debian的程式會與RH和Slackware中等價的程式進行對比。這僅僅是一個對比,我們的目的並不是要評判所一個系統是最優的。Debian系統是相當的複雜,而我們這樣做只是為了方便我們的討論。
使用dpkg程式
dpkg是Debian包管理系統的關鍵。這個程式負責實際的解包和安裝Debian軟體包歸檔檔案(以deb為副檔名),並負責管理與軟體包管理相關的各種資料庫。
我們可以使用dpkg來手動的安裝單個的軟體包。例如,也許我們會從某個網站上下載一個deb檔案並使用dpkg來進行安裝,或者是我們要安裝CD中的一個軟體包。相似的,我們也可以使用 dpkg來移除某一個軟體包。我們也可以使用dpkg來執行查詢命令,例如列出某一個包所安裝的檔案或者是定位包含一個指定檔案的軟體包。
這時我們也許已經意識到dpkg程式本質上與rpm程式相類似,透過rpm程式,我們可以安裝和移除軟體包,或是在軟體包執行各種查詢命令(包括已安裝和未安裝的軟體包)。Slackware會透過各種程式(installpkg,upgradepkg,removepkg)來完成相件的功能。
Slackware使用/var/log/package目錄中的簡單的文字檔案來儲存關於軟體包與檔案所屬關係的各種資訊。而RH卻是另一個極端,他是將這樣的各種資訊存放在一個二進位制資料庫中,而我們只可以透過rpm命令來進行訪問。Debian的dpkg是處於中間狀態:一個軟體包所安裝的檔案列表存放在一個資料庫中,但是關於這個軟體包的資訊卻是存放在/var/lib/dpkg/available檔案中,而所以已經安裝的軟體包的資訊存放在/var/lib/dpkg/info目錄下。在某種程式上,我們可以為了某些資訊而檢視相關的檔案,而這並不一定要透過使用dpkg工具來完成(雖然我們會發現dpkg工具會更為的方便)。
dpkg與rpm之間的一個主要區別在於dpkg維護一個事實上可用的(available)但是卻還沒有安裝的軟體包列表,也就是/var/lib/dpkg/available檔案。(事實上,RH也提供了一個名為rpmdb的軟體包來提供類似的功能,但是這個軟體包卻是相當的難用的)。這個列表是由CD或是其他的質上的內容組織而成的,並且這樣的組織結構可以完成用各種的查詢請求。(例如,使用者也許會查詢一個未安裝的軟體包的文件資訊)。這是相當方便的,因為這意味著我們為了獲得一個軟體包的資訊而並不需要這個deb軟體包自身;而如果我們是使用rpm命令,我們就不得不實際的安裝了這個軟體包並且使用rpm -qp命令來進行相應的查詢。
Debian的包管理系統與RH的RPM系統的另一個主要區別就在於他們的包依賴關係的解決。RPM可以跟蹤依賴關係,也就是一個軟體包所依賴的另一個軟體包。例如,OpenSSH軟體包依賴於OpenSSL軟體包。如果使用RPM,依賴僅是一個yes或是no的建議。然而,dpkg工具可以支援幾種型別的依賴,例如"required", "recommend", 和 "suggested"。這個額外的錄活性可以使得軟體包很容易的與終端使用者互動依賴關係的資訊。當我們要安裝一個Debian的軟體包時,記住一定要仔細檢查軟體包的依賴關係,因為我們會錯過一些推薦或是建議的特徵。
使用apt-get程式
apt-get程式建立在dpkg程式之上並且管理軟體包源,提供前面提到的大多數的網路透明性。我們可以認為這個程式是為dpkg程式提供源的。dpkg所安裝的軟體包要從一個地方得到,而apt-get就是這個地方。apt-get的另一個主要責任就要跟蹤軟體包之間的依賴關係(如一個軟體包需要另外的哪一個軟體包)。
管理源介質
通常,使用者會從安裝CD或是網路上的一個安裝倉庫(如FTP站點)進行Debian的安裝。這些安裝介質構成了Debian軟體包的集合,apt-get監視這些介質並且跟蹤每一個源可用的軟體包列表。當使用者希望安裝一個新的軟體包時,他只是簡單的執行apt-get來定位這個軟體包並把他傳遞給dpkg進行安裝。定位這個軟體包也許意味著回到那個FTP站點,或者是提示使用者插入一個安裝CD,或是其他的事情。
踐踏可用軟體包的能力是一個主要的方便之處。如RPM的系統就是相當的近視的,rpm並不會看到沒有直接坐到他面前的任何檔案。相反,Debian的apt-get可更好的看到可用軟體包的範圍,並且可以獲得軟體包而不需要麻煩使用者自己支下載。RH也有一個名為up2date的類似的系統,但是up2date僅僅知道由RH所維護的軟體包倉庫的資訊。Debian的apt-get有一個更為靈活的軟體包源列表。我們也可以將up2date看作是隻可以處理一個軟體包源的apt-get的兄弟。
apt-get所使用的源介質列表是由一些幫助程式來維護的。儲存源列表的檔案為/etc/apt/sources.list,這個檔案要以包含各種源,例如CD,FTP或是HTTP站點等等。這個檔案的內容可以很容易的由一些幫助程式來進行管理,例如apt-cdrom,這個程式可以搜尋Debian軟體包CD並且在/etc/apt/sources.list中建立合適的內容。
使用apt-get工作
當在一個Debian系統上維護軟體包時,許多使用者大部分時間使用apt-get。他最適合快速簡單的安裝那些我們在安裝系統時並沒有安裝的軟體包,或者是當軟體包釋出了修正或是加強時可以更新當前的軟體包到一個更新的版本。然而事實上apt-get是相當的高階,他可以更新整個系統到一個新的版本。這些apt-get的特徵會在以後進行更為詳細的討論。
使用dselect程式
dselect是一個基於選單的介面從而可以選擇我們要安裝的軟體包。事實上這個程式是在Debian的安裝過程中呼叫的程式,從而可以以許使用者修正軟體包列表來滿足他們的要求。這個程式也可以在調整所選擇的列表的安裝之後來執行。
這個程式僅是由apt-get和dpkg所維護的軟體包列表內容的一個檢視。也就是說,apt-get維護一個軟體包源的列表,而dpkg維護一個可用的軟體包列表(由原始碼編譯的)。dselect程式簡單的顯示一個所有可用的軟體包的列表,表明哪一個已經安裝並且允許使用者標記可用的軟體包進行安裝,或者是標記已安裝的軟體包進行刪除。可用軟體包的選單也包含每一個軟體包的依賴關係的資訊,並且幫助使用者選擇軟體包來解決依賴關係。
當使用者做出了他的選擇並退出dselect,apt-get(接下來為dpkg)就會執行依據使用者的選擇來進行實際的軟體包的安裝與刪除。RH和Slackware並沒有與dselect相類似的程式。
使用tasksel程式
tasksel程式與dselect相類似,但是並不是允許使用者選擇要安裝的軟體包,而是讓使用者選擇任務。在Debian的術語中,一個任務本質上是一個軟體包的集合。例如,X Window系統的XFree86實現事實上由許多不同的軟體包所構成,包括核心軟體,各種影片卡的驅動模組,以及字型檔案。Debian有一個任務的概念可以允許發行版本的設計將軟體包集合分組,例如將XFree86放入一個虛擬包中。當使用者選擇一個任務,實際上他選擇一個包含多個Debian deb軟體包的集合。
tasksel程式是相當直接的,而他本身使用apt-get,然後是dpkg來處理構成任務的軟體包的安裝。而對於dselect,RH以及Slackware並沒有提供相類似的功能。
詳細討論
上面的幾個部分我們概要的討論了構成Debian包管理系統的各種程式所提供的功能。下面的幾個部分將會討論的更為深入一些,並且演示一些Debian包管理系統中常見的用法。然而,每一個程式都是相當複雜的,所以更為詳細的討論我們需要檢視Debian GNU/Linux提供的手冊以及其他的文件。
下面的幾問分我們將會專注於演示作為一個整體使用Debian包管理系統最常用的方法,並不會專注於單個程式的機制。現在,我們已經很好的把握了類似於dpkg和rpm這樣的工具在做什麼(解包檔案,將他們安裝到哪裡記入資料庫以備以後刪除,以及執行指令碼)。為了避免重複我們會由手冊頁中得到的資訊,我們將會專注於發行版本,而不僅僅是這些工具。
使用Debian系統維護軟體包
即使我們可以透過閱讀手冊來了解如何使用他們,相比於我們從手冊中立時得到的,Debian的包管理工具會提供更為強大和靈活的特性。下面的每一個部分將會專注於一個特定的常見的任務並且勾出那個任務的通常過程,依次來幫助我們從知道執行這些程式到知道何時執行他們的轉變。這裡很重要的一點就是我們要在心裡記住,使用Debian包管理系統,任何事情都有不只一種解決的辦法。通常可以在兩個層次上管理包Debian軟體包:在dpkg層次,以及在apt-get和dselect層次。這一部分將會討論每一種情況,主要演示包管理的機制,並且展示何時以及為什麼我們要使用每一層次。
使用dpkg工作
Debian的dpkg工具是包管理系統中最低層次的工具。他在單個軟體包的層次上進行操作,並且可以執行經典的包命令,如install,remove以及各種查詢。下面的列表列出了dpkg提供的最常見的操作。對於更為詳細的內容,我們需要查閱手冊頁以及其他的文件。
命令 相應的RPM命令 功能
dpkg -i rpm -i 安裝一個Debian軟體包
dpkg -r rpm -e 刪除一個已安裝的軟體包
dpkg -l rpm -qa 列出所有已安裝的軟體包
dpkg -l rpm -q 檢查一個軟體包是否已安裝並列印出全名
dpkg -L rpm -ql 列出由一個軟體包所安裝的檔案
dpkg -S rpm -qf 識別一個已安裝的包含某個檔案的軟體包
dpkg -p None 決定指定的軟體是否可用於安裝
有趣的通用表示式
通用表示式是指類似於星號(*)的萬用字元擴充套件來匹配特定的模式。Debian的dpkg程式,像大多數的包管理程式一樣,支援所傳遞引數中的通用表示式。例如,要列出所有名字中帶用”libc”的已安裝的軟體包,我們可以使用下面的命令:
$ dpkg -l "*libc"
這裡的星號與Shell中檔名的通用表示式類似,所以這時我們就會得到一個名字中帶有”libc”的軟體包列表。這是相當方便的一件事。
使用apt-get管理軟體包源
在我們的Debian系統上使用dpkg程式來管理軟體包存在的唯一問題就是這是一件相當艱苦的工作。必競,如果我們要安裝一個指定的軟體包,首先我們要找到這個軟體包。這就會引發插入或是掛載CD,如果這個軟體包並不在我們第一次所檢查的CD上,我們就需要幾次這樣的操作。或者是從一個Web或是FTP站點下載這個軟體包。即使我們所做的僅僅是安裝一個我們在安裝過程中忘記選擇的一個軟體包,我們也不得不使用CD或是URL來定位這個軟體包。另外,我們也不得不也這個軟體包所依賴的其他軟體包進行鬥爭。
鑑於這些情況,Debian GNU/Linux包含了apt-get,這個工具會為我們管理安裝介質。因為apt-get維護著一個包含軟體包的介質源列表,與一個實際可用的軟體包列表,我們所要做的就是請求apt-get定位並安裝我們需要的軟體包。下表列出了apt-get最常見的用法。我們可以查閱相關的手冊而得到更為詳細的資訊。
命令 功能
apt-get install 從可用的軟體包列表中定位並安裝指定的軟體包
apt-get remove 解除安裝指定的軟體包與相關的依賴
apt-get update 重新整理可用的軟體包列表(在源列表更新以後)
apt-get upgrade 當有新版本可用時更新我們系統上所用的軟體包
apt-get的前兩個功能--安裝與刪除軟體包--是相當直接的。只需要輸入apt-get install foo,apt-get就會在他們的源列表與可用軟體包列表中查詢名為foo的Debian歸檔檔案。如果找到了一個就會安裝這個歸檔檔案,同時會解決各種相關的依賴關係。相反的,apt-get remove foo會解除安裝這個軟體包。然而剩下的兩個功能並不是這樣的明顯。
更新已安裝的軟體包
在上面列出的apt-get的功能時有一點值得注意的就是更新並不是只作用在一個指定的軟體包上。相反,他是一個全域性的命令並且更新所有有可用更新的軟體包。這最初看起來似乎有一些更嚴格的限制,因為這會使得更新單個軟體包變得很困難。然而,如果我們仔細的想一下,一旦我們自動更新了系統本身,我們就不需要擔心單個軟體包,所以這在實際中並不是一個問題。
更新可用軟體包列表
在上面的列表另一個並不明顯的命令就是update命令。這個命令不同於我們剛才所描述的upgrade命令。update命令更新可用軟體包列表,但是並不會實際的更新任何一個軟體包。通常我們需要在更新了我們的/etc/apt/sources.list檔案或是一個FTP或Web站點更新了他的可用軟體包的列表時我們需要執行apt-get update。一旦apt-get明白存在對於已安裝軟體包的更新,upgrade命令就可以完成升級更新的工作。
使用dselect與tasksel管理軟體包
有時,也許我們需要一次安裝許多個軟體包,或者是我們並不確定一個指定軟體包的名字。有時我們甚至不知道滿足一個特定需求的軟體包是否存在。dselect與tasksel工具可以解決這樣的情況。
使用dselect
dselect程式是最早出現在Debian GNU/Linux系統中的包管理程式,因為他是在安裝過程中用來選擇單個軟體包的工具。dselect程式僅僅是一個基於選單的前端程式,將我們直到現在所討論的各種功能集中在一起。
管理員可以用dselect程式來瀏覽所有可用的軟體包列表,而且可以立時看到安裝了哪些軟體包以及沒有安裝哪些軟體包。透過改變選擇列表,可以安裝或是移除許多的軟體包。對於這樣的情況,dselect也許比使用apt-get來管理單個的軟體包更為的方便。
使用tasksel
一個任務只是一個軟體包列表。例如,XFree86任務包含許多單個的軟體包,例如庫,影片卡驅動以及字型。tasksel程式可以在安裝結束以後用來安裝額外的任務。
例如,也許一個系統最初是作為伺服器來配置的,所以XFree86並沒有安裝。如果那個系統會重新作為一個桌面系統來使用,我們就不得不安裝XFree86軟體包。當然,這個可以透過使用apt-get手動來完成,但是會涉及到許多的軟體包。所以也許簡單一點的辦法就是使用dselect來選擇要安裝的所有軟體包,但是即使這樣我們也不得不在軟體包列表中搜尋他們。然而,如果使用tasksel,整個的XFree86軟體包整體,也就是XFree86任務,可以快速並簡單的進行安裝。
配置Debian軟體包
包管理系統必須善於安裝,升級以及解除安裝檔案。大多數的也具有管理配置檔案的功能,僅管他們支援的程度並不相同。例如,RH的RPM系統允許軟體包的建立者設計一些檔案作為配置檔案。當後來管理這些檔案時,RPM會非常小心的儲存他們並且絕不會覆蓋系統管理員自定義的檔案。然後,Debian系統包含更多的配置支援。
Debian帶有debconf軟體包。這個軟體包是庫以及一些實用程式的集合,實現了一個軟體包的設計者可以用來客理他們的軟體包配置的協議。一個協議是一個控制程式設計師之間交流的標準,debconf協議允許軟體包的建立者使用標準的方式向使用者提出問題。debconf實用程式以及使用者前端介面收集必須的軟體包形為資訊,並且將這些資訊傳遞給軟體包中所包含的安裝指令碼。這個指令碼可以做任何必須的事情,如生成配置檔案。
使用debconf軟體包的例子就是X Window系統。XFree86需要大量的資訊來配置X伺服器以便與使用者的硬體進行工作。RH為了他的安裝編寫了一個名為Xconfigurator的程式,但是Debian使用debconf工具。這兩個程式之間有著極大的相似性,至少他們都是基於選單的使用者介面,他們會詢問相似的問題並生成相似的檔案。
使用debconf重新配置軟體包
使用者以及系統管理員常常需要在安裝完成以後重新配置軟體包。例如,一個工作站更新了一個新的影片卡,需要重新配置XFree86。鑑於這樣的情況,debconf提供了兩個工具:dpkg-preconfigure與dpkg-reconfigure。還有第三個工具:debconf-show,他會顯示一個軟體包的當前配置資訊。
這兩個配置命令,dpkg-preconfigure與dpkg-reconfigure,十分的相似。本質上來說,dpkg-preconfigure用來在軟體包安裝之前收集相應的資訊,而且他在安裝過程是最重要的。事實上大多數的使用者並不會直接呼叫他。然而,dpkg-reconfigure完成相似的任務,但是可以配置已安裝的程式。例如,命令dpkg-reconfigure xserver-common可以在重新了影片卡以後重新配置工作站。相似的,debconf-show xserver-common可以顯示XFree86所用的配置變數以及他們的當前值。
配置debconf
debconf程式本身也有一些配置選項。主要的元件是/etc/apt/apt.conf.d目錄以及/etc/debconf.conf檔案。我們將會在下面分別討論每一問分。然而,大多數使用者並不需要經常處理這些檔案。而我們只需要清楚他們的存在,也許有一天我們會用到他們。
/etc/apt/apt.conf.d目錄是被apt包管理系統用來作為當apt工具被呼叫時執行程式的鉤子。這個目錄包含一些內容會被包管理工具在他們的操作中使用的檔案。
/etc/debconf.conf 檔案配置debconf系統本身。這個檔案真正的指定了到存放配置資訊的資料庫檔案的路徑。debconf系統透過將軟體包使用debconf與使用者互動的問題答案記入一個獨立於軟體包內容的資料庫來記住前一個問題的答案。如果一個軟體包被移除了或是被重新安裝(或者是簡單的升級),debconf會從他的資料庫中取出配置資訊並使用這些值來重新執行配置指令碼。要覆蓋這個操作,我們可以使用dpkg-reconfigure程式。
更新系統
直到現在我們已經討論了許多的工具提供各種方法來與Debian包管理系統工作。正如我們已經注意到的,一般來說這與其他的系統相似,僅管Debian的也許是一個更為豐富,更為高階的系統。然而,還有一個我們並沒有涉及到的方便,而這就是Debian透過包管理系統進行更新升級的能力。
對於大多數的發行版本來說,升級更新是一個集中的過程。我們通常不得不從軟盤或是CD啟動,執行有特定目的的程式,從安裝介質來更新我們的系統。然而,Debian系統是完全不同的方式進行處理。
這裡的關鍵就是可用的軟體包列表。大部分時間,我們也許會配置我們的系統使用相當穩定的源集合,但是但見偶然會包含一些Bug修正,安全修正等內容。在這樣的情況下,我們可以透過類似於下面的方法來用新的軟體包更新我們的安裝:
1 如果必須,可以更新/etc/apt/sources.list來反應新的介質。例如,我們也許得到了一個包含更新軟體包的CD,並且需要使用apt-cdrom命令來新增這個新的CD。
2 執行apt-get update命令以使得apt-get清楚已更新的軟體包。
3 執行apt-get upgrade命令以使得apt-get獲得並安裝可用的更新軟體包。
當我們需要做的只是更新一些軟體包時,這樣的過程可以工作得很好。然而,事實上我們也許希望將我們的Debian系統更新到一個新的版本。當我們希望這樣做時,這樣的情況與我們前面討論的也並沒有太大的不同。我們僅是需要用新的版本的軟體包來替換當前已經安裝的軟體包。所不同的僅是更新的範圍:在一個主版本的更新中,大量(也許是全部)的軟體包進行連續的改變,通常是每一個軟體包內容的主要改變。
管理那樣的完全的更新著並是很簡單的,所有大多數的發行版本只是製作新的CD,而我們要重新啟動系統來進行更新。然而,對於Debian系統,我們可以用下面的過程來完成:
1 更新etc/apt/sources.list,移除所有到當前發行版本介質的引用,並新增新的主版本的實體內容。(例如,更新一個網路安裝的URL或是新增一個新的本地安裝的新的CD)
2 執行apt-get update更新可用的軟體包列表以及版本
3 執行apt-get dist-upgrade來著際更新發行版本。這個命令會使得apt-get進入另一個合適的安裝模式來片是在整個系統更新中會出現的各種複雜的依賴關係。
4 當更新完畢,重新啟動系統來完成安裝過程。
我們可以很明顯的看到一個整個發行版本的更新過程類似於前面的處理一個特定版本的小的更新。當然系統也需要重啟(例如,如果我們更新的核心),然而,這卻是一個優雅的過程。
操作Debian軟體包歸檔
我們已經讀到的所有軟體包一定是來自某個地方,所以很自然的我們就會問到這些軟體包是怎麼樣建立的。也許有一天我們希望或是需要檢視一個Debian軟體包中的內容,或是從中解壓出某一個特定的檔案,或是在一個非常基礎的層次上進行處理。為了支援這些任務,Debian中包含有一個名為dpkg-deb的程式來管理單個的Debian軟體包。下表列出了dpkg-deb程式的用法。我們可以查閱相關的手冊頁得到更為詳細的內容。
命令 相似的RPM命令 功能
dpkg-deb -build rpm -ba 建立一個新的軟體包
dpkg-deb -info rpm -qpi 從軟體包中解壓出通用資訊
dpkg-deb -contents rpm -qpl 顯示一個軟體包的內容
正如上表所顯示,dpkg-deb的功能或多或少的與RPM的功能相似。然而,在實際建立一個歸檔檔案時的操作卻是本質上的不同。本質上,RPM軟體包是由在.spec檔案中所包含的特定指令碼來建立的,這些檔案包含有由一個原始碼包建立一個二進位制的RPM包時所需要的全部資訊。
相對的,Debian的軟體包是由dpkg-deb -build命令來組織的,這個命令透過收集當前目錄下的內容並且處理DEBIAN目錄下名字控制名字來建立軟體包。事實上,Debian建立軟體包的方法更類似於Slackware,而不是RH。
管理原始碼
一些讀者也會希望知道Debian是否支援原始碼軟體包,就如同RH的RPM支援.src.rpm檔案的方法。答案是肯定的。因為Debian的軟體包是被建立用來簡單歸檔特定目錄下的內容,建立一個包含原始碼的deb是一件很簡單的事情。然而,並沒有通常所謂的Debian原始碼軟體包的概念,Debian軟體包的原始碼是作為標準的tar包的形式進行分發的,在這個tar包中包含有原始碼以及要為Debian GNU/Linux構建軟體包所必須的補丁。
安裝非Debian的軟體包
正如我們在前面所提到的,也許我們找到的某個特定程式的軟體包是RPM打包的格式而不是Debian軟體包格式。所以Debian的使用者常常會處於一種令人討厭的情況下,然而他們希望安裝一個二進位制的軟體包,而這個軟體包是用非Debian的格式進行分發的。
為了解決這樣的問題,Debian GNU/Linux包含一個相異的程式。這是一個可以在不同的打包格式之間進行相互轉換的工具。例如,他允許Debian的使用者將一個RPM檔案轉換成為一個Debian的deb檔案。然後使用者就可以在他們的Debian系統上安裝這個軟體包(當然這裡假定他滿足軟體包之間的依賴關係)。然而,因為每一個軟體包的格式都有一個他自憶的規則,這就會導致有一些軟體包不能被正確的處理。這並不是一個完美的解決辦法,但是這確實很有幫助。
機制與使用者介面
正如我們到現在已經注意到的,Debian的軟體包管理系統本質上不同於RH或是Slackware。然而RH或是Slackware都或多或少的自動處理了軟體包實際安裝過程,但是Debian系統卻將他帶入了另一個層次。
演示的最好方法是就是對比Debian GNU/Linux與RH的安裝過程。在RH的安裝過程中,使用者從一個安裝類的集合中選擇,例如,伺服器,工作站,或是桌面。這些選項是為所選擇的安裝類別而自定義的一個安裝軟體包列表的模板。使用者可以在安裝以後進行修改,但是那時卻是從CD或是網路上定位或是取得某一個軟體包並且手動的進行安裝。
Debian GNU/Linux採用相似的方法,但是去並不完全相同。Debian的安裝程式只是安裝了一個最簡單的軟體包集合,僅僅是可以啟動系統。然後會提示使用者使用dselect程式從一個單獨的可用的軟體包列表來構建一個要安裝的軟體包列表。在任何時候,都只是在系統上安裝可用軟體包列表的一個子集。這個方法也使得當有Bug修正時更新系統更為的容易,或者是更新到一個新的版本,這個過程都是很自然的。
當然,所有這些靈活性也是要付出一定的代價的,也就是複雜。一些在享受apt-get以及他所提供的便利,而另一些人卻認為RPM是最好的打包格式。當然其他的人,遵從KISS(Keep It Simple,Stupid)的哲學思想而喜歡Slackware的機制。對於每一個系統都有自已不同的倡導者,雖然他們有許多相互重疊的功能。當然,最後,每一個使用者都會選擇他們認為最好的來用。

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

相關文章