Debian 的软件包管理系统介绍

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

Debian 的软件包管理系统介绍

etony C.F.AN etony@tom.com

v0.0.1, 2006-3-22


本文档是针对 Debian 的软件包管理系统的一般性介绍.


1. 声明

 

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

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

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

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

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

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

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

 

  • RPM: Red Hat/Fedora, Suse, Mandriva 使用的是这类管理系统.
  • DEB: Debian 使用的是这类管理系统.
  • TGZ: SlackWare 使用的是这类管理系统.

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

4. Debian 软件包管理系统

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

5. Debian 软件包类型

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

 

  • 源代码包

    源代码包, 包括一个描述源代码包的 .dsc 文件, 一个包含 gzip-tar 归档压缩格式的未经修改源码的 .orig.tar.gz 文件, 一个包含对源代码作Debian特有修改的 .diff.gz 文件. 可以使用 dpkg-source 打包和解压 debian 源码文档. 详见联机手册.

  • 二进制包

    二进制包以 .deb 扩展名来表示,这些文件通常称为DEB文件,其中包含可执行文件,文档,配置文件和版权信息及其它一些东西.可以使用 Debian 的 dpkg 工具解包(安装).但除去版权信息(和 changelog.Debian 文件)不讲,二进制包也可以是空的,这种软件包作为过渡包或关联包(也称虚拟包),它们的唯一的作用是用于满足依赖性.

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

软件包命名约定

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

6. 软件包的优先级

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

 

  • required(必需)

    系统正常运行所必需的软件包。这些软件包不能被移除,否则系统可能会崩溃, 一个只包含必需软件包的系统也许无法正常使用,但是它为系统管理员启动系统安装其它软件提供足够的功能.

  • important(重要)

    任何在类Unix系统都会有的程序被划定为重要软件包,此类包构成基本系统. 这类包会影响其它软件包的运行.

  • standard(标准)

    这些软件包为用户提供了一个体积小而功能相对较全的系统。该级别的软件包(以及上面两个级别的软件包)组成了Debian的最小化安装。不包括大型应用软件

  • optional(可选)

    软件包包含了所有的你想要安装的文件, 即使对它们并不熟悉. 包括X窗口、完整的TeX发布版以及许多应用程序。注意可选软件包彼此间不应存在冲突。 这包括 X11, 所有的 TeX 和许多应用程序.

  • extra(附加)

    该级别软件包可能与其它高级别软件包冲突,仅当你知道其用途时才会使用它们,或者有运行它们有专门要求,这些都使它们不适合定为"Optional"级。

在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

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

 

  • debian-binary

    这是Debian软件包的神奇所在。它包含所使用软件包格式的版本号

     

    $ cat debian-binary
    2.0
    
  • control.tar.gz

    这是包含了软件包管理工具所需信息的tarball文件。

     

    $ tar ztvf control.tar.gz
    drwxr-xr-x root/root         0 2005-04-10 01:35:23 ./
    -rwxr-xr-x root/root       263 2005-04-10 01:35:23 ./postinst
    -rwxr-xr-x root/root       111 2005-04-10 01:35:23 ./prerm
    -rw-r--r-- root/root       818 2005-04-10 01:35:23 ./control
    -rw-r--r-- root/root       404 2005-04-10 01:35:23 ./md5sums
    
  • data.tar.gz

    tarball文件data.tar.gz 包括这个Debian软件包的覆盖区,即root文件系统中的位置。用dpkg解包软件包,而不配置就等同于将这个tarball文件解压到/。

     

    $ tar ztvf data.tar.gz
    drwxr-xr-x root/root         0 2005-04-10 01:35:22 ./
    drwxr-xr-x root/root         0 2005-04-10 01:35:22 ./bin/
    -rwxr-xr-x root/root     35128 2005-04-10 01:35:22 ./bin/nano-tiny
    drwxr-xr-x root/root         0 2005-04-10 01:35:17 ./usr/
    drwxr-xr-x root/root         0 2005-04-10 01:35:21 ./usr/share/
    drwxr-xr-x root/root         0 2005-04-10 01:35:21 ./usr/share/doc/
    drwxr-xr-x root/root         0 2005-04-10 01:35:22 ./usr/share/doc/nano-tiny/
    -rw-r--r-- root/root       501 2005-04-10 01:34:23 ./usr/share/doc/nano-tiny/copyright
    -rw-r--r-- root/root     10269 2005-04-10 01:34:23 ./usr/share/doc/nano-tiny/changelog.Debian.gz
    -rw-r--r-- root/root     53142 2004-06-28 10:36:22 ./usr/share/doc/nano-tiny/changelog.gz
    drwxr-xr-x root/root         0 2005-04-10 01:35:21 ./usr/share/man/
    drwxr-xr-x root/root         0 2005-04-10 01:35:22 ./usr/share/man/man1/
    -rw-r--r-- root/root      1147 2005-04-10 01:34:23 ./usr/share/man/man1/nano-tiny.1.gz
    drwxr-xr-x root/root         0 2005-04-10 01:35:21 ./usr/share/man/fr/
    drwxr-xr-x root/root         0 2005-04-10 01:35:22 ./usr/share/man/fr/man1/
    -rw-r--r-- root/root      1663 2005-04-10 01:34:23 ./usr/share/man/fr/man1/nano-tiny.1.gz
    

使用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软件包格式明确指定如下控制文件, 除了第一个以外其余的都是可选的:

 

  • contral

    这个文件提供软件包的关联信息, 用于软件包管理器显示软件包的信息,以及用于安装前校验的依赖关系.这是唯一一个必需提供的文件。

    $ apt-cache show nano-tiny 看到的就是这部分的内容

  • preinst

    preinst脚本在安装或升级软件包以前执行。如果升级失败,老版本的preinst文件将会重作作为升级一部分的任何配置。

  • postinst

    postinst脚本在解包之后,作为配置过程的一部分运行。

  • prerm

    prerm脚本在软件包卸载以前执行。如果是软件包升级,老版的软件包的prerm脚本也会执行。

  • postrm

    postrm脚本在软件包从系统中卸载以后执行。dpkg告知这个脚本软件包是否已被卸载或清除。当因为冲突或升级,软件包被其它软件包卸载时也会执行这个脚本。

  • md5sums

    在这个文件中提供软件包要安装的所有文件的MD5编码,可用于校验已安装的文件。

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. 参考文档

 

转载于:https://www.cnblogs.com/hellobuddy/articles/2668013.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值