Home linux网络专题 Linux服务器 第 3 章 - Debian 软件包管理
第 3 章 - Debian 软件包管理

高级包管理工具 aptitude 是目前首选的字符界面的 APT 前端程序。它会记住哪些包是你安装的,哪些是为了满足依赖关系而安装的;在不被已安装包需要的情况下aptitude 会自动卸载后者。它内建一套高级的包过滤器,但是比较难上手。

synaptic 是目前首选的基于 GTK 的图形化 APT 前端程序。它的包过滤器比 aptitude 的好用多了。它包含了对 的实验性支持。

为了减少 Debian 仓库的网络负担和加快你下载的速度,你应该从 Debian 镜像下载。

如果你需要在你本地网络的许多台机器上安装相同的包。在使用 APT 下载包的时候,请考虑使用 squid 来设置本地 HTTP 代理。必要的话,可以设置环境变量 http_proxy 或者在 /etc/apt/apt.conf 里面设置 http 的值。

尽管 apt_preferences(5) 中描述的 APT 的 pinning 功能非常强大,但造成的影响是难以察觉和管理的。你应该把它作为一个高级功能来看待。

中描述的使用方法非常适合于需要同时确保系统的稳定性和使用最新软件的情况。

本章节是基于 Woody 之后的系统写的,某些东西只适合于 Sarge 或更新的系统。

3.1 介绍

如果你没有精力阅读完所有的开发者文档,那么先看看本章的内容,然后开始体验 Debian testing/unstable 的威力吧:-)

3.1.1 主要的包管理工具

     dpkg      – Debian 包安装工具
     apt-get   – APT 的命令行前端
     aptitude  – APT 的高级的字符和命令行前端
     synaptic  – 图形界面的 APT 前端
     dselect   – 使用菜单界面的包管理工具
     tasksel   – Task 安装工具

这些工具不是用来取代对方的,比如 dselect 同时使用 APT 和 dpkg。

APT 使用 /var/lib/apt/lists/* 来跟踪可用的软件包,而 dpkg 使用的是 /var/lib/dpkg/available。如果你使用了 aptitude 或者其他 APT 前端来安装软件包,同时你希望使用 dselect 来安装软件包,请不要忘记使用 dselect 菜单上的 [U]pdate (或者运行"dselect update") 来更新 /var/lib/dpkg/available。

在处理依赖关系上 apt-get 会自动下载安装依赖的软件包,但是不会处理所安装软件推荐的或者建议的软件包。

相反 aptitude 可以设置成安装所安装软件推荐的或者建议的软件包。

dselect 给使用者列出所安装软件推荐或建议的软件包,可以进行单独选择。

3.1.2 方便的工具

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

3.2 Debian 软件包管理基础

3.2.1 设置 APT

参考 来设置 sources.list。 []

3.2.2 安装 tasks

你可以安装一些软件包集合,这些集合是由使 Debian 系统满足某些特定用途的典型软件包组成的。 这些集合被称为“tasks”。

在初始化安装中,安装 tasks 最简单的方法就是使用 tasksel。注意在使用之前,你需要运行

     dselect update

建议使用 aptitude 来安装 tasks。 它能让你在选择好 tasks 并准备安装之前,删除 tasks 中的某些软件包。

3.2.3 aptitude

aptitude 是全新的可菜单操作的包安装工具,和 dselect 类似,但是是针对 APT 从头设计的。从大多数参数来讲,aptitude 完全可以作为 apt-get 的一个兼容的代替品。 参阅 aptitude(1) 和 /usr/share/doc/aptitude/README.

一旦开始使用 aptitude,你最好继续使用它,而不是选择其他替代工具。否则你将失去 aptitude 包存的软件安装清单,你就不能享受自动删除多余软件包的功能了。

全屏状态下 aptitude 接受单键的命令,大多数是小写的。主要的几个功能键如下:

     按键	    动作
     F10         菜单
     ?           按键命令帮助(完整的清单)
     u           更新软件包信息
     +           标记软件包为升级或者新安装
     -           标记软件包为删除(保留配置文件)
     _           标记软件包为完全删除(删除配置文件)
     =           保持软件包的当前版本,阻止其被升级
     U           标记所有可以升级的软件包为升级
     g           下载和安装选择的软件包
     q           退出当前屏幕,保存改变
     x           退出当前屏幕,忽略改变
     Enter       查看一个软件包的信息
     C           查看一个软件包的更新日志
     l           改变软件包树状显示限制
     /           搜索第一个匹配的软件包
                重复最后一次搜索

和 apt-get 一样, aptitude 安装软件包的时候自动解决依赖问题。 aptitude 还能安装即将安装的软件包推荐或者建议的软件包。你通过 F10 ->; 选项 ->; 处理依赖关系 在菜单上更改这一默认设置。

aptitude 的其他特点如下:

  • aptitude 能访问所有版本的软件包。

  • aptitude 的动作记录在 /var/log/aptitude。

  • aptitude 能轻松的追踪陈旧的和本地建立的软件包,并在“过期的和在本地创建的软件包”上列出。

  • aptitude 内建强大的包搜索和显示功能。熟悉 mutt 的用户很容易上手,因为这个显示方法的灵感来源于 mutt。 参阅 /usr/share/doc/aptitude/README 中的 “SEARCHING, LIMITING, AND EXPRESSIONS”

  • aptitude 在全屏状态下有嵌入的 su 功能。普通用户都可以执行,直到安装或删除软件的时候再取得管理员权限。

3.2.4 dselect

从 stable 发行到现在为止(包含 Potato),dselect 一直是主要的包维护工具。对于 Sarge,你可以考虑用 aptitude 代替。

当你启动程序的时候,dselect 会自动选择所有“Required”“Important”和“Standard”的包。

dselect 的用户界面是有些奇怪,但是大部分人已经习惯了。它有四个主要命令: (指令都是大写的!):

     按键	    动作
     Q           退出。确认当前的选择并退出。 
                 (忽略依赖关系)
     R           撤销! 我不是那个意思。
     D           不管他!我不管你 dselect 怎么想的,照做就好了!
     U           都照建议的来做

使用 DQ,你可以选择有冲突的选项。请小心使用这个命令。

在 /etc/dpkg/dselect.cfg 中加上一行“expert”来减少干扰。

如果你的机器运行 dselect 的速度很慢,你可以考虑在速度快一点的机器上运行 dselect,确定你要安装的软件包之后,在慢的机器上通过 apt-get 来安装它们。

3.2.5 使用 APT 来维护发行版本

请编辑 /etc/apt/preferences 并加入以下内容来维持系统为 testing 版本:

     Package: *
     Pin: release a=testing
     Pin-Priority: 800
     
     Package: *
     Pin: release a=stable
     Pin-Priority: 600

要注意的是追踪 testing 版本可能带来延误安装安全性修正软件包的副作用。因为这些软件包都是上传到 unstable 一段时间后再移植到 testing

更多复杂的例子请参考 apt_preferences(5),可以让您做更多的事情,例如安装 unstable 的软件包的同时还能把系统维持在 testing

关于限制特定软件在特定版本上,而其他软件随系统升级的设置在 找到,即 preferences.testing 和 preferences.unstable�

Tags: debian  软件包  包管理  



Shares:Google书签Yahoo书签雅虎收藏夹365Key网摘新浪ViVi百度收藏天极网摘diglog和讯网摘POCO网摘YouNote网摘博拉网天下图摘 spurl blogmarksBlinkListredditdiggDel.icio.us

linux