?? 2.htm
字號:
</P></LI></UL>
<UL>
<LI><STRONG>Standard</STRONG> 該級別軟件包是任何Linux系統的標準件,它們組成一個小而精的字符模式的系統。
<P>系統的默認安裝就包括了它們。“Standard”級軟件包不包括許多大型應用程序,但它包括Emacs(它比其它應用程序更底層)和Tex及LaTeX的精巧版(不支持X)。
</P></LI></UL>
<UL>
<LI><STRONG>Optional</STRONG> 該級別軟件包包括那些你可能想安裝的軟件,即使對它們并不熟悉。and if you don't
have specialized requirements.
<P>它們包括X11,TeX完整發布版和許多應用程序。 </P></LI></UL>
<UL>
<LI><STRONG>Extra</STRONG>
該級別軟件包可能與其它高級別軟件包沖突,僅當你知道其用途時才會使用它們,或者有運行它們有專門要求,這些都使它們不適合定為“Optional”級。
</LI></UL>
<HR>
<A name=s-virtual></A>
<H3>2.2.7 虛擬軟件包</H3>
<P>虛擬軟件包是一個統稱,用來指一組具有相近功能的軟件包。舉個例子,<SAMP>tin</SAMP>和<SAMP>trn</SAMP>都是新聞組閱讀軟件,當系統中某個程序需要調用新聞閱讀器工作時就會產會一個關聯關系,它們必須滿足這個關聯,我們也稱之為它們提供了一個叫做<SAMP>news-reader</SAMP>的“虛擬軟件包”。
<P>又如,<SAMP>exim</SAMP>和<SAMP>sendmail</SAMP>都提供郵件傳輸代理的功能。也可稱之為提供“郵件傳輸代理”虛擬包,如果安裝了兩者之一,那么任何與<SAMP>mail-transport-agent</SAMP>有關聯關系的程序發出調用命令時,都會通過這個虛擬包實現調用。
<P>Debian有個機制,如果系統中提供同種虛擬包的軟件包安裝了多個,系統管理員可以指定一個為首選軟件。相關的命令是<SAMP>update-alternatives</SAMP>,更詳細的描述參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-package.zh-cn.html#s-alternatives">自選命令,
第 6.5.3 節</A>。
<HR>
<A name=s-depends></A>
<H3>2.2.8 軟件包關聯性</H3>
<P>Debian軟件包管理系統有一套軟件包“依賴性”定義(用一個標志)用來描述獨立運行程序A與現存系統中程序B的存在之間的關系疏密程度:
<UL>
<LI>軟件包A<STRONG>依賴</STRONG>(depends)軟件包B:要運行A必須安裝B。在有些情況下,A不僅依賴B,還要求B的特定版本。版本依賴通常有最低版限制,A更依賴于B的最新版而非某個特定版本。
</LI></UL>
<UL>
<LI>軟件包A<STRONG>推薦</STRONG>(recommends)軟件包B:軟件包維護者認為所有用戶都不會喜歡缺少某些功能的A,而這些功能需要B來提供。
</LI></UL>
<UL>
<LI>軟件包A<STRONG>建議</STRONG>(suggests)軟件包B:B中某些文件與A的功能相關(通常能增強其功能)。 </LI></UL>
<UL>
<LI>軟件包A與軟件包B<STRONG>沖突</STRONG>(conflicts):如果系統中安裝了B那么A無法運行。多數情況下,沖突是由于A中包含了B中文件的改進版。“Conflicts”常和“replaces”同時出現。
</LI></UL>
<UL>
<LI>軟件包A<STRONG>替換</STRONG>(replaces)軟件包B:B安裝的文件被A中的文件移除和覆蓋了。 </LI></UL>
<UL>
<LI>軟件包A<STRONG>提供</STRONG>(provides)軟件包B:A中包含了B中的所有文件和功能。這種機制為那些受限于磁盤空間的用戶提供了一個途徑,只安裝A中他們直正需要的部分。
</LI></UL>
<P>上述術語使用方法的更詳細的信息參閱Packaging Manual和the Policy Manual。
<P>注意,<CODE>dselect</CODE>可以對<STRONG>recommends</STRONG>和<STRONG>suggests</STRONG>類軟件包進行細操作,<CODE>apt-get</CODE>只會簡單的下載安裝<STRONG>depends</STRONG>類軟件包而不管<STRONG>recommends</STRONG>和<STRONG>suggests</STRONG>類軟件包。這兩個程序均正式使用APT作為其后臺。
<HR>
<A name=s-pre-depends></A>
<H3>2.2.9 何為“pre-depends”</H3>
<P>“pre-depends”是一種特殊關聯關系。對于一個普通軟件包,不管系統中是否存在它的關聯文件,<CODE>dpkg</CODE>都會將它解包。解包主要指<CODE>dpkg</CODE>從軟件包中取出安裝文件。如果系統中不存在這些軟件包<STRONG>依賴</STRONG>的軟件包,<CODE>dpkg</CODE>會拒絕完成安裝(通過執行它的“configure”動作)直至安裝完所需的軟件包。
<P>然而,對有些軟件包,<CODE>dpkg</CODE>會拒絕解包,除非關聯問題被解決。這種軟件包就稱為“pre-depend”于其它軟件包。Debina提供這種機制是為了支持系統從<SAMP>a.out</SAMP>格式向ELF格式安全升級,在該過程中軟件包的解包<STRONG>順序</STRONG>至關重要。對于某些重大升級這種機制也很有用,例如對那些“required”級并有libc關聯的軟件包。
<P>再次,更多詳細信息參閱Packaging Manual。
<HR>
<A name=s-pkgstatus></A>
<H3>2.2.10 軟件包狀態</H3>
<P>軟件包有各種狀態:“unknown”,“install”,“remove”,“purge”和“hold”。這些“希望”標記描述了用戶打算如何操作這些軟件包(既可以使用<CODE>dselect</CODE>的“Select”菜單,也可以直接調用<CODE>dpkg</CODE>)。
<P>它們的意思是:
<UL>
<LI><STRONG>unknown</STRONG> - 用戶并沒描述他想對軟件包進行什么操作。
<LI><STRONG>install</STRONG> - 用戶希望對軟件包進行安裝或升級。
<LI><STRONG>remove</STRONG> - 用戶希望刪除軟件包,但不想刪除任何配置文件。
<LI><STRONG>purge</STRONG> - 用戶希望完全刪除軟件包,包括配置文件。
<LI><STRONG>hold</STRONG> - 用戶希望軟件包保持現狀,例如,用戶希望保持當前的版本,當前的狀態,當前的一切。 </LI></UL>
<HR>
<A name=s-puttingonhold></A>
<H3>2.2.11 阻止軟件包升級</H3>
<P>有兩種方法阻止軟件包升級,使用<CODE>dpkg</CODE>,或者在Woody中使用APT。
<P>使用<CODE>dpkg</CODE>,首先導出軟件包選擇列表: <PRE> dpkg --get-selections \* > <VAR>selections.txt</VAR>
</PRE>
<P>接著編輯文件<CODE><VAR>selections.txt</VAR></CODE>,修改想要恢復的軟件所在的行,例如<CODE>libc6</CODE>,則將:
<PRE> libc6 install
</PRE>
<P>改為: <PRE> libc6 hold
</PRE>
<P>保存文件,將它裝入<CODE>dpkg</CODE>數據庫: <PRE> dpkg --set-selections < <VAR>selections.txt</VAR>
</PRE>
<P>或者,如果你知道要恢復的軟件包名稱,執行: <PRE> echo libc6 hold | dpkg --set-selections
</PRE>
<P>這個命令將在每個軟件包安裝過程中保持該軟件包不變。
<P>使用<CODE>dselect</CODE>也可以達到同樣的效果。進入[S]elect屏幕,找到想阻止其升級的軟件包,按“=”鍵(或者“H”)。更改在你退出[S]elect屏幕后立即生效。
<P>Woody中的APT系統有一個新機制來阻止軟件包升級,在下載升級檔進程中使用<SAMP>Pin-Priority</SAMP>。參閱幫助頁面<CODE>apt_preferences(5)</CODE>,或閱讀<CODE><A
href="http://www.debian.org/doc/manuals/apt-howto/">http://www.debian.org/doc/manuals/apt-howto/</A></CODE>或<CODE>apt-howto</CODE>軟件包。
<HR>
<A name=s-sourcepkgs></A>
<H3>2.2.12 源碼包</H3>
<P>源碼包發布在<SAMP>source</SAMP>目錄中,既可以手工下載可以使用 <PRE> apt-get source <VAR>foo</VAR>
</PRE>
<P>獲取它們(參閱<CODE>apt-get(8)</CODE>幫助頁面)。
<HR>
<A name=s-sourcebuild></A>
<H3>2.2.13 編譯源碼包</H3>
<P>對于<SAMP><VAR>foo</VAR></SAMP>軟件包,從源碼編譯需要<CODE><VAR>foo_*</VAR>.dsc</CODE>、<CODE><VAR>foo_*</VAR>.tar.gz</CODE>和<CODE><VAR>foo_*.diff</VAR>.gz</CODE>文件(注意,對于由Debian開發的軟件包,沒有<SAMP>.diff.gz</SAMP>文件)。
<P>當你得全了這些文件,如果你這安裝了<CODE>dpkg-dev</CODE>軟件包,運行: <PRE> $ dpkg-source -x <VAR>foo_version-revision</VAR>.dsc
</PRE>
<P>它將軟件包解壓到一個名為<SAMP><VAR>foo-version</VAR></SAMP>的目錄。
<P>使用下列命令創建二進制軟件包: <PRE> $ cd foo-version
$ su -c "apt-get update ; apt-get install fakeroot"
$ dpkg-buildpackage -rfakeroot -us -uc
</PRE>
<P>然后, <PRE> # su -c "dpkg -i ../<VAR>foo_version-revision_arch</VAR>.deb"
</PRE>
<P>安裝新編譯的軟件包。參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-package.zh-cn.html#s-port">向<SAMP>stable</SAMP>系統引入軟件包,
第 6.4.10 節</A>。
<HR>
<A name=s-creatingdebs></A>
<H3>2.2.14 新建Debian軟件包</H3>
<P>創建新軟件包的詳細信息,參閱New Maintainers'
Guide,該文檔在<CODE>maint-guide</CODE>包中,或瀏覽<CODE><A
href="http://www.debian.org/doc/manuals/maint-guide/">http://www.debian.org/doc/manuals/maint-guide/</A></CODE>。
<HR>
<A name=s-uptodate></A>
<H2>2.3 Debian系統升級</H2>
<P>Debian的設計目標之一就是提供一個一致的升級途徑和安全的升級過程,我們致力于舊版本的平滑升級,軟件包在升級過程中會將重要信息反饋給用戶,并提供一個可能的解決方案。
<P>你也應該閱讀發布手記(Release Notes),該文檔描述了升級的詳細情況,它存在于所有的Debian光盤中,也可以通過互聯網訪問<CODE><A
href="http://www.debian.org/releases/stable/releasenotes">http://www.debian.org/releases/stable/releasenotes</A></CODE>或<CODE><A
href="http://www.debian.org/releases/testing/releasenotes">http://www.debian.org/releases/testing/releasenotes</A></CODE>。
<P><A
href="http://qref.sourceforge.net/Debian/reference/ch-package.zh-cn.html">Debian軟件包管理,
第 6 章</A>提供了升級的實用指南,本節只作基礎細節的介紹。
<HR>
<A name=s-howtocurrent></A>
<H3>2.3.1 系統升級方法</H3>
<P>你可以簡單的執行匿名FTP或用<CODE>wget</CODE>查找想安裝的Debian包文件,然后下載,用<CODE>dpkg</CODE>裝上。(注意<CODE>dpkg</CODE>隨時隨地都能安裝升級文件,甚至是正在運行的系統上)然而,有時安裝修訂包需要先安裝其它軟件包的新版本,這時安裝就會停止,直到所需的軟件包被安裝好。
<P>許多人覺得這種手工安裝太費時,加上Debian軟件包升級是那樣頻繁—通常,每周會上載十幾個新軟件包。在新版本發布前期更新量更是加倍。為了跟上更新速度,許多用戶更樂意使用自動化升級工具。基于此目的出現了幾種專門的軟件包管理工具。
<HR>
<A name=s-pkgtools></A>
<H3>2.3.2 軟件包管理工具概述</H3>
<P>Debian軟件包管理系統有兩個設計目標:實現對軟件包文件和包中文件的操作。APT和<CODE>dselect</CODE>完成前者,<CODE>dpkg</CODE>完成后者。
<HR>
<A name=s-dpkg></A>
<H3>2.3.3 <CODE>dpkg</CODE></H3>
<P>它是操作軟件包文件的主要工具;參閱<CODE>dpkg(8)</CODE>獲得完整信息。
<P><CODE>dpkg</CODE>由幾個原始的輔助程序演化而來。
<UL>
<LI>dpkg-deb:操作<SAMP>.deb</SAMP>文件。<CODE>dpkg-deb(1)</CODE> </LI></UL>
<UL>
<LI>dpkg-ftp:一個舊的軟件包獲取命令。<CODE>dpkg-ftp(1)</CODE> </LI></UL>
<UL>
<LI>dpkg-mountable:一個舊的軟件包獲取命令。<CODE>dpkg-mountable(1)</CODE> </LI></UL>
<UL>
<LI>dpkg-split:將大軟件包分割成小包。<CODE>dpkg-split(1)</CODE> </LI></UL>
<P><CODE>dpkg-ftp</CODE>和<CODE>dpkg-mountable</CODE>已被新的APT系統取代。
<HR>
<A name=s-apt></A>
<H3>2.3.4 APT</H3>
<P>APT(the Advanced Packaging
Tool)是Debian軟件包管理系統的高級界面,由幾個名字以“apt-”打頭的程序組成。<CODE>apt-get</CODE>、<CODE>apt-cache</CODE>和<CODE>apt-cdrom</CODE>是處理軟件包的命令行工具,它們也是其它用戶前臺程序的后端,如<CODE>dselect</CODE>和<CODE>aptitude</CODE>。
<P>更多信息,可安裝<CODE>apt</CODE>軟件包后閱讀<CODE>apt-get(8)</CODE>、<CODE>apt-cache(8)</CODE>、<CODE>apt-cdrom(8)</CODE>、<CODE>apt.conf(5)</CODE>、<CODE>sources.list(5)</CODE>、<CODE>apt_preferences(5)</CODE>(woody)以及<CODE>/usr/share/doc/apt/guide.html/index.html</CODE>。
<P>另一個資源是<CODE><A href="http://www.debian.org/doc/manuals/apt-howto/">APT
HOWTO</A></CODE>,如果安裝了<CODE>apt-howto</CODE>包,可在<CODE>/usr/share/doc/Debian/apt-howto/</CODE>中找到它。
<P><SAMP>apt-get upgrade</SAMP>和<SAMP>apt-get
dist-upgrade</SAMP>只獲取“Depends”類軟件包,它忽略“Recommend”和“Suggests”類軟件包,不想這樣的話,可使用<CODE>dselect</CODE>。
<HR>
<A name=s-dselect-basics></A>
<H3>2.3.5 <CODE>dselect</CODE></H3>
<P>這個程序是Debian軟件包管理系統中菜單驅動的用戶界面。特別適用于首次安裝和大面積升級。參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-package.zh-cn.html#s-dselect"><CODE>dselect</CODE>,
第 6.2.3 節</A>。
<P>更多信息,可安裝<CODE>install-doc</CODE>包后閱讀<CODE>/usr/share/doc/install-doc/dselect-beginner.en.html</CODE>或<CODE><A
href="http://www.debian.org/releases/woody/i386/dselect-beginner">dselect
Documentation for Beginners</A></CODE>。
<HR>
<A name=s-updaterunning></A>
<H3>2.3.6 不停機系統升級</H3>
<P>Debian系統的內核(文件系統)支持替換使用中文件。
<P>我們還提供了一個程序<CODE>start-stop-daemon</CODE>用來在系統啟動時開啟daemons或內核運行級別(runlevel)改變時停止daemons(例如:從multi-user級轉到single-user級或關機)。當安裝新軟件包時如果該軟件包中包含daemon安裝,安裝腳本會調用這個程序,停止運行中的daemons,然后在合適的時候重啟它們。
<P>注意,Debian系統不要求用戶在single-user模式下進行不停機升級。
<HR>
<A name=s-savedebs></A>
<H3>2.3.7 下載和緩存<SAMP>.deb</SAMP>文件</H3>
<P>如果你手工下載包文件到硬盤(這完全沒有必要,請閱讀上面有關<CODE>dpkg-ftp</CODE>或APT的內容),當你完成軟件包安裝工作后,可以從系統中刪除<SAMP>.deb</SAMP>文件。
<P>如果是使用APT,這些文件會緩存在<CODE>/var/cache/apt/archives/</CODE>目錄中。你可以在完成安裝后刪除它們(<SAMP>apt-get
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -