前言
如果您在某些方面算得上是有经验的 Debian 用户 [1] 的话,您可能遇上过这样的情况:
- 您想要安装某一个软件包,但是该软件在 Debian 仓库中尚不存在。
- 您想要将一个 Debian 软件包更新为上游的新版本。
- 您想要添加某些补丁来修复某个 Debian 软件包中的缺陷。
如果您想要创建一个 Debian 软件包来满足您的需求,并将您的工作与社区分享,您便是本篇指南的目标读者,即未来的 Debian 维护者。[2] 欢迎来到 Debian 社区。
Debian 是一个大型的、历史悠久的志愿者组织。因此,它具有许多需要遵守的社会上和技术上的规则和惯例。Debian 也开发出了一长串的打包工具和仓库维护工具,用来构建一套能够解决各种技术目标的二进制软件包:
- 跨多个架构构建的软件包(Section 5.4.4, “debian/rules 中的变量”)
- 可重现的构建(Section 5.4.5, “可重现的构建”)
- 在明确指定软件包依赖和补丁情况下干净地构建(Section 5.5, “debian/control”, Section 5.8, “debian/patches/*”, Section 7.10, “chroot”)
- 拆分多个二进制软件包的最佳实践(Section 5.5.1, “Debian 二进制软件包的拆分”)
- 平滑的程序库迁移(Section 5.18.2, “库变迁”)
- 交互式安装定制(Section 5.19, “debconf”)
- 多架构(multiarch)支持(Section 5.20, “多体系结构”)
- 使用特定的编译选项进行安全增强(Section 5.21, “编译加固”)
- 持续集成(Section 5.22, “持续集成”)
- 自举(Section 5.23, “自举”)
- ……
这些目标也许会让很多新近参与进 Debian 工作中的潜在 Debian 维护者感到迷茫而不知所措。本篇指南尝试为这些目标提供一个着手点,方便读者开展工作。它具体描述了以下内容:
- 作为未来潜在的维护者,您在参与 Debian 工作之前应该了解的东西。
- 制作一个简单的 Debian 软件包大概流程如何。
- 制作 Debian 软件包时有哪些规则。
- 制作 Debian 软件包的小窍门。
- 在某些典型场景下制作 Debian 软件包的示例。
作者在更新原有的使用 dh-make 软件包的“新维护者手册”时感受到了文档的局限性。因此,作者决定创建一个替代工具并编写其对应的文档以解决某些现代的需求。其成果便是 debmake(当前版本:))软件包,以及这篇更新的“Debian 维护者指南”,可从 debmake-doc(当前版本:1.16-1)软件包获取。
许多杂项事务和小提示都集成进了 debmake 命令,以使本指南内容简单易懂。本指南同时提供了许多打包示例。
Caution | |
---|---|
合适地创建并维护 Debian 软件包需要占用许多时间。Debian 维护者在接受这项挑战时一定要确保 既能精通技术又能勤勉投入精力。 |
某些重要的主题会详细进行说明。其中某些可能看起来和您没什么关系。请保持耐心。某些边角案例会被跳过。某些主题仅使用外部链接提及。这些都是有意的行文安排,目标是让这份指南保持简单而可维护。
[1] 您的确需要对 Unix 编程有所了解,但显然没必要是这方面的天才。在 Debian 参考手册 中,您可以了解到使用 Debian 系统的一些基本方法和关于 Unix 编程的一些指引。
[2] 如果您对分享 Debian 软件包不感兴趣,您当然可以在本地环境中将上游的源码包进行编译并安装至 /usr/local 来解决问题。