附录 A. Debian 维护者工具概览

目录

A.1. 核心工具
A.1.1. dpkg-dev
A.1.2. debconf
A.1.3. fakeroot
A.2. 软件包检查工具
A.2.1. lintian
A.2.2. debdiff
A.3. debian/rules 的助手
A.3.1. debhelper
A.3.2. dh-make
A.3.3. equivs
A.4. 软件包构建器
A.4.1. cvs-buildpackage
A.4.2. debootstrap
A.4.3. pbuilder
A.4.4. sbuild
A.5. 软件包上传器
A.5.1. dupload
A.5.2. dput
A.5.3. dcut
A.6. 维护自动化
A.6.1. devscripts
A.6.2. autotools-dev
A.6.3. dpkg-repack
A.6.4. alien
A.6.5. debsums
A.6.6. dpkg-dev-el
A.6.7. dpkg-depcheck
A.7. 移植工具
A.7.1. quinn-diff
A.7.2. dpkg-cross
A.8. 文档和信息
A.8.1. docbook-xml
A.8.2. debiandoc-sgml
A.8.3. debian-keyring
A.8.4. debian-maintainers
A.8.5. debview

本节包含维护者可用工具的粗略概览。以下内容绝非完整或权威,而仅仅是一些更常用工具的指南。

Debian 维护者工具旨在帮助开发者,并解放他们的时间用于关键任务。正如 Larry Wall 所说,条条大路通罗马。

有些人喜欢使用高级软件包维护工具,有些人则不喜欢。Debian 在这个问题上官方持不可知论态度;任何能完成工作的工具都可以。因此,本节并非旨在规定任何人应该使用哪些工具或他们应该如何履行其维护职责。也并非旨在认可任何特定工具而排除竞争工具。

这些软件包的大部分描述来自软件包本身的实际描述。更多信息可以在软件包文档本身中找到。您还可以使用命令 apt-cache show package-name 查看更多信息。

A.1. 核心工具

以下工具几乎是任何维护者都需要的。

A.1.1. dpkg-dev

dpkg-dev 包含解包、构建和上传 Debian 源代码包所需的工具(包括 dpkg-source)。这些实用程序包含创建和操作软件包所需的基本、低级功能;因此,它们对于任何 Debian 维护者来说都是必不可少的。

A.1.2. debconf

debconf 提供了一个一致的界面来交互式配置软件包。它是用户界面独立的,允许最终用户使用纯文本界面、HTML 界面或对话框界面配置软件包。可以作为模块添加新的界面。

您可以在 debconf-doc 软件包中找到此软件包的文档。

许多人认为,对于所有需要交互式配置的软件包,都应该使用此系统;请参阅第 6.5 节,“使用 debconf 进行配置管理”debconf 目前不是 Debian 策略要求的,但将来可能会改变。

A.1.3. fakeroot

fakeroot 模拟 root 权限。这使您无需成为 root 用户即可构建软件包(软件包通常希望安装具有 root 所有权的文件)。如果您安装了 fakeroot,则可以作为普通用户构建软件包:dpkg-buildpackage -rfakeroot

A.2. 软件包检查工具

根据在线免费计算机词典 (FOLDOC),“lint”是一个 Unix C 语言处理器,它对代码执行比 C 编译器通常更彻底的检查。软件包检查工具通过自动查找软件包中的常见问题和策略违规行为来帮助软件包维护者。

A.2.1. lintian

lintian 分析 Debian 软件包,并发出有关错误和策略违规的信息。它包含对 Debian 策略的许多方面的自动检查,以及对一些常见错误的检查。

您应该定期从 unstable 获取最新的 lintian,并检查您的所有软件包。请注意,-i 选项提供了关于每个错误或警告意味着什么、其策略基础是什么以及通常如何解决问题的详细解释。

有关如何以及何时使用 Lintian 的更多信息,请参阅第 5.3 节,“测试软件包”

您还可以在 http://lintian.debian.org/ 上查看 Lintian 报告的所有软件包问题的摘要。这些报告包含整个开发发行版(unstable)的最新 lintian 输出。

A.2.2. debdiff

debdiff(来自 devscripts 软件包,第 A.6.1 节,“devscripts)比较两个软件包的文件列表和控制文件。它是一个简单的回归测试,因为它可以帮助您注意到自上次上传以来二进制软件包的数量是否已更改,或者控制文件中是否发生了某些更改。当然,它报告的一些更改可能是正常的,但它可以帮助您预防各种意外。

您可以在一对二进制软件包上运行它

debdiff package_1-1_arch.deb package_2-1_arch.deb

甚至可以运行在一对 changes 文件上

debdiff package_1-1_arch.changes package_2-1_arch.changes

有关更多信息,请参阅 debdiff(1)

A.3. debian/rules 的助手

软件包构建工具使编写 debian/rules 文件的过程更加容易。有关为什么可能需要或可能不需要这些工具的更多信息,请参阅第 6.1.1 节,“助手脚本”

A.3.1. debhelper

debhelper 是可在 debian/rules 中使用的一组程序,用于自动化与构建 Debian 二进制软件包相关的常见任务。debhelper 包括将各种文件安装到您的软件包中、压缩文件、修复文件权限以及将您的软件包与 Debian 菜单系统集成的程序。

与某些方法不同,debhelper 被分解为几个小的、简单的命令,这些命令以一致的方式运行。因此,它比其他一些 debian/rules 工具允许更细粒度的控制。

还有许多小的 debhelper 附加软件包,它们太短暂而无法记录。您可以通过执行 apt-cache search ^dh- 来查看它们中的大多数列表。

A.3.2. dh-make

dh-make 软件包包含 dh_make,这是一个程序,用于创建构建 Debian 软件包所需的骨架文件。顾名思义,dh_makedebmake 的重写,其模板文件使用来自 debhelperdh_* 程序。

虽然 dh_make 生成的 rules 文件通常是工作软件包的充分基础,但它们仍然只是基础工作:维护者仍然有责任微调生成的文件,并使软件包完全正常工作并符合策略。

A.3.3. equivs

equivs 是另一个用于制作软件包的软件包。如果您需要制作一个软件包只是为了满足依赖关系,则通常建议在本地使用它。它有时也用于制作“元软件包”,这些软件包的唯一目的是依赖于其他软件包。

A.4. 软件包构建器

以下软件包有助于软件包构建过程,通用驱动 dpkg-buildpackage 以及处理支持任务。

A.4.1. cvs-buildpackage

cvs-buildpackage 提供了将 Debian 源代码包注入或导入到 CVS 存储库、从 CVS 存储库构建 Debian 软件包以及帮助将上游更改集成到存储库中的功能。

这些实用程序提供了一个基础设施,以方便 Debian 维护者使用 CVS。这允许维护者为软件包的 stableunstable 和可能的 experimental 发行版保留单独的 CVS 分支,以及版本控制系统的其他好处。

A.4.2. debootstrap

debootstrap 软件包和脚本允许您将 Debian 基础系统引导到文件系统的任何部分。基础系统是指操作和安装系统其余部分所需的最少软件包。

拥有这样的系统在许多方面都很有用。例如,如果您想测试构建依赖项,可以 chroot 进入它。或者您可以测试您的软件包安装到裸基础系统中的行为。Chroot 构建器使用此软件包;请参阅下文。

A.4.3. pbuilder

pbuilder 构建一个 chroot 系统,并在 chroot 内构建一个软件包。它对于检查软件包的构建依赖项是否正确,并确保生成的软件包中不会存在不必要和错误的构建依赖项非常有用。

一个相关的软件包是 pbuilder-uml,它通过在用户模式 Linux 环境中进行构建而更进一步。

A.4.4. sbuild

sbuild 是另一个自动化构建器。它也可以使用 chroot 环境。它可以独立使用,也可以作为网络分布式构建环境的一部分使用。作为后者,它是端口维护者用于为所有可用架构构建二进制软件包的系统的一部分。有关更多信息,请参阅第 5.10.3.3 节,“wanna-build,并访问 http://buildd.debian.org/ 查看系统运行情况。

A.5. 软件包上传器

以下软件包有助于自动化或简化将软件包上传到官方归档的过程。

A.5.1. dupload

dupload 是一个软件包和一个脚本,用于自动将 Debian 软件包上传到 Debian 归档,记录上传,并发送有关软件包上传的邮件。您可以为新的上传位置或方法配置它。

A.5.2. dput

dput 软件包和脚本与 dupload 做的事情大致相同,但方式不同。它比 dupload 有一些功能,例如在上传之前检查 GnuPG 签名和校验和,以及在上传后在试运行模式下运行 dinstall 的可能性。

A.5.3. dcut

dcut 脚本(dput 软件包的一部分,第 A.5.2 节,“dput)有助于从 ftp 上传目录中删除文件。

A.6. 维护自动化

以下工具可帮助自动化不同的维护任务,从添加变更日志条目或签名行,在 Emacs 中查找错误,到使用最新和官方的 config.sub

A.6.1. devscripts

devscripts 是一个软件包,其中包含对于维护 Debian 软件包非常有用的包装器和工具。示例脚本包括 debchangedch,它们从命令行操作您的 debian/changelog 文件,以及 debuild,它是 dpkg-buildpackage 的包装器。bts 实用程序对于在命令行更新错误报告的状态也非常有用。uscan 可用于监视软件包的新上游版本。debrsign 可用于在上传之前远程签署软件包,这在构建软件包的机器与 GPG 密钥所在的机器不同时非常有用。

有关可用脚本的完整列表,请参阅 devscripts(1) 手册页。

A.6.2. autotools-dev

autotools-dev 包含维护使用 autoconf 和/或 automake 的软件包的最佳实践。还包含已知的可在所有 Debian 端口上工作的规范 config.subconfig.guess 文件。

A.6.3. dpkg-repack

dpkg-repack 从已安装的软件包创建 Debian 软件包文件。如果在解包时对软件包进行了任何更改(例如,修改了 /etc 中的文件),则新软件包将继承这些更改。

此实用程序可以轻松地将软件包从一台计算机复制到另一台计算机,或重新创建安装在系统上但其他地方不再可用的软件包,或在升级软件包之前保存软件包的当前状态。

A.6.4. alien

alien 在各种打包格式之间转换二进制软件包,包括 Debian、RPM (RedHat)、LSB (Linux Standard Base)、Solaris 和 Slackware 软件包。

A.6.5. debsums

debsums 根据已安装软件包的 MD5 校验和检查软件包。请注意,并非所有软件包都具有 MD5 校验和,因为策略并未要求它们。

A.6.6. dpkg-dev-el

dpkg-dev-el 是一个 Emacs lisp 软件包,在编辑软件包的 debian 目录中的某些文件时提供帮助。例如,有一些方便的功能可以列出软件包的当前错误,以及最终确定 debian/changelog 文件中的最新条目。

A.6.7. dpkg-depcheck

dpkg-depcheck(来自 devscripts 软件包,第 A.6.1 节,“devscripts)在 strace 下运行命令,以确定所述命令使用的所有软件包。

对于 Debian 软件包,当您必须为新软件包编写 Build-Depends 行时,这很有用:通过 dpkg-depcheck 运行构建过程将为您提供构建依赖项的良好初步估计。例如

dpkg-depcheck -b debian/rules build

dpkg-depcheck 也可用于检查运行时依赖项,特别是当您的软件包使用 exec(2) 运行其他程序时。

有关更多信息,请参阅 dpkg-depcheck(1)

A.7. 移植工具

以下工具对移植者和交叉编译很有帮助。

A.7.1. quinn-diff

quinn-diff 用于查找从一个架构到另一个架构的差异。例如,它可以告诉您哪些软件包需要为架构 Y 移植,基于架构 X

A.7.2. dpkg-cross

dpkg-cross 是一种以类似于 dpkg 的方式安装用于交叉编译的库和头文件的工具。此外,dpkg-buildpackagedpkg-shlibdeps 的功能得到了增强,以支持交叉编译。

A.8. 文档和信息

以下软件包为维护者提供信息或帮助构建文档。

A.8.1. docbook-xml

docbook-xml 提供 DocBook XML DTD,它通常用于 Debian 文档(旧的 debiandoc SGML DTD 也是如此)。例如,本手册是用 DocBook XML 编写的。

docbook-xsl 软件包提供用于构建和样式化源到各种输出格式的 XSL 文件。您将需要一个 XSLT 处理器,例如 xsltproc,才能使用 XSL 样式表。有关样式表的文档可以在各种 docbook-xsl-doc-* 软件包中找到。

要从 FO 生成 PDF,您需要一个 FO 处理器,例如 xmlrofffop。另一个从 DocBook XML 生成 PDF 的工具是 dblatex

A.8.2. debiandoc-sgml

debiandoc-sgml 提供 DebianDoc SGML DTD,它通常用于 Debian 文档,但现在已弃用(应使用 docbook-xml 代替)。它还提供用于构建和样式化源到各种输出格式的脚本。

有关 DTD 的文档,请参见 debiandoc-sgml-doc 软件包。

A.8.3. debian-keyring

包含 Debian 开发者的公共 GPG 和 PGP 密钥。有关更多信息,请参阅第 3.2.2 节,“维护您的公钥”和软件包文档。

A.8.4. debian-maintainers

包含 Debian 维护者的公共 GPG 密钥。有关更多信息,请访问 http://wiki.debian.org/DebianMaintainer

A.8.5. debview

debview 提供用于查看 Debian 二进制软件包的 Emacs 模式。这使您可以检查软件包而无需解包。