Debian 维护者指南

青木 修

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 维护者指南》(2018-07-29)教程文档面向普通 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. Split of a Debian binary package
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. Other debian/* Files
5.12. Debian 打包的定制化
5.13. Recording in VCS (standard)
5.14. Recording in VCS (alternative)
5.15. Building package without extraneous contents
5.15.1. Fix by debian/rules clean
5.15.2. Fix using VCS
5.15.3. Fix by extend-diff-ignore
5.15.4. Fix by 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.17.2. 旧的 -dbg 软件包(Jessie 8.0 或更旧)
5.18. 库软件包
5.18.1. 库符号
5.18.2. 库变迁
5.19. 多体系结构
5.19.1. The multiarch library path
5.19.2. The multiarch header file path
5.19.3. The multiarch *.pc file path
5.20. 编译加固
5.21. debconf
5.22. 持续集成
5.23. Bootstrapping
5.24. Bug reports
6. debmake options
6.1. Shortcut options (-a, -i)
6.1.1. Python module
6.2. Upstream snapshot (-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. Tips
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. Upload orig.tar.gz
7.18. 跳过的上传
7.19. 高级打包
7.20. Other distros
7.21. Debug
8. More Examples
8.1. Cherry-pick templates
8.2. No Makefile (shell, CLI)
8.3. Makefile (shell, CLI)
8.4. setup.py (Python3, CLI)
8.5. Makefile (shell, GUI)
8.6. setup.py (Python3, GUI)
8.7. Makefile (single-binary package)
8.8. Makefile.in + configure (single-binary package)
8.9. Autotools (single-binary package)
8.10. CMake (single-binary package)
8.11. Autotools (multi-binary package)
8.12. CMake (multi-binary package)
8.13. 国际化
8.14. Details
A. debmake(1) manpage
A.1. NAME
A.2. SYNOPSIS
A.3. DESCRIPTION
A.3.1. optional arguments:
A.4. 示例
A.5. HELPER PACKAGES
A.6. CAVEAT
A.7. 除错
A.8. 作者
A.9. 许可证
A.10. 参见