Appendix A. Overview of Debian Maintainer Tools

Table of Contents

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

This section contains a rough overview of the tools available to maintainers. The following is by no means complete or definitive, but just a guide to some of the more popular tools.

Debian maintainer tools are meant to aid developers and free their time for critical tasks. As Larry Wall says, there's more than one way to do it.

Some people prefer to use high-level package maintenance tools and some do not. Debian is officially agnostic on this issue; any tool that gets the job done is fine. Therefore, this section is not meant to stipulate to anyone which tools they should use or how they should go about their duties of maintainership. Nor is it meant to endorse any particular tool to the exclusion of a competing tool.

Most of the descriptions of these packages come from the actual package descriptions themselves. Further information can be found in the package documentation itself. You can also see more info with the command apt-cache show package-name.

The following tools are pretty much required for any maintainer.

According to the Free On-line Dictionary of Computing (FOLDOC), `lint' is: "A Unix C language processor which carries out more thorough checks on the code than is usual with C compilers." Package lint tools help package maintainers by automatically finding common problems and policy violations in their packages.

debdiff (from the devscripts package, Section A.6.1, “devscripts) compares file lists and control files of two packages. It is a simple regression test, as it will help you notice if the number of binary packages has changed since the last upload, or if something has changed in the control file. Of course, some of the changes it reports will be all right, but it can help you prevent various accidents.

You can run it over a pair of binary packages:

debdiff package_1-1_arch.deb package_2-1_arch.deb

Or even a pair of changes files:

debdiff package_1-1_arch.changes package_2-1_arch.changes

For more information please see debdiff(1).

Package building tools make the process of writing debian/rules files easier. See Section 6.1.1, “Helper scripts” for more information about why these might or might not be desired.

The following packages help with the package building process, general driving of dpkg-buildpackage, as well as handling supporting tasks.

The following packages help automate or simplify the process of uploading packages into the official archive.

The following tools help automate different maintenance tasks, from adding changelog entries or signature lines and looking up bugs in Emacs to making use of the newest and official config.sub.

dpkg-depcheck (from the devscripts package, Section A.6.1, “devscripts) runs a command under strace to determine all the packages that were used by the said command.

For Debian packages, this is useful when you have to compose a Build-Depends line for your new package: running the build process through dpkg-depcheck will provide you with a good first approximation of the build-dependencies. For example:

dpkg-depcheck -b debian/rules build

dpkg-depcheck can also be used to check for run-time dependencies, especially if your package uses exec(2) to run other programs.

For more information please see dpkg-depcheck(1).

The following tools are helpful for porters and for cross-compilation.

The following packages provide information for maintainers or help with building documentation.