dpkg详解及例证说明
Debian 软件包管理系统-dpkg2007-7-16 16:36| 查看数: 4463 dpkg 是 Debian 软件包管理系统的中流砥柱, 负责安装卸载软件包, 配置, 以及维护已安装的软件包. 也是Debian系统中众多软件包管理工具的后端. 有关 dpkg 的更多介绍请参阅: http:/www.dpkg.orgdpkg 通过数据库来维护系统中软件, 这包括文件清单, 依赖关系, 软件状态, 等等详细的内容, 通常在/var/lib/dpkg目录下. 并确保系统与数据库的情况相一致.因此,dpkg在处理程序时非常健壮,和优秀.dpkg 在处理软件包时, 首先要判断是否会引起系统的混乱, 当发现可能出现时, dpkg 将拒绝安装此软件, 而不是自作主张将软件装入系统, 然后把烂摊子扔给用户了之.dpkg是一个庞大的家族, 不仅提供了大量的参数选项, 同时也提供了许多子命令比如:dpkg-debdpkg-divertdpkg-querydpkg-splitdpkg-statoverridestart-stop-daemon.本文档不是 dpkg 的 manpage, 将不会对所有的参数和子命令加以介绍, 同时记住所有参数也是相当痛苦的事情, 在这里只对常用参数和命令做示例性介绍.dpkg 涵盖了 dpkg 家族的大部分功能, 因此dpkg可以作为一个多合一(ALL-IN-ONE)的软件使用,以更好的使用 dpkg 家族的全部功能.3. deb软件包命名规则:Debian软件包命名遵循下列约定: _-_.deb * 软件包名称(Package Name): * 版本(Version Number): * 修订号(Build Number): * 平台(Architecture): o i386 o all: 平台无关. 即适用于所有平台.比如文本, 网页, 图片, 媒体, pdf 等. 例如 * nano_1.3.10-2_i386.deb o 软件包名称: nano o 版本: 1.3.10 o 修订号: 2 o 平台: i386 4. 软件包处理(注:本文的中的操作以nano为例)dpkg-deb : 用于处理本地Debian软件包. 可以提取从.deb文件中提取软件包信息和数据. 详细信息,请参阅 dpkg-deb 的联机手册. * 列出软件包的内容: tonytony:/doc/dpkg$ dpkg-deb -c nano_1.3.10-2_i386.deb |more drwxr-xr-x root/root 0 2006-02-05 00:29:18 ./ drwxr-xr-x root/root 0 2006-02-05 00:29:07 ./etc/ -rw-r-r- root/root 11887 2006-02-05 00:29:07 ./etc/nanorc drwxr-xr-x root/root 0 2006-02-05 00:29:14 ./usr/ drwxr-xr-x root/root 0 2006-02-05 00:29:12 ./usr/share/ drwxr-xr-x root/root 0 2006-02-05 00:29:01 ./usr/share/doc/ drwxr-xr-x root/root 0 2006-02-05 00:29:15 ./usr/share/doc/nano/ -rw-r-r- root/root 1847 2005-08-30 02:29:02 ./usr/share/doc/nano/AUTHORS -rw-r-r- root/root 2338 2005-03-20 05:33:13 ./usr/share/doc/nano/README -rw-r-r- root/root 3175 2005-11-21 17:36:11 ./usr/share/doc/nano/THANKS -rw-r-r- root/root 2206 2005-06-08 10:28:06 ./usr/share/doc/nano/TODO -rw-r-r- root/root 1066 2003-03-24 21:09:26 ./usr/share/doc/nano/UPGRADE -rw-r-r- root/root 35996 2005-11-22 05:45:07 ./usr/share/doc/nano/faq.html . . * 查看软件包的信息 tonytony:/doc/dpkg$ dpkg-deb -I nano_1.3.10-2_i386.deb new debian package, version 2.0. size 477372 bytes: control archive= 2656 bytes. 12 bytes, 1 lines conffiles 714 bytes, 18 lines control 3529 bytes, 51 lines md5sums 613 bytes, 21 lines * postinst #!/bin/sh 160 bytes, 5 lines * postrm #!/bin/sh 379 bytes, 20 lines * preinst #!/bin/sh 288 bytes, 14 lines * prerm #!/bin/sh Package: nano Version: 1.3.10-2 Section: editors Priority: important Architecture: i386 Depends: libc6 (= 2.3.5-1), libncursesw5 (= 5.4-5) Suggests: spell Conflicts: nano-tiny (= 1.0.0-1), pico Replaces: pico Provides: editor Installed-Size: 1108 Maintainer: Jordi Mallach Description: free Pico clone with some new features GNU nano is a free replacement for Pico, the default Pine editor. Pine is copyrighted under a restrictive licence, that makes it unsuitable for Debians main section. GNU nano is an effort to provide a Pico-like editor, but also includes some features that were missing in the original, such as search and replace, goto line or internationalization support. * 重新构建软件包 比如nano(1.3.10)需要满足以下依赖关系: $ dpkg-deb -f nano_1.3.10-2_i386.deb depends /depends 为对应查询段 libc6 (= 2.3.5-1), libncursesw5 (= 5.4-5) 当系统不能满足依赖关系, 比如不能满足里来版本, 可以通过下边的方法处理, 当然这种情况下安装的nano并不一定运行正常, 这种方法可以应用于某些软件的变通安装. $ mkdir nano /创建nano目录 $ dpkg-deb -e ./nano_1.3.10-2_i386.deb ./nano/DEBIAN /解压控制文件 $ dpkg-deb -x ./nano_1.3.10-2_i386.deb ./nano /解压程序文件 $ vi ./nano/DEBIAN/control /修改控制信息 $ dpkg-deb -b nano nano_1.3.10-2_ill.deb /重新打包5. 数据库查询当前版本的 dpkg 使用文本文件来作为数据库.通称在 /var/lib/dpkg 目录下. 通称在 status 文件中存储软件状态,和控制信息. 在 info/ 目录下备份控制文件, 并在其下的 .list 文件中记录安装文件清单, 其下的 .mdasums 保存文件的 MD5 编码.体验使用数据库的时刻到了: $ dpkg -l Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) |/ Name Version Description +-=-=-= ii aalib1 1.4p5-28 ascii art library - transitional package ii adduser 3.85 Add and remove users and groups ii alien .63 install non-native packages with dpkg . .每条记录对应一个软件包, 注意每条
收藏
- 资源描述:
-
Debian 软件包管理系统--dpkg
2007-7-16 16:36| 查看数: 4463
dpkg 是 Debian 软件包管理系统的中流砥柱, 负责安装卸载软件包, 配置, 以及维护已安装的软件包. 也是Debian系统中众多软件包管理工具的后端. 有关 dpkg 的更多介绍请参阅: http://www.dpkg.org
dpkg 通过数据库来维护系统中软件, 这包括文件清单, 依赖关系, 软件状态, 等等详细的内容, 通常在/var/lib/dpkg目录下. 并确保系统与数据库的情况相一致.因此,dpkg在处理程序时非常健壮,和优秀.
dpkg 在处理软件包时, 首先要判断是否会引起系统的混乱, 当发现可能出现时, dpkg 将拒绝安装此软件, 而不是自作主张将软件装入系统, 然后把烂摊子扔给用户了之.
dpkg是一个庞大的家族, 不仅提供了大量的参数选项, 同时也提供了许多子命令比如:
dpkg-deb
dpkg-divert
dpkg-query
dpkg-split
dpkg-statoverride
start-stop-daemon
...
本文档不是 dpkg 的 manpage, 将不会对所有的参数和子命令加以介绍, 同时记住所有参数也是相当痛苦的事情, 在这里只对常用参数和命令做示例性介绍.
dpkg 涵盖了 dpkg 家族的大部分功能, 因此dpkg可以作为一个多合一(ALL-IN-ONE)的软件使用,以更好的使用 dpkg 家族的全部功能.
3. deb软件包命名规则:
Debian软件包命名遵循下列约定: <软件包名称>_<版本>-<修订号>_<平台>.deb
* 软件包名称(Package Name):
* 版本(Version Number):
* 修订号(Build Number):
* 平台(Architecture):
o i386
o all: 平台无关. 即适用于所有平台.比如文本, 网页, 图片, 媒体, pdf 等.
例如
* nano_1.3.10-2_i386.deb
o 软件包名称: nano
o 版本: 1.3.10
o 修订号: 2
o 平台: i386
4. 软件包处理
(注:本文的中的操作以nano为例)
dpkg-deb : 用于处理本地Debian软件包. 可以提取从.deb文件中提取软件包信息和数据. 详细信息,请参阅 dpkg-deb 的联机手册.
* 列出软件包的内容:
tony@tony:~/doc/dpkg$ dpkg-deb -c nano_1.3.10-2_i386.deb |more
drwxr-xr-x root/root 0 2006-02-05 00:29:18 ./
drwxr-xr-x root/root 0 2006-02-05 00:29:07 ./etc/
-rw-r--r-- root/root 11887 2006-02-05 00:29:07 ./etc/nanorc
drwxr-xr-x root/root 0 2006-02-05 00:29:14 ./usr/
drwxr-xr-x root/root 0 2006-02-05 00:29:12 ./usr/share/
drwxr-xr-x root/root 0 2006-02-05 00:29:01 ./usr/share/doc/
drwxr-xr-x root/root 0 2006-02-05 00:29:15 ./usr/share/doc/nano/
-rw-r--r-- root/root 1847 2005-08-30 02:29:02 ./usr/share/doc/nano/AUTHORS
-rw-r--r-- root/root 2338 2005-03-20 05:33:13 ./usr/share/doc/nano/README
-rw-r--r-- root/root 3175 2005-11-21 17:36:11 ./usr/share/doc/nano/THANKS
-rw-r--r-- root/root 2206 2005-06-08 10:28:06 ./usr/share/doc/nano/TODO
-rw-r--r-- root/root 1066 2003-03-24 21:09:26 ./usr/share/doc/nano/UPGRADE
-rw-r--r-- root/root 35996 2005-11-22 05:45:07 ./usr/share/doc/nano/faq.html
... ...
* 查看软件包的信息
tony@tony:~/doc/dpkg$ dpkg-deb -I nano_1.3.10-2_i386.deb
new debian package, version 2.0.
size 477372 bytes: control archive= 2656 bytes.
12 bytes, 1 lines conffiles
714 bytes, 18 lines control
3529 bytes, 51 lines md5sums
613 bytes, 21 lines * postinst #!/bin/sh
160 bytes, 5 lines * postrm #!/bin/sh
379 bytes, 20 lines * preinst #!/bin/sh
288 bytes, 14 lines * prerm #!/bin/sh
Package: nano
Version: 1.3.10-2
Section: editors
Priority: important
Architecture: i386
Depends: libc6 (>= 2.3.5-1), libncursesw5 (>= 5.4-5)
Suggests: spell
Conflicts: nano-tiny (<= 1.0.0-1), pico
Replaces: pico
Provides: editor
Installed-Size: 1108
Maintainer: Jordi Mallach
Description: free Pico clone with some new features
GNU nano is a free replacement for Pico, the default Pine editor. Pine is
copyrighted under a restrictive licence, that makes it unsuitable for
Debian's main section. GNU nano is an effort to provide a Pico-like
editor, but also includes some features that were missing in the original,
such as 'search and replace', 'goto line' or internationalization support.
* 重新构建软件包
比如nano(1.3.10)需要满足以下依赖关系:
$ dpkg-deb -f nano_1.3.10-2_i386.deb depends //depends 为对应查询段
libc6 (>= 2.3.5-1), libncursesw5 (>= 5.4-5)
当系统不能满足依赖关系, 比如不能满足里来版本, 可以通过下边的方法处理, 当然这种情况下安装的nano并不一定运行正常, 这种方法可以应用于某些软件的变通安装.
$ mkdir nano //创建nano目录
$ dpkg-deb -e ./nano_1.3.10-2_i386.deb ./nano/DEBIAN //解压控制文件
$ dpkg-deb -x ./nano_1.3.10-2_i386.deb ./nano //解压程序文件
$ vi ./nano/DEBIAN/control //修改控制信息
$ dpkg-deb -b nano nano_1.3.10-2_ill.deb //重新打包
5. 数据库查询
当前版本的 dpkg 使用文本文件来作为数据库.通称在 /var/lib/dpkg 目录下. 通称在 status 文件中存储软件状态,和控制信息. 在 info/ 目录下备份控制文件, 并在其下的 .list 文件中记录安装文件清单, 其下的 .mdasums 保存文件的 MD5 编码.
体验使用数据库的时刻到了:
$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name Version Description
+++-===========-================-========================================
ii aalib1 1.4p5-28 ascii art library - transitional package
ii adduser 3.85 Add and remove users and groups
ii alien .63 install non-native packages with dpkg
... ...
每条记录对应一个软件包, 注意每条
展开阅读全文