📄 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 + -