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 help convenience 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 which 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 with 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.
12.1 dpkg-dev
dpkg-dev contains the tools (including dpkg-source)
required to unpack, build and upload Debian source packages. These utilities
contain the fundamental, low-level functionality required to create and
manipulated packages; as such, they are required for any Debian maintainer.
debconf provides a consistent interface to configuring packages
interactively. It is user interface independant, allowing end-users to
configure packages with a text-only interface, an HTML interface, or a dialog
interface. New interfaces can be added modularly.
You can find documentation for this package in the debconf-doc
package.
Many feel that this system should be used for all packages requiring
interactive configuration. debconf is not currently required by
Debian Policy, however, that may change in the future.
12.4 debhelper
debhelper is a collection of programs that can be used in
debian/rules to automate common tasks related to building binary
Debian packages. Programs are included to install various files into your
package, compress files, fix file permissions, integrate your package with the
Debian menu system.
Unlike some approaches, debhelper is broken into several small,
granular commands which act in a consistent manner. As such, it allows a
greater granularity of control than some of the other "debian/rules
tools".
There are a number of little debhelper add-on packages, too
transient to document. You can see the list of most of them by doing
apt-cache search ^dh-.
12.5 debmake
debmake, a pre-cursor to debhelper, is a less
granular debian/rules assistant. It includes two main programs:
deb-make, which can be used to help a maintainer convert a regular
(non-Debian) source archive into a Debian source package; and
debstd, which incorporates in one big shot the same sort of
automated functions that one finds in debhelper.
The consensus is that debmake is now deprecated in favor of
debhelper. However, it's not a bug to use debmake.
12.6 yada
yada is another packaging helper tool. It uses a
debian/packages file to auto-generate debian/rules
other necessary files in the debian/ subdirectory.
Note that yada is called "essentially unmaintained" by
it's own maintainer, Charles Briscoe-Smith. As such, it can be considered
deprecated.
12.7 equivs
equivs is another package for making packages. It is often
suggested for local use if you need to make a package simply to fulfill
dependencies. It is also sometimes used when making ``meta-packages'', which
are packages whose only purpose is to depend on other packages.
12.8 cvs-buildpackage
cvs-buildpackage provides the capability to inject or import
Debian source packages into a CVS repository, build a Debian package from the
CVS repository, and helps in integrating upstream changes into the repository.
These utilities provide an infrastructure to facilitate the use of CVS by
Debian maintainers. This allows one to keep separate CVS branches of a package
for stable, unstable, and possibly experimental
distributions, along with the other benefits of a version control system.
12.9 dupload
dupload is a package and a script to automagically upload Debian
packages to the Debian archive, to log the upload, and to send mail about the
upload of a package. You can configure it for new upload locations or methods.
12.10 dput
The dput package and script does much the same thing as
dupload, but in a different way. It has some features over
dupload, such as the ability to check the GnuPG signature and
checksums before uploading, and the possibility of running
dinstall in dry-run mode after the upload.
12.11 fakeroot
fakeroot simulates root privileges. This enables you to build
packages without being root (packages usually want to install files with root
ownership). If you have fakeroot installed, you can build
packages as a user: dpkg-buildpackage -rfakeroot.
12.12 debootstrap
The debootstrap package and script allows you to
"bootstrap" a Debian base system into any part of your filesystem.
By "base system", we mean the bare minimum of packages required to
operate and install the rest of the system.
Having a system link this can be useful in many ways. For instance, you can
chroot into it if you want to test your build depends. Or, you
can test how your package behaves when installed into a bare base system.
12.13 devscripts
devscripts is a package containing a few wrappers and tools which
you may find helpful for maintaining your Debian packages. Example scripts
include debchange and dch, which manipulate your
debian/changelog file from the command-line, and
debuild, which is a wrapper around dpkg-buildpackage.
12.14 dpkg-dev-el
dpkg-dev-el is an Emacs lisp package which provides assistance
when editing some of the files in the debian directory of your
package. For instance, when editing debian/changelog, there are
handy functions for finalizing a version and listing the package's current
bugs.
12.15 debget
debget is a package containing a convenient script which can be
helpful in downloading files from the Debian archive. You can use it to
download source packages, for instance (although apt-get source
package does pretty much the same thing).