LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3535|回复: 24

THE DEBIAN WAY: Debian 的软件包管理系统介绍

[复制链接]
发表于 2006-3-23 00:58:33 | 显示全部楼层 |阅读模式
以Debian的方式系列(IN THE DEBIAN WAY):

Debian 的软件包管理系统介绍

etony@tom.com

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

1. 声明

    * 版本信息:

      本文档的最新版本将张贴于: LinuxSir.Org论坛 Debian发行版讨论区 ;

      也可以从 http://debian.linuxsir.cn/ 获取.
    * 反馈:

      所有评论, 错误报告, 其他信息以及批评, 请邮寄到 etony@tom.com ;

      或在LinuxSir.Org论坛 Debian发行版讨论区 张贴.
    * 版权信息:

      本文档的版权(c)2006-2007 归 etony C.F.AN 所有.

      转载请注明源自 http://debian.linuxsir.cn/ .

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

    * Debian 参考手册
    * Debian 常见问题解答

10. HTML 版浏览

Debian 的软件包管理系统介绍
发表于 2006-3-23 14:21:44 | 显示全部楼层
托妮姐姐的帖子要顶
回复 支持 反对

使用道具 举报

发表于 2006-3-23 14:23:34 | 显示全部楼层
原来是JJ啊,写的真好,收藏了~
回复 支持 反对

使用道具 举报

发表于 2006-3-23 14:46:41 | 显示全部楼层
<tony> 怎么没人看 也没人回复, 是不是 论坛不需要这类文档?
<tony> 还是我写的太烂了?
<Lolita> tony, well done
<tony> 每每我写文档 都是很少有人问津, 太打击我的积极性了, 嘿嘿
<Lolita> tony写作的时候大家都睡着了
<tony> 开始怀疑我的工作的意义了
<Lolita> 不用怀疑,我发现这篇文章正是我需要的
<Lolita> 托妮姐姐,不要反思,我发现jj正是我最最最需要的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-23 15:03:14 | 显示全部楼层
sigh,  俺是不是太那个啥了....
回复 支持 反对

使用道具 举报

发表于 2006-3-23 15:58:56 | 显示全部楼层
写的很好,现在用debian时不懂的就翻看论坛里的帖子,但很多只是给出了解决办法,自己照着方法做,解决了还是不明白是为什么,如果解决不了就不知道怎么办了。英文又不成,所以就想看到这样比较系统的中文文章
回复 支持 反对

使用道具 举报

发表于 2006-3-23 16:39:52 | 显示全部楼层
坚决地顶一下!
回复 支持 反对

使用道具 举报

太平洋里的水 该用户已被删除
发表于 2006-3-23 16:50:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

太平洋里的水 该用户已被删除
发表于 2006-3-23 16:51:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2006-3-23 16:56:51 | 显示全部楼层
支持一个,顶了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表