Chapter 1. 概览

package-1.0**.tar.gz,一个包含了简单的、符合 GNU 编码标准FHS(文件系统层级规范) 的 C 语言源代码的程序来说,它在 Debian 下打包工作可以按照下列流程,使用 debmake** 命令进行。

  1. $ tar -xvzf package-1.0.tar.gz
  2. $ cd package-1.0
  3. $ debmake
  4. ... Make manual adjustments of generated configuration files
  5. $ debuild

如果跳过了对生成的配置文件的手工调整流程,则最终生成的二进制软件包将缺少有意义的软件包描述信息,但是仍然能为 dpkg 命令所使用,在本地部署环境下正常工作。

[Caution]Caution

这里的 debmake 命令只提供一些不错的模板文件。如果生成的软件包需要发布出去供公众使用的话,这些模板文件必须手工调整至最佳状态以遵从 Debian 仓库的严格质量标准。

如果您在 Debian 打包方面还是个新手的话,此时不要过多在意细节问题,请先确立一个大致流程的印象。

如果您曾经接触过 Debian 打包工作,您会注意到这和 dh_make 命令很像。这是因为 debmake 命令设计时便旨在替代历史上由 dh_make 命令所提供的功能。[3]

debmake 命令设计提供如下特性与功能:

  • 现代的打包风格

    • debian/copyright:符合 DEP-5
    • debian/controlsubstvar 支持、multiarch 支持、多个二进制软件包、……
    • debian/rulesdh 语法、编译器加固选项、……
  • 灵活性

  • 合理的默认行为

    • 执行过程不中断,输出干净的结果
    • 生成多架构支持(multiarch)的软件包,除非明确指定了 -m 选项。
    • 生成非本土 Debian 软件包,使用“3.0 (quilt)”格式,除非明确指定了 -n 选项。
  • 额外的功能

debmake 命令将大多数重量级工作分派给了其后端软件包:debhelperdpkg-devdevscriptspbuilder,等等。

[Tip]Tip

请确保将 -b-f-l-w 选项的参数使用引号合适地保护起来,以避免 shell 环境的干扰。

[Tip]Tip

非本土软件包是标准的 Debian 软件包。

[Tip]Tip

本文档中所有软件包构建示例的详细日志可以由 Section 8.14, “细节” 一段给出的操作来获取。

[Note]Note

所产生的 debian/copyright 文件,以及 -cSection 6.4, “debmake -cc”)和 -kSection 6.5, “debmake -k”)选项的输出都涉及了对版权和授权信息的启发式操作。它们具有局限性,可能会输出某些错误的结果。


[3] 历史上还存在过 deb-make 命令,它在 dh_make 之前曾经流行过。当前的 debmake 软件包的版本从 4.0 起始,其目的便是避免和废弃的 debmake 软件包的版本产生重叠。旧有的对应软件包提供了 deb-make 命令。