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