Debian 维护者指南

杨博远

Chinese zh-cn Translation (2017-2019) 

Fonzie Huang

Chinese zh-cn Translation (2018) 

xiao sheng wen(肖盛文)

Chinese zh-cn Translation (2021) 

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。

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

Abstract

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

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

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

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


Table of Contents

1. 前言
2. 概览
3. 预备知识
3.1. Debian 社区的工作者
3.2. 如何做出贡献
3.3. Debian 的社会驱动力
3.4. 技术提醒
3.5. Debian 文档
3.6. 帮助资源
3.7. 仓库状况
3.8. 贡献流程
3.9. 新手贡献者和维护者
4. 工具的配置
4.1. Email setup
4.2. mc setup
4.3. git setup
4.4. quilt setup
4.5. devscripts setup
4.6. sbuild setup
4.7. Persistent chroot setup
4.8. gbp setup
4.9. HTTP 代理
4.10. 私有 Debian 仓库
4.11. Virtual machines
4.12. Local network with virtual machines
5. Simple packaging
5.1. Packaging tarball
5.2. 大致流程
5.3. 什么是 debmake?
5.4. 什么是 debuild?
5.5. 第一步:获取上游源代码
5.6. Step 2: Generate template files with debmake
5.7. 第三步:编辑模板文件
5.8. Step 4: Building package with debuild
5.9. Step 3 (alternatives): Modification to the upstream source
5.10. Patch by diff -u approach
5.11. Patch by dquilt approach
5.12. Patch by dpkg-source --auto-commit approach
6. Basics for packaging
6.1. 打包工作流
6.2. debhelper package
6.3. 软件包名称和版本
6.4. 原生 Debian 软件包
6.5. debian/rules file
6.6. debian/control file
6.7. debian/changelog file
6.8. debian/copyright file
6.9. debian/patches/* files
6.10. debian/source/include-binaries file
6.11. debian/watch file
6.12. debian/upstream/signing-key.asc file
6.13. debian/salsa-ci.yml file
6.14. Other debian/* files
7. Sanitization of the source
7.1. Fix with Files-Excluded
7.2. Fix with debian/rules clean
7.3. Fix with extend-diff-ignore
7.4. Fix with tar-ignore
7.5. Fix with git clean -dfx
8. More on packaging
8.1. Package customization
8.2. Customized debian/rules
8.3. Variables for debian/rules
8.4. 新上游版本
8.5. Manage patch queue with dquilt
8.6. Build commands
8.7. Note on sbuild
8.8. Special build cases
8.9. 上传 orig.tar.gz
8.10. 跳过的上传
8.11. 错误报告
9. 高级打包
9.1. Historical perspective
9.2. Current trends
9.3. Note on build system
9.4. 持续集成
9.5. 自举
9.6. 编译加固
9.7. 可重现的构建
9.8. Substvar
9.9. 库软件包
9.10. 多体系结构
9.11. Debian 二进制软件包的拆分
9.12. 拆包的场景和例子
9.13. Multiarch library path
9.14. Multiarch header file path
9.15. Multiarch *.pc file path
9.16. 库符号
9.17. Library package name
9.18. 库变迁
9.19. binNMU 安全
9.20. 调试信息
9.21. -dbgsym package
9.22. debconf
10. Packaging with git
10.1. Salsa repository
10.2. Salsa account setup
10.3. Salsa CI service
10.4. Branch names
10.5. Patch unapplied Git repository
10.6. Patch applied Git repository
10.7. Note on gbp
10.8. Note on dgit
10.9. Patch by gbp-pq approach
10.10. Manage patch queue with gbp-pq
10.11. gbp import-dscs --debsnap
10.12. Note on dgit-maint-debrebase workflow
10.13. Quasi-native Debian packaging
11. 提示
11.1. 在 UTF-8 环境下构建
11.2. UTF-8 转换
11.3. Hints for Debugging
12. Tool usages
12.1. debdiff
12.2. dget
12.3. mk-origtargz
12.4. origtargz
12.5. git deborig
12.6. dpkg-source -b
12.7. dpkg-source -x
12.8. debc
12.9. piuparts
12.10. bts
13. 更多示例
13.1. 挑选最好的模板
13.2. 无 Makefile(shell,命令行界面)
13.3. Makefile(shell,命令行界面)
13.4. pyproject.toml (Python3, CLI)
13.5. Makefile(shell,图形界面)
13.6. pyproject.toml (Python3, GUI)
13.7. Makefile(单个二进制软件包)
13.8. Makefile.in + configure(单个二进制软件包)
13.9. Autotools(单个二进制文件)
13.10. CMake(单个二进制软件包)
13.11. Autotools(多个二进制软件包)
13.12. CMake(多个二进制软件包)
13.13. 国际化
13.14. 细节
14. debmake(1) 手册页
14.1. 名称
14.2. 概述
14.3. 描述
14.3.1. 可选参数:
14.4. 示例
14.5. 帮助软件包
14.6. 注意事项
14.7. 除错
14.8. 作者
14.9. 许可证
14.10. 参见
15. debmake options
15.1. Shortcut options (-a, -i)
15.2. debmake -b
15.3. debmake -cc
15.4. Snapshot upstream tarball (-d, -t)
15.5. debmake -j
15.6. debmake -k
15.7. debmake -P
15.8. debmake -T
15.9. debmake -x