chiark / gitweb /
make ddp publish rule really publish
[developers-reference.git] / developers-reference.sgml
1 <!doctype debiandoc system [
2 <!-- include version information so we don't have to hard code it
3      within the document -->
4 <!entity % versiondata SYSTEM "version.ent"> %versiondata;
5 ]>
6 <debiandoc>
7 <!--
8
9  Topics to be included:
10   - bugs in upstream versions should be reported upstream!
11   - fill in ftp and www server discussion
12
13  -->
14
15   <book>
16
17       <title>Debian Developer's Reference
18       <author>Adam P. Harris, current maintainer <email/aph@debian.org/
19       <author>Christian Schwarz <email/schwarz@debian.org/
20       <author>Ian Jackson <email/ijackson@gnu.ai.mit.edu/
21       <version>version &version;, &date;
22
23       <copyright>
24 Copyright &copy;1998 Adam P. Harris.  Copyright &copy;1997,1998
25 Christian Schwarz.
26         <p>
27 This manual is free software; you may redistribute it and/or modify it
28 under the terms of the GNU General Public License as published by the
29 Free Software Foundation; either version 2, or (at your option) any
30 later version.
31         <p>
32 This is distributed in the hope that it will be useful, but
33 <em>without any warranty</em>; without even the implied warranty of
34 merchantability or fitness for a particular purpose.  See the GNU
35 General Public License for more details.
36         <p>
37 A copy of the GNU General Public License is available as
38 <tt>/usr/doc/copyright/GPL</tt> in the Debian GNU/Linux distribution
39 or on the World Wide Web at <url
40 id="http://www.gnu.org/copyleft/gpl.html">. You can also obtain it by
41 writing to the Free Software Foundation, Inc., 59 Temple Place - Suite
42 330, Boston, MA 02111-1307, USA.
43
44     <toc sect>
45
46     <chapt id="scope">Scope of This Document
47       <p>
48 The purpose of this document is to provide an overview of the
49 processes and resources used by Debian developers.
50       <p>
51 The processes discussed within include how to become a maintainer
52 (<ref id="new-maintainer">); how to upload new packages (<ref
53 id="upload">); how and when to do interim releases of other
54 maintainer's packages (<ref id="nmu">); how to move, remove, or orphan
55 packages (<ref id="archive-manip">); and how to handle bug reports
56 (<ref id="bug-handling">).
57       <p>
58 The resources discussed in this reference include the mailing lists
59 and servers (<ref id="servers">); a discussion of the structure of the
60 Debian archive (<ref id="archive">); explanation of the different
61 servers which accept package uploads (<ref id="upload-master">); and a
62 discussion of resources which an help maintainers with the quality of
63 their packages (<ref id="tools">).
64       <p>
65 It should be clear that this reference does not discuss the details of
66 the Debian package or how to generate Debian packages; that is
67 discussed in the <url
68 id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
69 name="Debian Packaging Manual">.  Nor is this reference intended to
70 give details on standards for how Debian software must behave, which
71 is documented in the <url
72 id="http://www.debian.org/doc/debian-policy/" name="Debian Policy
73 Manual">.
74
75
76     <chapt id="new-maintainer">Applying to Become a Maintainer
77         
78       <sect>Getting started
79         <p>
80 So, you've read all the documentation, you understand what everything
81 in the <prgn/hello/ example package is for, and you're about to
82 Debianise your favourite piece of software.  How do you actually
83 become a Debian developer so that your work can be incorporated into
84 the Project?
85         <p>
86 Firstly, subscribe to <email/debian-devel@lists.debian.org/ if you
87 haven't already.  Send the word <tt/subscribe/ in the <em/Subject/ of
88 a mail to <email/debian-devel-REQUEST@lists.debian.org/.  In case of
89 problems contact the list administrator at
90 <email/listmaster@lists.debian.org/.  More information on available
91 mailing lists can be found in <ref id="mailing-lists">.
92         <p>
93 You should subscribe and lurk for a bit before doing any coding, and
94 you should post about your intentions to work on something to avoid
95 duplicated effort.
96         <p>
97 Another good list to subscribe to is
98 <email/debian-mentors@lists.debian.org/.  See <ref id="mentors"> for
99 details.  The IRC channel <tt/#debian/ on the Linux People IRC network 
100 (i.e., <tt/irc.debian.org/) can also be helpful.
101
102
103       <sect>Registering as a Debian developer
104         <p>
105 Before you decide to work in the Debian Project you have to read the
106 <url id="http://www.debian.org/social_contract" name="Debian Social
107 Contract">.  Registering as a developer means that you agree with and
108 pledge to uphold the Debian Social Contract; it is very important that
109 maintainers are in accord with the essential ideas behind Debian
110 GNU/Linux.  Reading the <url
111 id="http://www.gnu.org/gnu/manifesto.html" name="GNU Manifesto"> would
112 also be a good idea.
113         <p>
114 The process of registering as a developer is a process of verifying
115 your identity and intentions.  As the number of people working on
116 Debian GNU/Linux has grown to over 400 people and our systems are used
117 in several very important places we have to be careful about being
118 compromised.  Therefore, we need to verify new maintainers before we
119 can give them accounts on our servers and letting them upload
120 packages.
121         <p>
122 Registration requires that the following information be sent to
123 <email/new-maintainer@debian.org/ as part of the registration
124 application:
125 <list>
126             <item>
127 Your name.
128             <item>
129 Your preferred login name on <tt/master/ (seven characters or
130 less<footnote>Can anyone clarify for me why logins on <tt>master</tt>
131 cannot be eight characters?</footnote> ), as well as the email address
132 at which you'd prefer to be subscribed to
133 <email/debian-private@lists.debian.org/ (typically this will be either
134 your primary mail address or your new <tt>debian.org</tt> address).
135             <item>
136 A phone number where we can call you.
137             <item>
138 A statement of intention, that is, what package(s) you intend to work
139 on, which Debian port you will be assisting, or how you intend to
140 contribute to Debian.
141             <item>
142 A statement that you have read and agree to uphold the <url
143 id="http://www.debian.org/social_contract" name="Debian Social
144 Contract">.
145             <item>
146 Some mechanism by which we can verify your real-life identity. For
147 example, any of the following mechanisms would suffice:
148 <list>
149                   <item>
150 A PGP key signed by any well-known signature, such as:
151 <list>
152                   <item>
153 Any current Debian developer you have met <em/in real life/.
154                   <item>
155 Any formal certification service (such as Verisign, etc.) that
156 verifies your identity.  A certification that verifies your email
157 address, and not you identity, is not sufficient.
158                       </list>
159                   <item>
160 Alternatively, you may identify yourself with a scanned (or physically
161 mailed) copy of any formal documents certifying your identity (such as
162 a birth certificate, national ID card, U.S. Driver's License, etc.).
163 If emailed, please sign the mail with your PGP key.
164                 </list>
165           </list>
166 If you do not have a PGP key yet, generate one. Every developer needs
167 a PGP key in order to sign and verify package uploads. You should read
168 the PGP manual, since it has much important information which is
169 critical to its security.  Many more security failures are due to
170 human error than to software failure or high-powered spy techniques.
171         <p>
172 Your PGP key must be at least 1024 bits long.  There is no reason to
173 use a smaller key, and doing so would be much less secure.  Your key
174 must be signed with at least your own user ID.  This prevents user ID
175 tampering.  You can do it by executing `<tt>pgp -ks
176 <var/your_userid/</tt>'.
177         <p>
178 If your PGP key isn't on public PGP key servers such as
179 <tt>pgp.net</tt>, please read the documentation available locally
180 <tt>/usr/doc/pgp/keyserv.doc</tt>.  That document contains
181 instructions on how to put your key on the public keyservers.
182         <p>
183 Due to export restrictions by the United States government some Debian
184 packages, including PGP, have been moved to an ftp site outside of the
185 United States. You can find the current locations of those packages on
186 <ftpsite/ftp.debian.org/ or <ftpsite/ftp.us.debian.org/ in the
187 <ftppath>/pub/debian/README.non-US</ftppath> file.
188         <p>
189 If you live in a country where use of cryptography even for
190 authentication is forbidden then please contact us so we can make
191 special arrangements.  This does not apply in France, where I believe
192 only encryption and not authentication is forbidden.
193         <p>
194 Once you have all your information ready, and your public key is
195 available on public key servers, send a message to
196 <email/new-maintainer@debian.org/ to register as an offical Debian
197 developer so that you will be able to upload your packages.  This
198 message must all the information discussed above.  The message must
199 also contain your PGP or RSA public key (extracted using <tt>pgp
200 -kxa</tt> in the case of PGP; note that <tt/gpg/ integration is
201 underway) for the database of keys which is distributed from
202 <ftpsite/ftp.debian.org/ in
203 <ftppath>/pub/debian/doc/debian-keyring.tar.gz</ftppath>, or the
204 <prgn>debian-keyring</prgn> package).  Please be sure to sign your
205 request message with your chosen PGP or RSA key.
206         <p>
207 Once this information is received and processed, you should be
208 contacted with information about your new Debian maintainer account.
209 If you don't hear anything within 7-14 days, please re-send your
210 original message--the new-maintainer volunteers are typically
211 overworked, and mistakes do occasionally happen.
212
213
214       <sect id="mentors">Debian Mentors
215         <p>
216 There is a mailing list called <email/debian-mentors@lists.debian.org/
217 which has been set up for newbie maintainers who seek help with
218 initial packaging and other developer-related issues.  Every new
219 developer is invited to subscribe to that list (see <ref
220 id="mailing-lists"> for details).
221         <p>
222 Those who prefer one-on-one help (e.g., via private emails) should
223 also post to that list and an experienced developer will volunteer to
224 help.
225
226
227     <chapt id="servers">Mailing Lists and Servers
228
229       <sect id="mailing-lists">Mailing lists
230         <p>
231 The mailing list server is at <tt/lists.debian.org/.  Mail
232 <tt/debian-<var/foo/-REQUEST@lists.debian.org/, where
233 <tt/debian-<var/foo// is the name of the list, with the word
234 <tt/subscribe/ in the <em/Subject/ to subscribe or <tt/unsubscribe/ to
235 unsubscribe.  More detailed instructions on how to subscribe and
236 unsubscribe to the mailing lists can be found at <url
237 id="http://www.debian.org/MailingLists/subscribe">, <url
238 id="ftp://ftp.debian.org/debian/doc/mailing-lists.txt"> or locally in
239 <tt>/usr/doc/debian/mailing-lists.txt</tt> if you have the
240 <prgn>doc-debian</prgn> package installed.
241         <p>
242 When replying to messages on the mailing list, please do not send a
243 carbon copy (<tt/CC/--this does not mean `courtesy copy') to the
244 original poster.  Anyone who posts to a mailing list should read it to
245 see the responses.
246         <p>
247 In addition, all messages should usually only be sent to one of the
248 following mailing lists: <email/debian-devel@lists.debian.org/,
249 <email/debian-policy@lists.debian.org/,
250 <email/debian-user@lists.debian.org/,
251 <email/debian-announce@lists.debian.org/, or
252 <email/debian-devel-announce@lists.debian.org/.  Additional mailing
253 lists are available for special purposes; see <url
254 id="http://www.debian.org/MailingLists/subscribe">.  Cross-posting is
255 discouraged.
256         <p>
257 <email/debian-private@lists.debian.org/ is a special mailing lists for
258 private discussions amongst Debian developers.  It is meant to be used
259 for posts which for whatever reason should not be published
260 publically.  As such, it is a low volume list, and users are urged not
261 to use <email/debian-private@lists.debian.org/ unless it is really
262 necessary.  Moreover, do <em/not/ forward email from that list to
263 anyone.
264         <p>
265 As ever on the net, please trim down the quoting of articles you're
266 replying to.  In general, please adhere to the usual conventions for
267 posting messages.
268         <p>
269 Online archives of mailing lists are available at <url
270 id="http://www.debian.org/Lists-Archives/">.
271
272
273       <sect>The master server
274         <p>
275 The master server, <tt/master.debian.org/, holds the cannonical copy
276 of the Debian archive (excluding the non-U.S. packages).  Generally,
277 package uploads go to this server; cf. <ref id="upload">.  All Debian
278 developers have accounts on this machine.
279
280       <sect>The FTP servers
281         <p>
282
283       <sect>The WWW servers
284         <p>
285
286
287     <chapt id="archive">The Debian Archive
288
289       <sect>Overview
290         <p>
291 The Debian GNU/Linux distribution consists of a lot of Debian packages
292 (<tt/.deb/'s, currently more than 1500) and a few additional files
293 (documentation, installation disk images, etc.).
294         <p>
295 Here is an example directory tree of a complete Debian distribution:
296 <example>
297 main/
298 main/binary-all/
299 main/binary-all/admin/
300 main/binary-all/base/
301 main/binary-all/comm/
302 main/binary-all/devel/
303      ...
304 main/binary-i386/
305 main/binary-m86k/
306      ...
307 main/source/
308 main/disks-i386/
309 main/disks-m68k/
310      ...
311
312 contrib/
313 contrib/binary-all/
314 contrib/binary-i386/
315 contrib/binary-m86k/
316      ...
317 contrib/source/
318
319 non-free/
320 non-free/binary-all/
321 non-free/binary-i386/
322 non-free/binary-m86k/
323          ...
324 non-free/source/
325 </example>
326         <p>
327 As you can see, the top-level directory of the distribution contains
328 three directories, namely <em>main</>, <em>contrib</>, and
329 <em>non-free</>. These directories are called <em>sections</>.
330         <p>
331 In each section, there is a directory with the source packages
332 (source), a directory for each supported architecture (binary-i386,
333 binary-m86k, etc.), and a directory for architecture independent
334 packages (binary-all).
335         <p>
336 The <em/main/ section contains additional directories which holds the
337 disk images and some essential pieces of documentation required for
338 installing the Debian distribution on a specific architecture
339 (disks-i386, disks-m68k, etc.).
340         <p>
341 The <em/binary/ and <em/source/ directories are divided further into
342 <em/subsections/.
343
344
345       <sect>Sections
346         <p>
347 The <em>main</em> section is what makes up the <em>Debian GNU/Linux
348 distribution</>. This is because the packages in the other two
349 sections do not fully comply with all our guidelines.  As such, they
350 are not officially part of Debian.
351         <p>
352 For example, every package in the main distribution must fully comply
353 with the <url id="http://www.debian.org/social_contract#guidelines"
354 name="Debian Free Software Guidelines"> (DFSG) and with all other
355 policy requirements as described in the <url
356 id="http://www.debian.org/doc/debian-policy/" name="Debian Policy
357 Manual">. (The DFSG is our definition of ``free software.'' Check out
358 the Debian Policy Manual for details.)
359         <p>
360 The packages which do not apply to the DFSG are placed in the
361 <em/non-free/ section. These packages are not considered as part of
362 the Debian distribution, though we support their use, and we provide
363 infrastructure (such as our bug-tracking system and mailing lists) for
364 non-free software packages.
365         <p>
366 Packages in the <em/contrib/ section have to apply to the DFSG, but
367 fail other requirements.  For instance, they might depend on non-free
368 packages.
369         <p>
370 (The <url id="http://www.debian.org/doc/debian-policy/" name="Debian
371 Policy Manual"> contains a more exact definition of the three
372 sections. This is just meant to be an introduction.)
373         <p>
374 The separation of the three sections at the top-level of the archive
375 is important for all people who want to distribute Debian, either via
376 FTP servers on the Internet or on CD-ROMs: by distributing only the
377 <em/main/ and <em/contrib/ sections, one can avoid any legal risks.
378 Some packages in the <em/non-free/ section do not allow commercial
379 distribution, for example.
380         <p>
381 On the other hand, a CD-ROM vendor could easily check the individual
382 package licenses of the packages in <em/non-free/ and include as many
383 on the CD-ROMs as he's allowed. (Since this varies from vendor to
384 vendor very much, this job can't be done by the Debian developers.)
385
386
387       <sect>Architectures
388         <p>
389 In the first days, the Linux kernel was only available for the Intel
390 i386 (or greater) platforms, and so was Debian. But when Linux became
391 more and more popular, the kernel was ported to other architectures,
392 too.
393         <p>
394 The Linux 2.0 kernel supports Intel, DEC Alphas, SUN Sparcs, M68000
395 machines (like Atari and Amiga), MIPS, and PowerPC.
396         <p>
397 Debian GNU/Linux 1.3 is only available for Intel platforms.  Debian
398 2.0 supports Intel and m68k architectures.  The next version of Debian
399 is likely to also support Alpha, PPC, and Sparc architectures, if not
400 more.
401
402
403       <sect>Subsections
404         <p>
405 The sections <em/main/, <em/contrib/, and <em/non-free/ are split into
406 <em/subsections/, to simplify the installation process and the
407 maintainance of the archive.  Subsections are not formally defined,
408 excepting perhaps for the "base" subsection.  Subsections exist simply
409 to simpilfy the organization and browsing of available packages.
410 Please check the current Debian distribution to see which sections are
411 available.
412
413
414
415       <sect>Packages
416         <p>
417 There are two types of Debian packages, namely <em/source/ and
418 <em/binary/ packages.
419         <p>
420 Source packages consist of either two or three files: a <tt/.dsc/
421 file, and either one <tt/.tar.gz/ file or a <tt/.orig.tar.gz/ and a
422 <tt/.diff.gz/ file.
423         <p>
424 If a package is developed specially for Debian and is not distributed
425 outside of Debian, there is just one <tt/.tar.gz/ file which contains
426 the sources of the program.
427         <p>
428 If a package is distributed elsewhere too, the <tt/.orig.tar.gz/ file
429 stores the so-called <em/upstream source code/, that is the source
430 code that's distributed from the <em/upstream maintainer/ (author). In
431 this case, the <tt/.diff.gz/ contains the changes made by the Debian
432 maintainer.
433         <p>
434 The <tt/.dsc/ lists all components of the source package together with
435 checksums (md5sums) and some additional info about the package
436 (maintainer, version, etc.).
437
438
439       <sect>Distribution directories
440         <p>
441 If you have a look at the Debian FTP server or one of its mirrors,
442 you'll discover that there is one additional directory level on top of
443 the directory tree, as described in the previous chapter. These
444 directories are the <em/distribution directories/.  All distributions
445 are contained in the <tt/dists/ directory in the top-level of the
446 Debian archive (the symlinks from the top-level directory to the
447 distributions themselves is for backwards compatability and
448 deprecated).
449
450         <sect1>Stable, unstable, and sometimes frozen
451         <p>
452 There is always a distribution called <em/stable/ (residing in
453 <tt>dists/stable</tt>) and one called <em/unstable/ (residing in
454 <tt>dists/unstable</tt>. This reflects the development process of the
455 Debian project.
456         <p>
457 The ``development'' is done in the <em/unstable/ distribution (that's
458 why this distribution is sometimes called <em/development
459 distribution/). Every Debian developer can update his or her packages in
460 this distribution at any time. Thus, the contents of this distribution
461 changes from day to day and since no special effort is done to test
462 this distribution it's sometimes ``unstable.''
463         <p>
464 After about a period of development, the <em/unstable/ distribution is
465 copied in a new distribution directory, called <em/frozen/. After
466 that, no changes are allowed to the frozen distribution, except bug
467 fixes. (That's why it's called ``frozen.'')  After another month or a
468 little longer, the <em/frozen/ distribution is renamed to <em/stable/,
469 overriding the old <em/stable/ distribution, which is removed at that
470 time.
471         <p>
472 This development cycle is based on the assumption that the
473 <em/unstable/ distribution becomes <em/stable/ after passing a period
474 of testing as <em/frozen/. Unfortunately, even once a distribution is
475 considered <em/stable/, a few bugs inevitably remain--that's why the
476 stable distribution is updated every now and then. However, these
477 updates are tested very carefully and have to be acknowledged
478 individually to reduce the risk of introducing new bugs.  You can find
479 proposed additions to <em/stable/ in the <tt/proposed-updates/
480 directory.
481         <p>
482 Note, that development is continued during the ``freeze'' period,
483 since a new <em/unstable/ distribution is be created when the older
484 <em/unstable/ is moved to <em/frozen/.
485         <p>
486 In summary, there is always a <em/stable/ and an <em/unstable/
487 distribution available, and the <em/frozen/ distribution shows up for
488 a month or so from time to time.
489
490
491         <sect1>Experimental
492           <p>
493 The <em/experimental/ distribution is a specialty distribution.  It is
494 not a full distribution in the same sense that 'stable' and 'unstable'
495 are.  Instead, it is meant to be a temporary staging area for highly
496 experimental software where there's a good chance that the software
497 could break your system.  Users who download and install packages from
498 <em/experimental/ are expected to have been duly warned.  In short,
499 all bets are off for the <em/experimental/ distribution.
500           <p>
501 Developers should be very selective in the use of the
502 <em/experimental/ distribution.  Even if a package is highly unstable,
503 it could well still go into <em/unstable/; just state a few warnings
504 in the description.  However, if there is a chance that the software
505 could do grave damage to a system, it might be better to put it into
506 <em/experimental/.
507           <p>
508 For instance, an experimental encrypted filesystem should probably go
509 into experimental.  A new, beta, version of some software which uses
510 completely different configuration might go into experimental at the
511 maintainer's discretion.  New software which isn't likely to damage
512 your system can go into <em/unstable/.
513
514
515       <sect id="codenames">Release code names
516         <p>
517 Every released Debian distribution has a <em/code name/: Debian 1.1 is
518 called <em/buzz/, Debian 1.2 <em/rex/, Debian 1.3 <em/bo/, Debian 2.0
519 <em/hamm/, Debian 2.1 will be called <em/slink/, etc.  There is also a 
520 "pseudo-distribution", called <em/sid/, which is 
521 used to contain packages for architectures which are not yet
522 officially supported or released by Debian.  are intended to be
523 released for some future distribution.
524         <p>
525 Since the Debian has an open development model (i.e., everyone can
526 participate and follow the development) even the ``development
527 versions'' (unstable) are distributed via the Internet on the Debian
528 FTP server. This FTP server is mirrored by lots of other
529 systems. Thus, if we'd call the directory which contains the
530 development version simply `unstable', then we would have to rename it
531 to `stable' when the version is released, which would cause all FTP
532 mirrors to re-get the whole distribution (which is already very
533 large!).
534         <p>
535 On the other hand, if we would call the distribution directories
536 <em>Debian-x.y</em> from the beginning, people would think that Debian
537 release <em>x.y</> is available. (This happened in the past, where a
538 CD-ROM vendor built a Debian 1.0 CD-ROM based on a pre-1.0 development
539 version. That's the reason why the first official Debian release was
540 1.1, and not 1.0.)
541         <p>
542 Thus, the names of the distribution directories in the archive should
543 stay the same during the development period and after the release but
544 there may be symbolic links, which can be changed.
545         <p>
546 That's why the distribution directories use the <em/code names/ and
547 there are symbolic links <em/stable/, <em/unstable/, <em/frozen/,
548 etc., which point to the appriopriate release directories.
549
550
551     <chapt id="upload">Package uploads
552
553       <sect>Announcing new packages
554         <p>
555 If you want to create a new package for the Debian distribution, you
556 should first check the <url
557 id="http://www.debian.org/doc/prospective-packages.html"
558 name="Work-Needing and Prospective Packages (WNPP)"> page.  Checking
559 the WNPP ensures that no-one is already working on packaging that
560 software, and that effort is not duplicated. Assuming no-one else is
561 already working on your prospective package, you must then send a
562 short email to <email/debian-devel@lists.debian.org/ describing your
563 plan to create a new package.  You should set the subject of the email
564 to "intent to package <var/foobar/", substituting the name of the new
565 package for <var/foobar/.
566         <p>
567 There are a number of reasons why we ask maintainers to follow these
568 steps.
569           <list compact>
570             <item>
571 It helps the (potentially new) maintainer to tap into the experience
572 of people on the list, and lets them know if any one else is working
573 on it already.
574
575             <item>
576 It lets other people thinking about working on the package know that
577 there already is a volunteer, and efforts may be shared.  The "intent
578 to package" message to <email/debian-devel@lists.debian.org/ will be
579 picked up the the WNPP maintainer, and your intention will be
580 published in subsequent versions of the WNPP document.
581
582             <item>
583 It lets the rest of the maintainers know more about the package than
584 the one line description and the changelog entry "Initial version"
585 that generally gets posted to <tt/debian-devel-changes/ by default.
586
587             <item>
588 It is helpful to the people who live off unstable (and form our first
589 line of testers); we should encourage these people.
590
591             <item>
592 I think the announcements gives us a better feel of what is going on,
593 and what is new, in the project.
594
595             <item>
596 We should not dismiss anybody who installs from unstable and helps us
597 debug our packages as "fools, fools, you installed from unstable; you
598 deserve what you get"--we derive a certain benefit from the alpha
599 testers.
600
601             <item>
602 If we appreciate alpha testers, than any name changes have to be
603 backwards compatible with the people who already installed the old
604 package (conflict and replace old package name at a minimum).
605           </list>
606
607
608       <sect id="uploading">Uploading a package
609
610         <sect1>Generating the changes file
611           <p>
612 When a package is uploaded to the Debian FTP archive, it must be
613 accompanied by a <tt/.changes/ file which gives directions for its
614 handling.  This is usually generated by <prgn/dpkg-genchanges/.
615           <p>
616 This file is a control file with the following fields:
617 <list compact>
618               <item><tt/Format/
619               <item><tt/Date/
620               <item><tt/Source/
621               <item><tt/Binary/
622               <item><tt/Architecture/
623               <item><tt/Version/
624               <item><tt/Distribution/
625               <item><tt/Urgency/
626               <item><tt/Maintainer/
627               <item><tt/Description/
628               <item><tt/Changes/
629               <item><tt/Files/
630             </list>
631           <p>
632 All of them are mandatory for a Debian upload.  See the list of
633 control fields in the <url
634 id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
635 name="Debian Packaging Manual"> for the contents of these fields.
636           <p>
637 Notably, the <tt/Distribution/ field, which originates from the
638 <tt>debian/changelog</tt> file, should indicate which distribution the
639 package is intended for.  There are four possible values for this
640 field: <em/stable/, <em/unstable/, <em/frozen/, or <em/experimental/;
641 these values can also be combined.  For instance, if you have a
642 crucial security fix release of a package, and the package has not
643 diverged between the <em/stable/ and <em/unstable/ distributions, then
644 you might put <tt/stable unstable/ in the <tt>debian/changelog</tt>'s
645 distribution field.  Or, if Debian has been frozen, and you want to
646 get a bug-fix release into <em/frozen/, you would set the distribution
647 to <tt/frozen unstable/.  Note that setting the distribution to
648 <tt/stable/ means that the pacakge will be placed into the
649 <tt>proposed-updates</tt> directory of the Debian archive for further
650 testing, before it is actually included in <em/stable/.  Also note
651 that it never makes sense to combine the <em/experimental/
652 distribution with anything else.
653
654           <p>
655 The first time a version is uploaded which corresponds to a particular
656 upstream version the original source tar file should be uploaded and
657 included in the <tt/.changes/ file; subsequent times the very same tar
658 file should be used to build the new diffs and <tt/.dsc/ files, and it
659 need not then be uploaded.
660           <p>
661 By default <prgn/dpkg-genchanges/ and <prgn/dpkg-buildpackage/ will
662 include the original source tar-file if and only if the Debian
663 revision part of the source version number is <tt/0/ or <tt/1/,
664 indicating a new upstream version.  This behaviour may be modified by
665 using <tt/-sa/ to always include it or <tt/-sd/ to always leave it
666 out.
667           <p>
668 If no original source is included in the upload then the original
669 source tar-file used by <prgn/dpkg-source/ when constructing the
670 <tt/.dsc/ file and diff to be uploaded <em/must/ be byte-for-byte
671 identical with the one already in the archive.  If there is some
672 reason why this is not the case then the new version of the original
673 source should be uploaded, possibly by using the <tt/-sa/ flag.
674
675
676         <sect1 id="upload-checking">Checking the package prior to upload
677           <p>
678 Before you upload your package, you should do basic testing on it.
679 Make sure you try the following activities (you'll need to have an
680 older version of the Debian package around).
681 <list>
682               <item> install the package and make sure the software
683               works
684
685               <item> upgrade the package from an older version to your
686               new version
687
688               <item> downgrade the package to the previous version
689               (this tests the <tt/postrm/ and <tt/prerm/ scripts)
690
691               <item> remove the package
692
693               <item> run <prgn/lintian/ over the package.  You can run
694               <prgn/lintian/ as follows: <tt>lintian -v
695               <var>package-NN</var>.changes</tt>. This will check the
696               source package as well as the binary package.  If you
697               don't understand the output that <prgn/lintian/
698               generates, try adding the <tt/-i/ switch, which will
699               cause <prgn/lintian/ to output a very verbose
700               description of the problem.
701
702             </list>
703
704
705         <sect1 id="upload-master">Transferring the files to master
706           <p>
707 To upload a package, you need a personal account on
708 <ftpsite>master.debian.org</ftpsite>.  All maintainers should already
709 have this account.  You can use either <prgn/ssh/ or <prgn/ftp/ to
710 transfer the files.  In either case, the files need to be placed into
711 <ftppath>/home/Debian/ftp/private/project/Incoming</ftppath>.  (You
712 cannot upload to Incoming on master using anonymous FTP--you must use
713 your user-name and password.)
714           <p>
715 You may also find the Debian package <prgn/dupload/ useful when
716 uploading packages.  This handy program is distributed with defaults
717 for uploading via <prgn/ftp/ to <tt/master/, <tt/chiark/, and
718 <tt/erlangen/.  It can also be configured to use <prgn/ssh/.  See
719 <manref name="dupload" section="1"> and <manref name="dupload"
720 section="5"> for more information.
721
722
723         <sect1>Uploads via Chiark
724           <p>
725 If you have a slow network connection to <tt/master/, there are two
726 alternatives: You can upload files to Incoming via a cron-driven
727 upload queue in Europe on <tt/chiark/. For details connect to
728 <ftpsite>ftp.chiark.greenend.org.uk</ftpsite> using anonymous FTP and
729 read
730 <ftppath>/pub/debian/private/project/README.how-to-upload</ftppath>.
731           <p>
732 The program <tt/dupload/ supports uploads to chiark, please refer to
733 the documentation that comes with the program for details.
734
735
736         <sect1>Uploads via Erlangen
737           <p>
738 Another cron-driven upload queue is available in Germany: just upload
739 the files via anonymous FTP to <url
740 id="ftp://ftp.uni-erlangen.de/pub/Linux/debian/UploadQueue">.
741           <p>
742 The upload must be a complete Debian upload, as you would put it into
743 master's <tt/Incoming/, i.e., a <tt/.changes/ files along with the
744 other files mentioned in the <tt/.changes/. The queue daemon also
745 checks that the <tt/.changes/ is correctly PGP-signed by a Debian
746 developer, so that no bogus files can find their way to master via the
747 queue. Please also make sure that the <tt/Maintainer:/ field in the
748 <tt/.changes/ contains <em/your/ e-mail address. The address found
749 there is used for all replies, just as on master.
750           <p>
751 There's no need to move your files into a second directory after the
752 upload as on chiark. And, in any case, you should get some mail reply
753 from the queue daemon what happened to your upload. Hopefully it
754 should have been moved to master, but in case of errors you're
755 notified, too.
756           <p>
757 The program <prgn/dupload/ supports uploads to erlangen, please refer
758 to the documentation that comes with the program for details.
759
760
761         <sect1>Uploading to the non-us server
762           <p>
763 To upload a package to the <em/non-us/ server you just have to
764 transfer the files via anonymous ftp to <url
765 id="ftp://nonus.debian.org/pub/debian-non-US/Incoming">.  Note, that
766 the <tt>.changes</tt> file must have a valid PGP signature from one of
767 the keys of the developers keyring.
768
769
770       <sect>Announcing package uploads
771         <p>
772 When a package is uploaded an announcement should be posted to one of
773 the debian-changes lists. The announcement should give the (source)
774 package name and version number, and a very short summary of the
775 changes, in the <em/Subject/ field, and should contain the PGP-signed
776 <tt/.changes/ file.  Some additional explanatory text may be added
777 before the start of the <tt/.changes/ file.
778         <p>
779 If a package is released with the <tt/Distribution:/ set to
780 <tt/stable/, the announcement is sent to
781 <email/debian-changes@lists.debian.org/.
782         <p>
783 If a package is released with <tt/Distribution:/ set to <tt/unstable/,
784 <tt/experimental/, or <tt/frozen/ (when present), the announcement
785 should be posted to <email/debian-devel-changes@lists.debian.org/
786 instead.
787         <p>
788 If you use dupload, it is clever enough to determine for itself where
789 the announcement should go, and will automatically mail the
790 announcement.
791
792       <sect>Notification that a new package has been installed
793         <p>
794 The Debian archive maintainers are responsible for handling package
795 uploads.  For the most part, uploads are automatically handled on a
796 daily basis by an archive maintenance tool called <prgn/dinstall/.
797 Specifically, updates to existing packages to the `unstable'
798 distribution are handled automatically. In other cases, notably new
799 packages, placing the uploaded package into the distribution is
800 handled manually. When uploads are handled manually, the change to the
801 archive may take up to a week to occur (please be patient).
802         <p>
803 In any case, you will receive notification indicating that the package
804 has been uploaded via email.  Please examine this notification
805 carefully.  Sometimes the "override" file which the archive
806 maintainers use to indicate where packages go, is incorrect or
807 out-of-sync with your control file.  In these cases, you should either
808 correct your control file or file a bug against <tt/ftp.debian.org/
809 using the BTS.
810
811       <sect id="nmu">Interim releases
812         <p>
813 Under certain circumstances it is necessary for someone other than the
814 usual package maintainer to make a release of a package.  For example,
815 a porter for another architecture may have to make some small changes
816 to the source package and does not wish to wait with uploading their
817 release until the main maintainer has incorporated the patch, or a
818 serious security problem or bug may have come to light requiring
819 immediate attention.
820         <p>
821 When a security bug is detected a fixed package should be uploaded as
822 soon as possible. In this case, the Debian Security Managers should
823 get in contact with the package maintainer to make sure a fixed
824 package is uploaded within a reasonable time (less than 48 hours). If
825 the package maintainer cannot provide a fixed package fast enough or
826 if he/she cannot be reached in time, the Security Manager may upload a
827 fixed package.
828         <p>
829 When someone other than the usual maintainer releases a package they
830 should add a new component to the <var/debian-revision/ component of
831 the version number--that is, the portion after the (last) hyphen.
832 This extra component will start at <tt/1/.  This is to avoid
833 `stealing' one of the usual maintainer's version numbers, possibly
834 disrupting their work.  If there is no <var/debian-revision/ component
835 in the version number then one should be created, starting at <tt/1/.
836         <p>
837 If it is absolutely necessary for someone other than the usual
838 maintainer to make a release based on a new upstream version then the
839 person making the release should start with the <var/debian-revision/
840 value <tt/0.1/.  The usual maintainer of a package should start their
841 <var/debian-revision/ numbering at <tt/1/.
842         <p>
843 Maintainers other than the usual package maintainer should make as few
844 changes to the package as possible, and they should always send a
845 unified context diff (<tt/diff -u/) detailing their changes to the bug
846 tracking system properly flagged with the correct package so that the
847 usual maintainer is kept aware of the situation.
848         <p>
849 If the non-maintainer upload (as known as an "NMU") fixes some
850 existing bugs, the bug reports should not be closed.  Technically,
851 only the official package maintainer or the original bug submitter are
852 allowed to close bugs. However, the person making the non-maintainer
853 release should send a short message to the bug tracking system to all
854 the fixed bugs explaining that they have been fixed.  Using
855 <email/control@bugs.debian.org/, the party doing the NMU should also
856 set the severity of the bugs fixed in the NMU to "fixed".  This
857 ensures that everyone knows that the bug was fixed in an NMU; however
858 the bug is left open until the changes in the NMU are incorporated
859 "officially" into the package by the offical package maintainer.
860         <p>
861 The normal maintainer should do at least one of the following:
862           <list compact>
863             <item>
864 apply the diff,
865             <item>
866 read the diff and decide on each part of it themselves, or
867             <item>
868 if the maintainer decides not to apply the patch but to release a new
869 version, read the description of the changes to the next upstream
870 version and ensure that they fix each problem that was fixed in the
871 non-maintainer release.
872           </list>
873         <p>
874 In addition, the normal maintainer should <em/always/ include an entry
875 in the changelog file documenting the non-maintainer upload.
876
877
878       <sect>Maintainer changes
879         <p>
880 Periodically, a listing of packages in need of new maintainers will be
881 sent to <email/debian-devel@lists.debian.org</email> list. This list
882 is also available at in the Work-Needing and Prospective Packages
883 document (WNPP), <url
884 id="ftp://ftp.debian.org/debian/doc/package-developer/prospective-packages.html">
885 and at <url
886 id="http://www.debian.org/doc/prospective-packages.html">. If you wish
887 to take over maintenance of any of the packages listed in the WNPP, or
888 if you can no longer maintain a packages you have, or you simply want
889 to know if any one is working on a new package, send a message to
890 <email/wnpp@debian.org/.
891         <p>
892 If you take over an old package, you probably want to be listed as the
893 package's official maintainer in the bug system. This will happen
894 automatically once you upload a new version with an updated
895 <tt/Maintainer:/ field. If you do not expect to upload a new version
896 for a while, send an email to <email/override-change@debian.org/ so
897 that bug reports will go to you.
898
899
900     <chapt id="archive-manip">Moving, Removing, Renaming, and Orphaning Packages
901       <p>
902 Some archive manipulation operation are not automated in the Debian
903 upload process.  This chapter gives guidelines in what to do in these
904 cases.
905
906       <sect>Moving packages
907         <p>
908 Sometimes a package will change either it's section or it's
909 subsection.  For instance, a package from the `non-free' section might
910 be GPL'd in a later version; in this case you should consider moving
911 it to `main' or `contrib' (see the <url
912 id="http://www.debian.org/doc/debian-policy/" name="Debian Policy
913 Manual"> for guidelines).
914         <p>
915 In this case, it is sufficient to edit the package control information
916 normally and re-upload the package (see the <url
917 id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
918 name="Debian Packaging Manual"> for
919 details).  Carefully examine the installation log sent to you when the
920 package is installed into the archive.  If for some reason the old
921 location of the package remains, file a bug against
922 <prgn/ftp.debian.org/ asking that the old location be removed.  Give
923 details on what you did, since it might be a <prgn/dinstall/ bug.
924
925
926       <sect>Removing packages
927         <p>
928 If for some reason you want to completely remove a package (say, if it
929 is an old compatability library which is not longer required), you
930 need to file a bug against <prgn/ftp.debian.org/ asking that the
931 package be removed.  Make sure you indicate which distribution the
932 package should be removed from.
933         <p>
934 If in doubt concerning whether a package is disposable, email
935 <email/debian-devel@lists.debian.org/ asking for opinions.
936
937
938       <sect>Replacing or renaming packages
939         <p>
940 Sometimes you made a mistake naming the package and you need to rename
941 it.  In this case, you need to follow a two-step process.  First, set
942 your <tt>debian/control</tt> file to replace and conflict with the
943 obsolete name of the package (see the <url
944 id="http://www.debian.org/doc/packaging-manuals/packaging.html/"
945 name="Debian Packaging Manual"> for details).  Once you've uploaded
946 that package, and the package has moved into the archive, file a bug
947 against <prgn/ftp.debian.org/ asking to remove the package with the
948 obsolete name.
949
950
951       <sect>Orphaning a package
952         <p>
953 If you can no longer maintain a package, then you should set the
954 package maintainer to <tt>Debian QA
955 &lt;debian-qa@lists.debian.org&gt;</tt> and email
956 <email/wnpp@debian.org/ indicating that the package is now orphaned.
957 If the package is especially crucial to Debian, you should instead
958 email <email/debian-devel@lists.debian.org/ asking for a new
959 maintainer.
960
961
962     <chapt id="bug-handling">Handling Bug Reports
963
964       <sect>Monitoring bugs
965         <p>
966 If you want to be a good maintainer, you should periodically check the
967 <url id="http://www.debian.org/Bugs/" name="Debian bug tracking system
968 (BTS)"> for your packages.  The BTS contains all the open bugs against 
969 your packages.
970         <p>
971 Maintainers interact with the BTS via email addresses at
972 <tt/bugs.debian.org/.  Documentation on available commands can be
973 found at <url id="http://www.debian.org/Bugs/">, or, if you have
974 installed the <prgn/debian-doc/ package, you can look at the local
975 files <tt>/usr/doc/debian/bug-*</tt>.
976         <p>
977 Often as a package maintainer, you find bugs in other packages or else
978 have bugs reported to your packages which need to be reassigned.  The
979 BTS instructions can tell you how to do this.  Make sure the bug is
980 not already filed against a package.  Try to do a good job reporting a
981 bug and redirecting it to the proper location.  For extra credit, you
982 can go through other packages, merging bugs which are reported more
983 than once, or setting bug severities to "fixed" when they have already
984 been fixed.  Note that when you are neither the bug submitter nor the
985 package maintainer, you are not empowered to actually close the bug
986 (unless you secure permission from the maintainer).
987
988
989       <sect>When bugs are closed by new uploads
990         <p>
991 If you fix a bug in your packages, it is your responsibility as the
992 package maintainer to close the bug when it has been fixed.  However,
993 you should not close the bug until the package which fixes the bug has
994 been accepted into the Debian archive.  Therefore, once you get
995 notification that your updated package has been installed into the
996 archive, you can and should close the bug in the BTS.
997         <p>
998 Again, see the BTS documentation for details on how to do this.
999 Often, it's sufficient to mail the <tt/.changes file to
1000 <email/<var/XXX/-done@bugs.debian.org/, where <var/XXX/ is your bug
1001 number.
1002
1003       <sect id="lintian-reports">Lintian reports
1004         <p>
1005 You should periodically get the new <prgn/lintian/ from `unstable' and
1006 check over all your packages.  Alternatively you can check for you're
1007 maintainer email address at <url id="http://www.debian.org/lintian/">.
1008 That page, which is updated automatically, contains <prgn/lintian/
1009 reports against the latest version of the package (usually from
1010 'unstable') using the latest <prgn/lintian/.
1011
1012
1013       <sect>Reporting lots of bugs at once
1014         <p>
1015 If you report more then 10 bugs on the same topic at once, it is
1016 recommended that you send a message to
1017 <email/debian-devel@lists.debian.org/ describing your intention before
1018 submitting the report. This will allow other developers to verify that
1019 the bug is a real problem. In addition, it will prevent the situation
1020 where several maintainers start filing the same bug report
1021 simultaneously.
1022         <p>
1023 Note, that when sending lots of bugs on the same subject, you should
1024 send the bug report to <email/maintonly@bugs.debian.org/ so that the
1025 bug report is not forwarded to the bug distribution mailing list.
1026
1027
1028     <chapt id="tools">Whirlwind Tour of Debian Maintainer Tools
1029       <p>
1030 This section contains a rough overview of the tools available to
1031 maintainers.  These tools are meant to help convenience developers and 
1032 free their time for critical tasks.  
1033       <p>
1034 Some people prefer to use high-level package maintenance tools and
1035 some do not.  Debian is officially agnostic on this issue, other than
1036 making the attempt to accomodate the reasonable wishes of developers.
1037 Therefore, this section is not meant to stipulate to anyone which
1038 tools they should use or how they should go about with their duties of
1039 maintainership.  Nor is it meant to endorse any particular tool to the
1040 exclusion of a competing tool.
1041       <p>
1042 Most of the descriptions of these packages come from the actual
1043 package descriptions themselves.
1044
1045       <sect id="dpkg-dev">
1046         <heading><prgn>dpkg-dev</prgn>
1047         <p>
1048 <prgn>dpkg-dev</prgn> contains the tools (including
1049 <prgn/dpkg-source/) required to unpack, build and upload Debian source
1050 packages.  These utilities contain the fundamental, low-level
1051 functionality required to create and manipulated packages; as such,
1052 they are required for any Debian maintainer.
1053
1054       <sect id="lintian">
1055         <heading><prgn>lintian</prgn>
1056         <p>
1057 <prgn>Lintian</prgn> dissects Debian packages and reports bugs and
1058 policy violations. It contains automated checks for many aspects of
1059 Debian policy as well as some checks for common errors.  The use of
1060 <prgn>lintian</prgn> has already been discussed in <ref
1061 id="upload-checking"> and <ref id="lintian-reports">.
1062
1063       <sect id="debhelper">
1064         <heading><prgn>debhelper</prgn>
1065         <p>
1066 <prgn>debhelper</prgn> is a collection of programs that can be used in
1067 <tt>debian/rules</tt> to automate common tasks related to building
1068 binary Debian packages. Programs are included to install various files
1069 into your package, compress files, fix file permissions, integrate
1070 your package with the Debian menu system.
1071         <p>
1072 Unlike <prgn>debmake</prgn>, <prgn>debhelper</prgn> is broken into
1073 several small, granular commands which act in a consistent manner.  As
1074 such, it allows a greater granularity of control than
1075 <prgn>debmake</prgn>.
1076
1077       <sect id="debmake">
1078         <heading><prgn>debmake</prgn>
1079         <p>
1080 <prgn>debmake</prgn>, a pre-cursor to <prgn>debhelper</prgn>, is a
1081 less granular <tt>debian/rules</tt> assistant. It includes two main
1082 programs: <prgn>deb-make</prgn>, which can be used to help a
1083 maintainer convert a regular (non-Debian) source archive into a Debian
1084 source package; and <prgn>debstd</prgn>, which incorporates in one big
1085 shot the same sort of automated functions that one finds in
1086 <prgn>debhelper</prgn>.
1087
1088       <sect id="cvs-buildpackage">
1089         <heading><prgn>cvs-buildpackage</prgn>
1090         <p>
1091 <prgn>cvs-buildpackage</prgn> provides the capability to inject or
1092 import Debian source packages into a CVS repository, build a Debian
1093 package from the CVS repository, and helps in integrating upstream
1094 changes into the repository.
1095         <p>
1096 These utilities provide an infrastructure to facilitate the use of CVS
1097 by Debian maintainers. This allows one to keep separate CVS branches
1098 of a package for <em/stable/, <em/unstable/, and possibly
1099 <em/experimental/ distributions, along with the other benefits of a
1100 version control system.
1101
1102       <sect id="dupload">
1103         <heading><prgn>dupload</prgn>
1104         <p>
1105 <prgn>dupload</prgn> is a package and a script to automagically upload
1106 Debian packages to the Debian archive, to log the upload, and to send
1107 mail about the upload of a package.  You can configure it for new
1108 upload locations or methods.
1109
1110   </book>
1111 </debiandoc>
1112
1113 <!-- Keep this comment at the end of the file
1114 Local variables:
1115 mode: sgml
1116 sgml-omittag:t
1117 sgml-shorttag:t
1118 sgml-minimize-attributes:nil
1119 sgml-always-quote-attributes:t
1120 sgml-indent-step:2
1121 sgml-indent-data:nil
1122 sgml-parent-document:nil
1123 sgml-exposed-tags:nil
1124 sgml-local-catalogs:nil
1125 sgml-local-ecat-files:nil
1126 End:
1127 -->