Debian 维护者指南

青木 修

Fonzie Huang

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

本指南在撰写过程中参考了以下几篇文档:

  • “Making a Debian Package (AKA the Debmake Manual)”, 版权所有 © 1997 Jaldhar Vyas.
  • “The New-Maintainer’s Debian Packaging Howto”, 版权所有 © 1997 Will Lowe.
  • “Debian New Maintainers’ Guide”, 版权所有 © 1998-2002 Josip Rodin, 2005-2017 Osamu Aoki, 2010 Craig Small 以及 2010 Raphaël Hertzog。

本指南的最新版本应当可以在下列位置找到:

摘要

本篇《Debian 维护者指南》(2019-03-26)教程文档面向普通 Debian 用户和未来的开发者,描述了使用 debmake 命令构建 Debian 软件包的方法。

本指南注重描述现代的打包风格,同时提供了许多简单的示例。

  • POSIX shell 脚本打包
  • Python3 脚本打包
  • C 和 Makefile/Autotools/CMake
  • 含有共享库的多个二进制软件包的打包,等等。

本篇《Debian 维护者指南》可看作《Debian 新维护者手册》的继承文档。


目录

前言
1. 概览
2. 预备知识
2.1. Debian 社区的工作者
2.2. 如何做出贡献
2.3. Debian 的社会驱动力
2.4. 技术提醒
2.5. Debian 文档
2.6. 帮助资源
2.7. 仓库状况
2.8. 贡献流程
2.9. 新手贡献者和维护者
3. 工具的配置
3.1. 电子邮件地址
3.2. mc
3.3. git
3.4. quilt
3.5. devscripts
3.6. pbuilder
3.7. git-buildpackage
3.8. HTTP 代理
3.9. 私有 Debian 仓库
4. 简单例子
4.1. 大致流程
4.2. 什么是 debmake?
4.3. 什么是 debuild?
4.4. 第一步:获取上游源代码
4.5. 第二步:使用 debmake 产生模板文件
4.6. 第三步:编辑模板文件
4.7. 第四步:使用 debuild 构建软件包
4.8. 第三步(备选):修改上游源代码
4.8.1. 使用 diff -u 处理补丁
4.8.2. 使用 dquilt 处理补丁
4.8.3. 使用 dpkg-source --commit 处理补丁
5. 基本内容
5.1. 打包工作流
5.1.1. debhelper 软件包
5.2. 软件包名称和版本
5.3. 本土 Debian 软件包
5.4. debian/rules
5.4.1. dh
5.4.2. 简单的 debian/rules
5.4.3. 自定义 debian/rules
5.4.4. debian/rules 中的变量
5.4.5. 可重现的构建
5.5. debian/control
5.5.1. Debian 二进制软件包的拆分
5.5.1.1. debmake -b
5.5.1.2. 拆包的场景和例子
5.5.1.3. 库软件包名称
5.5.2. Substvar
5.5.3. binNMU 安全
5.6. debian/changelog
5.7. debian/copyright
5.8. debian/patches/*
5.8.1. dpkg-source -x
5.8.2. dquilt 和 dpkg-source
5.9. debian/upstream/signing-key.asc
5.10. debian/watch 和 DFSG
5.11. 其它 debian/* 文件
5.12. Debian 打包的定制化
5.13. 在版本控制系统中进行记录(标准)
5.14. 在版本控制系统中进行记录(备选方案)
5.15. 构建软件包时排除不必要的内容
5.15.1. 使用 debian/rules clean 进行修复
5.15.2. 使用版本控制系统修复
5.15.3. 使用 extend-diff-ignore 修复
5.15.4. 使用 tar-ignore 修复
5.16. 上游构建系统
5.16.1. Autotools
5.16.2. CMake
5.16.3. Python distutils
5.17. 调试信息
5.17.1. 新的 -dbgsym 软件包(Stretch 9.0 或更新)
5.18. 库软件包
5.18.1. 库符号
5.18.2. 库变迁
5.19. debconf
5.20. 多体系结构
5.20.1. 多架构库路径
5.20.2. 多架构头文件路径
5.20.3. 多架构支持下的 *.pc 文件路径
5.21. 编译加固
5.22. 持续集成
5.23. 自举
5.24. 错误报告
6. debmake 选项
6.1. 快捷选项(-a,-i)
6.1.1. Python 模块
6.2. 上游快照(-d,-t)
6.3. debmake -cc
6.4. debmake -k
6.5. debmake -j
6.6. debmake -x
6.7. debmake -P
6.8. debmake -T
7. 提示
7.1. debdiff
7.2. dget
7.3. debc
7.4. piuparts
7.5. debsign
7.6. dput
7.7. bts
7.8. git-buildpackage
7.8.1. gbp import-dscs --debsnap
7.9. 上游 git 仓库
7.10. chroot
7.11. 新的 Debian 版本
7.12. 新上游版本
7.12.1. uupdate + tarball
7.12.2. uscan
7.12.3. gbp
7.12.4. gbp + uscan
7.13. 3.0 源代码格式
7.14. CDBS
7.15. 在 UTF-8 环境下构建
7.16. UTF-8 转换
7.17. 上传 orig.tar.gz
7.18. 跳过的上传
7.19. 高级打包
7.20. 其他发行版
7.21. 除错
8. 更多示例
8.1. 挑选最好的模板
8.2. 无 Makefile(shell,命令行界面)
8.3. Makefile(shell,命令行界面)
8.4. setup.py(Python3,命令行界面)
8.5. Makefile(shell,图形界面)
8.6. setup.py(Python3,图形界面)
8.7. Makefile(单个二进制软件包)
8.8. Makefile.in + configure(单个二进制软件包)
8.9. Autotools(单个二进制文件)
8.10. CMake(单个二进制软件包)
8.11. Autotools(多个二进制软件包)
8.12. CMake(多个二进制软件包)
8.13. 国际化
8.14. 细节
A. debmake(1) 手册页
A.1. 名称
A.2. 概述
A.3. 描述
A.3.1. 可选参数:
A.4. 示例
A.5. 帮助软件包
A.6. 注意事项
A.7. 除错
A.8. 作者
A.9. 许可证
A.10. 参见