?? 6.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0066)http://qref.sourceforge.net/Debian/reference/ch-package.zh-cn.html -->
<HTML><HEAD><TITLE>Debian 參考手冊 - Debian軟件包管理</TITLE>
<META http-equiv=content-type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.3790.118" name=GENERATOR></HEAD>
<BODY><A name=ch-package></A>
<HR>
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-woody.zh-cn.html">上一頁</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/reference.zh-cn.html#contents">目錄</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-preface.zh-cn.html">1</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-system.zh-cn.html">2</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-install.zh-cn.html">3</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-tutorial.zh-cn.html">4</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-woody.zh-cn.html">5</A> ]
[ 6 ] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-kernel.zh-cn.html">7</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-tips.zh-cn.html">8</A> ] [
<A href="http://qref.sourceforge.net/Debian/reference/ch-tune.zh-cn.html">9</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-gateway.zh-cn.html">10</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-edit.zh-cn.html">11</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-vcs.zh-cn.html">12</A> ] [
<A
href="http://qref.sourceforge.net/Debian/reference/ch-program.zh-cn.html">13</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-gnupg.zh-cn.html">14</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-support.zh-cn.html">15</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ap-appendix.zh-cn.html">A</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-kernel.zh-cn.html">下一頁</A>
]
<HR>
<H1>Debian 參考手冊 <BR>第 6 章 - Debian軟件包管理 </H1>
<HR>
<P>使用ATP下載軟件包時,請確保使用了<CODE>squid</CODE>設置本地HTTP代理,如果有可能,請設置<SAMP>http_proxy</SAMP>環境變量或在<CODE>/etc/apt/apt.conf</CODE><SAMP>http</SAMP>值,這樣可極大的改善網絡升級的性能,特別是在局域網中多臺Debian機器同時升級時。
<P>盡管<CODE>apt_preferences(5)</CODE>的pin功能十分強大,但它并不能解決所有關聯問題,因為關聯需求總傾向于更新其它基礎程序包。
<P><A
href="http://qref.sourceforge.net/Debian/reference/ch-tips.zh-cn.html#s-chroot"><CODE>chroot</CODE>,
第 8.6.33 節</A>中所描述的使用方法非常適于將系統的穩定性和可使用大量新版軟件兩個優點結合在一起。
<P>本章基于Woody系統撰寫的,但大部分信息均適用于Potato系統(除了<CODE>apt_preferences(5)</CODE>和<CODE>/etc/apt/preferences</CODE>的相關主題)。
<HR>
<A name=s-pkg-intro></A>
<H2>6.1 概述</H2>
<P>如果你沒精力閱讀所有的開發文檔,那么先看看本章的內容,開始體驗Debian
<SAMP>testing</SAMP>/<SAMP>unstable</SAMP>的威力吧 :-)
<HR>
<A name=s6.1.1></A>
<H3>6.1.1 主要工具</H3><PRE> dselect — 使用菜單界面的軟件包管理工具(最上層的包管理工具)
dpkg — 安裝軟件包(管理軟件包中的文件)
apt-get — 安裝軟件包(管理軟件包,CLI APT)
tasksel — 安裝任務套件(管理面向某方面任務的一套軟件包)
aptitude — 安裝軟件包(管理軟件包和任務套件,ncurses APT)
deity — 另一種ncurses APT
synaptic, gsynaptic — 另一種GUI APT
</PRE>
<P>它們不是同級的工具。<CODE>dselect</CODE>運行于APT(命令行命令是<CODE>apt-get</CODE>)和<CODE>dpkg</CODE>之上。
<P>APT使用<CODE>/var/lib/apt/lists/*</CODE>來跟蹤可用的軟件包,而<CODE>dpkg</CODE>使用的是<CODE>/var/lib/dpkg/available</CODE>。如果直接用<CODE>apt-get</CODE>或同類工具如<CODE>aptitude</CODE>等來安裝軟件包,千萬別忘了更新<CODE>/var/lib/dpkg/available</CODE>文件,可以使用dselect的<SAMP>[U]pdate</SAMP>選項或在運行<SAMP>dselect
update</SAMP>、<SAMP>tasksel</SAMP>或<SAMP>dpkg -l</SAMP>前執行shell命令行“<SAMP>dselect
update</SAMP>”。
<P>在處理關聯軟件包的方式上,<CODE>apt-get</CODE>會自動搜索下載<STRONG>depends</STRONG>類軟件包,但不會理睬<STRONG>recommends</STRONG>和<STRONG>suggests</STRONG>類軟件包,而<CODE>dselect</CODE>在軟件包的選擇方面采用菜單方式操作,對<STRONG>depends</STRONG>、<STRONG>recommends</STRONG>和<STRONG>suggests</STRONG>三類相關軟件包均給出提示。<CODE>aptitude</CODE>則提供了選項下載安裝所有<STRONG>depends</STRONG>、<STRONG>recommends</STRONG>和<STRONG>suggests</STRONG>類軟件包。參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-system.zh-cn.html#s-depends">軟件包關聯性,
第 2.2.8 節</A>。
<HR>
<A name=s6.1.2></A>
<H3>6.1.2 方便的工具</H3><PRE> apt-cache - 在本地緩沖區檢查包文件
dpkg-reconfigure - 重新配置已安裝的軟件包(如果它是使用debconf進行配置的)
dpkg-source - 管理源碼包
dpkg-buildpackage - 自動生成包文件
...
</PRE>
<HR>
<A name=s-apt-install></A>
<H2>6.2 Debian軟件包管理基礎</H2>
<P>成套地安裝軟件包稱之為<EM>task</EM>,還可以使用軟件包管理工具逐個地安裝軟件包或升級系統。亦可參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-install.zh-cn.html">Debian系統安裝提示,
第 3 章</A>、<A
href="http://qref.sourceforge.net/Debian/reference/ch-woody.zh-cn.html">發行版升級, 第
5 章</A>和<A
href="http://qref.sourceforge.net/Debian/reference/ch-edit.zh-cn.html#s-bin-editor">應急的編輯器,
第 11.2 節</A>。
<HR>
<A name=s-tasksel></A>
<H3>6.2.1 使用<CODE>tasksel</CODE>或<CODE>aptitude</CODE>進行<EM>task</EM>安裝</H3>
<P><CODE>tasksel</CODE>是<STRONG>Debian的任務安裝器</STRONG>,系統安裝過程中它為用戶提供了一種<SAMP>簡易</SAMP>軟件包選擇方式。
<P>如果你希望完裝的某項常規功能包含了許多軟件包,最好的辦法就是使用它來安裝。運行如下命令: <PRE> # dselect update
# tasksel
</PRE>
<P><CODE>aptitude</CODE>亦可訪問<EM>task</EM>。用它不僅可以選擇<EM>tasks</EM>還可以對<EM>task</EM>選項菜單中的軟件包進行逐個取舍。
<HR>
<A name=s-setup-apt></A>
<H3>6.2.2 設置APT系統</H3>
<P>使用<SAMP>testing</SAMP>發布版的用戶,有時需要對系統進行有選擇性地升級,這時可按<A
href="http://qref.sourceforge.net/Debian/reference/ch-woody.zh-cn.html#s-woody-transition">將APT升級到Woody版本,
第 5.1 節</A>中描述的方法設置APT系統(>Woody),使用其<CODE>apt_preferences(5)</CODE>功能。
<P>首先,在<CODE>/etc/apt/sources.list</CODE>中添加<SAMP>stable</SAMP>、<SAMP>testing</SAMP>和<SAMP>unstable</SAMP>鏡像源,接著編輯<CODE>/etc/apt/preferences</CODE>,設置合適的Pin-Priority。
[<A href="http://qref.sourceforge.net/Debian/reference/footnotes.zh-cn.html#f1"
name=fr1>1</A>] <PRE> Package: *
Pin: release a=stable
Pin-Priority: 500
Package: *
Pin: release a=testing
Pin-Priority: 600
Package: *
Pin: release a=unstable
Pin-Priority: 50
</PRE>
<HR>
<A name=s-dselect></A>
<H3>6.2.3 <CODE>dselect</CODE></H3>
<P>啟動程序,<CODE>dselect</CODE>會自動選上所有“Required”、“Important”和“Standard”類軟件包,在Potato系統中,某些大型應用程序如TeX和Emacs處于這些分類中,在初次安裝系統時最好手工取消對它們的選擇(輸入“_”)。在Woody中,這些大型應用程序被移入“Optional”類軟件包。
<P><CODE>dselect</CODE>的用戶界面有點怪。有4個相似命令(注意是大寫字母?。?<PRE> Key-stroke Action
Q 退出。確認當前的選擇然后退出。
(override dependencies)
R 恢復!我放棄我做出的選擇
D 不管它!我不管dselect有什么建議,照我說的做!
U 照系統的建議做
</PRE>
<P>使用<SAMP>D</SAMP>和<SAMP>Q</SAMP>可以選擇有沖突的選項,你要自負風險,所以使用這些命令要小心。當前<CODE>dselect</CODE>是一款成熟的菜單驅動式工具,在對<STRONG>suggests</STRONG>和<STRONG>recommends</STRONG>類軟件包的選擇控制方面,它提供相當棒的微操作能力。
<P>在<CODE>/etc/dpkg/dselect.cfg</CODE>中加上一行包含“expert”選項以減少干擾。對于速度慢的機器,請在其它速度快的機器上運行<CODE>dselect</CODE>選好軟件包,然后用<SAMP>apt-get
install</SAMP>安裝它們。
<P>對于沒有定義Pin-Priority的軟件包,<CODE>dselect</CODE>不會訪問它們。
<HR>
<A name=s-aptitude></A>
<H3>6.2.4 <CODE>aptitude</CODE></H3>
<P><CODE>aptitude</CODE>是一款新的菜單驅動式軟件包安裝工具,與<CODE>dselect</CODE>很相似。它亦可作為命令行工具<CODE>apt-get</CODE>的替代品。參閱<CODE>aptitude(1)</CODE>。
<P><CODE>aptitude</CODE>可接受單字符命令,通常是小寫字母。 <PRE> Key-stroke Action
F10 菜單
? 鍵盤命令幫助
u 更新軟件包信息
g 下載并安裝選定的軟件包
q 保存修改并退出當前屏幕
x 放棄修改并退出當前屏幕
Enter 瀏覽某軟件包的相關信息
</PRE>
<P><CODE>aptitude</CODE>提供了選項可自動選取所有<STRONG>depends</STRONG>、<STRONG>recommends</STRONG>和<STRONG>suggests</STRONG>類軟件包。可在<SAMP>F10
-> Options -> Dependency handling</SAMP>菜單中設置它。
<P>通過<CODE>aptitude</CODE>可訪問某軟件包的所有版本。
<HR>
<A name=s-apt-commands></A>
<H3>6.2.5 <CODE>apt-cache</CODE>和<CODE>apt-get</CODE>命令</H3>
<P>還是以上面使用<SAMP>testing</SAMP>發布版的用戶為例,可使用下列命令管理系統:
<UL>
<LI><SAMP>apt-get -u upgrade</SAMP>
<P>跟蹤<SAMP>testing</SAMP>發布版的更新情況,對系統上所有軟件包進行升級并從<SAMP>testing</SAMP>處安裝關聯軟件包。
</P></LI></UL>
<UL>
<LI><SAMP>apt-get -u dist-upgrade</SAMP>
<P>跟蹤<SAMP>testing</SAMP>發布版的更新情況,對系統上所有軟件包進行升級并從<SAMP>testing</SAMP>處重新分析關聯關系并安裝關聯包。
</P></LI></UL>
<UL>
<LI><SAMP>apt-get -u dselect-upgrade</SAMP>
<P>跟蹤<SAMP>testing</SAMP>發布版的更新情況,對系統上所有在<CODE>dselect</CODE>中選定了的軟件包進行升級。
</P></LI></UL>
<UL>
<LI><SAMP>apt-get -u install <VAR>package</VAR></SAMP>
<P>從<SAMP>testing</SAMP>處安裝<VAR>package</VAR>及其關聯包。 </P></LI></UL>
<UL>
<LI><SAMP>apt-get -u install <VAR>package</VAR>/unstable</SAMP>
<P>從<SAMP>unstable</SAMP>處安裝<VAR>package</VAR>并從<SAMP>testing</SAMP>處安裝關聯包。
</P></LI></UL>
<UL>
<LI><SAMP>apt-get -u install -t unstable <VAR>package</VAR></SAMP>
<P>從<SAMP>unstable</SAMP>處安裝<VAR>package</VAR>及其關聯包。注意須設置<SAMP>unstable</SAMP>的Pin-Priority為990。
</P></LI></UL>
<UL>
<LI><SAMP>apt-cache policy <VAR>foo bar ...</VAR></SAMP>
<P>檢查<VAR>foo bar ...</VAR>軟件包的狀態。 </P></LI></UL>
<UL>
<LI><SAMP>apt-cache show <VAR>foo bar ...</VAR> | less</SAMP>
<P>查看<VAR>foo bar ...</VAR>軟件包的有關信息。 </P></LI></UL>
<UL>
<LI><SAMP>apt-get install <VAR>foo=2.2.4-1</VAR></SAMP>
<P>安裝<VAR>foo</VAR>軟件包的特定版本<VAR>2.2.4-1</VAR>。 </P></LI></UL>
<UL>
<LI><SAMP>apt-get -u install <VAR>foo bar-</VAR></SAMP>
<P>安裝<VAR>foo</VAR>軟件包并刪除<VAR>bar</VAR>軟件包。 </P></LI></UL>
<UL>
<LI><SAMP>apt-get remove <VAR>bar</VAR></SAMP>
<P>刪除<VAR>bar</VAR>軟件包,但保留其配置文件。 </P></LI></UL>
<UL>
<LI><SAMP>apt-get remove --purge <VAR>bar</VAR></SAMP>
<P>刪除<VAR>bar</VAR>軟件包及其配置文件。 </P></LI></UL>
<P>在上面的例子中使用<SAMP>-u</SAMP>選項的作用是在實際升級之前將所有將要升級的軟件包列出,并提示用戶確認。下面的操作可將<SAMP>-u</SAMP>設置為默認行為:
<PRE> $ cat >> /etc/apt/apt.conf << .
// Always show packages to be upgraded (-u)
APT::Get::Show-Upgraded "true";
.
</PRE>
<P>使用<SAMP>-s</SAMP>可進行模擬升級,并不進行真正的升級行為。
<HR>
<A name=s-apt-tracking></A>
<H3>6.2.6 跟蹤某Debian發行版</H3>
<P>根據個人的喜好,選擇要跟蹤的Debian發行版,然后修改<A
href="http://qref.sourceforge.net/Debian/reference/ch-package.zh-cn.html#s-setup-apt">設置APT系統,
第 6.2.2 節</A>的樣例文件<CODE>/etc/apt/preferences</CODE>: <PRE> track stable: 將testing的Pin-Priority改為50
track testing: 保持上面的設置不變
track testing(unstable): 將unstable的Pin-Priority改為500
track unstable(testing): 將unstable的Pin-Priority改為800
</PRE>
<P>有關如何選定Pin-Priority的說明:在上表中,從上而下代表了某個版本從上個版本剛剛發布之后到下一版進入凍結期之前這段時間經歷的各個階段。
<P>請注意,跟蹤<SAMP>testing</SAMP>發行版的Debian有一個負面影響,安全補丁的更新很慢。
<P>請注意,如果將Debian各版本混合,例如將<SAMP>testing</SAMP>混入<SAMP>stable</SAMP>或將<SAMP>unstable</SAMP>混入<SAMP>stable</SAMP>,這會造成眾多關鍵軟件包不自覺地從<SAMP>testing</SAMP>處或<SAMP>unstable</SAMP>處獲得,結果引起許多麻煩。
<P>如何對<CODE>/etc/apt/preferences</CODE>進行設置,將某些關鍵包鎖定在成熟版本,而讓其它非關鍵包跟蹤不太成熟的新版本,可參考<CODE><A
href="http://qref.sourceforge.net/Debian/reference/examples/">樣例目錄</A></CODE>中的<CODE>preferences.testing</CODE>和<CODE>preferences.unstable</CODE>文件。另一方面,<CODE>preferences.stable</CODE>強制所有軟件包降級到“stable”。
<HR>
<A name=s-apt-stable></A>
<H3>6.2.7 將所有軟件包降級到<SAMP>stable</SAMP></H3>
<P>要將所有軟件包降級到<SAMP>stable</SAMP>,可按下面的方法編輯<CODE>/etc/apt/preferences</CODE>: <PRE> Package: *
Pin: release a=stable
Pin-Priority: 1001
</PRE>
<P>然后運行“<SAMP>apt-get upgrade</SAMP>”,由于Pin-priority >
1000而引起強制降級。注意,該操作可能會在關聯性方面發生一點問題。
<HR>
<A name=s-apt-preferences></A>
<H3>6.2.8 <CODE>/etc/apt/preferences</CODE>概述</H3>
<P><A
href="http://qref.sourceforge.net/Debian/reference/ch-package.zh-cn.html#s-setup-apt">設置APT系統,
第 6.2.2 節</A>中展示的<CODE>/etc/apt/preferences</CODE>樣例文件里,首行<SAMP>Package:
*</SAMP>表示該段落指令作用于所有軟件包??梢酝ㄟ^指定軟件包名稱來為某個特定的軟件包設置指定的Pin-Priority。
<P>接下來的一行是<SAMP>Pin: release
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -