Debian Developer's Reference

Developer's Reference Team

Andreas Barth

Adam Di Carlo

Raphaël Hertzog

Lucas Nussbaum

Christian Schwarz

Ian Jackson

ver. 3.4.8

This manual is free software; you may redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

This is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

A copy of the GNU General Public License is available as /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution or on the World Wide Web at the GNU web site. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

If you want to print this reference, you should use the pdf version. This page is also available in French, German and Japanese.


Table of Contents

1. Scope of This Document
2. Applying to Become a Maintainer
2.1. Getting started
2.2. Debian mentors and sponsors
2.3. Registering as a Debian developer
3. Debian Developer's Duties
3.1. Package Maintainer's Duties
3.1.1. Work towards the next stable release
3.1.2. Maintain packages in stable
3.1.3. Manage release-critical bugs
3.1.4. Coordination with upstream developers
3.2. Administrative Duties
3.2.1. Maintaining your Debian information
3.2.2. Maintaining your public key
3.2.3. Voting
3.2.4. Going on vacation gracefully
3.2.5. Retiring
3.2.6. Returning after retirement
4. Resources for Debian Developers
4.1. Mailing lists
4.1.1. Basic rules for use
4.1.2. Core development mailing lists
4.1.3. Special lists
4.1.4. Requesting new development-related lists
4.2. IRC channels
4.3. Documentation
4.4. Debian machines
4.4.1. The bugs server
4.4.2. The ftp-master server
4.4.3. The www-master server
4.4.4. The people web server
4.4.5. The VCS servers
4.4.6. chroots to different distributions
4.5. The Developers Database
4.6. The Debian archive
4.6.1. Sections
4.6.2. Architectures
4.6.3. Packages
4.6.4. Distributions
4.6.5. Release code names
4.7. Debian mirrors
4.8. The Incoming system
4.9. Package information
4.9.1. On the web
4.9.2. The dak ls utility
4.10. The Package Tracking System
4.10.1. The PTS email interface
4.10.2. Filtering PTS mails
4.10.3. Forwarding VCS commits in the PTS
4.10.4. The PTS web interface
4.11. Developer's packages overview
4.12. Debian's FusionForge installation: Alioth
4.13. Goodies for Developers
4.13.1. LWN Subscriptions
4.13.2. Hosting Discount
5. Managing Packages
5.1. New packages
5.2. Recording changes in the package
5.3. Testing the package
5.4. Layout of the source package
5.5. Picking a distribution
5.5.1. Special case: uploads to the stable and oldstable distributions
5.5.2. Special case: uploads to testing/testing-proposed-updates
5.6. Uploading a package
5.6.1. Uploading to ftp-master
5.6.2. Delayed uploads
5.6.3. Security uploads
5.6.4. Other upload queues
5.6.5. Notification that a new package has been installed
5.7. Specifying the package section, subsection and priority
5.8. Handling bugs
5.8.1. Monitoring bugs
5.8.2. Responding to bugs
5.8.3. Bug housekeeping
5.8.4. When bugs are closed by new uploads
5.8.5. Handling security-related bugs
5.9. Moving, removing, renaming, adopting, and orphaning packages
5.9.1. Moving packages
5.9.2. Removing packages
5.9.3. Replacing or renaming packages
5.9.4. Orphaning a package
5.9.5. Adopting a package
5.10. Porting and being ported
5.10.1. Being kind to porters
5.10.2. Guidelines for porter uploads
5.10.3. Porting infrastructure and automation
5.10.4. When your package is not portable
5.10.5. Marking non-free packages as auto-buildable
5.11. Non-Maintainer Uploads (NMUs)
5.11.1. When and how to do an NMU
5.11.2. NMUs and debian/changelog
5.11.3. Using the DELAYED/ queue
5.11.4. NMUs from the maintainer's point of view
5.11.5. Source NMUs vs Binary-only NMUs (binNMUs)
5.11.6. NMUs vs QA uploads
5.11.7. NMUs vs team uploads
5.12. Collaborative maintenance
5.13. The testing distribution
5.13.1. Basics
5.13.2. Updates from unstable
5.13.3. Direct updates to testing
5.13.4. Frequently asked questions
6. Best Packaging Practices
6.1. Best practices for debian/rules
6.1.1. Helper scripts
6.1.2. Separating your patches into multiple files
6.1.3. Multiple binary packages
6.2. Best practices for debian/control
6.2.1. General guidelines for package descriptions
6.2.2. The package synopsis, or short description
6.2.3. The long description
6.2.4. Upstream home page
6.2.5. Version Control System location
6.3. Best practices for debian/changelog
6.3.1. Writing useful changelog entries
6.3.2. Common misconceptions about changelog entries
6.3.3. Common errors in changelog entries
6.3.4. Supplementing changelogs with NEWS.Debian files
6.4. Best practices for maintainer scripts
6.5. Configuration management with debconf
6.5.1. Do not abuse debconf
6.5.2. General recommendations for authors and translators
6.5.3. Templates fields definition
6.5.4. Templates fields specific style guide
6.6. Internationalization
6.6.1. Handling debconf translations
6.6.2. Internationalized documentation
6.7. Common packaging situations
6.7.1. Packages using autoconf/automake
6.7.2. Libraries
6.7.3. Documentation
6.7.4. Specific types of packages
6.7.5. Architecture-independent data
6.7.6. Needing a certain locale during build
6.7.7. Make transition packages deborphan compliant
6.7.8. Best practices for .orig.tar.{gz,bz2,xz} files
6.7.9. Best practices for debug packages
6.7.10. Best practices for meta-packages
7. Beyond Packaging
7.1. Bug reporting
7.1.1. Reporting lots of bugs at once (mass bug filing)
7.2. Quality Assurance effort
7.2.1. Daily work
7.2.2. Bug squashing parties
7.3. Contacting other maintainers
7.4. Dealing with inactive and/or unreachable maintainers
7.5. Interacting with prospective Debian developers
7.5.1. Sponsoring packages
7.5.2. Advocating new developers
7.5.3. Handling new maintainer applications
8. Internationalization and Translations
8.1. How translations are handled within Debian
8.2. I18N & L10N FAQ for maintainers
8.2.1. How to get a given text translated
8.2.2. How to get a given translation reviewed
8.2.3. How to get a given translation updated
8.2.4. How to handle a bug report concerning a translation
8.3. I18N & L10N FAQ for translators
8.3.1. How to help the translation effort
8.3.2. How to provide a translation for inclusion in a package
8.4. Best current practice concerning l10n
A. Overview of Debian Maintainer Tools
A.1. Core tools
A.1.1. dpkg-dev
A.1.2. debconf
A.1.3. fakeroot
A.2. Package lint tools
A.2.1. lintian
A.2.2. debdiff
A.3. Helpers for debian/rules
A.3.1. debhelper
A.3.2. dh-make
A.3.3. equivs
A.4. Package builders
A.4.1. cvs-buildpackage
A.4.2. debootstrap
A.4.3. pbuilder
A.4.4. sbuild
A.5. Package uploaders
A.5.1. dupload
A.5.2. dput
A.5.3. dcut
A.6. Maintenance automation
A.6.1. devscripts
A.6.2. autotools-dev
A.6.3. dpkg-repack
A.6.4. alien
A.6.5. debsums
A.6.6. dpkg-dev-el
A.6.7. dpkg-depcheck
A.7. Porting tools
A.7.1. quinn-diff
A.7.2. dpkg-cross
A.8. Documentation and information
A.8.1. docbook-xml
A.8.2. debiandoc-sgml
A.8.3. debian-keyring
A.8.4. debian-maintainers
A.8.5. debview