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.

This guide was made using the following previous documents as its reference:

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

本ガイドの最新版は以下から入手できます:

概要

This “Guide for Debian Maintainers” (2026-02-08) tutorial guide describes the building of the Debian package to ordinary Debian users and prospective developers using the debmake command.

本ガイドは現代的なパケージングのスタイルにフォーカスし多くの単純な例とともに提供されます。

  • POSIX シェルスクリプトのパッケージング
  • Python3 スクリプトのパッケージング
  • Makefile/Autotools/CMake を使う C
  • 共有ライブラリー等を含む複数バイナリーパッケージ

本「Debian メンテナー用ガイド」は「Debian 新メンテナガイド」の後継書と見なせます。


目次

1. 序文
2. Overview
3. Prerequisites
3.1. People around Debian
3.2. How to contribute
3.3. Debianにおける社会ダイナミクス
3.4. Technical reminders
3.5. Debian documentation
3.6. Help resources
3.7. Archive situation
3.8. Contribution approaches
3.9. Novice contributor and maintainer
4. Tool Setups
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 proxy
4.10. Private Debian repository
4.11. Virtual machines
4.12. Local network with virtual machines
5. Simple packaging
5.1. Packaging tarball
5.2. Big picture
5.3. What is debmake?
5.4. What is debuild?
5.5. Step 1: Get the upstream source
5.6. Step 2: Generate template files with debmake
5.7. Step 3: Modification to the template files
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. Packaging workflow
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. Check packaging with cme
9. Sanitization of the source
9.1. Fix with Files-Excluded
9.2. Fix with debian/rules clean
9.3. Fix with extend-diff-ignore
9.4. Fix with tar-ignore
9.5. Fix with git clean -dfx
10. More on packaging
10.1. Package customization
10.2. Customized debian/rules
10.3. Variables for debian/rules
10.4. アップストリームソフトウェアの新版更新
10.5. Manage patch queue with dquilt
10.6. Build commands
10.7. Note on sbuild
10.8. Special build cases
10.9. Upload orig.tar.xz
10.10. スキップされたアップロード
10.11. Bug reports
11. 上級パッケージング
11.1. Historical perspective
11.2. Current trends
11.3. Note on build system
11.4. Continuous integration
11.5. Bootstrapping
11.6. Compiler hardening
11.7. Reproducible build
11.8. Substvar
11.9. Library package
11.10. マルチアーチ
11.11. Split of a Debian binary package
11.12. Package split scenario and examples
11.13. Multiarch library path
11.14. Multiarch header file path
11.15. Multiarch *.pc file path
11.16. Library symbols
11.17. Library package name
11.18. Library transition
11.19. binNMU safe
11.20. Debugging information
11.21. -dbgsym package
11.22. debconf
12. Packaging with git
12.1. Salsa repository
12.2. Salsa account setup
12.3. Salsa CI service
12.4. Branch names
12.5. Patch unapplied Git repository
12.6. Patch by gbp-pq approach
12.7. Manage patch queue with gbp-pq
12.8. gbp import-dscs --debsnap
12.9. Note on gbp
12.10. The Git repository browser
12.11. Git commit history organization
12.12. Quasi-native Debian packaging
12.13. Patch applied Git repository
12.14. Note on dgit
13. Tips
13.1. Build under UTF-8
13.2. UTF-8 変換
13.3. Hints for Debugging
14. Tool usages
14.1. debdiff
14.2. dget
14.3. mk-origtargz
14.4. origtargz
14.5. git deborig
14.6. dpkg-source -b
14.7. dpkg-source -x
14.8. debc
14.9. bts
14.10. dpkg-depcheck
15. More Examples
15.1. Cherry-pick templates
15.2. No Makefile (shell, CLI)
15.3. Makefile (shell, CLI)
15.4. pyproject.toml (Python3, CLI)
15.5. Makefile (shell, GUI)
15.6. pyproject.toml (Python3, GUI)
15.7. Makefile (single-binary package)
15.8. Makefile.in + configure (single-binary package)
15.9. Autotools (single-binary package)
15.10. CMake (single-binary package)
15.11. Autotools (multi-binary package)
15.12. CMake (multi-binary package)
15.13. Internationalization
15.14. Details
16. debmake(1) manpage
16.1. NAME
16.2. SYNOPSIS
16.3. DESCRIPTION
16.4. Positional arguments
16.5. Options
16.6. EXAMPLES
16.7. HELPER PACKAGES
16.8. CAVEAT
16.9. DEBUG
16.10. AUTHOR
16.11. LICENSE
16.12. SEE ALSO
17. debmake options
17.1. Shortcut option (-i)
17.2. debmake -b
17.3. debmake -B
17.4. debmake -x