个人工具

Debian-maint-guide/7

来自Ubuntu中文

跳转至: 导航, 搜索

Debian新维护人员手册

第 7 章 - 检查软件包中的错误

7.1 lintian软件包

在你的.changes文件上运行lintian(1);它们会检查出其中很多常见的错误。通常使用命令:

      lintian -i gentoo_0.9.12-1_i386.changes

当然,要用为你的软件包产生的.changes文件的文件名替换掉上面的。如果这个命令的运行结果显示在软件包中有错误(以E:开始的行),清仔细阅读关于错误的说明(以N:开始的行),纠正错误,然后根据前文完整的rebuild, 第 6.1 节所述重新构建软件包。如果在输入的信息中有以W:开始的行,它们代表警告,那就要调整软件包或者如果你确认这些警告是不是spurious的(让Lintianoverride它们;请参考文档以获得更多的信息。)

你可以用debuild(1)命令,它会首先用dpkg-buildpackage构建软件包,接着运 行lintian。

7.2 mc命令

你可以用dpkg-deb(1)解压*.deb包中的内容。你也可以用debc(1)列出生成的Debian包中 的内容。

这也可以用如mc(1)的文件管理器直接完成,使用它,不仅可以浏览*.deb文件的内容,还可以浏览*.diff.gz和*.tar.gz文件的内容。

请注意源码包和二进制包中没有用处的文件或零长度的文件。通常cruft都不能被正确地清理;请调整你的rules文件来修复它们。

技巧:使用“zgrep ^+++ ../gentoo_0.9.12-1.diff.gz”命令可以得到一系列对源文件进行的修改或增加。而“dpkg-deb -c gentoo_0.9.12-1_i386.deb”或“debc gentoo_0.9.12-1_i386.changes”会列出二进制包中的文件。

7.3 debdiff命令

你可以用debdiff(1)命令来比较两个Debian二进制软件包中的文件列表。这对于核对是否有错误地放置或删除了文件和其它粗心大意的修改是很有用的。你可以用“debdiff old-package.change new-package.change”检查一组*.deb文件。

7.4 interdiff命令

你可以用interdiff(1)命令比较两个diff.gz文件。这对于核对维护者在更新包时对于源码包是否有粗心大意地修改是很有用的。运行“interdiff -z old-package.diff.gz new-package.diff.gz”。

7.5 debi命令

自己安装你的软件包,比如用root的身份使用debi(1)命令。尝试在其它的机器上而不只是你自己的机器上安装并运行你的软件包,并仔细观察所有的在安装和运行时系统给出的错误信息。

7.6 pbuilder包

对于净室(chroot)构造环境而言,要核对编译环境的依赖关系,pbuilder软件包是很有用的。使用它可以确保在auto-builder中为不同的体系结构完全从源码完成编译,从而避免了很严重的FTBFS(无法从源码编译)的bug,而这种bug经常会出现在RC(发布临界版)中。要了解Debian软件包auto-builder的更多信息,请参考http://buildd.debian.org/

最简单地使用pbuilder包的方法是直接以root身份使用pbuilder命令。例如,在包含了.orig.tar.gz、.diff.gz和.dsc的目录下使用下面的命令可以构造一个软件包。

    root # pbuilder create # if second time, pbuilder update
    root # pbuilder build foo.dsc

新构造的软件包可以在/var/cache/pbuilder/result/中找到,而它们的所有者都是root用户。

pdebuild命令让你可以以普通用户的身份使用pbuilder包的功能。从源码树的根中,当其父目录中有orig.tar.gz时,你可以输入下面的命令:

    $ sudo pbuilder create # if second time, sudo pbuilder update
    $ pdebuild

新构造的软件包会在/var/cache/pbuilder/result/中,而其所有者将不再是root用户。 [2]

如果你希望增加新的apt源让pbuilder包,你可以设定OTHERMIRROR、~/.pbuilderrc和/etc/pbuilderrc且(对srage)可运行

    $ sudo pbuilder update --distribution sarge --override-config

使用--override-config则需要更新chroot环境中的apt源。

参考http://www.netfort.gr.jp/~dancer/software/pbuilder.html、pdebuild(1)、pbuilderrc(5)和pbuilder(8)。