Debian Developer's Reference

Andreas Barth

Adam Di Carlo

Raphaël Hertzog

Lucas Nussbaum

Christian Schwarz

Ian Jackson

ver. 3.4.20


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 and Debian Maintainers
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 Stable, testing, and unstable More information about the testing distribution Experimental
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 Debian Package Tracker
4.11. Developer's packages overview
4.12. Debian's FusionForge installation: Alioth
4.13. Goodies for Debian Developers and Debian Maintainers
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. Notifications
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 The Security Tracker Confidentiality Security Advisories Preparing packages to address security issues Uploading the fixed package
5.9. Moving, removing, renaming, orphaning, adopting, and reintroducing packages
5.9.1. Moving packages
5.9.2. Removing packages Removing packages from Incoming
5.9.3. Replacing or renaming packages
5.9.4. Orphaning a package
5.9.5. Adopting a package
5.9.6. Reintroducing packages
5.10. Porting and being ported
5.10.1. Being kind to porters
5.10.2. Guidelines for porter uploads Recompilation or binary-only NMU When to do a source NMU if you are a porter
5.10.3. Porting infrastructure and automation Mailing lists and web pages Porter tools wanna-build
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 Out-of-date Removals from testing Circular dependencies Influence of package in testing Details
5.13.3. Direct updates to testing
5.13.4. Frequently asked questions What are release-critical bugs, and how do they get counted? How could installing a package into testing possibly break other packages?
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 Vcs-Browser Vcs-*
6.3. Best practices for debian/changelog
6.3.1. Writing useful changelog entries
6.3.2. Selecting the upload urgency
6.3.3. Common misconceptions about changelog entries
6.3.4. Common errors in changelog entries
6.3.5. 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 Write correct English Be kind to translators Unfuzzy complete translations when correcting typos and spelling Do not make assumptions about interfaces Do not use first person Be gender neutral
6.5.3. Templates fields definition Type string password boolean select multiselect note text error Description: short and extended description Choices Default
6.5.4. Template fields specific style guide Type field Description field String/password templates Boolean templates Select/Multiselect Notes Choices field Default field Default field
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 Pristine source Repackaged upstream source Changing binary 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) Usertags
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 Sponsoring a new package Sponsoring an update of an existing package
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. git-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. dpkg-dev-el
A.6.6. dpkg-depcheck
A.7. Porting tools
A.7.1. 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-el