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