<!--
Topics to be included:
- - add an intro/scope section
- bugs in upstream versions should be reported upstream!
- - pointer for useful tools for maintainers
+ - fill in ftp and www server discussion
-->
<toc sect>
- <chapt>Applying to Become a Maintainer
+ <chapt id="scope">Scope of This Document
+ <p>
+The purpose of this document is to provide an overview of the
+processes and resources used by Debian developers.
+ <p>
+The processes discussed within include how to become a maintainer
+(<ref id="new-maintainer">); how to upload new packages (<ref
+id="upload">); how and when to do interim releases of other
+maintainer's packages (<ref id="nmu">); how to move, remove, or orphan
+packages (<ref id="archive-manip">); and how to handle bug reports
+(<ref id="bug-handling">).
+ <p>
+The resources discussed in this reference include the mailing lists
+and servers (<ref id="servers">); a discussion of the structure of the
+Debian archive (<ref id="archive">); explanation of the different
+servers which accept package uploads (<ref id="upload-master">); and a
+discussion of resources which an help maintainers with the quality of
+their packages (<ref id="tools">).
+ <p>
+It should be clear that this reference does not discuss the details of
+the Debian package or how to generate Debian packages; that is
+discussed in the <url
+id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
+name="Debian Packaging Manual">. Nor is this reference intended to
+give details on standards for how Debian software must behave, which
+is documented in the <url
+id="http://www.debian.org/doc/debian-policy/" name="Debian Policy
+Manual">.
+
+
+ <chapt id="new-maintainer">Applying to Become a Maintainer
<sect>Getting started
<p>
So, you've read all the documentation, you understand what everything
in the <prgn/hello/ example package is for, and you're about to
-Debianise your favourite package. How do you actually become a Debian
-developer so that your work can be incorporated into the Project?
+Debianise your favourite piece of software. How do you actually
+become a Debian developer so that your work can be incorporated into
+the Project?
<p>
Firstly, subscribe to <email/debian-devel@lists.debian.org/ if you
haven't already. Send the word <tt/subscribe/ in the <em/Subject/ of
a mail to <email/debian-devel-REQUEST@lists.debian.org/. In case of
problems contact the list administrator at
-<email/listmaster@lists.debian.org/.
+<email/listmaster@lists.debian.org/. More information on available
+mailing lists can be found in <ref id="mailing-lists">.
<p>
You should subscribe and lurk for a bit before doing any coding, and
you should post about your intentions to work on something to avoid
duplicated effort.
<p>
-If you do not have a PGP key yet, generate one. You should probably
-read the PGP manual, since it has much important information which is
-critical to its security. Many more security failures are due to
-human error than to software failure or high-powered spy techniques.
- <p>
-Due to export restrictions by the United States government some Debian
-packages, including PGP, have been moved to an ftp site outside of the
-United States. You can find the current locations of those packages on
-<ftpsite/ftp.debian.org/ or <ftpsite/ftp.us.debian.org/ in the
-<ftppath>/pub/debian/README.non-US</ftppath> file.
- <p>
-If you live in a country where use of cryptography even for
-authentication is forbidden then please contact us so we can make
-special arrangements. This does not apply in France, where I believe
-only encryption and not authentication is forbidden.
+Another good list to subscribe to is
+<email/debian-mentors@lists.debian.org/. See <ref id="mentors"> for
+details. The IRC channel <tt/#debian/ on the Linux People IRC network
+(i.e., <tt/irc.debian.org/) can also be helpful.
<sect>Registering as a Debian developer
<p>
Before you decide to work in the Debian Project you have to read the
<url id="http://www.debian.org/social_contract" name="Debian Social
-Contract">.
+Contract">. Registering as a developer means that you agree with and
+pledge to uphold the Debian Social Contract; it is very important that
+maintainers are in accord with the essential ideas behind Debian
+GNU/Linux. Reading the <url
+id="http://www.gnu.org/gnu/manifesto.html" name="GNU Manifesto"> would
+also be a good idea.
+ <p>
+The process of registering as a developer is a process of verifying
+your identity and intentions. As the number of people working on
+Debian GNU/Linux has grown to over 400 people and our systems are used
+in several very important places we have to be careful about being
+compromised. Therefore, we need to verify new maintainers before we
+can give them accounts on our servers and letting them upload
+packages.
<p>
-After that, you should send a message to
-<email/new-maintainer@debian.org/ to register as an 'offical' Debian
-developer so that you will be able to upload your packages.
- <p>
-The message should say what you've done and who you are, and should
-ask for an account on <tt/master/ and to be subscribed to
-<email/debian-private@lists.debian.org/ (the developers-only mailing
-list). It should contain your PGP or RSA public key (extracted using
-<tt>pgp -kxa</tt> in the case of PGP; note that <tt/gpg/ integration
-is underway) for the database of keys which is distributed on the FTP
-server (<url
-id="ftp://ftp.debian.org/pub/debian/doc/debian-keyring.tar.gz">, or
-the <prgn>debian-keyring</prgn>> package). Please be sure to sign
-your request message with your chosen PGP or RSA key. In addition, you
-have to mention that you've read the ``Debian Social Contract'' (see
-above) and you are expected to know where to find the ``Debian Policy
-Manual'' and the ``Debian Packaging Manual.''
- <p>
-Please be sure to include your preferred login name on <tt/master/
-(seven characters or less), as well as the email address at which
-you'd prefer to be subscribed to
+Registration requires that the following information be sent to
+<email/new-maintainer@debian.org/ as part of the registration
+application:
+<list>
+ <item>
+Your name.
+ <item>
+Your preferred login name on <tt/master/ (seven characters or
+less<footnote>Can anyone clarify for me why logins on <tt>master</tt>
+cannot be eight characters?</footnote> ), as well as the email address
+at which you'd prefer to be subscribed to
<email/debian-private@lists.debian.org/ (typically this will be either
your primary mail address or your new <tt>debian.org</tt> address).
- <p>
-You should also include some mechanism by which we can verify your
-real-life identity. For example, any of the following mechanisms
-would suffice:
- <list compact>
<item>
-A PGP or RSA key signed by any well-known signature, such as any
-current Debian developer.
+A phone number where we can call you.
<item>
-A scanned (or physically mailed) copy of any formal documents
-certifying your identity (such as a birth certificate, national ID
-card, U.S. Driver's License, etc.). Please sign the image with your
-PGP or RSA key.
- </list>
-
-The following mechanisms are discouraged, but are acceptable if
-neither of the first two mechanisms is practical:
- <list compact>
+A statement of intention, that is, what package(s) you intend to work
+on, which Debian port you will be assisting, or how you intend to
+contribute to Debian.
<item>
-A pointer to a phone listing at which you could be reached (at our
-expense). This phone listing should be verifiable independently
-through external means such as a national directory-listing service or
-other authoritative source.
+A statement that you have read and agree to uphold the <url
+id="http://www.debian.org/social_contract" name="Debian Social
+Contract">.
<item>
-Any other mechanism by which you can establish your real-life identity
-with reasonable certainty.
+Some mechanism by which we can verify your real-life identity. For
+example, any of the following mechanisms would suffice:
+<list>
+ <item>
+A PGP key signed by any well-known signature, such as:
+<list>
+ <item>
+Any current Debian developer you have met <em/in real life/.
+ <item>
+Any formal certification service (such as Verisign, etc.) that
+verifies your identity. A certification that verifies your email
+address, and not you identity, is not sufficient.
+ </list>
+ <item>
+Alternatively, you may identify yourself with a scanned (or physically
+mailed) copy of any formal documents certifying your identity (such as
+a birth certificate, national ID card, U.S. Driver's License, etc.).
+If emailed, please sign the mail with your PGP key.
+ </list>
</list>
-
-We're sorry about the inconvenience of requiring proof of identity,
-but for the moment, such measures are unfortunately the only way we
-can ensure the security and reliability of our distribution.
+If you do not have a PGP key yet, generate one. Every developer needs
+a PGP key in order to sign and verify package uploads. You should read
+the PGP manual, since it has much important information which is
+critical to its security. Many more security failures are due to
+human error than to software failure or high-powered spy techniques.
+ <p>
+Your PGP key must be at least 1024 bits long. There is no reason to
+use a smaller key, and doing so would be much less secure. Your key
+must be signed with at least your own user ID. This prevents user ID
+tampering. You can do it by executing `<tt>pgp -ks
+<var/your_userid/</tt>'.
+ <p>
+If your PGP key isn't on public PGP key servers such as
+<tt>pgp.net</tt>, please read the documentation available locally
+<tt>/usr/doc/pgp/keyserv.doc</tt>. That document contains
+instructions on how to put your key on the public keyservers.
+ <p>
+Due to export restrictions by the United States government some Debian
+packages, including PGP, have been moved to an ftp site outside of the
+United States. You can find the current locations of those packages on
+<ftpsite/ftp.debian.org/ or <ftpsite/ftp.us.debian.org/ in the
+<ftppath>/pub/debian/README.non-US</ftppath> file.
+ <p>
+If you live in a country where use of cryptography even for
+authentication is forbidden then please contact us so we can make
+special arrangements. This does not apply in France, where I believe
+only encryption and not authentication is forbidden.
+ <p>
+Once you have all your information ready, and your public key is
+available on public key servers, send a message to
+<email/new-maintainer@debian.org/ to register as an offical Debian
+developer so that you will be able to upload your packages. This
+message must all the information discussed above. The message must
+also contain your PGP or RSA public key (extracted using <tt>pgp
+-kxa</tt> in the case of PGP; note that <tt/gpg/ integration is
+underway) for the database of keys which is distributed from
+<ftpsite/ftp.debian.org/ in
+<ftppath>/pub/debian/doc/debian-keyring.tar.gz</ftppath>, or the
+<prgn>debian-keyring</prgn> package). Please be sure to sign your
+request message with your chosen PGP or RSA key.
<p>
Once this information is received and processed, you should be
contacted with information about your new Debian maintainer account.
-If you don't hear anything within 7-10 days, please re-send your
+If you don't hear anything within 7-14 days, please re-send your
original message--the new-maintainer volunteers are typically
overworked, and mistakes do occasionally happen.
- <sect>Debian Mentors
+ <sect id="mentors">Debian Mentors
<p>
There is a mailing list called <email/debian-mentors@lists.debian.org/
which has been set up for newbie maintainers who seek help with
-initial packaging and other developer-related issues.
- <p>
-Every new developer is invited to subscribe to that list (see <ref
+initial packaging and other developer-related issues. Every new
+developer is invited to subscribe to that list (see <ref
id="mailing-lists"> for details).
<p>
Those who prefer one-on-one help (e.g., via private emails) should
help.
- <chapt>Internet Servers
+ <chapt id="servers">Mailing Lists and Servers
<sect id="mailing-lists">Mailing lists
<p>
The mailing list server is at <tt/lists.debian.org/. Mail
<tt/debian-<var/foo/-REQUEST@lists.debian.org/, where
<tt/debian-<var/foo// is the name of the list, with the word
-<tt/subscribe/ in the Subject to subscribe or <tt/unsubscribe/ to
-unsubscribe.
+<tt/subscribe/ in the <em/Subject/ to subscribe or <tt/unsubscribe/ to
+unsubscribe. More detailed instructions on how to subscribe and
+unsubscribe to the mailing lists can be found at <url
+id="http://www.debian.org/MailingLists/subscribe">, <url
+id="ftp://ftp.debian.org/debian/doc/mailing-lists.txt"> or locally in
+<tt>/usr/doc/debian/mailing-lists.txt</tt> if you have the
+<prgn>doc-debian</prgn> package installed.
<p>
When replying to messages on the mailing list, please do not send a
carbon copy (<tt/CC/--this does not mean `courtesy copy') to the
<email/debian-policy@lists.debian.org/,
<email/debian-user@lists.debian.org/,
<email/debian-announce@lists.debian.org/, or
-<email/debian-devel-announce@lists.debian.org/. Cross-posting is
+<email/debian-devel-announce@lists.debian.org/. Additional mailing
+lists are available for special purposes; see <url
+id="http://www.debian.org/MailingLists/subscribe">. Cross-posting is
discouraged.
<p>
+<email/debian-private@lists.debian.org/ is a special mailing lists for
+private discussions amongst Debian developers. It is meant to be used
+for posts which for whatever reason should not be published
+publically. As such, it is a low volume list, and users are urged not
+to use <email/debian-private@lists.debian.org/ unless it is really
+necessary. Moreover, do <em/not/ forward email from that list to
+anyone.
+ <p>
As ever on the net, please trim down the quoting of articles you're
replying to. In general, please adhere to the usual conventions for
posting messages.
+ <p>
+Online archives of mailing lists are available at <url
+id="http://www.debian.org/Lists-Archives/">.
<sect>The master server
<p>
- <chapt>The Debian Archive
+ <chapt id="archive">The Debian Archive
<sect>Overview
<p>
are not officially part of Debian.
<p>
For example, every package in the main distribution must fully comply
-with the <em>Debian Free Software Guidelines</> (DFSG) and with all
-other policy requirements as described in the <em>Debian Policy
-Manual</em>. (The DFSG is our definition of ``free software.'' Check
-out the Debian Policy Manual for details.)
+with the <url id="http://www.debian.org/social_contract#guidelines"
+name="Debian Free Software Guidelines"> (DFSG) and with all other
+policy requirements as described in the <url
+id="http://www.debian.org/doc/debian-policy/" name="Debian Policy
+Manual">. (The DFSG is our definition of ``free software.'' Check out
+the Debian Policy Manual for details.)
<p>
The packages which do not apply to the DFSG are placed in the
-<em>non-free</> section. These packages are not considered as part of
+<em/non-free/ section. These packages are not considered as part of
the Debian distribution, though we support their use, and we provide
infrastructure (such as our bug-tracking system and mailing lists) for
non-free software packages.
<p>
-Packages in the <em>contrib</> section have to apply to the DFSG, but
+Packages in the <em/contrib/ section have to apply to the DFSG, but
fail other requirements. For instance, they might depend on non-free
packages.
<p>
-(The Debian Policy Manual contains a more exact definition of the
-three sections. This is just meant to be an introduction.)
+(The <url id="http://www.debian.org/doc/debian-policy/" name="Debian
+Policy Manual"> contains a more exact definition of the three
+sections. This is just meant to be an introduction.)
<p>
The separation of the three sections at the top-level of the archive
is important for all people who want to distribute Debian, either via
Debian archive (the symlinks from the top-level directory to the
distributions themselves is for backwards compatability and
deprecated).
+
+ <sect1>Stable, unstable, and sometimes frozen
<p>
There is always a distribution called <em/stable/ (residing in
<tt>dists/stable</tt>) and one called <em/unstable/ (residing in
overriding the old <em/stable/ distribution, which is removed at that
time.
<p>
-This development cycle is based on the assumption that the `unstable'
-distribution becomes `stable' after passing a period of testing as
-`frozen'. Unfortunately, even once a distribution is considered
-`stable', a few bugs inevitably remain--that's why the stable
-distribution is updated every now and then. However, these updates are
-tested very carefully and have to be acknowledged individually to
-reduce the risk of introducing new bugs. You can find proposed
-additions to `stable' in the <tt/proposed-updates/ directory.
+This development cycle is based on the assumption that the
+<em/unstable/ distribution becomes <em/stable/ after passing a period
+of testing as <em/frozen/. Unfortunately, even once a distribution is
+considered <em/stable/, a few bugs inevitably remain--that's why the
+stable distribution is updated every now and then. However, these
+updates are tested very carefully and have to be acknowledged
+individually to reduce the risk of introducing new bugs. You can find
+proposed additions to <em/stable/ in the <tt/proposed-updates/
+directory.
<p>
Note, that development is continued during the ``freeze'' period,
-since a new `unstable' distribution is be created when the older
-`unstable' is moved to `frozen'.
+since a new <em/unstable/ distribution is be created when the older
+<em/unstable/ is moved to <em/frozen/.
<p>
In summary, there is always a <em/stable/ and an <em/unstable/
distribution available, and the <em/frozen/ distribution shows up for
a month or so from time to time.
- <sect>Release code names
+
+ <sect1>Experimental
+ <p>
+The <em/experimental/ distribution is a specialty distribution. It is
+not a full distribution in the same sense that 'stable' and 'unstable'
+are. Instead, it is meant to be a temporary staging area for highly
+experimental software where there's a good chance that the software
+could break your system. Users who download and install packages from
+<em/experimental/ are expected to have been duly warned. In short,
+all bets are off for the <em/experimental/ distribution.
+ <p>
+Developers should be very selective in the use of the
+<em/experimental/ distribution. Even if a package is highly unstable,
+it could well still go into <em/unstable/; just state a few warnings
+in the description. However, if there is a chance that the software
+could do grave damage to a system, it might be better to put it into
+<em/experimental/.
+ <p>
+For instance, an experimental encrypted filesystem should probably go
+into experimental. A new, beta, version of some software which uses
+completely different configuration might go into experimental at the
+maintainer's discretion. New software which isn't likely to damage
+your system can go into <em/unstable/.
+
+
+ <sect id="codenames">Release code names
<p>
Every released Debian distribution has a <em/code name/: Debian 1.1 is
called <em/buzz/, Debian 1.2 <em/rex/, Debian 1.3 <em/bo/, Debian 2.0
</list>
- <sect>Uploading a package
+ <sect id="uploading">Uploading a package
<sect1>Generating the changes file
<p>
</list>
<p>
All of them are mandatory for a Debian upload. See the list of
-control fields in the <em/Debian Packaging Manual/ for the contents of
-these fields.
+control fields in the <url
+id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
+name="Debian Packaging Manual"> for the contents of these fields.
<p>
Notably, the <tt/Distribution/ field, which originates from the
<tt>debian/changelog</tt> file, should indicate which distribution the
-package is intended for. There are three possible values for this
-field: `stable', `unstable', or `frozen'; these values can also be
-combined. For instance, if you have a crucial security fix release of
-a package, and the package has not diverged between the `stable' and
-`unstable' distributions, then you might put `stable unstable' in the
-<tt>debian/changelog</tt>'s distribution field. Or, if Debian has
-been frozen, and you want to get a bug-fix release into `frozen', you
-would set the distribution to `frozen unstable'. Note that setting
-the distribution to `stable' means that the pacakge will be placed
-into the <tt>proposed-updates</tt> directory of the Debian archive for
-further testing, before it is actually included in `stable'.
+package is intended for. There are four possible values for this
+field: <em/stable/, <em/unstable/, <em/frozen/, or <em/experimental/;
+these values can also be combined. For instance, if you have a
+crucial security fix release of a package, and the package has not
+diverged between the <em/stable/ and <em/unstable/ distributions, then
+you might put <tt/stable unstable/ in the <tt>debian/changelog</tt>'s
+distribution field. Or, if Debian has been frozen, and you want to
+get a bug-fix release into <em/frozen/, you would set the distribution
+to <tt/frozen unstable/. Note that setting the distribution to
+<tt/stable/ means that the pacakge will be placed into the
+<tt>proposed-updates</tt> directory of the Debian archive for further
+testing, before it is actually included in <em/stable/. Also note
+that it never makes sense to combine the <em/experimental/
+distribution with anything else.
<p>
The first time a version is uploaded which corresponds to a particular
source should be uploaded, possibly by using the <tt/-sa/ flag.
- <sect1>Checking the package prior to upload
+ <sect1 id="upload-checking">Checking the package prior to upload
<p>
Before you upload your package, you should do basic testing on it.
Make sure you try the following activities (you'll need to have an
</list>
- <sect1>Transferring the files to master
+ <sect1 id="upload-master">Transferring the files to master
<p>
To upload a package, you need a personal account on
<ftpsite>master.debian.org</ftpsite>. All maintainers should already
When a package is uploaded an announcement should be posted to one of
the debian-changes lists. The announcement should give the (source)
package name and version number, and a very short summary of the
-changes, in the <tt/Subject/ field, and should contain the PGP-signed
+changes, in the <em/Subject/ field, and should contain the PGP-signed
<tt/.changes/ file. Some additional explanatory text may be added
before the start of the <tt/.changes/ file.
<p>
correct your control file or file a bug against <tt/ftp.debian.org/
using the BTS.
- <sect>Interim releases
+ <sect id="nmu">Interim releases
<p>
Under certain circumstances it is necessary for someone other than the
usual package maintainer to make a release of a package. For example,
ensures that everyone knows that the bug was fixed in an NMU; however
the bug is left open until the changes in the NMU are incorporated
"officially" into the package by the offical package maintainer.
-
<p>
-The normal maintainer should do at least one of
+The normal maintainer should do at least one of the following:
<list compact>
<item>
apply the diff,
that bug reports will go to you.
- <chapt>Moving, removing, renaming, and orphaning packages
+ <chapt id="archive-manip">Moving, Removing, Renaming, and Orphaning Packages
<p>
Some archive manipulation operation are not automated in the Debian
upload process. This chapter gives guidelines in what to do in these
Sometimes a package will change either it's section or it's
subsection. For instance, a package from the `non-free' section might
be GPL'd in a later version; in this case you should consider moving
-it to `main' or `contrib' (see the <em/Policy Manual/ for guidelines).
+it to `main' or `contrib' (see the <url
+id="http://www.debian.org/doc/debian-policy/" name="Debian Policy
+Manual"> for guidelines).
<p>
In this case, it is sufficient to edit the package control information
-normally and re-upload the package (see the <em/Packaging Manual/ for
+normally and re-upload the package (see the <url
+id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
+name="Debian Packaging Manual"> for
details). Carefully examine the installation log sent to you when the
package is installed into the archive. If for some reason the old
location of the package remains, file a bug against
<prgn/ftp.debian.org/ asking that the old location be removed. Give
details on what you did, since it might be a <prgn/dinstall/ bug.
+
<sect>Removing packages
<p>
If for some reason you want to completely remove a package (say, if it
If in doubt concerning whether a package is disposable, email
<email/debian-devel@lists.debian.org/ asking for opinions.
+
<sect>Replacing or renaming packages
<p>
Sometimes you made a mistake naming the package and you need to rename
it. In this case, you need to follow a two-step process. First, set
your <tt>debian/control</tt> file to replace and conflict with the
-obsolete name of the package (see the <em/Packaging Manual/ for
-details). Once you've uploaded that package, and the package has
-moved into the archive, file a bug against <prgn/ftp.debian.org/
-asking to remove the package with the obsolete name.
+obsolete name of the package (see the <url
+id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
+name="Debian Packaging Manual"> for details). Once you've uploaded
+that package, and the package has moved into the archive, file a bug
+against <prgn/ftp.debian.org/ asking to remove the package with the
+obsolete name.
+
<sect>Orphaning a package
<p>
maintainer.
- <chapt>Handling bug reports
+ <chapt id="bug-handling">Handling Bug Reports
<sect>Monitoring bugs
<p>
package maintainer, you are not empowered to actually close the bug
(unless you secure permission from the maintainer).
+
<sect>When bugs are closed by new uploads
<p>
If you fix a bug in your packages, it is your responsibility as the
<email/<var/XXX/-done@bugs.debian.org/, where <var/XXX/ is your bug
number.
- <sect>Lintian reports
+ <sect id="lintian-reports">Lintian reports
<p>
You should periodically get the new <prgn/lintian/ from `unstable' and
check over all your packages. Alternatively you can check for you're
send the bug report to <email/maintonly@bugs.debian.org/ so that the
bug report is not forwarded to the bug distribution mailing list.
-
+
+ <chapt id="tools">Whirlwind Tour of Debian Maintainer Tools
+ <p>
+This section contains a rough overview of the tools available to
+maintainers. These tools are meant to help convenience developers and
+free their time for critical tasks.
+ <p>
+Some people prefer to use high-level package maintenance tools and
+some do not. Debian is officially agnostic on this issue, other than
+making the attempt to accomodate the reasonable wishes of developers.
+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.
+ <p>
+Most of the descriptions of these packages come from the actual
+package descriptions themselves.
+
+ <sect id="dpkg-dev">
+ <heading><prgn>dpkg-dev</prgn>
+ <p>
+<prgn>dpkg-dev</prgn> contains the tools (including
+<prgn/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.
+
+ <sect id="lintian">
+ <heading><prgn>lintian</prgn>
+ <p>
+<prgn>Lintian</prgn> dissects Debian packages and reports bugs and
+policy violations. It contains automated checks for many aspects of
+Debian policy as well as some checks for common errors. The use of
+<prgn>lintian</prgn> has already been discussed in <ref
+id="upload-checking"> and <ref id="lintian-reports">.
+
+ <sect id="debhelper">
+ <heading><prgn>debhelper</prgn>
+ <p>
+<prgn>debhelper</prgn> is a collection of programs that can be used in
+<tt>debian/rules</tt> 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.
+ <p>
+Unlike <prgn>debmake</prgn>, <prgn>debhelper</prgn> is broken into
+several small, granular commands which act in a consistent manner. As
+such, it allows a greater granularity of control than
+<prgn>debmake</prgn>.
+
+ <sect id="debmake">
+ <heading><prgn>debmake</prgn>
+ <p>
+<prgn>debmake</prgn>, a pre-cursor to <prgn>debhelper</prgn>, is a
+less granular <tt>debian/rules</tt> assistant. It includes two main
+programs: <prgn>deb-make</prgn>, which can be used to help a
+maintainer convert a regular (non-Debian) source archive into a Debian
+source package; and <prgn>debstd</prgn>, which incorporates in one big
+shot the same sort of automated functions that one finds in
+<prgn>debhelper</prgn>.
+
+ <sect id="cvs-buildpackage">
+ <heading><prgn>cvs-buildpackage</prgn>
+ <p>
+<prgn>cvs-buildpackage</prgn> 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.
+ <p>
+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 <em/stable/, <em/unstable/, and possibly
+<em/experimental/ distributions, along with the other benefits of a
+version control system.
+
+ <sect id="dupload">
+ <heading><prgn>dupload</prgn>
+ <p>
+<prgn>dupload</prgn> 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.
+
</book>
</debiandoc>