开源中文网

您的位置: 首页 > Debian Linux > 正文

Debian软件包管理

来源:  作者:

作者: LiEn

来自: www.linuxsir.org

主要工具

dselect --- 使用菜单界面的软件包管理工具(最上层的包管理工具)
dpkg --- 安装软件包(管理软件包中的文件)
apt-get --- 安装软件包(管理软件包,CLI APT)
tasksel --- 安装任务套件(管理面向某方面任务的一套软件包)
aptitude --- 安装软件包(管理软件包和任务套件,ncurses APT)
deity --- 另一种ncurses APT
synaptic, gsynaptic --- 另一种GUI APT

 

它们不是同级的工具。`dselect'运行于APT(命令行命令是`apt-get')和`dpkg'之上。

APT使用`/var/lib/apt/lists/*'来跟踪可用的软件包,而`dpkg'使用的是 `/var/lib/dpkg/available'。如果直接用`apt-get'或同类工具如`aptitude'等来安装软件包,千万别忘了更新 `/var/lib/dpkg/available'文件,可以使用dselect的`[U]pdate'选项或在运行`dselect
update'、`tasksel'或`dpkg -l'前执行shell命令行“`dselect update'”。

在理关联软件包的方式上,`apt-get'会自动搜索下载_depends_类软件包,但不会理睬_recommends_和_suggests_类软件包,而`dselect'在软件包的选择方面采用菜单方式操作,对_depends_、_recommends_和_suggests_三类相关软件包均给出提示。`aptitude'则提供了选项下载安装所有_depends_、_recommends_和_suggests_类软件包。

方便的工具

apt-cache - 在本地缓冲区检查包文件
dpkg-reconfigure - 重新配置已安装的软件包(如果它是使用debconf进行配置的)
dpkg-source - 管理源码包
dpkg-buildpackage - 自动生成包文件
...

Debian软件包管理基础

地安装软件包称之为_task_,还可以使用软件包管理工具逐个地安装软件包或升级系统。

使用`tasksel'或`aptitude'进行_task_安装

`tasksel'是_Debian的任务安装器_,系统安装过程中它为用户提供了一种`简易'软件包选择方式。

如果你希望完装的某项常规功能包含了许多软件包,最好的办法就是使用它来安装。运行如下命令:

# dselect update
# tasksel

`aptitude'亦可访问_task_。用它不仅可以选择_tasks_还可以对_task_选项菜单中的软件包进行逐个取舍。

设置APT系统

使用`testing'发布版的用户,有时需要对系统进行有选择性地升级
首先,在`/etc/apt/sources.list'中添加`stable'、`testing'和`unstable'镜像源,接着编辑`/etc/apt/preferences',设置合适的Pin-Priority。

[1]
Package: *
Pin: release a=stable
Pin-Priority: 500
Package: *
Pin: release a=testing
Pin-Priority: 600
Package: *
Pin: release a=unstable
Pin-Priority: 50
[1] I kept the description around here as is to maintain consistency with
other parts. If you are really tracking `testing' or `unstable', you
should actually remove references to `stable' in
`/etc/apt/sources.list' and `/etc/apt/preferences'. This is because
`testing' starts as a copy of `stable'.

 

用 dselect代替apt:

`dselect'会自动选上所有“Required”、“Important”和“Standard”类软件包,在Potato系统中,某些大型应用程序如TeX和Emacs处于这些分类中,在初次安装系统时最好手工取消对它们的选择(输入“_”)。在Woody稳定版中,这些大型应用程序被移入 “Optional”类软件包。

`dselect'的用户界面有点怪。有4个相似命令(注意是大写字母!):

Key-stroke Action

Q 退出。确认当前的选择然后退出。
(override dependencies)
R 恢复!我放弃我做出的选择
D 不管它!我不管dselect有什么建议,照我说的做!
U 照系统的建议做

使用`D'和`Q'可以选择有冲突的选项,你要自负风险,所以使用这些命令要小心。当前`dselect'是一款成熟的菜单驱动式工具,在对_suggests_和_recommends_类软件包的选择控制方面,它提供相当棒的微操作能力。

在`/etc/dpkg/dselect.cfg'中加上一行包含“expert”选项以减少干扰。对于速度慢的机器,请在其它速度快的机器上运行`dselect'选好软件包,然后用`apt-get
install'安装它们。

对于没有定义Pin-Priority的软件包,`dselect'不会访问它们。

使用 aptitude程序:

`aptitude'是一款新的菜单驱动式软件包安装工具,与`dselect'很相似。它亦可作为命令行工具`apt-get'的替代品。

`aptitude'可接受单字符命令,通常是小写字母。

Key-stroke Action
F10 菜单
? 键盘命令帮助
u 更新软件包信息
g 下载并安装选定的软件包
q 保存修改并退出当前屏幕
x 放弃修改并退出当前屏幕
Enter 浏览某软件包的相关信息

`aptitude'提供了选项可自动选取所有_depends_、_recommends_和_suggests_类软件包。可在`F10
-> Options -> Dependency handling'菜单中设置它。

通过`aptitude'可访问某软件包的所有版本。

apt-cache和apt-get命令

还是以上面使用`testing'发布版的用户为例,可使用下列命令管理系统:

* `apt-get -u upgrade'

跟踪`testing'发布版的更新情况,对系统上所有软件包进行升级并从`testing'处安装关联软件包。

* `apt-get -u dist-upgrade'

跟踪`testing'发布版的更新情况,对系统上所有软件包进行升级并从`testing'处重新分析关联关系并安装关联包。

* `apt-get -u dselect-upgrade'

跟踪`testing'发布版的更新情况,对系统上所有在`dselect'中选定了的软件包进行升级。

* `apt-get -u install '

从`testing'处安装及其关联包。

* `apt-get -u install /unstable'

从`unstable'处安装并从`testing'处安装关联包。

* `apt-get -u install -t unstable '

从`unstable'处安装及其关联包。注意须设置`unstable'的Pin-Priority为990。

* `apt-cache policy '

检查软件包的状态。

* `apt-cache show | less'

查看软件包的有关信息。

* `apt-get install '

安装软件包的特定版本<2.2.4-1>。

* `apt-get -u install '

安装软件包并删除软件包。

* `apt-get remove '

删除软件包,但保留其配置文件。

* `apt-get remove --purge '

删除软件包及其配置文件。

在上面的例子中用`-u'选项的作用是在实际升级之前将所有将要升级的软件包列出,并提示用户确认。下面的操作可将`-u'设置为默认行为:

$ cat >> /etc/apt/apt.conf << .
// Always show packages to be upgraded (-u)
APT::Get::Show-Upgraded "true";
.

 

使用`-s'可进行模拟升级,并不进行真正的升级行为。

跟踪某Debian发行版

根据个人的喜好,选择要跟踪的Debian发行版
`设置APT系统'的样例文件`/etc/apt/preferences':

track stable: 将testing的Pin-Priority改为50
track testing: 保持上面的设置不变
track testing(unstable): 将unstable的Pin-Priority改为500
track unstable(testing): 将unstable的Pin-Priority改为800

有关如何选定Pin-Priority的说明:在上表中,从上而下代表了某个版本
从上个版本刚刚发布之后到下一版进入冻结期之前这段时间经历的各个阶段。

请注意,跟踪`testing'发行版的Debian有一个负面影响,安全补丁的更新很慢。

请注意,如果将Debian各版本混合,例如将`testing'混入`stable'或将`unstable'混入`stable',这会造成众多关键软件包不自觉地从`testing'处或`unstable'处获得,结果引起许多麻烦。

如何对`/etc/apt/preferences'进行设置,将某些关键包锁定在成熟版本,而让其它非关键包跟踪不太成熟的新版本,可参考样例目录
(http://www.debian.org/doc/manuals/debian-reference/examples/)中的 `preferences.testing'和`preferences.unstable'文件。另一方面,`preferences.stable' 强制所有软件包降级到“stable”。

Tags:Debian 软件包 管理
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明