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