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