第 1 章 前言

# 第 1 章 前言

如果您在某些方面算得上是有经验的 Debian 用户 [1] 的话，您可能遇上过这样的情况：

- 您想要安装某一个软件包，但是该软件在 Debian 仓库中尚不存在。
- 您想要将一个 Debian 软件包更新为上游的新版本。
- 您想要添加某些补丁来修复某个 Debian 软件包中的缺陷。

如果您想要创建一个 Debian 软件包来满足这些需求，并将您的工作与社区分享，那么您便是本篇指南的目标读者，即未来的 Debian 维护者。[2] 欢迎来到 Debian 社区。

Debian 是一个大型的、历史悠久的志愿者组织。因此，它具有许多需要遵守的社交上和技术上的规则和惯例。Debian 也开发出了一长串的打包工具和仓库维护工具，用来构建一套能够解决各种技术目标的二进制软件包：

- 软件包具有清晰明了的依赖关系和补丁，并可以在干净的构建环境下从头开始正确构建（“第 6.6 节 “debian/control 文件””、“第 6.9 节 “debian/patches/* 文件””、“第 4.7 节 “sbuild 设置””）
- 软件包可以跨多个架构得到构建（“第 9.3 节 “Variables for debian/rules””）
- 构建是可重现的（“第 10.7 节 “可重现的构建””）
- 具有多架构（multiarch）支持（“第 10.10 节 “多体系结构””）
- 可以在新硬件架构下自举（“第 10.5 节 “自举””）
- 构建能够使用特定的编译选项增强安全性（“第 10.6 节 “编译加固””）
- 软件按照最佳实践拆分为多个二进制软件包（“第 10.11 节 “Debian 二进制软件包的拆分””）
- 程序库的名称和内容得到有效管理，并确保升级时的平滑迁移（“第 10.18 节 “库变迁””）
- 如有必要，能够正确使用交互式命令行进行安装（“第 10.22 节 “debconf””）
- 利用持续集成保证质量（“第 10.4 节 “持续集成””）
- ……

这些目标对很多新近参与工作的潜在 Debian 维护者来说可能无法立刻全部掌握。本篇指南旨在提供一个着手点，方便读者开展工作。它具体描述了以下内容：

- 作为 Debian 未来的维护者，您在参与 Debian 工作之前应该了解的东西。
- 制作一个简单的 Debian 软件包大概流程如何。
- 制作 Debian 软件包时有哪些规则。
- 省心省力制作 Debian 软件包的小窍门。
- 在某些典型场景下制作 Debian 软件包的示例。

作者在更新原有的使用 dh-make 软件包的“新维护者手册”时认识到了该文档的局限性。因此，作者决定创建一个替代工具并编写其对应的文档以解决多架构支持（multi-arch）等现代的需求。其成果便是 debmake软件包（最初版本为2013年发布的 4.0 版，当前版本：5.1.4），以及这篇更新的、由 debmake-doc 软件包（当前版本：1.28-1）提供的 “Debian 维护者指南”。（在2016年，dh-make从 Perl 迁移到了 Python 语言并提供了更新的特性。）

许多杂项事务和小提示都被集成进了 debmake 命令，以使本指南内容简单易懂。本指南同时提供了许多打包示例来帮助用户上手使用。

| 小心
合适地创建并维护 Debian 软件包需要占用许多时间。Debian 维护者在接受这项挑战时一定要确保 既能精通技术又能勤勉投入精力。

某些重要的主题会详细进行说明。其中某些可能看起来和您没什么关系。请保持耐心。某些边缘情况会被跳过，一些主题仅以外部引用提及。这些都是有意的行文安排，目标是让这份指南保持简单而可维护。

[1] 您需要对 Unix 编程有所了解，但不必一定是这方面的专家。在 “Debian 参考手册” 中，您可以了解到使用 Debian 系统的一些基本操作和关于 Unix 编程的一些指引。

[2] 如果您对分享 Debian 软件包不感兴趣，您可以对上游包含修复内容的源码包进行编译并安装至 /usr/local 来满足本地的需求。

Debian 维护者指南 |  | 第 2 章 概览