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