Debian 維護者指南

楊博遠

Chinese zh-cn Translation (2017-2019) 

Fonzie Huang

Chinese zh-cn Translation (2018) 

鄭原真

Chinese zh-tw Translation (2019) 

青木 修

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 維護者指南》(2025-02-05)教材文件針對普通 Debian 使用者和未來的開發者,描述了使用 debmake 命令構建 Debian 套件的方法。

本指南注重描述現代的打包風格,同時提供了許多簡單的範例。

  • POSIX shell 指令碼打包
  • Python3 指令碼打包
  • C 和 Makefile/Autotools/CMake
  • 含有共享程式庫的多個二進位制套件的打包,等等。

本篇《Debian 維護者指南》可看作《Debian 新維護者手冊》的繼承文件。


內容目錄

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. Quality of packaging
7.1. Reformat debian/* files with wrap-and-sort
7.2. Validate debian/* files with debputy
8. Sanitization of the source
8.1. Fix with Files-Excluded
8.2. Fix with debian/rules clean
8.3. Fix with extend-diff-ignore
8.4. Fix with tar-ignore
8.5. Fix with git clean -dfx
9. More on packaging
9.1. Package customization
9.2. Customized debian/rules
9.3. Variables for debian/rules
9.4. 新上游版本
9.5. Manage patch queue with dquilt
9.6. Build commands
9.7. Note on sbuild
9.8. Special build cases
9.9. 上傳 orig.tar.gz
9.10. 跳過的上傳
9.11. 錯誤報告
10. 高階打包
10.1. Historical perspective
10.2. Current trends
10.3. Note on build system
10.4. 持續整合
10.5. 自主生成 (Bootstrapping)
10.6. 編譯強化
10.7. 可重現的構建
10.8. Substvar
10.9. 程式庫套件
10.10. 多體系架構
10.11. Debian 二進位制套件的拆分
10.12. 拆包的場景和例子
10.13. Multiarch library path
10.14. Multiarch header file path
10.15. Multiarch *.pc file path
10.16. 程式庫符號
10.17. Library package name
10.18. 程式庫變遷
10.19. binNMU 安全
10.20. 除錯資訊
10.21. -dbgsym package
10.22. debconf
11. Packaging with git
11.1. Salsa repository
11.2. Salsa account setup
11.3. Salsa CI service
11.4. Branch names
11.5. Patch unapplied Git repository
11.6. Patch applied Git repository
11.7. Note on gbp
11.8. Note on dgit
11.9. Patch by gbp-pq approach
11.10. Manage patch queue with gbp-pq
11.11. gbp import-dscs --debsnap
11.12. Note on dgit-maint-debrebase workflow
11.13. Quasi-native Debian packaging
12. 小技巧
12.1. 在 UTF-8 環境下構建
12.2. UTF-8 轉換
12.3. Hints for Debugging
13. Tool usages
13.1. debdiff
13.2. dget
13.3. mk-origtargz
13.4. origtargz
13.5. git deborig
13.6. dpkg-source -b
13.7. dpkg-source -x
13.8. debc
13.9. piuparts
13.10. bts
14. 更多範例
14.1. 挑選最好的模板
14.2. 無 Makefile(shell,命令列介面)
14.3. Makefile(shell,命令列介面)
14.4. pyproject.toml (Python3, CLI)
14.5. Makefile(shell,圖形介面)
14.6. pyproject.toml (Python3, GUI)
14.7. Makefile(單個二進位制套件)
14.8. Makefile.in + configure(單個二進位制套件)
14.9. Autotools(單個二進位制檔案)
14.10. CMake(單個二進位制套件)
14.11. Autotools(多個二進位制套件)
14.12. CMake(多個二進位制套件)
14.13. 國際化
14.14. 細節
15. debmake(1) 手冊頁
15.1. 名稱
15.2. 概述
15.3. 描述
15.3.1. 可選引數:
15.4. 範例
15.5. 幫助套件
15.6. 注意事項
15.7. 除錯
15.8. 作者
15.9. 許可證
15.10. 參見
16. debmake options
16.1. Shortcut options (-a, -i)
16.2. debmake -b
16.3. debmake -cc
16.4. Snapshot upstream tarball (-d, -t)
16.5. debmake -j
16.6. debmake -k
16.7. debmake -P
16.8. debmake -T
16.9. debmake -x