以Debian的方式系列(IN THE DEBIAN WAY):

Debian 的软件包管理系统介绍

etony C.F.AN etony@tom.com

v0.0.1, 2006-3-22
本文档是针对 Debian 的软件包管理系统的一般性介绍.

1. 声明

2. 我们为什么需要关软件包管理系统?

绝大多数人使用计算机的目的是应用, 没有人愿意每周都要花费大量的时间用于软件安装和排错. 如果那样的话, 一个管理大量计算机的管理员将痛不欲生.

一个优秀的软件包管理系统应当可以简化软件的安装和卸载.在安装时记录在系统中添加的文件和对系统所做的修改, 以便在以后可以将其卸载干净.

一个程序可能需要很多共享库支持, 或在运行时需要调用其它程序来协同完成作业.一个好的软件包管理系统,不仅能完成软件的安装, 还应该可以自动识别软件包的依赖问题, 并自动的给出解决方案,以确保软件,在完成安装后可以很好的运行.

由于程序的不断更新, 软件的平滑升级也需要一个优秀的软件包管理系统提供支持.

3. 有哪些著名的软件包管理系统?

目前在各 Linux 发行版中, 比较著名的软件包管理系统有(此处为泛泛而谈,并不严谨):

各种软件包管理系统见得比较, 参阅: http://kitenet.net/~joey/pkg-comp/ .

4. Debian 软件包管理系统

如果您接触过 Debian GNU/Linux 操作系统, 或对其有一定了解, 那么您一定会惊讶于 Debian 软件包管理系统的超级牛力(man apt-get). 事实上,问任何人 Debian 最重要的特性是什么,得到的回答十有八九是它的软件包管理系统。

5. Debian 软件包类型

在Debian中存在两种类型的软件包:

一般而言, 我们只和二进制包打交道, 只有在某些特殊情况下才会求助于源代码包.

软件包命名约定

Debian软件包命名遵循下列约定: <foo>_<版本号>-<Debian修订号>.deb

6. 软件包的优先级

每个Debian软件包均被发布者指点了一个优先级,作为软件包管理系统的一个辅助参数,Debian策略定义了五种优先级:

在Debian系统上, 不同的优先级从两个方面来影响系统.首先,策略规定,任何高优先级的软件包都不能依赖于低优先级的软件包.这也暗示了用户可以将系统限定在某个优先级,如可选优先级,以确保没有安装任何附加级软件包.

在新版本发布准备阶段,优先级的作用更显得重要.基础系统由必需级和重要级软件包组成,属于这类优先级的软件包首先被冻结,由于这些软件包是其它软件包所依赖的,它们能保证整个架构的稳定,这是发布Debian新版本所必需的.接下来,标准级软件包被冻结,接着,在发布新版本之前对可选级和附加级软件包进行冻结.

7. 软件包中都有些什么?

本文档以nano-tiny_1.2.4-5_i386.deb 软件包为例,进行示范.

$ ar -x nano-tiny_1.2.4-5_i386.deb 
#apt-get -d install nano-tiny
$ls -l
-rw-r--r--  1 tony tony  1063 Mar 22 20:44 control.tar.gz
-rw-r--r--  1 tony tony 86530 Mar 22 20:44 data.tar.gz
-rw-r--r--  1 tony tony     4 Mar 22 20:44 debian-binary
-rw-r--r--  1 tony tony 87786 Mar 22 20:43 nano-tiny_1.2.4-5_i386.deb

这三个文件涵盖了软件包的所有功能,并且是根据内容拆分的:

使用ar和tar就可获取DEB软件包中的所有文件和数据. 这里选择使用ar和tar,而不仅仅是tar,可能会另您感到好奇,这是因为DEB文件是使用ar打包的,这样可以以节约空间,因为tar会存储每个文件否认更多相关信息(比如权限,所有者,日期 ...),对于这三个文件这没有什么意义.

查看二进制包

less的预处理程序lesspipe能识别DEB文件,并可提取出有关文件的大多数的重要数据.可以考虑根据您使用的shell, 在启动脚本中设置这一变量。

$eval $(lessfile)
$less nano-tiny_1.2.4-5_i386.deb

在Debian的软件库中,mc软件包中的mc文件导航器,提供了一个用于访问DEB文件,以及查看它们的内容的虚拟文件系统。在mc中,您可以简单的定位您要查看的DEB文件,选中,键入回车。将会在./DEBIAN下找到控制文件,列表则是在./CONTENTS下。

        Name        Size      MTime
 /..               UP--DIR
 /CONTENTS               0 Mar 22 21:01
 /DEBIAN                 0 Mar 22 21:01
  INFO                1157 Mar 22 21:01
 *INSTALL              424 Mar 22 21:01

8. 控制文件介绍

一个Debian二进制包在提供控制信息的同时还包括有效数据(软件和所有的辅助文件). 控制信息包含在被称作控制文件的一系列文件中.这些文件的内容用于控制软件包管理器,存储关联数据,如依赖关系,并提供软件包的一般信息,如所包含软件的描述等.Debian软件包格式明确指定如下控制文件, 除了第一个以外其余的都是可选的:

dpkg-deb可以在安装前从DEB文件中提取软件包的所有重要信息。

$dpkg-deb --control nano-tiny_1.2.4-5_i386.deb  DEBIAN
$ tree
.
|-- DEBIAN
|   |-- control
|   |-- md5sums
|   |-- postinst
|   `-- prerm
`-- nano-tiny_1.2.4-5_i386.deb

$ dpkg-deb --extract nano-tiny_1.2.4-5_i386.deb  ./
$ tree
.
|-- bin
|   `-- nano-tiny
|-- nano-tiny_1.2.4-5_i386.deb
`-- usr
    `-- share
        |-- doc
        |   `-- nano-tiny
        |       |-- changelog.Debian.gz
        |       |-- changelog.gz
        |       `-- copyright
        `-- man
            |-- fr
            |   `-- man1
            |       `-- nano-tiny.1.gz
            `-- man1
                `-- nano-tiny.1.gz

9. 参考文档