chiark / gitweb /
correct new maintainer instructions pretty heavily (see changelog)
[developers-reference.git] / developers-reference.sgml
1 <!doctype debiandoc system [
2 <!-- include version information so we don't have to hard code it
3      within the document -->
4 <!entity % versiondata SYSTEM "version.ent"> %versiondata;
5 ]>
6 <debiandoc>
7 <!--
8  TODO:
9   - bugs in upstream versions should be reported upstream!
10   - porter instructions - - volunteers needed for this x86-centric
11     maintainer!
12   - add information on how to get accounts on different architectures
13   - talk about CVS access
14  -->
15
16   <book>
17
18       <title>Debian Developer's Reference
19       <author>Adam P. Harris, current maintainer <email/aph@debian.org/
20       <author>Christian Schwarz <email/schwarz@debian.org/
21       <author>Ian Jackson <email/ijackson@gnu.ai.mit.edu/
22       <version>ver. &version;, &date;
23
24       <copyright>
25         <copyrightsummary><p>
26 Copyright &copy;1998 Adam P. Harris.  Copyright &copy;1997,1998
27 Christian Schwarz.
28         <p>
29 This manual is free software; you may redistribute it and/or modify it
30 under the terms of the GNU General Public License as published by the
31 Free Software Foundation; either version 2, or (at your option) any
32 later version.
33         <p>
34 This is distributed in the hope that it will be useful, but
35 <em>without any warranty</em>; without even the implied warranty of
36 merchantability or fitness for a particular purpose.  See the GNU
37 General Public License for more details.
38         <p>
39 A copy of the GNU General Public License is available as
40 <tt>/usr/doc/copyright/GPL</tt> in the Debian GNU/Linux distribution
41 or on the World Wide Web at <url
42 id="http://www.gnu.org/copyleft/gpl.html" name="the GNU website">.
43 You can also obtain it by writing to the Free Software Foundation,
44 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
45
46     <toc sect>
47
48     <chapt id="scope">Scope of This Document
49       <p>
50 The purpose of this document is to provide an overview of the
51 processes and resources used by Debian developers.
52       <p>
53 The processes discussed within include how to become a maintainer
54 (<ref id="new-maintainer">); how to upload new packages (<ref
55 id="upload">); how and when to do interim releases of other
56 maintainer's packages (<ref id="nmu">); how to move, remove, or orphan
57 packages (<ref id="archive-manip">); and how to handle bug reports
58 (<ref id="bug-handling">).
59       <p>
60 The resources discussed in this reference include the mailing lists
61 and servers (<ref id="servers">); a discussion of the structure of the
62 Debian archive (<ref id="archive">); explanation of the different
63 servers which accept package uploads (<ref id="upload-master">); and a
64 discussion of resources which an help maintainers with the quality of
65 their packages (<ref id="tools">).
66       <p>
67 It should be clear that this reference does not discuss the details of
68 the Debian package or how to generate Debian packages; that is
69 discussed in the <url
70 id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
71 name="Debian Packaging Manual">.  Neither does this reference detail
72 the standards to which Debian software must comply; that information
73 can be found in the <url id="http://www.debian.org/doc/debian-policy/"
74 name="Debian Policy Manual">.
75
76
77     <chapt id="new-maintainer">Applying to Become a Maintainer
78         
79       <sect>Getting started
80         <p>
81 So, you've read all the documentation, you understand what everything
82 in the <package/hello/ example package is for, and you're about to
83 Debianize your favourite piece of software.  How do you actually
84 become a Debian developer so that your work can be incorporated into
85 the Project?
86         <p>
87 Firstly, subscribe to <email/debian-devel@lists.debian.org/ if you
88 haven't already.  Send the word <tt/subscribe/ in the <em/Subject/ of
89 an email to <email/debian-devel-REQUEST@lists.debian.org/.  In case of
90 problems, contact the list administrator at
91 <email/listmaster@lists.debian.org/.  More information on available
92 mailing lists can be found in <ref id="mailing-lists">.
93         <p>
94 You should subscribe and lurk for a bit before doing any coding, and
95 you should post about your intentions to work on something to avoid
96 duplicated effort.
97         <p>
98 Another good list to subscribe to is
99 <email/debian-mentors@lists.debian.org/.  See <ref id="mentors"> for
100 details.  The IRC channel <tt/#debian/ on the Linux People IRC network 
101 (i.e., <tt/irc.debian.org/) can also be helpful.
102
103
104       <sect>Registering as a Debian developer
105         <p>
106 Before you decide to register with the Debian Project, you will need
107 to read the <url id="http://www.debian.org/social_contract"
108 name="Debian Social Contract">.  Registering as a developer means that
109 you agree with and pledge to uphold the Debian Social Contract; it is
110 very important that maintainers are in accord with the essential ideas
111 behind Debian GNU/Linux.  Reading the <url
112 id="http://www.gnu.org/gnu/manifesto.html" name="GNU Manifesto"> would
113 also be a good idea.
114         <p>
115 The process of registering as a developer is a process of verifying
116 your identity and intentions.  As the number of people working on
117 Debian GNU/Linux has grown to over 400 people and our systems are used
118 in several very important places we have to be careful about being
119 compromised.  Therefore, we need to verify new maintainers before we
120 can give them accounts on our servers and letting them upload
121 packages.
122         <p>
123 Registration requires that the following information be sent to
124 <email/new-maintainer@debian.org/ as part of the registration
125 application:
126 <list>
127             <item>
128 Your name.
129             <item>
130 Your preferred login name on <tt/master/ (seven characters or
131 less<footnote>It is not clear to the author why logins on
132 <tt>master</tt> cannot be eight characters or greater.  If anyone can
133 clarify why, I would appreciate it.</footnote>), as well as the email
134 address at which you'd prefer to be subscribed to
135 <email/debian-private@lists.debian.org/ (typically this will be either
136 your primary mail address or your new <tt>debian.org</tt> address).
137             <item>
138 A phone number where we can call you.  Remember that the new
139 maintainer team usually calls during evening hours to save on long
140 distance tolls.  Please do not give a work number, unless you are
141 generally there in the evening.
142             <item>
143 A statement of intention, that is, what package(s) you intend to work
144 on, which Debian port you will be assisting, or how you intend to
145 contribute to Debian.
146             <item>
147 A statement that you have read and agree to uphold the <url
148 id="http://www.debian.org/social_contract" name="Debian Social
149 Contract">.
150             <item>
151 Some mechanism by which we can verify your real-life identity. For
152 example, any of the following mechanisms would suffice:
153 <list>
154                   <item>
155 A PGP key signed by any well-known signature, such as:
156 <list>
157                   <item>
158 Any current Debian developer you have met <em/in real life/.
159                   <item>
160 Any formal certification service (such as Verisign, etc.) that
161 verifies your identity.  A certification that verifies your email
162 address, and not you identity, is not sufficient.
163                       </list>
164                   <item>
165 Alternatively, you may identify yourself with a scanned (or physically
166 mailed) copy of any formal documents certifying your identity (such as
167 a birth certificate, national ID card, U.S. Driver's License, etc.).
168 If emailed, please sign the mail with your PGP key.
169                 </list>
170           </list>
171         <p>
172 If you do not have a PGP key yet, generate one. Every developer needs
173 a PGP key in order to sign and verify package uploads. You should read
174 the PGP manual, since it has much important information which is
175 critical to its security.  Many more security failures are due to
176 human error than to software failure or high-powered spy techniques.
177         <p>
178 Our standard is to use <prgn>pgp</prgn> version 2.x.  You can use
179 <prgn/pgp/ version 5, if and only if you make an RSA key.  Note that
180 we are also working with the <prgn/gpg/ team so that we can have a
181 free alternative to PGP; however, this may take a little bit of time.
182         <p>
183 Your PGP key must be at least 1024 bits long.  There is no reason to
184 use a smaller key, and doing so would be much less secure.  Your key
185 must be signed with at least your own user ID.  This prevents user ID
186 tampering.  You can do it by executing <tt>pgp -ks
187 <var/your_userid/</tt>.
188         <p>
189 If your PGP key isn't on public PGP key servers such as
190 <tt>pgp.net</tt>, please read the documentation available locally
191 <tt>/usr/doc/pgp/keyserv.doc</tt>.  That document contains
192 instructions on how to put your key on the public key servers.
193         <p>
194 Due to export restrictions by the United States government some Debian
195 packages, including PGP, have been moved to an ftp site outside of the
196 United States. You can find the current locations of those packages on
197 <ftpsite/ftp.debian.org/ or <ftpsite/ftp.us.debian.org/ in the
198 <ftppath>/pub/debian/README.non-US</ftppath> file.
199         <p>
200 Some countries restrict the use of cryptographic software by their
201 citizens.  This need not impede one's activities as a Debian package
202 maintainer however, as it may be perfectly legal to use cryptographic
203 products for authentication, rather than encryption purposes (as is
204 the case in France).  The Debian Project does not require the use of
205 cryptography <em/qua/ cryptography in any manner.  If you live in a
206 country where use of cryptography even for authentication is forbidden
207 then please contact us so we can make special arrangements.
208         <p>
209 Once you have all your information ready, and your public key is
210 available on public key servers, send a message to
211 <email/new-maintainer@debian.org/ to register as an offical Debian
212 developer so that you will be able to upload your packages.  This
213 message must contain all the information discussed above.  The message
214 must also contain your PGP or RSA public key (extracted using <tt>pgp
215 -kxa</tt> in the case of PGP) for the database of keys which is
216 distributed from <ftpsite/ftp.debian.org/ in
217 <ftppath>/pub/debian/doc/debian-keyring.tar.gz</ftppath>, or the
218 <package/debian-keyring/ package.  Please be sure to sign your
219 request message with your chosen PGP or RSA key.
220         <p>
221 Once this information is received and processed, you should be
222 contacted with information about your new Debian maintainer account.
223 If you don't hear anything within 7-14 days, please send a followup
224 message asking if your original application was received.  Do not
225 re-send your original application, that will just confuse the
226 new-maintainer team. Please be patient, especially near release
227 points; mistakes do occasionally happen, and people do sometimes run
228 out of volunteer time.
229
230
231       <sect id="mentors">Debian Mentors
232         <p>
233 A mailing list called <email/debian-mentors@lists.debian.org/ which
234 has been set up for novice maintainers who seek help with initial
235 packaging and other developer-related issues.  Every new developer is
236 invited to subscribe to that list (see <ref id="mailing-lists"> for
237 details).
238         <p>
239 Those who prefer one-on-one help (e.g., via private email) should
240 also post to that list and an experienced developer will volunteer to
241 help.
242
243
244     <chapt id="servers">Mailing Lists and Servers
245
246       <sect id="mailing-lists">Mailing lists
247         <p>
248 The mailing list server is at <tt/lists.debian.org/.  Mail
249 <tt/debian-<var/foo/-REQUEST@lists.debian.org/, where
250 <tt/debian-<var/foo// is the name of the list, with the word
251 <tt/subscribe/ in the <em/Subject/ to subscribe or <tt/unsubscribe/ to
252 unsubscribe.  More detailed instructions on how to subscribe and
253 unsubscribe to the mailing lists can be found at <url
254 id="http://www.debian.org/MailingLists/subscribe">, <url
255 id="ftp://ftp.debian.org/debian/doc/mailing-lists.txt"> or locally in
256 <tt>/usr/doc/debian/mailing-lists.txt</tt> if you have the
257 <package>doc-debian</package> package installed.
258         <p>
259 When replying to messages on the mailing list, please do not send
260 a carbon copy (<tt/CC/--this does not mean `courtesy copy') to
261 the original poster unless they explicitly request that this be
262 done.  Anyone who posts to a mailing list should read it to see the
263 responses.
264         <p>
265 In addition, all messages should usually only be sent to one of the
266 following mailing lists: <email/debian-devel@lists.debian.org/,
267 <email/debian-policy@lists.debian.org/,
268 <email/debian-user@lists.debian.org/,
269 <email/debian-announce@lists.debian.org/, or
270 <email/debian-devel-announce@lists.debian.org/.  Additional mailing
271 lists are available for special purposes; see <url
272 id="http://www.debian.org/MailingLists/subscribe">.  Cross-posting
273 (sending the same message to multiple lists) is discouraged.
274         <p>
275 <email/debian-private@lists.debian.org/ is a special mailing lists for
276 private discussions amongst Debian developers.  It is meant to be used
277 for posts which for whatever reason should not be published
278 publically.  As such, it is a low volume list, and users are urged not
279 to use <email/debian-private@lists.debian.org/ unless it is really
280 necessary.  Moreover, do <em/not/ forward email from that list to
281 anyone.
282         <p>
283 As ever on the net, please trim down the quoting of articles you're
284 replying to.  In general, please adhere to the usual conventions for
285 posting messages.
286         <p>
287 Online archives of mailing lists are available at <url
288 id="http://www.debian.org/Lists-Archives/">.
289
290
291       <sect id="servers-master">The master server
292         <p>
293 The master server, <tt/master.debian.org/, holds the canonical copy
294 of the Debian archive (excluding the non-U.S. packages). Generally,
295 package uploads go to this server; see <ref id="upload">. 
296         <p>
297 <tt/master.debian.org/ is the canonical location for the Bug Tracking
298 System (BTS).  If you plan on doing some statistical analysis or
299 processing of Debian bugs, this would be the place to do it.  Please
300 describe your plans on <email/debian-devel@lists.debian.org/ before
301 implementing anything, however, to reduce unnecessary duplication of
302 effort or wasted processing time.
303         <p>
304 All Debian developers have accounts on <tt/master.debian.org/.  Please
305 take care to protect your password to this machine.  Try to avoid
306 login or upload methods which send passwords over the Internet in the
307 clear.
308         <p>
309 If you find a problem with <tt/master.debian.org/ such as disk full,
310 suspicious activity, or whatever, send an email to
311 <email>debian-admin@debian.org</email>.
312
313       <sect id="servers-ftp">The FTP servers
314         <p>
315
316       <sect id="servers-www">The WWW servers
317         <p>
318 The main web server, <tt/www.debian.org/, is also known as
319 <tt/va.debian.org/.  All developers are given accounts on this
320 machine.
321         <p>
322 If you have some Debian-specific information which you want to serve
323 up on the web, you can do do this by putting material in the
324 <tt>public_html</tt> directory under your home directory.  You can do
325 this on either <tt/va.debian.org/ or <tt/master.debian.org/.  Any
326 material you put in those areas are accessible via the URLs
327 <tt>http://www.debian.org/~<var>user-id</var>/</tt> and
328 <tt>http://master.debian.org/~<var>user-id</var>/</tt>, respectively.
329 Please do <em>not</em> put any materials on Debian servers which do
330 not relate to Debian.
331         <p>
332 If you find a problem with the Debian web server, you should generally
333 submit a bug against the pseudo-package,
334 <package>www.debian.org</package>.  First check whether or not someone
335 else has already reported the problem on the <url
336 id="http://www.debian.org/Bugs/db/pa/lwww.debian.org.html" name="Bug
337 Tracking System">.
338
339       <sect id="servers-cvs">The CVS server
340         <p>
341 <tt/cvs.debian.org/ is also known as <tt/va.debian.org/, discussed
342 above.  If you need the use of a publically accessible CVS server, for
343 instance, to help coordinate work on a package between many different
344 developers, you can request a CVS area on the server.  Generally,
345 <tt/cvs.debian.org/ offers a combination of local CVS access,
346 anonymous client-server read-only access, and full client-server
347 access through <prgn>ssh</prgn>.
348         <p>
349 To request a CVS area, send a request via email to
350 <email>debian-admin@debian.org</email>.
351
352
353       <sect id="servers-mirrors">Mirrors of Debian servers
354         <p>
355 The web and FTP servers have several mirrors available.  Please do not
356 put heavy load on the canonical FTP or web servers.  Ideally, the
357 canonical servers only mirror out to a first tier of mirrors, and all
358 user access is to the mirrors.  This allows Debian to better spread
359 our bandwidth requirements over several servers and networks.  Note
360 that newer push mirroring techniques ensure that mirrors are as
361 up-to-date as they can be.
362         <p>
363 The main web page listing the available public FTP (and, usually,
364 HTTP) servers can be found at <url
365 id="http://www.debian.org/distrib/ftplist">. More information
366 concerning mirrors can be found at <url
367 id="http://www.debian.org/devel/mirror/">.  This useful page includes
368 information and tools which can be helpful if you are interested in
369 setting up your own mirror, either for internal or public access.
370         <p>
371 Note that mirrors are generally run by third-parties who are
372 interested in helping Debian.  As such, developers generally do not
373 have accounts on these machines.
374
375
376     <chapt id="archive">The Debian Archive
377
378       <sect>Overview
379         <p>
380 The Debian GNU/Linux distribution consists of a lot of Debian packages
381 (<tt/.deb/'s, currently more than 1500) and a few additional files
382 (documentation, installation disk images, etc.).
383         <p>
384 Here is an example directory tree of a complete Debian distribution:
385 <example>
386 main/
387 main/binary-all/
388 main/binary-all/admin/
389 main/binary-all/base/
390 main/binary-all/comm/
391 main/binary-all/devel/
392      ...
393 main/binary-i386/
394 main/binary-i386/admin/
395 main/binary-i386/base/
396      ...
397 main/binary-m68k
398 main/binary-m68k/admin/
399 main/binary-m68k/base/
400      ...
401 main/source/
402 main/source/admin/
403 main/source/base/
404      ...
405 main/disks-i386/
406 main/disks-m68k/
407      ...
408
409 contrib/
410 contrib/binary-all/
411 contrib/binary-i386/
412 contrib/binary-m68k/
413      ...
414 contrib/source/
415
416 non-free/
417 non-free/binary-all/
418 non-free/binary-i386/
419 non-free/binary-m68k/
420          ...
421 non-free/source/
422 </example>
423         <p>
424 As you can see, the top-level directory of the distribution contains
425 three directories, namely <em>main</>, <em>contrib</>, and
426 p<em>non-free</>. These directories are called <em>sections</>.
427         <p>
428 In each section, there is a directory with the source packages
429 (source), a directory for each supported architecture (binary-i386,
430 binary-m68k, etc.), and a directory for architecture independent
431 packages (binary-all).
432         <p>
433 The <em/main/ section contains additional directories which holds the
434 disk images and some essential pieces of documentation required for
435 installing the Debian distribution on a specific architecture
436 (disks-i386, disks-m68k, etc.).
437         <p>
438 The <em/binary/ and <em/source/ directories are divided further into
439 <em/subsections/.
440
441
442       <sect>Sections
443         <p>
444 The <em>main</em> section is what makes up the <em>official Debian
445 GNU/Linux distribution</>. This is because the packages in the other
446 two sections do not fully comply with all our guidelines.  As such,
447 they are not officially part of Debian.
448         <p>
449 For example, every package in the main section must fully comply
450 with the <url id="http://www.debian.org/social_contract#guidelines"
451 name="Debian Free Software Guidelines"> (DFSG) and with all other
452 policy requirements as described in the <url
453 id="http://www.debian.org/doc/debian-policy/" name="Debian Policy
454 Manual">. (The DFSG is our definition of ``free software.'' Check out
455 the Debian Policy Manual for details.)
456         <p>
457 The packages which do not apply to the DFSG are placed in the
458 <em/non-free/ section. These packages are not considered as part of
459 the Debian distribution, though we support their use, and we provide
460 infrastructure (such as our bug-tracking system and mailing lists) for
461 non-free software packages.
462         <p>
463 Packages in the <em/contrib/ section have to apply to the DFSG, but
464 fail other requirements.  For instance, they might depend on non-free
465 packages.
466         <p>
467 The <url id="http://www.debian.org/doc/debian-policy/" name="Debian
468 Policy Manual"> contains a more exact definition of the three
469 sections. The above discussion is just an introduction.
470         <p>
471 The separation of the three sections at the top-level of the archive
472 is important for all people who want to distribute Debian, either via
473 FTP servers on the Internet or on CD-ROMs: by distributing only the
474 <em/main/ and <em/contrib/ sections, one can avoid any legal risks.
475 Some packages in the <em/non-free/ section do not allow commercial
476 distribution, for example.
477         <p>
478 On the other hand, a CD-ROM vendor could easily check the individual
479 package licenses of the packages in <em/non-free/ and include as many
480 on the CD-ROMs as he's allowed. (Since this varies greatly from vendor
481 to vendor, this job can't be done by the Debian developers.)
482
483
484       <sect>Architectures
485         <p>
486 In the first days, the Linux kernel was only available for the Intel
487 i386 (or greater) platforms, and so was Debian. But when Linux became
488 more and more popular, the kernel was ported to other architectures,
489 too.
490         <p>
491 The Linux 2.0 kernel supports Intel, DEC Alphas, SUN Sparcs, M68000
492 (a.k.a. m68k) machines (like Atari and Amiga), MIPS, and PowerPC
493 (a.k.a. ppc).
494         <p>
495 Debian GNU/Linux 1.3 is only available for Intel platforms.  Debian
496 2.0 supports Intel and m68k architectures.  The next version of Debian
497 is likely to also support Alpha, PPC, and Sparc architectures, if not
498 more.
499
500
501       <sect>Subsections
502         <p>
503 The sections <em/main/, <em/contrib/, and <em/non-free/ are split into
504 <em/subsections/ to simplify the installation process and the
505 maintainance of the archive.  Subections are not formally defined,
506 excepting perhaps for the "base" subsection.  Subsections exist simply
507 to simpilfy the organization and browsing of available packages.
508 Please check the current Debian distribution to see which sections are
509 available.
510
511
512
513       <sect>Packages
514         <p>
515 There are two types of Debian packages, namely <em/source/ and
516 <em/binary/ packages.
517         <p>
518 Source packages consist of either two or three files: a <tt/.dsc/
519 file, and either one <tt/.tar.gz/ file or an <tt/.orig.tar.gz/ and a
520 <tt/.diff.gz/ file.
521         <p>
522 If a package is developed specially for Debian and is not distributed
523 outside of Debian, there is just one <tt/.tar.gz/ file which contains
524 the sources of the program.
525         <p>
526 If a package is distributed elsewhere too, the <tt/.orig.tar.gz/ file
527 stores the so-called <em/upstream source code/, that is the source
528 code that's distributed from the <em/upstream maintainer/ (often the
529 author of the software). In this case, the <tt/.diff.gz/ contains the
530 changes made by the Debian maintainer.
531         <p>
532 The <tt/.dsc/ lists all the files in the source package together with
533 checksums (md5sums) and some additional info about the package
534 (maintainer, version, etc.).
535
536
537       <sect>Distribution directories
538         <p>
539 If you have a look at the Debian FTP server or one of its mirrors,
540 you'll discover that there is one additional directory level on top of
541 the directory tree, as described in the previous chapter. These
542 directories are the <em/distribution directories/.  All distributions
543 are contained in the <tt/dists/ directory in the top-level of the
544 Debian archive (the symlinks from the top-level directory to the
545 distributions themselves is for backwards compatability and
546 deprecated).
547
548         <sect1>Stable, unstable, and sometimes frozen
549         <p>
550 There is always a distribution called <em/stable/ (residing in
551 <tt>dists/stable</tt>) and one called <em/unstable/ (residing in
552 <tt>dists/unstable</tt>. This reflects the development process of the
553 Debian project.
554         <p>
555 The ``development'' is done in the <em/unstable/ distribution (that's
556 why this distribution is sometimes called the <em/development
557 distribution/). Every Debian developer can update his or her packages in
558 this distribution at any time. Thus, the contents of this distribution
559 change from day to day and since no special effort is done to test
560 this distribution it's sometimes ``unstable.''
561         <p>
562 After a period of development, the <em/unstable/ distribution is
563 copied in a new distribution directory, called <em/frozen/. When that
564 occurs, no changes are allowed to the frozen distribution except bug
565 fixes; that's why it's called ``frozen.''  After another month or a
566 little longer, the <em/frozen/ distribution is renamed to <em/stable/,
567 overriding the old <em/stable/ distribution, which is removed at that
568 time.
569         <p>
570 This development cycle is based on the assumption that the
571 <em/unstable/ distribution becomes <em/stable/ after passing a period
572 of testing as <em/frozen/. Unfortunately, even once a distribution is
573 considered stable, a few bugs inevitably remain--that's why the stable
574 distribution is updated every now and then. However, these updates are
575 tested very carefully and have to be introduced into the archive
576 individually to reduce the risk of introducing new bugs.  You can find
577 proposed additions to <em/stable/ in the <tt/proposed-updates/
578 directory.  Those packages in <tt/proposed-updates/ that pass muster
579 are periodically moved as a batch into the stable distribution and the
580 revision level of the stable distribution is incremented (e.g., `1.3'
581 becomes `1.3r1', `2.0r2' becomes `2.0r3', and so forth).
582         <p>
583 Note that development is continued during the ``freeze'' period, since
584 a new <em/unstable/ distribution is be created when the older
585 <em/unstable/ is moved to <em/frozen/.
586         <p>
587 In summary, there is always a <em/stable/ and an <em/unstable/
588 distribution available, and the <em/frozen/ distribution shows up for
589 a month or so from time to time.
590
591
592         <sect1>Experimental
593           <p>
594 The <em/experimental/ distribution is a specialty distribution.  It is
595 not a full distribution in the same sense that 'stable' and 'unstable'
596 are.  Instead, it is meant to be a temporary staging area for highly
597 experimental software where there's a good chance that the software
598 could break your system.  Users who download and install packages from
599 <em/experimental/ are expected to have been duly warned.  In short,
600 all bets are off for the <em/experimental/ distribution.
601           <p>
602 Developers should be very selective in the use of the
603 <em/experimental/ distribution.  Even if a package is highly unstable,
604 it could well still go into <em/unstable/; just state a few warnings
605 in the description.  However, if there is a chance that the software
606 could do grave damage to a system, it might be better to put it into
607 <em/experimental/.
608           <p>
609 For instance, an experimental encrypted file system should probably go
610 into experimental.  A new, beta, version of some software which uses
611 completely different configuration might go into experimental at the
612 maintainer's discretion.  New software which isn't likely to damage
613 your system can go into <em/unstable/.
614
615
616       <sect id="codenames">Release code names
617         <p>
618 Every released Debian distribution has a <em/code name/: Debian 1.1 is
619 called <em/buzz/; Debian 1.2, <em/rex/; Debian 1.3, <em/bo/; Debian
620 2.0, <em/hamm/; Debian 2.1, <em/slink/.  There is also a
621 "pseudo-distribution", called <em/sid/, which is contains packages for
622 architectures which are not yet officially supported or released by
623 Debian.  These architectures are planned to be integrated into the
624 mainstream distribution at some future date.
625         <p>
626 Since the Debian has an open development model (i.e., everyone can
627 participate and follow the development) even the ``development
628 versions'' (unstable) are distributed via the Internet on the Debian
629 FTP server. This FTP server is mirrored by lots of other
630 systems. Thus, if we'd call the directory which contains the
631 development version simply `unstable', then we would have to rename it
632 to `stable' when the version is released, which would cause all FTP
633 mirrors to re-get the whole distribution (which is already very
634 large!).
635         <p>
636 On the other hand, if we would call the distribution directories
637 <em>Debian-x.y</em> from the beginning, people would think that Debian
638 release <em>x.y</> is available. (This happened in the past, where a
639 CD-ROM vendor built a Debian 1.0 CD-ROM based on a pre-1.0 development
640 version. That's the reason why the first official Debian release was
641 1.1, and not 1.0.)
642         <p>
643 Thus, the names of the distribution directories in the archive should
644 stay the same during the development period and after the release but
645 there may be symbolic links, which can be changed.
646         <p>
647 That's why the distribution directories use the <em/code names/ and
648 there are symbolic links <em/stable/, <em/unstable/, <em/frozen/,
649 etc., which point to the appriopriate release directories.
650
651
652     <chapt id="upload">Package uploads
653
654       <sect>Announcing new packages
655         <p>
656 If you want to create a new package for the Debian distribution, you
657 should first check the <url
658 id="http://www.debian.org/doc/prospective-packages.html"
659 name="Work-Needing and Prospective Packages (WNPP)"> page.  Checking
660 the WNPP ensures that no one is already working on packaging that
661 software, and that effort is not duplicated. Assuming no one else is
662 already working on your prospective package, you must then send a
663 short email to <email/debian-devel@lists.debian.org/ describing your
664 plan to create a new package.  You should set the subject of the email
665 to "intent to package <var/foobar/", substituting the name of the new
666 package for <var/foobar/.
667         <p>
668 There are a number of reasons why we ask maintainers to follow these
669 steps.
670           <list compact>
671             <item>
672 It helps the (potentially new) maintainer to tap into the experience
673 of people on the list, and lets them know if any one else is working
674 on it already.
675
676             <item>
677 It lets other people thinking about working on the package know that
678 there already is a volunteer, and efforts may be shared.  The "intent
679 to package" message to <email/debian-devel@lists.debian.org/ will be
680 picked up the the WNPP maintainer, and your intention will be
681 published in subsequent versions of the WNPP document.
682
683             <item>
684 It lets the rest of the maintainers know more about the package than
685 the one line description and the changelog entry "Initial version"
686 that generally gets posted to <tt/debian-devel-changes/ by default.
687
688             <item>
689 It is helpful to the people who live off unstable (and form our first
690 line of testers); we should encourage these people.
691
692             <item>
693 The announcements give maintainers and other interested parties a
694 better feel of what is going on, and what is new, in the project.
695
696
697             <item>
698 We should not dismiss anybody who installs from unstable and helps us
699 debug our packages as "fools, fools, you installed from unstable; you
700 deserve what you get"--we derive a certain benefit from the alpha
701 testers.
702
703           </list>
704
705
706       <sect id="uploading">Uploading a package
707
708         <sect1>Generating the changes file
709           <p>
710 When a package is uploaded to the Debian FTP archive, it must be
711 accompanied by a <tt/.changes/ file which gives directions for its
712 handling.  This is usually generated by <prgn/dpkg-genchanges/.
713           <p>
714 This file is a control file with the following fields:
715 <list compact>
716               <item><tt/Format/
717               <item><tt/Date/
718               <item><tt/Source/
719               <item><tt/Binary/
720               <item><tt/Architecture/
721               <item><tt/Version/
722               <item><tt/Distribution/
723               <item><tt/Urgency/
724               <item><tt/Maintainer/
725               <item><tt/Description/
726               <item><tt/Changes/
727               <item><tt/Files/
728             </list>
729           <p>
730 All of them are mandatory for a Debian upload.  See the list of
731 control fields in the <url
732 id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
733 name="Debian Packaging Manual"> for the contents of these fields.
734           <p>
735 Notably, the <tt/Distribution/ field, which originates from the
736 <tt>debian/changelog</tt> file, should indicate which distribution the
737 package is intended for.  There are four possible values for this
738 field: <em/stable/, <em/unstable/, <em/frozen/, or <em/experimental/;
739 these values can also be combined.  For instance, if you have a
740 crucial security fix release of a package, and the package has not
741 diverged between the <em/stable/ and <em/unstable/ distributions, then
742 you might put <tt/stable unstable/ in the <tt>debian/changelog</tt>'s
743 distribution field.  Or, if Debian has been frozen, and you want to
744 get a bug-fix release into <em/frozen/, you would set the distribution
745 to <tt/frozen unstable/.  Note that setting the distribution to
746 <tt/stable/ means that the pacakge will be placed into the
747 <tt>proposed-updates</tt> directory of the Debian archive for further
748 testing, before it is actually included in <em/stable/.  Also note
749 that it never makes sense to combine the <em/experimental/
750 distribution with anything else.
751           <p>
752 The first time a version is uploaded which corresponds to a particular
753 upstream version the original source tar file should be uploaded and
754 included in the <tt/.changes/ file; subsequent times the very same tar
755 file should be used to build the new diffs and <tt/.dsc/ files, and it
756 need not then be uploaded.
757           <p>
758 By default <prgn/dpkg-genchanges/ and <prgn/dpkg-buildpackage/ will
759 include the original source tar file if and only if the Debian
760 revision part of the source version number is <tt/0/ or <tt/1/,
761 indicating a new upstream version.  This behaviour may be modified by
762 using <tt/-sa/ to always include it or <tt/-sd/ to always leave it
763 out.
764           <p>
765 If no original source is included in the upload then the original
766 source tar-file used by <prgn/dpkg-source/ when constructing the
767 <tt/.dsc/ file and diff to be uploaded <em/must/ be byte-for-byte
768 identical with the one already in the archive.  If there is some
769 reason why this is not the case then the new version of the original
770 source should be uploaded, possibly by using the <tt/-sa/ flag.
771
772
773         <sect1 id="upload-checking">Checking the package prior to upload
774           <p>
775 Before you upload your package, you should do basic testing on it.
776 Make sure you try the following activities (you'll need to have an
777 older version of the Debian package around).
778 <list>
779               <item>
780 Install the package and make sure the software works, or upgrade the
781 package from an older version to your new version if a Debian package
782 for it already exists.
783
784               <item>
785 Run <prgn/lintian/ over the package.  You can run <prgn/lintian/ as
786 follows: <tt>lintian -v <var>package-NN</var>.changes</tt>. This will
787 check the source package as well as the binary package.  If you don't
788 understand the output that <prgn/lintian/ generates, try adding the
789 <tt/-i/ switch, which will cause <prgn/lintian/ to output a very
790 verbose description of the problem.
791                 <p>
792 Normally, a package should <em/not/ be uploaded if it causes lintian
793 to emit errors (they will start with <tt/E/).
794                 <p>
795 For more information on <prgn/lintian/, see <ref id="lintian">.
796               <item>
797 Downgrade the package to the previous version (if one exists) -- this
798 tests the <tt/postrm/ and <tt/prerm/ scripts.
799
800               <item>
801 Remove the package, then reinstall it.
802
803             </list>
804
805
806         <sect1 id="upload-master">Transferring the files to master
807           <p>
808 To upload a package, you need a personal account on
809 <ftpsite>master.debian.org</ftpsite>.  All maintainers should already
810 have this account.  You can use either <prgn/ssh/ or <prgn/ftp/ to
811 transfer the files.  In either case, the files need to be placed into
812 <ftppath>/home/Debian/ftp/private/project/Incoming</ftppath>.  (You
813 cannot upload to Incoming on master using anonymous FTP -- you must use
814 your username and password.)
815           <p>
816 <em/Note:/ Do not upload packages containing software that is
817 export-controlled by the United States government to <tt/master/.
818 This includes almost all cryptographic software, and even software
819 that contains "hooks" to cryptographic software, such as electronic
820 mail readers that support PGP encryption and authentication.  Uploads
821 of such software should go to <tt/non-us/ (see below).  If you are
822 not sure whether U.S. export controls apply to your package, post a
823 message to <email/debian-devel@lists.debian.org/ and ask.
824           <p>
825 You may also find the Debian package <package/dupload/ useful when
826 uploading packages.  This handy program is distributed with defaults
827 for uploading via <prgn/ftp/ to <tt/master/, <tt/chiark/, and
828 <tt/erlangen/.  It can also be configured to use <prgn/ssh/.  See
829 <manref name="dupload" section="1"> and <manref name="dupload"
830 section="5"> for more information.
831
832
833         <sect1>Uploads via Chiark
834           <p>
835 If you have a slow network connection to <tt/master/, there are two
836 alternatives: You can upload files to Incoming via a cron-driven
837 upload queue in Europe on <tt/chiark/. For details connect to
838 <ftpsite>ftp.chiark.greenend.org.uk</ftpsite> using anonymous FTP and
839 read
840 <ftppath>/pub/debian/private/project/README.how-to-upload</ftppath>.
841           <p>
842 The program <tt/dupload/ supports uploads to chiark, please refer to
843 the documentation that comes with the program for details.
844
845
846         <sect1>Uploads via Erlangen
847           <p>
848 Another cron-driven upload queue is available in Germany: just upload
849 the files via anonymous FTP to <url
850 id="ftp://ftp.uni-erlangen.de/pub/Linux/debian/UploadQueue">.
851           <p>
852 The upload must be a complete Debian upload, as you would put it into
853 master's <tt/Incoming/, i.e., a <tt/.changes/ files along with the
854 other files mentioned in the <tt/.changes/. The queue daemon also
855 checks that the <tt/.changes/ is correctly PGP-signed by a Debian
856 developer, so that no bogus files can find their way to master via the
857 queue. Please also make sure that the <tt/Maintainer:/ field in the
858 <tt/.changes/ contains <em/your/ e-mail address. The address found
859 there is used for all replies, just as on master.
860           <p>
861 There's no need to move your files into a second directory after the
862 upload as on chiark. And, in any case, you should get some mail reply
863 from the queue daemon what happened to your upload. Hopefully it
864 should have been moved to master, but in case of errors you're
865 notified, too.
866           <p>
867 The program <prgn/dupload/ supports uploads to erlangen, please refer
868 to the documentation that comes with the program for details.
869
870
871         <sect1>Uploading to the non-us server
872           <p>
873 To upload a package to the <em/non-us/ server you just have to
874 transfer the files via anonymous ftp to <url
875 id="ftp://non-us.debian.org/pub/debian-non-US/Incoming">.  Note, that
876 the <tt>.changes</tt> file must have a valid PGP signature from one of
877 the keys of the developers key-ring.
878
879
880       <sect>Announcing package uploads
881         <p>
882 When a package is uploaded an announcement should be posted to one of
883 the debian-changes lists. The announcement should give the (source)
884 package name and version number, and a very short summary of the
885 changes, in the <em/Subject/ field, and should contain the PGP-signed
886 <tt/.changes/ file.  Some additional explanatory text may be added
887 before the start of the <tt/.changes/ file.
888         <p>
889 If a package is released with the <tt/Distribution:/ set to
890 <tt/stable/, the announcement is sent to
891 <email/debian-changes@lists.debian.org/.
892         <p>
893 If a package is released with <tt/Distribution:/ set to <tt/unstable/,
894 <tt/experimental/, or <tt/frozen/ (when present), the announcement
895 should be posted to <email/debian-devel-changes@lists.debian.org/
896 instead.
897         <p>
898 On occasion, it is necessary to upload a package to both the <tt/stable/
899 and <tt/unstable/ distributions; this is done by putting both distributions
900 in the <tt/Distribution:/ line.  In such a case the upload announcement
901 should go to both of the above mailing lists.
902         <p>
903 The <prgn/dupload/ program is clever enough to determine for itself
904 where the announcement should go, and will automatically mail the
905 announcement.  See <ref id="dupload">.
906
907       <sect>Notification that a new package has been installed
908         <p>
909 The Debian archive maintainers are responsible for handling package
910 uploads.  For the most part, uploads are automatically handled on a
911 daily basis by an archive maintenance tool called <prgn/dinstall/.
912 Specifically, updates to existing packages to the `unstable'
913 distribution are handled automatically. In other cases, notably new
914 packages, placing the uploaded package into the distribution is
915 handled manually. When uploads are handled manually, the change to the
916 archive may take up to a week to occur (please be patient).
917         <p>
918 In any case, you will receive notification indicating that the package
919 has been uploaded via email.  Please examine this notification
920 carefully.  Sometimes the "override" file which the archive
921 maintainers use to indicate where packages go, is incorrect or
922 out-of-sync with your control file.  In these cases, you should either
923 correct your control file or file a bug against <tt/ftp.debian.org/
924 using the BTS.
925
926       <sect id="nmu">Interim releases
927         <p>
928 Under certain circumstances it is necessary for someone other than the
929 usual package maintainer to make a release of a package.  For example,
930 a porter for another architecture may have to make some small changes
931 to the source package and does not wish to wait with uploading their
932 release until the main maintainer has incorporated the patch, or a
933 serious security problem or bug may have come to light requiring
934 immediate attention.
935         <p>
936 When a security bug is detected a fixed package should be uploaded as
937 soon as possible. In this case, the Debian Security Managers should
938 get in contact with the package maintainer to make sure a fixed
939 package is uploaded within a reasonable time (less than 48 hours). If
940 the package maintainer cannot provide a fixed package fast enough or
941 if he/she cannot be reached in time, the Security Manager may upload a
942 fixed package.
943         <p>
944 When someone other than the usual maintainer releases a package they
945 should add a new component to the <var/debian-revision/ component of
946 the version number--that is, the portion after the (last) hyphen.
947 This extra component will start at <tt/1/.  This is to avoid
948 `stealing' one of the usual maintainer's version numbers, possibly
949 disrupting their work.  If there is no <var/debian-revision/ component
950 in the version number then one should be created, starting at <tt/1/.
951         <p>
952 If it is absolutely necessary for someone other than the usual
953 maintainer to make a release based on a new upstream version then the
954 person making the release should start with the <var/debian-revision/
955 value <tt/0.1/.  The usual maintainer of a package should start their
956 <var/debian-revision/ numbering at <tt/1/.
957         <p>
958 Maintainers other than the usual package maintainer should make as few
959 changes to the package as possible, and they should always send a
960 unified context diff (<tt/diff -u/) detailing their changes to the bug
961 tracking system properly flagged with the correct package so that the
962 usual maintainer is kept aware of the situation.
963         <p>
964 If the non-maintainer upload (as known as an "NMU") fixes some
965 existing bugs, the bug reports should not be closed.  Technically,
966 only the official package maintainer or the original bug submitter are
967 allowed to close bugs. However, the person making the non-maintainer
968 release should send a short message to the bug tracking system to all
969 the fixed bugs explaining that they have been fixed.  Using
970 <email/control@bugs.debian.org/, the party doing the NMU should also
971 set the severity of the bugs fixed in the NMU to "fixed".  This
972 ensures that everyone knows that the bug was fixed in an NMU; however
973 the bug is left open until the changes in the NMU are incorporated
974 "officially" into the package by the official package maintainer.
975         <p>
976 The normal maintainer should do at least one of the following:
977           <list compact>
978             <item>
979 apply the diff,
980             <item>
981 read the diff and decide on each part of it themselves, or
982             <item>
983 if the maintainer decides not to apply the patch but to release a new
984 version, read the description of the changes to the next upstream
985 version and ensure that they fix each problem that was fixed in the
986 non-maintainer release.
987           </list>
988         <p>
989 In addition, the normal maintainer should <em/always/ include an entry
990 in the changelog file documenting the non-maintainer upload.
991
992
993       <sect>Maintainer changes
994         <p>
995 Periodically, a listing of packages in need of new maintainers will be
996 sent to <email/debian-devel@lists.debian.org</email> list. This list
997 is also available at in the Work-Needing and Prospective Packages
998 document (WNPP), <url
999 id="ftp://ftp.debian.org/debian/doc/package-developer/prospective-packages.html">
1000 and at <url id="http://www.debian.org/doc/prospective-packages.html">.
1001 If you wish to take over maintenance of any of the packages listed in
1002 the WNPP, or if you can no longer maintain a packages you have, or you
1003 simply want to know if any one is working on a new package, send a
1004 message to <email/wnpp@debian.org/.
1005
1006         <p>
1007 If you take over an old package, you probably want to be listed as the
1008 package's official maintainer in the bug system. This will happen
1009 automatically once you upload a new version with an updated
1010 <tt/Maintainer:/ field. If you do not expect to upload a new version
1011 for a while, send an email to <email/override-change@debian.org/ so
1012 that bug reports will go to you.
1013
1014
1015     <chapt id="archive-manip">Moving, Removing, Renaming, and Orphaning Packages
1016       <p>
1017 Some archive manipulation operation are not automated in the Debian
1018 upload process.  This chapter gives guidelines in what to do in these
1019 cases.
1020
1021       <sect>Moving packages
1022         <p>
1023 Sometimes a package will change either its section or its subsection.
1024 For instance, a package from the `non-free' section might be GPL'd in
1025 a later version; in this case you should consider moving it to `main'
1026 or `contrib' (see the <url
1027 id="http://www.debian.org/doc/debian-policy/" name="Debian Policy
1028 Manual"> for guidelines).
1029         <p>
1030 In this case, it is sufficient to edit the package control information
1031 normally and re-upload the package (see the <url
1032 id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
1033 name="Debian Packaging Manual"> for
1034 details).  Carefully examine the installation log sent to you when the
1035 package is installed into the archive.  If for some reason the old
1036 location of the package remains, file a bug against
1037 <tt/ftp.debian.org/ asking that the old location be removed.  Give
1038 details on what you did, since it might be a <prgn/dinstall/ bug.
1039
1040
1041       <sect>Removing packages
1042         <p>
1043 If for some reason you want to completely remove a package (say, if it
1044 is an old compatibility library which is not longer required), you
1045 need to file a bug against <tt/ftp.debian.org/ asking that the
1046 package be removed.  Make sure you indicate which distribution the
1047 package should be removed from.
1048         <p>
1049 If in doubt concerning whether a package is disposable, email
1050 <email/debian-devel@lists.debian.org/ asking for opinions.
1051
1052
1053       <sect>Replacing or renaming packages
1054         <p>
1055 Sometimes you made a mistake naming the package and you need to rename
1056 it.  In this case, you need to follow a two-step process.  First, set
1057 your <tt>debian/control</tt> file to replace and conflict with the
1058 obsolete name of the package (see the <url
1059 id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
1060 name="Debian Packaging Manual"> for details).  Once you've uploaded
1061 that package, and the package has moved into the archive, file a bug
1062 against <tt/ftp.debian.org/ asking to remove the package with the
1063 obsolete name.
1064
1065
1066       <sect>Orphaning a package
1067         <p>
1068 If you can no longer maintain a package, then you should set the
1069 package maintainer to <tt>Debian QA
1070 &lt;debian-qa@lists.debian.org&gt;</tt> and email
1071 <email/wnpp@debian.org/ indicating that the package is now orphaned.
1072 If the package is especially crucial to Debian, you should instead
1073 email <email/debian-devel@lists.debian.org/ asking for a new
1074 maintainer.
1075
1076
1077     <chapt id="bug-handling">Handling Bug Reports
1078
1079       <sect>Monitoring bugs
1080         <p>
1081 If you want to be a good maintainer, you should periodically check the
1082 <url id="http://www.debian.org/Bugs/" name="Debian bug tracking system
1083 (BTS)"> for your packages.  The BTS contains all the open bugs against 
1084 your packages.
1085         <p>
1086 Maintainers interact with the BTS via email addresses at
1087 <tt/bugs.debian.org/.  Documentation on available commands can be
1088 found at <url id="http://www.debian.org/Bugs/">, or, if you have
1089 installed the <package/debian-doc/ package, you can look at the local
1090 files <tt>/usr/doc/debian/bug-*</tt>.
1091         <p>
1092 Often as a package maintainer, you find bugs in other packages or else
1093 have bugs reported to your packages which need to be reassigned.  The
1094 BTS instructions can tell you how to do this.  Make sure the bug is
1095 not already filed against a package.  Try to do a good job reporting a
1096 bug and redirecting it to the proper location.  For extra credit, you
1097 can go through other packages, merging bugs which are reported more
1098 than once, or setting bug severities to "fixed" when they have already
1099 been fixed.  Note that when you are neither the bug submitter nor the
1100 package maintainer, you are not empowered to actually close the bug
1101 (unless you secure permission from the maintainer).
1102
1103
1104       <sect>When bugs are closed by new uploads
1105         <p>
1106 If you fix a bug in your packages, it is your responsibility as the
1107 package maintainer to close the bug when it has been fixed.  However,
1108 you should not close the bug until the package which fixes the bug has
1109 been accepted into the Debian archive.  Therefore, once you get
1110 notification that your updated package has been installed into the
1111 archive, you can and should close the bug in the BTS.
1112         <p>
1113 Again, see the BTS documentation for details on how to do this.
1114 Often, it's sufficient to mail the <tt/.changes file to
1115 <email/<var/XXX/-done@bugs.debian.org/, where <var/XXX/ is your bug
1116 number.
1117
1118       <sect id="lintian-reports">Lintian reports
1119         <p>
1120 You should periodically get the new <package/lintian/ from `unstable' and
1121 check over all your packages.  Alternatively you can check for your
1122 maintainer email address at the <url
1123 id="http://www.debian.org/lintian/" name="online lintian report">.
1124 That report, which is updated automatically, contains <prgn/lintian/
1125 reports against the latest version of the distribution (usually from
1126 'unstable') using the latest <package/lintian/.
1127
1128
1129       <sect>Reporting lots of bugs at once
1130         <p>
1131 If you report more then 10 bugs on the same topic at once, it is
1132 recommended that you send a message to
1133 <email/debian-devel@lists.debian.org/ describing your intention before
1134 submitting the report. This will allow other developers to verify
1135 that the bug is a real problem. In addition, it will help prevent
1136 a situation in which several maintainers start filing the same bug
1137 report simultaneously.
1138         <p>
1139 Note that when sending lots of bugs on the same subject, you should
1140 send the bug report to <email/maintonly@bugs.debian.org/ so that the
1141 bug report is not forwarded to the bug distribution mailing list.
1142
1143
1144     <chapt id="tools">Overview of Debian Maintainer Tools
1145       <p>
1146 This section contains a rough overview of the tools available to
1147 maintainers.  These tools are meant to help convenience developers and 
1148 free their time for critical tasks.  
1149       <p>
1150 Some people prefer to use high-level package maintenance tools and
1151 some do not.  Debian is officially agnostic on this issue; any tool
1152 which gets the job done is fine.  Therefore, this section is not meant
1153 to stipulate to anyone which tools they should use or how they should
1154 go about with their duties of maintainership.  Nor is it meant to
1155 endorse any particular tool to the exclusion of a competing tool.
1156       <p>
1157 Most of the descriptions of these packages come from the actual
1158 package descriptions themselves.
1159
1160       <sect id="dpkg-dev">
1161         <heading><package/dpkg-dev/
1162         <p>
1163 <package/dpkg-dev/ contains the tools (including
1164 <prgn/dpkg-source/) required to unpack, build and upload Debian source
1165 packages.  These utilities contain the fundamental, low-level
1166 functionality required to create and manipulated packages; as such,
1167 they are required for any Debian maintainer.
1168
1169       <sect id="lintian">
1170         <heading><package/lintian/
1171         <p>
1172 <package/Lintian/ dissects Debian packages and reports bugs and
1173 policy violations. It contains automated checks for many aspects of
1174 Debian policy as well as some checks for common errors.  The use of
1175 <package/lintian/ has already been discussed in <ref
1176 id="upload-checking"> and <ref id="lintian-reports">.
1177
1178       <sect id="debhelper">
1179         <heading><package/debhelper/
1180         <p>
1181 <package/debhelper/ is a collection of programs that can be used in
1182 <tt>debian/rules</tt> to automate common tasks related to building
1183 binary Debian packages. Programs are included to install various files
1184 into your package, compress files, fix file permissions, integrate
1185 your package with the Debian menu system.
1186         <p>
1187 Unlike <package/debmake/, <package/debhelper/ is broken into
1188 several small, granular commands which act in a consistent manner.  As
1189 such, it allows a greater granularity of control than
1190 <package/debmake/.
1191
1192       <sect id="debmake">
1193         <heading><package/debmake/
1194         <p>
1195 <package/debmake/, a pre-cursor to <package/debhelper/, is a
1196 less granular <tt>debian/rules</tt> assistant. It includes two main
1197 programs: <prgn>deb-make</prgn>, which can be used to help a
1198 maintainer convert a regular (non-Debian) source archive into a Debian
1199 source package; and <prgn>debstd</prgn>, which incorporates in one big
1200 shot the same sort of automated functions that one finds in
1201 <package/debhelper/.
1202
1203       <sect id="cvs-buildpackage">
1204         <heading><package/cvs-buildpackage/
1205         <p>
1206 <package/cvs-buildpackage/ provides the capability to inject or
1207 import Debian source packages into a CVS repository, build a Debian
1208 package from the CVS repository, and helps in integrating upstream
1209 changes into the repository.
1210         <p>
1211 These utilities provide an infrastructure to facilitate the use of CVS
1212 by Debian maintainers. This allows one to keep separate CVS branches
1213 of a package for <em/stable/, <em/unstable/, and possibly
1214 <em/experimental/ distributions, along with the other benefits of a
1215 version control system.
1216
1217       <sect id="dupload">
1218         <heading><package/dupload/
1219         <p>
1220 <package/dupload/ is a package and a script to automagically upload
1221 Debian packages to the Debian archive, to log the upload, and to send
1222 mail about the upload of a package.  You can configure it for new
1223 upload locations or methods.
1224
1225   </book>
1226 </debiandoc>
1227
1228 <!-- Keep this comment at the end of the file
1229 Local variables:
1230 mode: sgml
1231 sgml-omittag:t
1232 sgml-shorttag:t
1233 sgml-minimize-attributes:nil
1234 sgml-always-quote-attributes:t
1235 sgml-indent-step:2
1236 sgml-indent-data:nil
1237 sgml-parent-document:nil
1238 sgml-exposed-tags:nil
1239 sgml-local-catalogs:nil
1240 sgml-local-ecat-files:nil
1241 End:
1242 -->