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