/[ddp]/manuals/trunk/developers-reference/pkgs.dbk
ViewVC logotype

Contents of /manuals/trunk/developers-reference/pkgs.dbk

Parent Directory Parent Directory | Revision Log Revision Log


Revision 7071 - (hide annotations) (download)
Sun Feb 14 17:46:38 2010 UTC (3 years, 3 months ago) by hertzog
File size: 112629 byte(s)
Small typo fixes and clarifications/rewordings suggested by Karl Goetz. Closes: #567233
1 debacle 4902 <?xml version="1.0" encoding="utf-8"?>
2     <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
3 debacle 4910 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
4 debacle 4911 <!ENTITY % commondata SYSTEM "common.ent" > %commondata;
5 debacle 4910 ]>
6 debacle 4902 <chapter id="pkgs">
7     <title>Managing Packages</title>
8     <para>
9     This chapter contains information related to creating, uploading, maintaining,
10     and porting packages.
11     </para>
12     <section id="newpackage">
13     <title>New packages</title>
14     <para>
15     If you want to create a new package for the Debian distribution, you should
16 debacle 4910 first check the <ulink url="&url-wnpp;">Work-Needing and
17 debacle 4902 Prospective Packages (WNPP)</ulink> list. Checking the WNPP list ensures that
18     no one is already working on packaging that software, and that effort is not
19 debacle 4910 duplicated. Read the <ulink url="&url-wnpp;">WNPP web
20 debacle 4902 pages</ulink> for more information.
21     </para>
22     <para>
23     Assuming no one else is already working on your prospective package, you must
24     then submit a bug report (<xref linkend="submit-bug"/> ) against the
25     pseudo-package <systemitem role="package">wnpp</systemitem> describing your
26     plan to create a new package, including, but not limiting yourself to, a
27     description of the package, the license of the prospective package, and the
28     current URL where it can be downloaded from.
29     </para>
30     <para>
31 he 5232 You should set the subject of the bug to <literal>ITP:
32     <replaceable>foo</replaceable> -- <replaceable>short
33 lucas 5234 description</replaceable></literal>, substituting the name of the new
34 he 5232 package for <replaceable>foo</replaceable>.
35     The severity of the bug report must be set to <literal>wishlist</literal>.
36     Please send a copy to &email-debian-devel; by using the X-Debbugs-CC
37     header (don't use CC:, because that way the message's subject won't
38     indicate the bug number). If you are packaging so many new packages (>10)
39     that notifying the mailing list in seperate messages is too disruptive,
40 hertzog 7071 send a summary after filing the bugs to the debian-devel list instead.
41 he 5232 This will inform the other developers about upcoming packages and will
42     allow a review of your description and package name.
43 debacle 4902 </para>
44     <para>
45 hertzog 7071 Please include a <literal>Closes: #<replaceable>nnnnn</replaceable></literal>
46     entry in the changelog of the new package in order for the bug report to
47     be automatically closed once the new package is installed in the archive
48     (see <xref linkend="upload-bugfix"/>).
49 debacle 4902 </para>
50     <para>
51 lucas 6756 If you think your package needs some explanations for the administrators of the
52     NEW package queue, include them in your changelog, send to ftpmaster@debian.org
53     a reply to the email you receive as a maintainer after your upload, or reply to
54     the rejection email in case you are already re-uploading.
55     </para>
56     <para>
57 debacle 4902 When closing security bugs include CVE numbers as well as the Closes: #nnnnn.
58     This is useful for the security team to track vulnerabilities. If an upload is
59     made to fix the bug before the advisory ID is known, it is encouraged to modify
60     the historical changelog entry with the next upload. Even in this case, please
61     include all available pointers to background information in the original
62     changelog entry.
63     </para>
64     <para>
65     There are a number of reasons why we ask maintainers to announce their
66     intentions:
67     </para>
68     <itemizedlist>
69     <listitem>
70     <para>
71     It helps the (potentially new) maintainer to tap into the experience of people
72     on the list, and lets them know if anyone else is working on it already.
73     </para>
74     </listitem>
75     <listitem>
76     <para>
77     It lets other people thinking about working on the package know that there
78     already is a volunteer, so efforts may be shared.
79     </para>
80     </listitem>
81     <listitem>
82     <para>
83     It lets the rest of the maintainers know more about the package than the one
84     line description and the usual changelog entry ``Initial release'' that gets
85 he 5199 posted to &email-debian-devel-changes;.
86 debacle 4902 </para>
87     </listitem>
88     <listitem>
89     <para>
90 he 5198 It is helpful to the people who live off <literal>unstable</literal> (and form
91     our first line of testers). We should encourage these people.
92 debacle 4902 </para>
93     </listitem>
94     <listitem>
95     <para>
96     The announcements give maintainers and other interested parties a better feel
97     of what is going on, and what is new, in the project.
98     </para>
99     </listitem>
100     </itemizedlist>
101     <para>
102 debacle 4910 Please see <ulink url="http://&ftp-master-host;/REJECT-FAQ.html"></ulink>
103 debacle 4902 for common rejection reasons for a new package.
104     </para>
105     </section>
106    
107     <section id="changelog-entries">
108     <title>Recording changes in the package</title>
109     <para>
110     Changes that you make to the package need to be recorded in the
111     <filename>debian/changelog</filename>. These changes should provide a concise
112     description of what was changed, why (if it's in doubt), and note if any bugs
113     were closed. They also record when the package was completed. This file will
114     be installed in
115     <filename>/usr/share/doc/<replaceable>package</replaceable>/changelog.Debian.gz</filename>,
116     or
117     <filename>/usr/share/doc/<replaceable>package</replaceable>/changelog.gz</filename>
118     for native packages.
119     </para>
120     <para>
121     The <filename>debian/changelog</filename> file conforms to a certain structure,
122     with a number of different fields. One field of note, the
123 he 5196 <literal>distribution</literal>, is described in <xref
124 debacle 4902 linkend="distribution"/> . More information about the structure of this file
125     can be found in the Debian Policy section titled
126     <filename>debian/changelog</filename>.
127     </para>
128     <para>
129     Changelog entries can be used to automatically close Debian bugs when the
130     package is installed into the archive. See <xref linkend="upload-bugfix"/> .
131     </para>
132     <para>
133     It is conventional that the changelog entry of a package that contains a new
134     upstream version of the software looks like this:
135     </para>
136     <screen>
137     * new upstream version
138     </screen>
139     <para>
140     There are tools to help you create entries and finalize the
141     <filename>changelog</filename> for release — see <xref linkend="devscripts"/>
142     and <xref linkend="dpkg-dev-el"/> .
143     </para>
144     <para>
145     See also <xref linkend="bpp-debian-changelog"/> .
146     </para>
147     </section>
148    
149     <section id="sanitycheck">
150     <title>Testing the package</title>
151     <para>
152     Before you upload your package, you should do basic testing on it. At a
153     minimum, you should try the following activities (you'll need to have an older
154     version of the same Debian package around):
155     </para>
156     <itemizedlist>
157     <listitem>
158     <para>
159     Install the package and make sure the software works, or upgrade the package
160     from an older version to your new version if a Debian package for it already
161     exists.
162     </para>
163     </listitem>
164     <listitem>
165     <para>
166     Run <command>lintian</command> over the package. You can run
167     <command>lintian</command> as follows: <literal>lintian -v
168     <replaceable>package-version</replaceable>.changes</literal>. This will check
169     the source package as well as the binary package. If you don't understand the
170     output that <command>lintian</command> generates, try adding the
171     <literal>-i</literal> switch, which will cause <command>lintian</command> to
172     output a very verbose description of the problem.
173     </para>
174     <para>
175     Normally, a package should <emphasis>not</emphasis> be uploaded if it causes
176     lintian to emit errors (they will start with <literal>E</literal>).
177     </para>
178     <para>
179     For more information on <command>lintian</command>, see <xref
180     linkend="lintian"/> .
181     </para>
182     </listitem>
183     <listitem>
184     <para>
185     Optionally run <xref linkend="debdiff"/> to analyze changes from an older
186     version, if one exists.
187     </para>
188     </listitem>
189     <listitem>
190     <para>
191     Downgrade the package to the previous version (if one exists) — this tests
192     the <filename>postrm</filename> and <filename>prerm</filename> scripts.
193     </para>
194     </listitem>
195     <listitem>
196     <para>
197     Remove the package, then reinstall it.
198     </para>
199     </listitem>
200     <listitem>
201     <para>
202     Copy the source package in a different directory and try unpacking it and
203     rebuilding it. This tests if the package relies on existing files outside of
204     it, or if it relies on permissions being preserved on the files shipped inside
205     the .diff.gz file.
206     </para>
207     </listitem>
208     </itemizedlist>
209     </section>
210    
211     <section id="sourcelayout">
212     <title>Layout of the source package</title>
213     <para>
214     There are two types of Debian source packages:
215     </para>
216     <itemizedlist>
217     <listitem>
218     <para>
219 he 5196 the so-called <literal>native</literal> packages, where there is no
220 debacle 4902 distinction between the original sources and the patches applied for Debian
221     </para>
222     </listitem>
223     <listitem>
224     <para>
225     the (more common) packages where there's an original source tarball file
226 hertzog 7031 accompanied by another file that contains the changes made by Debian
227 debacle 4902 </para>
228     </listitem>
229     </itemizedlist>
230     <para>
231     For the native packages, the source package includes a Debian source control
232     file (<literal>.dsc</literal>) and the source tarball
233 hertzog 7031 (<literal>.tar.{gz,bz2,lzma}</literal>). A source package of a non-native package
234 debacle 4902 includes a Debian source control file, the original source tarball
235 hertzog 7031 (<literal>.orig.tar.{gz,bz2,lzma}</literal>) and the Debian changes
236     (<literal>.diff.gz</literal> for the source format “1.0” or
237     <literal>.debian.tar.{gz,bz2,lzma}</literal> for the source format “3.0 (quilt)”).
238 debacle 4902 </para>
239     <para>
240 hertzog 7031 With source format “1.0”, whether a package is native or not was determined
241     by <command>dpkg-source</command> at build time. Nowadays it is recommended
242     to be explicit about the desired source format by putting either “3.0 (quilt)”
243     or “3.0 (native)” in <filename>debian/source/format</filename>.
244     The rest of this section relates only to non-native packages.
245 debacle 4902 </para>
246     <para>
247     The first time a version is uploaded which corresponds to a particular upstream
248     version, the original source tar file should be uploaded and included in the
249     <filename>.changes</filename> file. Subsequently, this very same tar file
250     should be used to build the new diffs and <filename>.dsc</filename> files, and
251     will not need to be re-uploaded.
252     </para>
253     <para>
254     By default, <command>dpkg-genchanges</command> and
255     <command>dpkg-buildpackage</command> will include the original source tar file
256 hertzog 7031 if and only if the current changelog entry has a different upstream version
257     from the preceding entry. This behavior may be modified by using
258 debacle 4902 <literal>-sa</literal> to always include it or <literal>-sd</literal> to always
259     leave it out.
260     </para>
261     <para>
262     If no original source is included in the upload, the original source tar-file
263     used by <command>dpkg-source</command> when constructing the
264     <filename>.dsc</filename> file and diff to be uploaded
265     <emphasis>must</emphasis> be byte-for-byte identical with the one already in
266     the archive.
267     </para>
268     <para>
269     Please notice that, in non-native packages, permissions on files that are not
270 hertzog 7031 present in the .orig.tar.{gz,bz2} will not be preserved, as diff does not store file
271     permissions in the patch. However when using source format “3.0 (quilt)”,
272     permissions of files inside the <filename>debian</filename> directory are
273     preserved since they are stored in a tar archive.
274 debacle 4902 </para>
275     </section>
276    
277     <section id="distribution">
278     <title>Picking a distribution</title>
279     <para>
280     Each upload needs to specify which distribution the package is intended for.
281     The package build process extracts this information from the first line of the
282     <filename>debian/changelog</filename> file and places it in the
283     <literal>Distribution</literal> field of the <literal>.changes</literal> file.
284     </para>
285     <para>
286 he 5198 There are several possible values for this field: <literal>stable</literal>,
287 lucas 5222 <literal>unstable</literal>, <literal>testing-proposed-updates</literal> and
288 he 5198 <literal>experimental</literal>. Normally, packages are uploaded into
289     <literal>unstable</literal>.
290 debacle 4902 </para>
291     <para>
292 he 5198 Actually, there are two other possible distributions: <literal>stable-security
293     </literal> and <literal>testing-security</literal>, but read
294     <xref linkend="bug-security"/> for more information on those.
295 debacle 4902 </para>
296     <para>
297     It is not possible to upload a package into several distributions at the same
298     time.
299     </para>
300     <section id="upload-stable">
301 he 5219 <title>Special case: uploads to the <literal>stable</literal> and
302     <literal>oldstable</literal> distributions</title>
303 debacle 4902 <para>
304 hertzog 7032 Uploading to <literal>stable</literal> means that the package will transferred
305 he 5219 to the <literal>proposed-updates-new</literal> queue for review by the stable
306 he 5196 release managers, and if approved will be installed in
307 debacle 4902 <filename>stable-proposed-updates</filename> directory of the Debian archive.
308 he 5196 From there, it will be included in <literal>stable</literal> with the next
309 debacle 4902 point release.
310     </para>
311     <para>
312 he 5219 To ensure that your upload will be accepted, you should discuss the changes
313     with the stable release team before you upload. For that, send a mail to
314     the &email-debian-release; mailing list, including the patch you want to
315     apply to the package version currently in <literal>stable</literal>. Always
316     be verbose and detailed in your changelog entries for uploads to the
317     <literal>stable</literal> distribution.
318     </para>
319     <para>
320 he 5196 Extra care should be taken when uploading to <literal>stable</literal>.
321 he 5198 Basically, a package should only be uploaded to <literal>stable</literal> if
322     one of the following happens:
323 debacle 4902 </para>
324     <itemizedlist>
325     <listitem>
326     <para>
327     a truly critical functionality problem
328     </para>
329     </listitem>
330     <listitem>
331     <para>
332     the package becomes uninstallable
333     </para>
334     </listitem>
335     <listitem>
336     <para>
337     a released architecture lacks the package
338     </para>
339     </listitem>
340     </itemizedlist>
341     <para>
342 he 5196 In the past, uploads to <literal>stable</literal> were used to address
343 debacle 4902 security problems as well. However, this practice is deprecated, as uploads
344     used for Debian security advisories are automatically copied to the appropriate
345     <filename>proposed-updates</filename> archive when the advisory is released.
346     See <xref linkend="bug-security"/> for detailed information on handling
347 he 5219 security problems. If the security teams deems the problem to be too
348     benign to be fixed through a <literal>DSA</literal>, the stable release
349     managers are usually willing to include your fix nonetheless in a regular
350     upload to <literal>stable</literal>.
351 debacle 4902 </para>
352     <para>
353     Changing anything else in the package that isn't important is discouraged,
354     because even trivial fixes can cause bugs later on.
355     </para>
356     <para>
357 he 5196 Packages uploaded to <literal>stable</literal> need to be compiled on systems
358     running <literal>stable</literal>, so that their dependencies are limited to
359     the libraries (and other packages) available in <literal>stable</literal>;
360     for example, a package uploaded to <literal>stable</literal> that depends on
361 he 5198 a library package that only exists in <literal>unstable</literal> will be
362     rejected. Making changes to dependencies of other packages (by messing with
363     <literal>Provides</literal> or <literal>shlibs</literal> files), possibly
364     making those other packages uninstallable, is strongly discouraged.
365 debacle 4902 </para>
366     <para>
367 he 5219 Uploads to the <literal>oldstable</literal> distributions are possible as
368     long as it hasn't been archived. The same rules as for <literal>stable
369     </literal> apply.
370 debacle 4902 </para>
371     </section>
372    
373     <section id="upload-t-p-u">
374 he 5196 <title>Special case: uploads to <literal>testing/testing-proposed-updates</literal></title>
375 debacle 4902 <para>
376     Please see the information in the <link linkend="t-p-u">testing
377     section</link> for details.
378     </para>
379     </section>
380    
381     </section>
382    
383     <section id="upload">
384     <title>Uploading a package</title>
385     <section id="upload-ftp-master">
386     <title>Uploading to <literal>ftp-master</literal></title>
387     <para>
388     To upload a package, you should upload the files (including the signed changes
389 hertzog 7028 and dsc-file) with anonymous ftp to <literal>&ftp-upload-host;</literal> in
390 debacle 4902 the directory <ulink
391 hertzog 7028 url="ftp://&ftp-upload-host;&upload-queue;">&upload-queue;</ulink>.
392 debacle 4902 To get the files processed there, they need to be signed with a key in the
393 lucas 5186 Debian Developers keyring or the Debian Maintainers keyring
394     (see <ulink url="&url-wiki-dm;"></ulink>).
395 debacle 4902 </para>
396     <para>
397     Please note that you should transfer the changes file last. Otherwise, your
398     upload may be rejected because the archive maintenance software will parse the
399     changes file and see that not all files have been uploaded.
400     </para>
401     <para>
402     You may also find the Debian packages <xref linkend="dupload"/> or <xref
403     linkend="dput"/> useful when uploading packages. These handy programs help
404     automate the process of uploading packages into Debian.
405     </para>
406     <para>
407 hertzog 7026 For removing packages, please see
408     <ulink url="ftp://&ftp-upload-host;&upload-queue;/README"/> and
409 debacle 4902 the Debian package <xref linkend="dcut"/> .
410     </para>
411     </section>
412    
413     <section id="delayed-incoming">
414     <title>Delayed uploads</title>
415 lucas 5792
416 debacle 4902 <para>
417 lucas 5792 It is sometimes useful to upload a package immediately, but to want this
418     package to arrive in the archive only a few days later. For example,
419     when preparing a <link linkend="nmu">Non-maintainer Upload</link>,
420     you might want to give the maintainer a few days to react.
421 debacle 4902 </para>
422 lucas 5792
423 debacle 4902 <para>
424 lucas 5792 An upload to the delayed directory keeps the package in
425     <ulink url="http://ftp-master.debian.org/deferred.html">
426     the deferred uploads queue"</ulink>.
427     When the specified waiting time is over, the package is moved into
428     the regular incoming directory for processing.
429     This is done through automatic uploading to
430 hertzog 7028 <literal>&ftp-upload-host;</literal> in upload-directory
431 lucas 5792 <literal>DELAYED/[012345678]-day</literal>. 0-day is uploaded
432 hertzog 7028 multiple times per day to <literal>&ftp-upload-host;</literal>.
433 debacle 4902 </para>
434     <para>
435 lucas 5795 With dput, you can use the <literal>--delayed <replaceable>DELAY</replaceable></literal>
436 lucas 5792 parameter to put the package into one of the queues.
437 debacle 4902 </para>
438     </section>
439    
440     <section id="s5.6.4">
441     <title>Security uploads</title>
442     <para>
443     Do <emphasis role="strong">NOT</emphasis> upload a package to the security
444 he 5198 upload queue (<literal>oldstable-security</literal>, <literal>stable-security
445     </literal>, etc.) without prior authorization from the security team. If the
446     package does not exactly meet the team's requirements, it will cause many
447     problems and delays in dealing with the unwanted upload. For details, please
448     see section <xref linkend="bug-security"/> .
449 debacle 4902 </para>
450     </section>
451    
452     <section id="s5.6.5">
453     <title>Other upload queues</title>
454     <para>
455 hertzog 7029 There is an alternative upload queue in Europe at <ulink
456     url="ftp://&ftp-eu-upload-host;&upload-queue;"/>. It operates in
457     the same way as <literal>&ftp-upload-host;</literal>, but should be faster
458     for European developers.
459 debacle 4902 </para>
460     <para>
461 hertzog 7029 Packages can also be uploaded via ssh to
462     <literal>&ssh-upload-host;</literal>; files should be put
463     <literal>/srv/upload.debian.org/UploadQueue</literal>. This queue does
464     not support <xref linkend="delayed-incoming">delayed uploads</xref>.
465 debacle 4902 </para>
466     </section>
467    
468     <section id="upload-notification">
469     <title>Notification that a new package has been installed</title>
470     <para>
471     The Debian archive maintainers are responsible for handling package uploads.
472     For the most part, uploads are automatically handled on a daily basis by the
473     archive maintenance tools, <command>katie</command>. Specifically, updates to
474 he 5198 existing packages to the <literal>unstable</literal> distribution are handled
475     automatically. In other cases, notably new packages, placing the uploaded
476     package into the distribution is handled manually. When uploads are handled
477     manually, the change to the archive may take up to a month to occur. Please
478     be patient.
479 debacle 4902 </para>
480     <para>
481     In any case, you will receive an email notification indicating that the package
482     has been added to the archive, which also indicates which bugs will be closed
483     by the upload. Please examine this notification carefully, checking if any
484     bugs you meant to close didn't get triggered.
485     </para>
486     <para>
487     The installation notification also includes information on what section the
488     package was inserted into. If there is a disparity, you will receive a
489     separate email notifying you of that. Read on below.
490     </para>
491     <para>
492     Note that if you upload via queues, the queue daemon software will also send
493     you a notification by email.
494     </para>
495     </section>
496    
497     </section>
498    
499     <section id="override-file">
500     <title>Specifying the package section, subsection and priority</title>
501     <para>
502     The <filename>debian/control</filename> file's <literal>Section</literal> and
503     <literal>Priority</literal> fields do not actually specify where the file will
504     be placed in the archive, nor its priority. In order to retain the overall
505     integrity of the archive, it is the archive maintainers who have control over
506     these fields. The values in the <filename>debian/control</filename> file are
507     actually just hints.
508     </para>
509     <para>
510     The archive maintainers keep track of the canonical sections and priorities for
511 he 5196 packages in the <literal>override file</literal>. If there is a disparity
512     between the <literal>override file</literal> and the package's fields as
513 debacle 4902 indicated in <filename>debian/control</filename>, then you will receive an
514     email noting the divergence when the package is installed into the archive.
515     You can either correct your <filename>debian/control</filename> file for your
516 he 5196 next upload, or else you may wish to make a change in the <literal>override
517     file</literal>.
518 debacle 4902 </para>
519     <para>
520     To alter the actual section that a package is put in, you need to first make
521     sure that the <filename>debian/control</filename> file in your package is
522 hertzog 7025 accurate. Next, submit a
523 debacle 4911 bug against <systemitem role="package">ftp.debian.org</systemitem> requesting
524     that the section or priority for your package be changed from the old section
525 hertzog 7025 or priority to the new one. Use a Subject like
526     <literal>override: PACKAGE1:section/priority, [...],
527     PACKAGEX:section/priority</literal>, and include the justification for the
528     change in the body of the bug report.
529 debacle 4902 </para>
530     <para>
531 he 5196 For more information about <literal>override files</literal>, see
532 debacle 4902 <citerefentry> <refentrytitle>dpkg-scanpackages</refentrytitle>
533     <manvolnum>1</manvolnum> </citerefentry> and <ulink
534 debacle 4910 url="&url-bts-devel;#maintincorrect"></ulink>.
535 debacle 4902 </para>
536     <para>
537     Note that the <literal>Section</literal> field describes both the section as
538     well as the subsection, which are described in <xref
539     linkend="archive-sections"/> . If the section is main, it should be omitted.
540     The list of allowable subsections can be found in <ulink
541 debacle 4910 url="&url-debian-policy;ch-archive.html#s-subsections"></ulink>.
542 debacle 4902 </para>
543     </section>
544    
545     <section id="bug-handling">
546     <title>Handling bugs</title>
547     <para>
548     Every developer has to be able to work with the Debian <ulink
549 debacle 4910 url="&url-bts;">bug tracking system</ulink>. This includes
550 debacle 4902 knowing how to file bug reports properly (see <xref linkend="submit-bug"/> ),
551     how to update them and reorder them, and how to process and close them.
552     </para>
553     <para>
554     The bug tracking system's features are described in the <ulink
555 debacle 4910 url="&url-bts-devel;">BTS documentation for
556 debacle 4902 developers</ulink>. This includes closing bugs, sending followup messages,
557     assigning severities and tags, marking bugs as forwarded, and other issues.
558     </para>
559     <para>
560     Operations such as reassigning bugs to other packages, merging separate bug
561     reports about the same issue, or reopening bugs when they are prematurely
562     closed, are handled using the so-called control mail server. All of the
563     commands available on this server are described in the <ulink
564 debacle 4910 url="&url-bts-control;">BTS control server
565 debacle 4902 documentation</ulink>.
566     </para>
567     <section id="bug-monitoring">
568     <title>Monitoring bugs</title>
569     <para>
570     If you want to be a good maintainer, you should periodically check the <ulink
571 debacle 4910 url="&url-bts;">Debian bug tracking system (BTS)</ulink> for
572 debacle 4902 your packages. The BTS contains all the open bugs against your packages. You
573     can check them by browsing this page:
574 debacle 4910 <literal>http://&bugs-host;/<replaceable>yourlogin</replaceable>@debian.org</literal>.
575 debacle 4902 </para>
576     <para>
577     Maintainers interact with the BTS via email addresses at
578 debacle 4911 <literal>&bugs-host;</literal>. Documentation on available
579     commands can be found at <ulink url="&url-bts;"></ulink>, or,
580     if you have installed the <systemitem role="package">doc-debian</systemitem>
581     package, you can look at the local files &file-bts-docs;.
582 debacle 4902 </para>
583     <para>
584     Some find it useful to get periodic reports on open bugs. You can add a cron
585     job such as the following if you want to get a weekly email outlining all the
586     open bugs against your packages:
587     </para>
588     <screen>
589     # ask for weekly reports of bugs in my packages
590 debacle 4910 &cron-bug-report;
591 debacle 4902 </screen>
592     <para>
593     Replace <replaceable>address</replaceable> with your official Debian maintainer
594     address.
595     </para>
596     </section>
597    
598     <section id="bug-answering">
599     <title>Responding to bugs</title>
600     <para>
601     When responding to bugs, make sure that any discussion you have about bugs is
602     sent both to the original submitter of the bug, and to the bug itself (e.g.,
603 debacle 4910 <email>123@&bugs-host;</email>). If you're writing a new mail and you
604 debacle 4902 don't remember the submitter email address, you can use the
605 debacle 4910 <email>123-submitter@&bugs-host;</email> email to contact the submitter
606 debacle 4902 <emphasis>and</emphasis> to record your mail within the bug log (that means you
607 debacle 4910 don't need to send a copy of the mail to <email>123@&bugs-host;</email>).
608 debacle 4902 </para>
609     <para>
610     If you get a bug which mentions FTBFS, this means Fails to build from source.
611     Porters frequently use this acronym.
612     </para>
613     <para>
614     Once you've dealt with a bug report (e.g. fixed it), mark it as
615 he 5196 <literal>done</literal> (close it) by sending an explanation message to
616 debacle 4910 <email>123-done@&bugs-host;</email>. If you're fixing a bug by changing
617 debacle 4902 and uploading the package, you can automate bug closing as described in <xref
618     linkend="upload-bugfix"/> .
619     </para>
620     <para>
621     You should <emphasis>never</emphasis> close bugs via the bug server
622 debacle 4911 <literal>close</literal> command sent to &email-bts-control;.
623     If you do so, the original submitter will not receive any information about why
624     the bug was closed.
625 debacle 4902 </para>
626     </section>
627    
628     <section id="bug-housekeeping">
629     <title>Bug housekeeping</title>
630     <para>
631     As a package maintainer, you will often find bugs in other packages or have
632     bugs reported against your packages which are actually bugs in other packages.
633     The bug tracking system's features are described in the <ulink
634 debacle 4910 url="&url-bts-devel;">BTS documentation for Debian
635 debacle 4902 developers</ulink>. Operations such as reassigning, merging, and tagging bug
636     reports are described in the <ulink
637 debacle 4910 url="&url-bts-control;">BTS control server
638 debacle 4902 documentation</ulink>. This section contains some guidelines for managing your
639     own bugs, based on the collective Debian developer experience.
640     </para>
641     <para>
642     Filing bugs for problems that you find in other packages is one of the civic
643     obligations of maintainership, see <xref linkend="submit-bug"/> for details.
644     However, handling the bugs in your own packages is even more important.
645     </para>
646     <para>
647     Here's a list of steps that you may follow to handle a bug report:
648     </para>
649     <orderedlist numeration="arabic">
650     <listitem>
651     <para>
652     Decide whether the report corresponds to a real bug or not. Sometimes users
653     are just calling a program in the wrong way because they haven't read the
654     documentation. If you diagnose this, just close the bug with enough
655     information to let the user correct their problem (give pointers to the good
656     documentation and so on). If the same report comes up again and again you may
657     ask yourself if the documentation is good enough or if the program shouldn't
658     detect its misuse in order to give an informative error message. This is an
659     issue that may need to be brought up with the upstream author.
660     </para>
661     <para>
662     If the bug submitter disagrees with your decision to close the bug, they may
663     reopen it until you find an agreement on how to handle it. If you don't find
664     any, you may want to tag the bug <literal>wontfix</literal> to let people know
665     that the bug exists but that it won't be corrected. If this situation is
666     unacceptable, you (or the submitter) may want to require a decision of the
667     technical committee by reassigning the bug to <systemitem
668     role="package">tech-ctte</systemitem> (you may use the clone command of the BTS
669     if you wish to keep it reported against your package). Before doing so, please
670 debacle 4911 read the <ulink url="&url-tech-ctte;">recommended
671 debacle 4902 procedure</ulink>.
672     </para>
673     </listitem>
674     <listitem>
675     <para>
676     If the bug is real but it's caused by another package, just reassign the bug to
677     the right package. If you don't know which package it should be reassigned to,
678     you should ask for help on <link linkend="irc-channels">IRC</link> or
679 he 5223 on &email-debian-devel;. Please inform the maintainer(s) of the package
680     you reassign the bug to, for example by Cc:ing the message that does the
681     reassign to <email>packagename@packages.debian.org</email> and explaining
682     your reasons in that mail. Please note that a simple reassignment is
683     <emphasis>not</emphasis> e-mailed to the maintainers of the package
684     being reassigned to, so they won't know about it until they look at
685     a bug overview for their packages.
686 debacle 4902 </para>
687     <para>
688 he 5223 If the bug affects the operation of your package, please consider
689     cloning the bug and reassigning the clone to the package that really
690     causes the behavior. Otherwise, the bug will not be shown in your
691     package's bug list, possibly causing users to report the same bug over
692     and over again. You should block "your" bug with the reassigned, cloned
693     bug to document the relationship.
694     </para>
695     </listitem>
696     <listitem>
697     <para>
698 debacle 4902 Sometimes you also have to adjust the severity of the bug so that it matches
699     our definition of the severity. That's because people tend to inflate the
700     severity of bugs to make sure their bugs are fixed quickly. Some bugs may even
701     be dropped to wishlist severity when the requested change is just cosmetic.
702     </para>
703     </listitem>
704     <listitem>
705     <para>
706     If the bug is real but the same problem has already been reported by someone
707     else, then the two relevant bug reports should be merged into one using the
708     merge command of the BTS. In this way, when the bug is fixed, all of the
709     submitters will be informed of this. (Note, however, that emails sent to one
710     bug report's submitter won't automatically be sent to the other report's
711     submitter.) For more details on the technicalities of the merge command and its
712     relative, the unmerge command, see the BTS control server documentation.
713     </para>
714     </listitem>
715     <listitem>
716     <para>
717     The bug submitter may have forgotten to provide some information, in which case
718     you have to ask them for the required information. You may use the
719     <literal>moreinfo</literal> tag to mark the bug as such. Moreover if you can't
720     reproduce the bug, you tag it <literal>unreproducible</literal>. Anyone who
721     can reproduce the bug is then invited to provide more information on how to
722     reproduce it. After a few months, if this information has not been sent by
723     someone, the bug may be closed.
724     </para>
725     </listitem>
726     <listitem>
727     <para>
728     If the bug is related to the packaging, you just fix it. If you are not able
729     to fix it yourself, then tag the bug as <literal>help</literal>. You can also
730 debacle 4911 ask for help on &email-debian-devel; or
731     &email-debian-qa;. If it's an upstream problem, you have to
732     forward it to the upstream author. Forwarding a bug is not enough, you have to
733     check at each release if the bug has been fixed or not. If it has, you just
734     close it, otherwise you have to remind the author about it. If you have the
735     required skills you can prepare a patch that fixes the bug and send it to the
736     author at the same time. Make sure to send the patch to the BTS and to tag the
737     bug as <literal>patch</literal>.
738 debacle 4902 </para>
739     </listitem>
740     <listitem>
741     <para>
742     If you have fixed a bug in your local copy, or if a fix has been committed to
743     the CVS repository, you may tag the bug as <literal>pending</literal> to let
744     people know that the bug is corrected and that it will be closed with the next
745     upload (add the <literal>closes:</literal> in the
746     <filename>changelog</filename>). This is particularly useful if you are
747     several developers working on the same package.
748     </para>
749     </listitem>
750     <listitem>
751     <para>
752 he 5231 Once a corrected package is available in the archive, the bug should be
753     closed indicating the version in which it was fixed. This can be done
754     automatically, read <xref linkend="upload-bugfix"/>.
755 debacle 4902 </para>
756     </listitem>
757     </orderedlist>
758     </section>
759    
760     <section id="upload-bugfix">
761     <title>When bugs are closed by new uploads</title>
762     <para>
763     As bugs and problems are fixed in your packages, it is your responsibility as
764     the package maintainer to close these bugs. However, you should not close a
765     bug until the package which fixes the bug has been accepted into the Debian
766     archive. Therefore, once you get notification that your updated package has
767     been installed into the archive, you can and should close the bug in the BTS.
768     Also, the bug should be closed with the correct version.
769     </para>
770     <para>
771     However, it's possible to avoid having to manually close bugs after the upload
772     — just list the fixed bugs in your <filename>debian/changelog</filename>
773     file, following a certain syntax, and the archive maintenance software will
774     close the bugs for you. For example:
775     </para>
776     <screen>
777 debacle 4910 acme-cannon (3.1415) unstable; urgency=low
778 debacle 4902
779     * Frobbed with options (closes: Bug#98339)
780     * Added safety to prevent operator dismemberment, closes: bug#98765,
781     bug#98713, #98714.
782     * Added man page. Closes: #98725.
783     </screen>
784     <para>
785     Technically speaking, the following Perl regular expression describes how bug
786     closing changelogs are identified:
787     </para>
788     <screen>
789     /closes:\s*(?:bug)?\#\s*\d+(?:,\s*(?:bug)?\#\s*\d+)*/ig
790     </screen>
791     <para>
792     We prefer the <literal>closes: #<replaceable>XXX</replaceable></literal>
793     syntax, as it is the most concise entry and the easiest to integrate with the
794     text of the <filename>changelog</filename>. Unless specified different by the
795     <replaceable>-v</replaceable>-switch to <command>dpkg-buildpackage</command>,
796     only the bugs closed in the most recent changelog entry are closed (basically,
797     exactly the bugs mentioned in the changelog-part in the
798     <filename>.changes</filename> file are closed).
799     </para>
800     <para>
801     Historically, uploads identified as <link linkend="nmu">Non-maintainer
802     upload (NMU)</link> were tagged <literal>fixed</literal> instead of being
803     closed, but that practice was ceased with the advent of version-tracking. The
804     same applied to the tag <literal>fixed-in-experimental</literal>.
805     </para>
806     <para>
807     If you happen to mistype a bug number or forget a bug in the changelog entries,
808     don't hesitate to undo any damage the error caused. To reopen wrongly closed
809     bugs, send a <literal>reopen <replaceable>XXX</replaceable></literal> command
810     to the bug tracking system's control address,
811 debacle 4911 &email-bts-control;. To close any remaining bugs that were
812 debacle 4902 fixed by your upload, email the <filename>.changes</filename> file to
813 debacle 4910 <email>XXX-done@&bugs-host;</email>, where <replaceable>XXX</replaceable>
814 debacle 4902 is the bug number, and put Version: YYY and an empty line as the first two
815     lines of the body of the email, where <replaceable>YYY</replaceable> is the
816     first version where the bug has been fixed.
817     </para>
818     <para>
819     Bear in mind that it is not obligatory to close bugs using the changelog as
820     described above. If you simply want to close bugs that don't have anything to
821     do with an upload you made, do it by emailing an explanation to
822 debacle 4910 <email>XXX-done@&bugs-host;</email>. Do <emphasis
823 debacle 4902 role="strong">not</emphasis> close bugs in the changelog entry of a version if
824     the changes in that version of the package don't have any bearing on the bug.
825     </para>
826     <para>
827     For general information on how to write your changelog entries, see <xref
828     linkend="bpp-debian-changelog"/> .
829     </para>
830     </section>
831    
832     <section id="bug-security">
833     <title>Handling security-related bugs</title>
834     <para>
835     Due to their sensitive nature, security-related bugs must be handled carefully.
836     The Debian Security Team exists to coordinate this activity, keeping track of
837     outstanding security problems, helping maintainers with security problems or
838     fixing them themselves, sending security advisories, and maintaining
839 he 5199 <literal>security.debian.org</literal>.
840 debacle 4902 </para>
841     <para>
842     When you become aware of a security-related bug in a Debian package, whether or
843     not you are the maintainer, collect pertinent information about the problem,
844     and promptly contact the security team at
845 debacle 4911 &email-security-team; as soon as possible. <emphasis
846 lucas 5798 role="strong">DO NOT UPLOAD</emphasis> any packages for <literal>stable</literal>
847     without contacting the team. Useful information includes, for example:
848 debacle 4902 </para>
849     <itemizedlist>
850     <listitem>
851     <para>
852     Which versions of the package are known to be affected by the bug. Check each
853 he 5198 version that is present in a supported Debian release, as well as
854     <literal>testing</literal> and <literal>unstable</literal>.
855 debacle 4902 </para>
856     </listitem>
857     <listitem>
858     <para>
859     The nature of the fix, if any is available (patches are especially helpful)
860     </para>
861     </listitem>
862     <listitem>
863     <para>
864     Any fixed packages that you have prepared yourself (send only the
865     <literal>.diff.gz</literal> and <literal>.dsc</literal> files and read <xref
866     linkend="bug-security-building"/> first)
867     </para>
868     </listitem>
869     <listitem>
870     <para>
871     Any assistance you can provide to help with testing (exploits, regression
872     testing, etc.)
873     </para>
874     </listitem>
875     <listitem>
876     <para>
877     Any information needed for the advisory (see <xref
878     linkend="bug-security-advisories"/> )
879     </para>
880     </listitem>
881     </itemizedlist>
882 lucas 5798 <para>As the maintainer of the package, you have the responsibility to
883     maintain it, even in the stable release. You are in the best position
884     to evaluate patches and test updated packages, so please see the sections
885     below on how to prepare packages for the Security Team to handle.</para>
886    
887     <section id="bug-security-tracker">
888     <title>The Security Tracker</title>
889     <para>
890     The security team maintains a central database, the
891 hertzog 7035 <ulink url="http://security-tracker.debian.org/">Debian Security Tracker</ulink>.
892 lucas 5798 This contains all public information that is known about security issues:
893     which packages and versions are affected or fixed, and thus whether stable,
894     testing and/or unstable are vulnerable. Information that is still confidential
895     is not added to the tracker.
896     </para>
897     <para>
898     You can search it for a specific issue, but also on package name. Look
899     for your package to see which issues are still open. If you can, please provide
900     more information about those issues, or help to address them in your package.
901     Instructions are on the tracker web pages.
902     </para>
903     </section>
904    
905 debacle 4902 <section id="bug-security-confidentiality">
906     <title>Confidentiality</title>
907     <para>
908     Unlike most other activities within Debian, information about security issues
909     must sometimes be kept private for a time. This allows software distributors
910     to coordinate their disclosure in order to minimize their users' exposure.
911     Whether this is the case depends on the nature of the problem and corresponding
912     fix, and whether it is already a matter of public knowledge.
913     </para>
914     <para>
915     There are several ways developers can learn of a security problem:
916     </para>
917     <itemizedlist>
918     <listitem>
919     <para>
920     they notice it on a public forum (mailing list, web site, etc.)
921     </para>
922     </listitem>
923     <listitem>
924     <para>
925     someone files a bug report
926     </para>
927     </listitem>
928     <listitem>
929     <para>
930     someone informs them via private email
931     </para>
932     </listitem>
933     </itemizedlist>
934     <para>
935     In the first two cases, the information is public and it is important to have a
936     fix as soon as possible. In the last case, however, it might not be public
937     information. In that case there are a few possible options for dealing with
938     the problem:
939     </para>
940     <itemizedlist>
941     <listitem>
942     <para>
943     If the security exposure is minor, there is sometimes no need to keep the
944     problem a secret and a fix should be made and released.
945     </para>
946     </listitem>
947     <listitem>
948     <para>
949     If the problem is severe, it is preferable to share the information with other
950     vendors and coordinate a release. The security team keeps in contact with the
951     various organizations and individuals and can take care of that.
952     </para>
953     </listitem>
954     </itemizedlist>
955     <para>
956     In all cases if the person who reports the problem asks that it not be
957     disclosed, such requests should be honored, with the obvious exception of
958     informing the security team in order that a fix may be produced for a stable
959     release of Debian. When sending confidential information to the security team,
960     be sure to mention this fact.
961     </para>
962     <para>
963 he 5198 Please note that if secrecy is needed you may not upload a fix to
964     <literal>unstable</literal> (or
965 debacle 4902 anywhere else, such as a public CVS repository). It is not sufficient to
966     obfuscate the details of the change, as the code itself is public, and can (and
967     will) be examined by the general public.
968     </para>
969     <para>
970     There are two reasons for releasing information even though secrecy is
971     requested: the problem has been known for a while, or the problem or exploit
972     has become public.
973     </para>
974 lucas 5798 <para>
975     The Security Team has a PGP-key to enable encrypted communication about
976 henrich-guest 7058 sensitive issues. See the <ulink url="http://www.debian.org/security/faq#contact">Security Team FAQ</ulink> for details.
977 lucas 5798 </para>
978 debacle 4902 </section>
979    
980     <section id="bug-security-advisories">
981     <title>Security Advisories</title>
982     <para>
983     Security advisories are only issued for the current, released stable
984 he 5198 distribution, and <emphasis>not</emphasis> for <literal>testing</literal>
985     or <literal>unstable</literal>. When released, advisories are sent to the
986 debacle 4911 &email-debian-security-announce; mailing list and posted on
987     <ulink url="&url-debian-security-advisories;">the security web
988 debacle 4902 page</ulink>. Security advisories are written and posted by the security team.
989     However they certainly do not mind if a maintainer can supply some of the
990     information for them, or write part of the text. Information that should be in
991     an advisory includes:
992     </para>
993     <itemizedlist>
994     <listitem>
995     <para>
996     A description of the problem and its scope, including:
997     </para>
998     <itemizedlist>
999     <listitem>
1000     <para>
1001     The type of problem (privilege escalation, denial of service, etc.)
1002     </para>
1003     </listitem>
1004     <listitem>
1005     <para>
1006     What privileges may be gained, and by whom (if any)
1007     </para>
1008     </listitem>
1009     <listitem>
1010     <para>
1011     How it can be exploited
1012     </para>
1013     </listitem>
1014     <listitem>
1015     <para>
1016     Whether it is remotely or locally exploitable
1017     </para>
1018     </listitem>
1019     <listitem>
1020     <para>
1021     How the problem was fixed
1022     </para>
1023     </listitem>
1024     </itemizedlist>
1025     <para>
1026     This information allows users to assess the threat to their systems.
1027     </para>
1028     </listitem>
1029     <listitem>
1030     <para>
1031     Version numbers of affected packages
1032     </para>
1033     </listitem>
1034     <listitem>
1035     <para>
1036     Version numbers of fixed packages
1037     </para>
1038     </listitem>
1039     <listitem>
1040     <para>
1041     Information on where to obtain the updated packages (usually from the Debian
1042     security archive)
1043     </para>
1044     </listitem>
1045     <listitem>
1046     <para>
1047     References to upstream advisories, <ulink
1048     url="http://cve.mitre.org">CVE</ulink> identifiers, and any other information
1049     useful in cross-referencing the vulnerability
1050     </para>
1051     </listitem>
1052     </itemizedlist>
1053     </section>
1054    
1055     <section id="bug-security-building">
1056     <title>Preparing packages to address security issues</title>
1057     <para>
1058     One way that you can assist the security team in their duties is to provide
1059     them with fixed packages suitable for a security advisory for the stable Debian
1060     release.
1061     </para>
1062     <para>
1063     When an update is made to the stable release, care must be taken to avoid
1064     changing system behavior or introducing new bugs. In order to do this, make as
1065     few changes as possible to fix the bug. Users and administrators rely on the
1066     exact behavior of a release once it is made, so any change that is made might
1067     break someone's system. This is especially true of libraries: make sure you
1068     never change the API or ABI, no matter how small the change.
1069     </para>
1070     <para>
1071     This means that moving to a new upstream version is not a good solution.
1072     Instead, the relevant changes should be back-ported to the version present in
1073     the current stable Debian release. Generally, upstream maintainers are willing
1074     to help if needed. If not, the Debian security team may be able to help.
1075     </para>
1076     <para>
1077     In some cases, it is not possible to back-port a security fix, for example when
1078     large amounts of source code need to be modified or rewritten. If this
1079     happens, it may be necessary to move to a new upstream version. However, this
1080     is only done in extreme situations, and you must always coordinate that with
1081     the security team beforehand.
1082     </para>
1083     <para>
1084     Related to this is another important guideline: always test your changes. If
1085     you have an exploit available, try it and see if it indeed succeeds on the
1086     unpatched package and fails on the fixed package. Test other, normal actions
1087     as well, as sometimes a security fix can break seemingly unrelated features in
1088     subtle ways.
1089     </para>
1090     <para>
1091     Do <emphasis role="strong">NOT</emphasis> include any changes in your package
1092     which are not directly related to fixing the vulnerability. These will only
1093     need to be reverted, and this wastes time. If there are other bugs in your
1094     package that you would like to fix, make an upload to proposed-updates in the
1095     usual way, after the security advisory is issued. The security update
1096     mechanism is not a means for introducing changes to your package which would
1097     otherwise be rejected from the stable release, so please do not attempt to do
1098     this.
1099     </para>
1100     <para>
1101     Review and test your changes as much as possible. Check the differences from
1102     the previous version repeatedly (<command>interdiff</command> from the
1103     <systemitem role="package">patchutils</systemitem> package and
1104     <command>debdiff</command> from <systemitem
1105     role="package">devscripts</systemitem> are useful tools for this, see <xref
1106     linkend="debdiff"/> ).
1107     </para>
1108     <para>
1109     Be sure to verify the following items:
1110     </para>
1111     <itemizedlist>
1112     <listitem>
1113     <para>
1114 lucas 5798 <emphasis role="strong">Target the right distribution</emphasis>
1115     in your <filename>debian/changelog</filename>.
1116 he 5198 For <literal>stable</literal> this is <literal>stable-security</literal> and
1117 henrich-guest 7059 for <literal>testing</literal> this is <literal>testing-security</literal>, and for the previous
1118 he 5198 stable release, this is <literal>oldstable-security</literal>. Do not target
1119 he 5196 <replaceable>distribution</replaceable><literal>-proposed-updates</literal> or
1120 debacle 4902 <literal>stable</literal>!
1121     </para>
1122     </listitem>
1123     <listitem>
1124     <para>
1125 lucas 5798 The upload should have <emphasis role="strong">urgency=high</emphasis>.
1126 debacle 4902 </para>
1127     </listitem>
1128     <listitem>
1129     <para>
1130     Make descriptive, meaningful changelog entries. Others will rely on them to
1131 lucas 5798 determine whether a particular bug was fixed. Add <literal>closes:</literal>
1132     statements for any <emphasis role="strong">Debian bugs</emphasis> filed.
1133     Always include an external reference, preferably a <emphasis role="strong">CVE
1134     identifier</emphasis>, so that it can be cross-referenced. However, if a CVE
1135     identifier has not yet been assigned, do not wait for it but continue the
1136     process. The identifier can be cross-referenced later.
1137 debacle 4902 </para>
1138     </listitem>
1139     <listitem>
1140     <para>
1141 lucas 5798 Make sure the <emphasis role="strong">version number</emphasis> is proper.
1142     It must be greater than the current package, but less than package versions in
1143     later distributions. If in doubt, test it with <literal>dpkg
1144     --compare-versions</literal>. Be careful not to re-use a version number that
1145     you have already used for a previous upload, or one that conflicts with a
1146     binNMU. The convention is to append
1147     <literal>+</literal><replaceable>codename</replaceable><literal>1</literal>, e.g.
1148     <literal>1:2.4.3-4+etch1</literal>, of course increasing 1 for any subsequent
1149     uploads.
1150 debacle 4902 </para>
1151     </listitem>
1152     <listitem>
1153     <para>
1154 he 5199 Unless the upstream source has been uploaded to <literal>security.debian.org
1155 lucas 5798 </literal> before (by a previous security update), build the upload <emphasis
1156     role="strong">with full upstream source</emphasis> (<literal>dpkg-buildpackage
1157     -sa</literal>). If there has been a previous upload to
1158     <literal>security.debian.org</literal> with the same upstream version, you may
1159     upload without upstream source (<literal> dpkg-buildpackage -sd</literal>).
1160 debacle 4902 </para>
1161     </listitem>
1162     <listitem>
1163     <para>
1164 lucas 5798 Be sure to use the <emphasis role="strong">exact same
1165 hertzog 7031 <filename>*.orig.tar.{gz,bz2}</filename></emphasis> as used in the
1166 debacle 4902 normal archive, otherwise it is not possible to move the security fix into the
1167     main archives later.
1168     </para>
1169     </listitem>
1170     <listitem>
1171     <para>
1172 lucas 5798 Build the package on a <emphasis role="strong">clean system</emphasis> which only
1173     has packages installed from the distribution you are building for. If you do not
1174     have such a system yourself, you can use a debian.org machine (see
1175     <xref linkend="server-machines"/> ) or setup a chroot (see
1176     <xref linkend="pbuilder"/> and <xref linkend="debootstrap"/> ).
1177 debacle 4902 </para>
1178     </listitem>
1179     </itemizedlist>
1180     </section>
1181    
1182     <section id="bug-security-upload">
1183     <title>Uploading the fixed package</title>
1184     <para>
1185     Do <emphasis role="strong">NOT</emphasis> upload a package to the security
1186 he 5198 upload queue (<literal>oldstable-security</literal>, <literal>stable-security
1187     </literal>, etc.) without prior authorization from the security team. If the
1188     package does not exactly meet the team's requirements, it will cause many
1189     problems and delays in dealing with the unwanted upload.
1190 debacle 4902 </para>
1191     <para>
1192 he 5199 Do <emphasis role="strong">NOT</emphasis> upload your fix to <literal>
1193     proposed-updates</literal> without coordinating with the security team.
1194     Packages from <literal>security.debian.org</literal> will be copied into
1195     the <literal>proposed-updates</literal> directory automatically. If a package
1196 debacle 4902 with the same or a higher version number is already installed into the archive,
1197     the security update will be rejected by the archive system. That way, the
1198     stable distribution will end up without a security update for this package
1199     instead.
1200     </para>
1201     <para>
1202     Once you have created and tested the new package and it has been approved by
1203     the security team, it needs to be uploaded so that it can be installed in the
1204     archives. For security uploads, the place to upload to is
1205     <literal>ftp://security-master.debian.org/pub/SecurityUploadQueue/</literal> .
1206     </para>
1207     <para>
1208     Once an upload to the security queue has been accepted, the package will
1209 lucas 5798 automatically be built for all architectures and stored for verification by
1210 debacle 4902 the security team.
1211     </para>
1212     <para>
1213     Uploads which are waiting for acceptance or verification are only accessible by
1214     the security team. This is necessary since there might be fixes for security
1215     problems that cannot be disclosed yet.
1216     </para>
1217     <para>
1218     If a member of the security team accepts a package, it will be installed on
1219 he 5199 <literal>security.debian.org</literal> as well as proposed for the proper
1220 he 5196 <replaceable>distribution</replaceable><literal>-proposed-updates</literal>
1221     on <literal>&ftp-master-host;</literal>.
1222 debacle 4902 </para>
1223     </section>
1224    
1225     </section>
1226    
1227     </section>
1228    
1229     <section id="archive-manip">
1230     <title>Moving, removing, renaming, adopting, and orphaning packages</title>
1231     <para>
1232     Some archive manipulation operations are not automated in the Debian upload
1233     process. These procedures should be manually followed by maintainers. This
1234     chapter gives guidelines on what to do in these cases.
1235     </para>
1236     <section id="moving-pkgs">
1237     <title>Moving packages</title>
1238     <para>
1239     Sometimes a package will change its section. For instance, a package from the
1240     `non-free' section might be GPL'd in a later version, in which case the package
1241     should be moved to `main' or `contrib'.<footnote><para> See the <ulink
1242 debacle 4910 url="&url-debian-policy;">Debian Policy Manual</ulink> for
1243 debacle 4902 guidelines on what section a package belongs in. </para> </footnote>
1244     </para>
1245     <para>
1246     If you need to change the section for one of your packages, change the package
1247     control information to place the package in the desired section, and re-upload
1248     the package (see the <ulink
1249 debacle 4910 url="&url-debian-policy;">Debian Policy Manual</ulink> for
1250 debacle 4902 details). You must ensure that you include the
1251 hertzog 7031 <filename>.orig.tar.{gz,bz2}</filename> in your upload (even if you are not uploading
1252 debacle 4902 a new upstream version), or it will not appear in the new section together with
1253     the rest of the package. If your new section is valid, it will be moved
1254     automatically. If it does not, then contact the ftpmasters in order to
1255     understand what happened.
1256     </para>
1257     <para>
1258 he 5196 If, on the other hand, you need to change the <literal>subsection</literal>
1259 debacle 4902 of one of your packages (e.g., ``devel'', ``admin''), the procedure is slightly
1260     different. Correct the subsection as found in the control file of the package,
1261     and re-upload that. Also, you'll need to get the override file updated, as
1262     described in <xref linkend="override-file"/> .
1263     </para>
1264     </section>
1265    
1266     <section id="removing-pkgs">
1267     <title>Removing packages</title>
1268     <para>
1269     If for some reason you want to completely remove a package (say, if it is an
1270     old compatibility library which is no longer required), you need to file a bug
1271 debacle 4911 against <literal>ftp.debian.org</literal> asking that the package be removed;
1272 he 5220 as all bugs, this bug should normally have normal severity.
1273     The bug title should be in the form <literal>RM: <replaceable>package
1274     </replaceable> <replaceable>[architecture list]</replaceable> --
1275 lucas 5222 <replaceable>reason</replaceable></literal>, where <replaceable>package</replaceable>
1276 he 5220 is the package to be removed and <replaceable>reason</replaceable> is a
1277     short summary of the reason for the removal request.
1278     <replaceable>[architecture list]</replaceable> is optional and only needed
1279     if the removal request only applies to some architectures, not all. Note
1280     that the <command>reportbug</command> will create a title conforming
1281     to these rules when you use it to report a bug against the <literal>
1282     ftp.debian.org</literal> pseudo-package.
1283     </para>
1284    
1285     <para>
1286     If you want to remove a package you maintain, you should note this in
1287     the bug title by prepending <literal>ROM</literal> (Request Of Maintainer).
1288     There are several other standard acronyms used in the reasoning for a package
1289     removal, see <ulink url="http://&ftp-master-host;/removals.html"></ulink>
1290     for a complete list. That page also provides a convenient overview of
1291     pending removal requests.
1292     </para>
1293    
1294     <para>
1295     Note that removals can only be done for the <literal>unstable
1296     </literal>, <literal>experimental</literal> and <literal>stable
1297     </literal> distribution. Packages are not removed from
1298 he 5196 <literal>testing</literal> directly. Rather, they will be removed
1299 debacle 4902 automatically after the package has been removed from
1300 he 5220 <literal>unstable</literal> and no package in <literal>testing
1301     </literal> depends on it.
1302 debacle 4902 </para>
1303     <para>
1304     There is one exception when an explicit removal request is not necessary: If a
1305     (source or binary) package is an orphan, it will be removed semi-automatically.
1306     For a binary-package, this means if there is no longer any source package
1307     producing this binary package; if the binary package is just no longer produced
1308     on some architectures, a removal request is still necessary. For a
1309     source-package, this means that all binary packages it refers to have been
1310     taken over by another source package.
1311     </para>
1312     <para>
1313     In your removal request, you have to detail the reasons justifying the request.
1314     This is to avoid unwanted removals and to keep a trace of why a package has
1315     been removed. For example, you can provide the name of the package that
1316     supersedes the one to be removed.
1317     </para>
1318     <para>
1319     Usually you only ask for the removal of a package maintained by yourself. If
1320     you want to remove another package, you have to get the approval of its
1321 he 5220 maintainer. Should the package be orphaned and thus have no maintainer,
1322     you should first discuss the removal request on &email-debian-qa;. If
1323     there is a consensus that the package should be removed, you should
1324     reassign and retitle the <literal>O:</literal> bug filed against the
1325     <literal>wnpp</literal> package instead of filing a new bug as
1326     removal request.
1327 debacle 4902 </para>
1328     <para>
1329     Further information relating to these and other package removal related topics
1330     may be found at <ulink url="http://wiki.debian.org/ftpmaster_Removals"></ulink>
1331 debacle 4910 and <ulink url="&url-debian-qa;howto-remove.html"></ulink>.
1332 debacle 4902 </para>
1333     <para>
1334     If in doubt concerning whether a package is disposable, email
1335 debacle 4911 &email-debian-devel; asking for opinions. Also of interest is
1336     the <command>apt-cache</command> program from the <systemitem
1337 debacle 4902 role="package">apt</systemitem> package. When invoked as <literal>apt-cache
1338     showpkg <replaceable>package</replaceable></literal>, the program will show
1339     details for <replaceable>package</replaceable>, including reverse depends.
1340     Other useful programs include <literal>apt-cache rdepends</literal>,
1341 lucas 5221 <command>apt-rdepends</command>, <command>build-rdeps</command> (in the
1342     <systemitem role="package">devscripts</systemitem> package) and
1343     <command>grep-dctrl</command>. Removal of
1344 debacle 4911 orphaned packages is discussed on &email-debian-qa;.
1345 debacle 4902 </para>
1346     <para>
1347     Once the package has been removed, the package's bugs should be handled. They
1348     should either be reassigned to another package in the case where the actual
1349     code has evolved into another package (e.g. <literal>libfoo12</literal> was
1350     removed because <literal>libfoo13</literal> supersedes it) or closed if the
1351     software is simply no longer part of Debian.
1352 lucas 6928 When closing the bugs,
1353     to avoid marking the bugs as fixed in versions of the packages
1354     in previous Debian releases, they should be marked as fixed
1355     in the version <literal>&lt;most-recent-version-ever-in-Debian&gt;+rm</literal>.
1356 debacle 4902 </para>
1357     <section id="s5.9.2.1">
1358     <title>Removing packages from <filename>Incoming</filename></title>
1359     <para>
1360     In the past, it was possible to remove packages from
1361     <filename>incoming</filename>. However, with the introduction of the new
1362     incoming system, this is no longer possible. Instead, you have to upload a new
1363     revision of your package with a higher version than the package you want to
1364     replace. Both versions will be installed in the archive but only the higher
1365 he 5196 version will actually be available in <literal>unstable</literal> since the
1366 debacle 4902 previous version will immediately be replaced by the higher. However, if you
1367     do proper testing of your packages, the need to replace a package should not
1368     occur too often anyway.
1369     </para>
1370     </section>
1371    
1372     </section>
1373    
1374     <section id="s5.9.3">
1375     <title>Replacing or renaming packages</title>
1376     <para>
1377 he 5229 When the upstream maintainers for one of your packages chose to
1378     rename their software (or you made a mistake naming your package),
1379     you should follow a two-step process to rename it. In the first
1380     step, change the <filename>debian/control</filename> file to
1381     reflect the new name and to replace, provide and conflict with the
1382     obsolete package name (see the <ulink url="&url-debian-policy;">
1383     Debian Policy Manual</ulink> for details). Please note that you
1384     should only add a <literal>Provides</literal> relation if all
1385     packages depending on the obsolete package name continue to work
1386     after the renaming. Once you've uploaded the package and the package
1387     has moved into the archive, file a bug against <literal>
1388     ftp.debian.org</literal> asking to remove the package with the
1389     obsolete name (see <xref linkend="removing-pkgs"/>). Do not forget
1390     to properly reassign the package's bugs at the same time.
1391 debacle 4902 </para>
1392     <para>
1393     At other times, you may make a mistake in constructing your package and wish to
1394     replace it. The only way to do this is to increase the version number and
1395     upload a new version. The old version will be expired in the usual manner.
1396     Note that this applies to each part of your package, including the sources: if
1397     you wish to replace the upstream source tarball of your package, you will need
1398     to upload it with a different version. An easy possibility is to replace
1399     <filename>foo_1.00.orig.tar.gz</filename> with
1400 hertzog 7031 <filename>foo_1.00+0.orig.tar.gz</filename> or
1401     <filename>foo_1.00.orig.tar.bz2</filename>. This restriction gives each
1402     file on the ftp site a unique name, which helps to ensure consistency
1403     across the mirror network.
1404 debacle 4902 </para>
1405     </section>
1406    
1407     <section id="orphaning">
1408     <title>Orphaning a package</title>
1409     <para>
1410     If you can no longer maintain a package, you need to inform others, and see
1411     that the package is marked as orphaned. You should set the package maintainer
1412 debacle 4911 to <literal>Debian QA Group &orphan-address;</literal> and
1413     submit a bug report against the pseudo package <systemitem
1414 debacle 4902 role="package">wnpp</systemitem>. The bug report should be titled <literal>O:
1415     <replaceable>package</replaceable> -- <replaceable>short
1416     description</replaceable></literal> indicating that the package is now
1417     orphaned. The severity of the bug should be set to
1418 he 5196 <literal>normal</literal>; if the package has a priority of standard or
1419 debacle 4902 higher, it should be set to important. If you feel it's necessary, send a copy
1420 debacle 4911 to &email-debian-devel; by putting the address in the
1421 debacle 4902 X-Debbugs-CC: header of the message (no, don't use CC:, because that way the
1422     message's subject won't indicate the bug number).
1423     </para>
1424     <para>
1425     If you just intend to give the package away, but you can keep maintainership
1426     for the moment, then you should instead submit a bug against <systemitem
1427     role="package">wnpp</systemitem> and title it <literal>RFA:
1428     <replaceable>package</replaceable> -- <replaceable>short
1429     description</replaceable></literal>. <literal>RFA</literal> stands for
1430 he 5196 <literal>Request For Adoption</literal>.
1431 debacle 4902 </para>
1432     <para>
1433 debacle 4910 More information is on the <ulink url="&url-wnpp;">WNPP
1434 debacle 4902 web pages</ulink>.
1435     </para>
1436     </section>
1437    
1438     <section id="adopting">
1439     <title>Adopting a package</title>
1440     <para>
1441     A list of packages in need of a new maintainer is available in the <ulink
1442 debacle 4910 url="&url-wnpp;">Work-Needing and Prospective Packages
1443 debacle 4902 list (WNPP)</ulink>. If you wish to take over maintenance of any of the
1444     packages listed in the WNPP, please take a look at the aforementioned page for
1445     information and procedures.
1446     </para>
1447     <para>
1448     It is not OK to simply take over a package that you feel is neglected — that
1449     would be package hijacking. You can, of course, contact the current maintainer
1450     and ask them if you may take over the package. If you have reason to believe a
1451     maintainer has gone AWOL (absent without leave), see <xref linkend="mia-qa"/> .
1452     </para>
1453     <para>
1454     Generally, you may not take over the package without the assent of the current
1455     maintainer. Even if they ignore you, that is still not grounds to take over a
1456     package. Complaints about maintainers should be brought up on the developers'
1457     mailing list. If the discussion doesn't end with a positive conclusion, and
1458     the issue is of a technical nature, consider bringing it to the attention of
1459     the technical committee (see the <ulink
1460 debacle 4911 url="&url-tech-ctte;">technical committee web page</ulink> for
1461     more information).
1462 debacle 4902 </para>
1463     <para>
1464     If you take over an old package, you probably want to be listed as the
1465     package's official maintainer in the bug system. This will happen
1466     automatically once you upload a new version with an updated
1467     <literal>Maintainer:</literal> field, although it can take a few hours after
1468     the upload is done. If you do not expect to upload a new version for a while,
1469     you can use <xref linkend="pkg-tracking-system"/> to get the bug reports.
1470     However, make sure that the old maintainer has no problem with the fact that
1471     they will continue to receive the bugs during that time.
1472     </para>
1473     </section>
1474    
1475     </section>
1476    
1477     <section id="porting">
1478     <title>Porting and being ported</title>
1479     <para>
1480     Debian supports an ever-increasing number of architectures. Even if you are
1481     not a porter, and you don't use any architecture but one, it is part of your
1482     duty as a maintainer to be aware of issues of portability. Therefore, even if
1483     you are not a porter, you should read most of this chapter.
1484     </para>
1485     <para>
1486     Porting is the act of building Debian packages for architectures that are
1487     different from the original architecture of the package maintainer's binary
1488     package. It is a unique and essential activity. In fact, porters do most of
1489 he 5201 the actual compiling of Debian packages. For instance, when a maintainer
1490     uploads a (portable) source packages with binaries for the <literal>i386
1491     </literal> architecture, it will be built for each of the other architectures,
1492     amounting to &number-of-arches; more builds.
1493 debacle 4902 </para>
1494     <section id="kind-to-porters">
1495     <title>Being kind to porters</title>
1496     <para>
1497     Porters have a difficult and unique task, since they are required to deal with
1498     a large volume of packages. Ideally, every source package should build right
1499     out of the box. Unfortunately, this is often not the case. This section
1500     contains a checklist of ``gotchas'' often committed by Debian maintainers —
1501     common problems which often stymie porters, and make their jobs unnecessarily
1502     difficult.
1503     </para>
1504     <para>
1505     The first and most important thing is to respond quickly to bug or issues
1506     raised by porters. Please treat porters with courtesy, as if they were in fact
1507     co-maintainers of your package (which, in a way, they are). Please be tolerant
1508     of succinct or even unclear bug reports; do your best to hunt down whatever the
1509     problem is.
1510     </para>
1511     <para>
1512     By far, most of the problems encountered by porters are caused by
1513     <emphasis>packaging bugs</emphasis> in the source packages. Here is a
1514     checklist of things you should check or be aware of.
1515     </para>
1516     <orderedlist numeration="arabic">
1517     <listitem>
1518     <para>
1519     Make sure that your <literal>Build-Depends</literal> and
1520     <literal>Build-Depends-Indep</literal> settings in
1521     <filename>debian/control</filename> are set properly. The best way to validate
1522     this is to use the <systemitem role="package">debootstrap</systemitem> package
1523 he 5198 to create an <literal>unstable</literal> chroot environment (see <xref
1524     linkend="debootstrap"/> ).
1525 debacle 4902 Within that chrooted environment, install the <systemitem
1526     role="package">build-essential</systemitem> package and any package
1527     dependencies mentioned in <literal>Build-Depends</literal> and/or
1528     <literal>Build-Depends-Indep</literal>. Finally, try building your package
1529     within that chrooted environment. These steps can be automated by the use of
1530     the <command>pbuilder</command> program which is provided by the package of the
1531     same name (see <xref linkend="pbuilder"/> ).
1532     </para>
1533     <para>
1534     If you can't set up a proper chroot, <command>dpkg-depcheck</command> may be of
1535     assistance (see <xref linkend="dpkg-depcheck"/> ).
1536     </para>
1537     <para>
1538 debacle 4910 See the <ulink url="&url-debian-policy;">Debian Policy
1539 debacle 4902 Manual</ulink> for instructions on setting build dependencies.
1540     </para>
1541     </listitem>
1542     <listitem>
1543     <para>
1544 he 5201 Don't set architecture to a value other than <literal>all</literal> or
1545     <literal>any</literal> unless you really mean it. In too many cases,
1546     maintainers don't follow the instructions in the <ulink
1547     url="&url-debian-policy;">Debian Policy Manual</ulink>. Setting your
1548     architecture to only one architecture (such as <literal>i386</literal>
1549     or <literal>amd64</literal>) is usually incorrect.
1550 debacle 4902 </para>
1551     </listitem>
1552     <listitem>
1553     <para>
1554     Make sure your source package is correct. Do <literal>dpkg-source -x
1555     <replaceable>package</replaceable>.dsc</literal> to make sure your source
1556     package unpacks properly. Then, in there, try building your package from
1557     scratch with <command>dpkg-buildpackage</command>.
1558     </para>
1559     </listitem>
1560     <listitem>
1561     <para>
1562     Make sure you don't ship your source package with the
1563     <filename>debian/files</filename> or <filename>debian/substvars</filename>
1564 he 5201 files. They should be removed by the <literal>clean</literal> target of
1565 debacle 4902 <filename>debian/rules</filename>.
1566     </para>
1567     </listitem>
1568     <listitem>
1569     <para>
1570     Make sure you don't rely on locally installed or hacked configurations or
1571     programs. For instance, you should never be calling programs in
1572     <filename>/usr/local/bin</filename> or the like. Try not to rely on programs
1573     being setup in a special way. Try building your package on another machine,
1574     even if it's the same architecture.
1575     </para>
1576     </listitem>
1577     <listitem>
1578     <para>
1579     Don't depend on the package you're building being installed already (a sub-case
1580 he 5201 of the above issue). There are, of course, exceptions to this rule, but be
1581     aware that any case like this needs manual bootstrapping and cannot be done
1582     by automated package builders.
1583 debacle 4902 </para>
1584     </listitem>
1585     <listitem>
1586     <para>
1587     Don't rely on the compiler being a certain version, if possible. If not, then
1588     make sure your build dependencies reflect the restrictions, although you are
1589     probably asking for trouble, since different architectures sometimes
1590     standardize on different compilers.
1591     </para>
1592     </listitem>
1593     <listitem>
1594     <para>
1595 he 5201 Make sure your debian/rules contains separate <literal>binary-arch</literal>
1596     and <literal>binary-indep</literal> targets, as the Debian Policy Manual
1597     requires. Make sure that both targets work independently, that is, that you
1598     can call the target without having called the other before. To test this,
1599     try to run <command>dpkg-buildpackage -B</command>.
1600 debacle 4902 </para>
1601     </listitem>
1602     </orderedlist>
1603     </section>
1604    
1605     <section id="porter-guidelines">
1606     <title>Guidelines for porter uploads</title>
1607     <para>
1608     If the package builds out of the box for the architecture to be ported to, you
1609     are in luck and your job is easy. This section applies to that case; it
1610     describes how to build and upload your binary package so that it is properly
1611     installed into the archive. If you do have to patch the package in order to
1612     get it to compile for the other architecture, you are actually doing a source
1613     NMU, so consult <xref linkend="nmu-guidelines"/> instead.
1614     </para>
1615     <para>
1616     For a porter upload, no changes are being made to the source. You do not need
1617     to touch any of the files in the source package. This includes
1618     <filename>debian/changelog</filename>.
1619     </para>
1620     <para>
1621     The way to invoke <command>dpkg-buildpackage</command> is as
1622     <literal>dpkg-buildpackage -B
1623     -m<replaceable>porter-email</replaceable></literal>. Of course, set
1624     <replaceable>porter-email</replaceable> to your email address. This will do a
1625     binary-only build of only the architecture-dependent portions of the package,
1626 he 5201 using the <literal>binary-arch</literal> target in <filename>debian/rules
1627     </filename>.
1628 debacle 4902 </para>
1629     <para>
1630     If you are working on a Debian machine for your porting efforts and you need to
1631     sign your upload locally for its acceptance in the archive, you can run
1632     <command>debsign</command> on your <filename>.changes</filename> file to have
1633     it signed conveniently, or use the remote signing mode of
1634     <command>dpkg-sig</command>.
1635     </para>
1636     <section id="binary-only-nmu">
1637     <title>Recompilation or binary-only NMU</title>
1638     <para>
1639     Sometimes the initial porter upload is problematic because the environment in
1640     which the package was built was not good enough (outdated or obsolete library,
1641     bad compiler, ...). Then you may just need to recompile it in an updated
1642     environment. However, you have to bump the version number in this case, so
1643     that the old bad package can be replaced in the Debian archive
1644 he 5201 (<command>dak</command> refuses to install new packages if they don't have a
1645 debacle 4902 version number greater than the currently available one).
1646     </para>
1647     <para>
1648     You have to make sure that your binary-only NMU doesn't render the package
1649     uninstallable. This could happen when a source package generates
1650 he 5201 arch-dependent and arch-independent packages that have inter-dependencies
1651     generated using dpkg's substitution variable <literal>$(Source-Version)
1652     </literal>.
1653 debacle 4902 </para>
1654     <para>
1655     Despite the required modification of the changelog, these are called
1656     binary-only NMUs — there is no need in this case to trigger all other
1657     architectures to consider themselves out of date or requiring recompilation.
1658     </para>
1659     <para>
1660     Such recompilations require special ``magic'' version numbering, so that the
1661     archive maintenance tools recognize that, even though there is a new Debian
1662     version, there is no corresponding source update. If you get this wrong, the
1663     archive maintainers will reject your upload (due to lack of corresponding
1664     source code).
1665     </para>
1666     <para>
1667     The ``magic'' for a recompilation-only NMU is triggered by using a suffix
1668 he 5201 appended to the package version number, following the form <literal>
1669 lucas 5222 b<replaceable>number</replaceable></literal>.
1670 debacle 4902 For instance, if the latest version you are recompiling against was version
1671 lucas 5222 <literal>2.9-3</literal>, your binary-only NMU should carry a version of
1672 he 5201 <literal>2.9-3+b1</literal>. If the latest version was <literal>3.4+b1
1673     </literal> (i.e, a native package with a previous recompilation NMU), your
1674     binary-only NMU should have a version number of <literal>3.4+b2</literal>.
1675     <footnote><para> In the past, such NMUs used the third-level number on the
1676     Debian part of the revision to denote their recompilation-only status;
1677     however, this syntax was ambiguous with native packages and did not allow
1678     proper ordering of recompile-only NMUs, source NMUs, and security NMUs on
1679     the same package, and has therefore been abandoned in favor of this new syntax.
1680     </para> </footnote>
1681 debacle 4902 </para>
1682     <para>
1683     Similar to initial porter uploads, the correct way of invoking
1684     <command>dpkg-buildpackage</command> is <literal>dpkg-buildpackage -B</literal>
1685     to only build the architecture-dependent parts of the package.
1686     </para>
1687     </section>
1688    
1689     <section id="source-nmu-when-porter">
1690     <title>When to do a source NMU if you are a porter</title>
1691     <para>
1692     Porters doing a source NMU generally follow the guidelines found in <xref
1693     linkend="nmu"/> , just like non-porters. However, it is expected that the wait
1694     cycle for a porter's source NMU is smaller than for a non-porter, since porters
1695     have to cope with a large quantity of packages. Again, the situation varies
1696     depending on the distribution they are uploading to. It also varies whether
1697     the architecture is a candidate for inclusion into the next stable release; the
1698     release managers decide and announce which architectures are candidates.
1699     </para>
1700     <para>
1701 he 5198 If you are a porter doing an NMU for <literal>unstable</literal>, the above
1702     guidelines for porting should be followed, with two variations. Firstly, the
1703     acceptable waiting period — the time between when the bug is submitted to
1704     the BTS and when it is OK to do an NMU — is seven days for porters working
1705     on the <literal>unstable</literal> distribution. This period can be shortened
1706     if the problem is critical and imposes hardship on the porting effort, at the
1707     discretion of the porter group. (Remember, none of this is Policy, just
1708     mutually agreed upon guidelines.) For uploads to <literal>stable</literal> or
1709     <literal>testing </literal>, please coordinate with the appropriate release
1710     team first.
1711 debacle 4902 </para>
1712     <para>
1713     Secondly, porters doing source NMUs should make sure that the bug they submit
1714 he 5201 to the BTS should be of severity <literal>serious</literal> or greater. This
1715     ensures that a single source package can be used to compile every supported
1716     Debian architecture by release time. It is very important that we have one
1717     version of the binary and source package for all architectures in order to
1718     comply with many licenses.
1719 debacle 4902 </para>
1720     <para>
1721     Porters should try to avoid patches which simply kludge around bugs in the
1722     current version of the compile environment, kernel, or libc. Sometimes such
1723     kludges can't be helped. If you have to kludge around compiler bugs and the
1724     like, make sure you <literal>#ifdef</literal> your work properly; also,
1725     document your kludge so that people know to remove it once the external
1726     problems have been fixed.
1727     </para>
1728     <para>
1729     Porters may also have an unofficial location where they can put the results of
1730     their work during the waiting period. This helps others running the port have
1731     the benefit of the porter's work, even during the waiting period. Of course,
1732     such locations have no official blessing or status, so buyer beware.
1733     </para>
1734     </section>
1735    
1736     </section>
1737    
1738     <section id="porter-automation">
1739     <title>Porting infrastructure and automation</title>
1740     <para>
1741     There is infrastructure and several tools to help automate package porting.
1742     This section contains a brief overview of this automation and porting to these
1743     tools; see the package documentation or references for full information.
1744     </para>
1745     <section id="s5.10.3.1">
1746     <title>Mailing lists and web pages</title>
1747     <para>
1748     Web pages containing the status of each port can be found at <ulink
1749 debacle 4910 url="&url-debian-ports;"></ulink>.
1750 debacle 4902 </para>
1751     <para>
1752     Each port of Debian has a mailing list. The list of porting mailing lists can
1753 debacle 4910 be found at <ulink url="&url-debian-port-lists;"></ulink>. These
1754 debacle 4902 lists are used to coordinate porters, and to connect the users of a given port
1755     with the porters.
1756     </para>
1757     </section>
1758    
1759     <section id="s5.10.3.2">
1760     <title>Porter tools</title>
1761     <para>
1762     Descriptions of several porting tools can be found in <xref
1763     linkend="tools-porting"/> .
1764     </para>
1765     </section>
1766    
1767 he 5201 <section id="wanna-build">
1768     <title><systemitem role="package">wanna-build</systemitem></title>
1769 debacle 4902 <para>
1770 he 5201 The <systemitem role="package">wanna-build</systemitem> system is used as a
1771 debacle 4902 distributed, client-server build distribution system. It is usually used in
1772 he 5201 conjunction with build daemons running the <systemitem role="package">buildd
1773     </systemitem> program. <literal>Build daemons</literal> are ``slave'' hosts
1774     which contact the central <systemitem role="package"> wanna-build</systemitem>
1775     system to receive a list of packages that need to be built.
1776 debacle 4902 </para>
1777     <para>
1778 he 5201 <systemitem role="package">wanna-build</systemitem> is not yet available as a
1779     package; however, all Debian porting efforts are using it for automated
1780     package building. The tool used to do the actual package builds, <systemitem
1781     role="package">sbuild</systemitem> is available as a package, see its
1782     description in <xref linkend="sbuild"/> . Please note that the packaged
1783     version is not the same as the one used on build daemons, but it is close
1784     enough to reproduce problems.
1785 debacle 4902 </para>
1786     <para>
1787 he 5201 Most of the data produced by <systemitem role="package">wanna-build
1788     </systemitem> which is generally useful to porters is available on the
1789     web at <ulink url="&url-buildd;"></ulink>. This data includes nightly
1790     updated statistics, queueing information and logs for build attempts.
1791 debacle 4902 </para>
1792     <para>
1793     We are quite proud of this system, since it has so many possible uses.
1794     Independent development groups can use the system for different sub-flavors of
1795     Debian, which may or may not really be of general interest (for instance, a
1796     flavor of Debian built with <command>gcc</command> bounds checking). It will
1797     also enable Debian to recompile entire distributions quickly.
1798     </para>
1799     <para>
1800 lucas 6877 The wanna-build team, in charge of the buildds,
1801     can be reached at <literal>debian-wb-team@lists.debian.org</literal>.
1802     To determine who (wanna-build team, release team) and how (mail, BTS)
1803     to contact, refer to <ulink url="&url-wb-team;"></ulink>.
1804 debacle 4902 </para>
1805 lucas 6760
1806     <para>
1807 lucas 6877 When requesting binNMUs or give-backs (retries after a failed build),
1808     please use the format described at <ulink url="&url-release-wb;"/>.
1809 lucas 6760 </para>
1810    
1811 debacle 4902 </section>
1812    
1813     </section>
1814    
1815     <section id="packages-arch-specific">
1816     <title>When your package is <emphasis>not</emphasis> portable</title>
1817     <para>
1818     Some packages still have issues with building and/or working on some of the
1819     architectures supported by Debian, and cannot be ported at all, or not within a
1820     reasonable amount of time. An example is a package that is SVGA-specific (only
1821 he 5201 available for <literal>i386</literal> and <literal>amd64</literal>), or uses
1822     other hardware-specific features not supported on all architectures.
1823 debacle 4902 </para>
1824     <para>
1825     In order to prevent broken packages from being uploaded to the archive, and
1826     wasting buildd time, you need to do a few things:
1827     </para>
1828     <itemizedlist>
1829     <listitem>
1830     <para>
1831     First, make sure your package <emphasis>does</emphasis> fail to build on
1832     architectures that it cannot support. There are a few ways to achieve this.
1833     The preferred way is to have a small testsuite during build time that will test
1834     the functionality, and fail if it doesn't work. This is a good idea anyway, as
1835     this will prevent (some) broken uploads on all architectures, and also will
1836     allow the package to build as soon as the required functionality is available.
1837     </para>
1838     <para>
1839     Additionally, if you believe the list of supported architectures is pretty
1840 he 5201 constant, you should change <literal>any</literal> to a list of supported
1841     architectures in <filename>debian/control</filename>. This way, the build will
1842     fail also, and indicate this to a human reader without actually trying.
1843 debacle 4902 </para>
1844     </listitem>
1845     <listitem>
1846     <para>
1847     In order to prevent autobuilders from needlessly trying to build your package,
1848     it must be included in <filename>packages-arch-specific</filename>, a list used
1849     by the <command>wanna-build</command> script. The current version is available
1850 hertzog 7036 as <ulink url="&url-buildd-p-a-s;"/>;
1851 debacle 4902 please see the top of the file for whom to contact for changes.
1852     </para>
1853     </listitem>
1854     </itemizedlist>
1855     <para>
1856     Please note that it is insufficient to only add your package to
1857     Packages-arch-specific without making it fail to build on unsupported
1858     architectures: A porter or any other person trying to build your package might
1859     accidently upload it without noticing it doesn't work. If in the past some
1860     binary packages were uploaded on unsupported architectures, request their
1861     removal by filing a bug against <systemitem
1862 debacle 4911 role="package">ftp.debian.org</systemitem>
1863 debacle 4902 </para>
1864     </section>
1865    
1866     </section>
1867    
1868     <section id="nmu">
1869     <title>Non-Maintainer Uploads (NMUs)</title>
1870     <para>
1871 lucas 5353 Every package has one or more maintainers. Normally, these are the people who
1872     work on and upload new versions of the package. In some situations, it is
1873     useful that other developers can upload a new version as well, for example if
1874     they want to fix a bug in a package they don't maintain, when the maintainer
1875     needs help to respond to issues. Such uploads are called
1876     <emphasis>Non-Maintainer Uploads (NMU)</emphasis>.
1877 debacle 4902 </para>
1878 lucas 5353
1879 debacle 4902 <section id="nmu-guidelines">
1880 lucas 5353 <title>When and how to do an NMU</title>
1881    
1882 debacle 4902 <para>
1883 lucas 5353 Before doing an NMU, consider the following questions:
1884 debacle 4902 </para>
1885     <itemizedlist>
1886     <listitem>
1887     <para>
1888 lucas 5353 Does your NMU really fix bugs? Fixing cosmetic issues or changing the
1889     packaging style in NMUs is discouraged.
1890 debacle 4902 </para>
1891     </listitem>
1892     <listitem>
1893     <para>
1894 lucas 5353 Did you give enough time to the maintainer? When was the bug reported to the
1895     BTS? Being busy for a week or two isn't unusual. Is the bug so severe that it
1896     needs to be fixed right now, or can it wait a few more days?
1897 debacle 4902 </para>
1898     </listitem>
1899     <listitem>
1900     <para>
1901 lucas 5353 How confident are you about your changes? Please remember the Hippocratic Oath:
1902     "Above all, do no harm." It is better to leave a package with an open grave bug
1903     than applying a non-functional patch, or one that hides the bug instead of
1904     resolving it. If you are not 100% sure of what you did, it might be a good idea
1905     to seek advice from others. Remember that if you break something in your NMU,
1906     many people will be very unhappy about it.
1907 debacle 4902 </para>
1908     </listitem>
1909     <listitem>
1910     <para>
1911 lucas 5353 Have you clearly expressed your intention to NMU, at least in the BTS?
1912     It is also a good idea to try to contact the
1913     maintainer by other means (private email, IRC).
1914 debacle 4902 </para>
1915     </listitem>
1916     <listitem>
1917     <para>
1918 lucas 5353 If the maintainer is usually active and responsive, have you tried to contact
1919     him? In general it should be considered preferable that a maintainer takes care
1920     of an issue himself and that he is given the chance to review and correct your
1921     patch, because he can be expected to be more aware of potential issues which an
1922     NMUer might miss. It is often a better use of everyone's time if the maintainer
1923     is given an opportunity to upload a fix on their own.
1924 debacle 4902 </para>
1925     </listitem>
1926     </itemizedlist>
1927     <para>
1928 lucas 5353 When doing an NMU, you must first make sure that your intention to NMU is
1929     clear. Then, you must send a patch with the differences between the
1930     current package and your proposed NMU to the BTS. The
1931     <literal>nmudiff</literal> script in the <literal>devscripts</literal> package
1932     might be helpful.
1933 debacle 4902 </para>
1934     <para>
1935 lucas 5353 While preparing the patch, you should better be aware of any package-specific
1936     practices that the maintainer might be using. Taking them into account reduces
1937     the burden of getting your changes integrated back in the normal package
1938     workflow and thus increases the possibilities that that will happen. A good
1939     place where to look for for possible package-specific practices is
1940     <ulink url="&url-debian-policy;ch-source.html#s-readmesource"><literal>debian/README.source</literal></ulink>.
1941 debacle 4902 </para>
1942     <para>
1943 lucas 5353 Unless you have an excellent reason not to do so, you must then give some time
1944     to the maintainer to react (for example, by uploading to the
1945     <literal>DELAYED</literal> queue). Here are some recommended values to use for delays:
1946 debacle 4902 </para>
1947 lucas 5353 <itemizedlist>
1948     <listitem>
1949 debacle 4902 <para>
1950 lucas 5353 Upload fixing only release-critical bugs older than 7 days: 2 days
1951 debacle 4902 </para>
1952 lucas 5353 </listitem>
1953     <listitem>
1954 debacle 4902 <para>
1955 lucas 5353 Upload fixing only release-critical and important bugs: 5 days
1956 debacle 4902 </para>
1957 lucas 5353 </listitem>
1958     <listitem>
1959 debacle 4902 <para>
1960 lucas 5353 Other NMUs: 10 days
1961 debacle 4902 </para>
1962 lucas 5353 </listitem>
1963     </itemizedlist>
1964 debacle 4902
1965     <para>
1966 lucas 5353 Those delays are only examples. In some cases, such as uploads fixing security
1967     issues, or fixes for trivial bugs that blocking a transition, it is desirable
1968     that the fixed package reaches <literal>unstable</literal> sooner.
1969 debacle 4902 </para>
1970 lucas 5353
1971 debacle 4902 <para>
1972 lucas 5353 Sometimes, release managers decide to allow NMUs with shorter delays for a
1973     subset of bugs (e.g release-critical bugs older than 7 days). Also, some
1974     maintainers list themselves in the <ulink url="&url-low-threshold-nmu;">Low
1975     Threshold NMU list</ulink>, and accept that NMUs are uploaded without delay. But
1976     even in those cases, it's still a good idea to give the maintainer a few days
1977     to react before you upload, especially if the patch wasn't available in the BTS
1978     before, or if you know that the maintainer is generally active.
1979 debacle 4902 </para>
1980 lucas 5353
1981 debacle 4902 <para>
1982 lucas 5353 After you upload an NMU, you are responsible for the possible problems that you
1983     might have introduced. You must keep an eye on the package (subscribing to the
1984     package on the PTS is a good way to achieve this).
1985 debacle 4902 </para>
1986 lucas 5353
1987 debacle 4902 <para>
1988 lucas 5353 This is not a license to perform NMUs thoughtlessly. If you NMU when it is
1989     clear that the maintainers are active and would have acknowledged a patch in a
1990     timely manner, or if you ignore the recommendations of this document, your
1991     upload might be a cause of conflict with the maintainer.
1992     You should always be prepared to
1993     defend the wisdom of any NMU you perform on its own merits.
1994 debacle 4902 </para>
1995     </section>
1996    
1997     <section id="nmu-changelog">
1998 lucas 5353 <title>NMUs and debian/changelog</title>
1999 debacle 4902 <para>
2000 lucas 5353 Just like any other (source) upload, NMUs must add an entry to
2001     <literal>debian/changelog</literal>, telling what has changed with this
2002     upload. The first line of this entry must explicitely mention that this upload is an NMU, e.g.:
2003 debacle 4902 </para>
2004     <screen>
2005 lucas 5353 * Non-maintainer upload.
2006 debacle 4902 </screen>
2007    
2008     <para>
2009 lucas 6761 The way to version NMUs differs for native and non-native packages.
2010     </para>
2011     <para>
2012     If the package is a native package (without a debian revision in the version number),
2013     the version must be the version of the last maintainer upload, plus
2014 lucas 5353 <literal>+nmu<replaceable>X</replaceable></literal>, where
2015 lucas 6761 <replaceable>X</replaceable> is a counter starting at <literal>1</literal>.
2016     If
2017 lucas 5353 the last upload was also an NMU, the counter should be increased. For example,
2018 lucas 6761 if the current version is <literal>1.5</literal>, then an NMU would get
2019     version <literal>1.5+nmu1</literal>.
2020     </para>
2021     <para>
2022     If the package is a not a native package, you should add a minor version number
2023     to the debian revision part of the version number (the portion after the last
2024     hyphen). This extra number must start at 1. For example,
2025     if the current version is <literal>1.5-2</literal>, then an NMU would get
2026     version <literal>1.5-2.1</literal>. If a new upstream version
2027 lucas 5353 is packaged in the NMU, the debian revision is set to <literal>0</literal>, for
2028 lucas 6761 example <literal>1.6-0.1</literal>.
2029 debacle 4902 </para>
2030     <para>
2031 lucas 6761 In both cases, if the last upload was also an NMU, the counter should
2032     be increased. For example, if the current version is
2033     <literal>1.5+nmu3</literal> (a native package which has already been
2034     NMUed), the NMU would get version <literal>1.5+nmu4</literal>. .
2035     </para>
2036     <para>
2037 lucas 5353 A special versioning scheme is needed to avoid disrupting the maintainer's
2038     work, since using an integer for the Debian revision will potentially
2039     conflict with a maintainer upload already in preparation at the time of an
2040     NMU, or even one sitting in the ftp NEW queue.
2041     It also has the
2042     benefit of making it visually clear that a package in the archive was not made
2043     by the official maintainer.
2044 debacle 4902 </para>
2045 lucas 5353
2046 debacle 4902 <para>
2047 lucas 5353 If you upload a package to testing or stable, you sometimes need to "fork" the
2048     version number tree. This is the case for security uploads, for example. For
2049     this, a version of the form
2050     <literal>+deb<replaceable>XY</replaceable>u<replaceable>Z</replaceable></literal>
2051     should be used, where <replaceable>X</replaceable> and
2052     <replaceable>Y</replaceable> are the major and minor release numbers, and
2053     <replaceable>Z</replaceable> is a counter starting at <literal>1</literal>.
2054     When the release number is not yet known (often the case for
2055 lucas 5364 <literal>testing</literal>, at the beginning of release cycles), the lowest
2056 lucas 5353 release number higher than the last stable release number must be used. For
2057     example, while Etch (Debian 4.0) is stable, a security NMU to stable for a
2058     package at version <literal>1.5-3</literal> would have version
2059     <literal>1.5-3+deb40u1</literal>, whereas a security NMU to Lenny would get
2060     version <literal>1.5-3+deb50u1</literal>. After the release of Lenny, security
2061     uploads to the <literal>testing</literal> distribution will be versioned
2062     <literal>+deb51uZ</literal>, until it is known whether that release will be
2063     Debian 5.1 or Debian 6.0 (if that becomes the case, uploads will be versioned
2064     as <literal>+deb60uZ</literal>.
2065 debacle 4902 </para>
2066 lucas 5353 </section>
2067    
2068     <section id="nmu-delayed">
2069     <title>Using the <literal>DELAYED/</literal> queue</title>
2070    
2071 debacle 4902 <para>
2072 lucas 5353 Having to wait for a response after you request permission to NMU is
2073     inefficient, because it costs the NMUer a context switch to come back to the
2074     issue.
2075     The <literal>DELAYED</literal> queue (see <xref linkend="delayed-incoming"/>)
2076     allows the developer doing the NMU to perform all the necessary tasks at the
2077     same time. For instance, instead of telling the maintainer that you will
2078     upload the updated
2079     package in 7 days, you should upload the package to
2080     <literal>DELAYED/7</literal> and tell the maintainer that he has 7 days to
2081     react. During this time, the maintainer can ask you to delay the upload some
2082     more, or cancel your upload.
2083 debacle 4902 </para>
2084 lucas 5353
2085 debacle 4902 <para>
2086 lucas 5353 The <literal>DELAYED</literal> queue should not be used to put additional
2087     pressure on the maintainer. In particular, it's important that you are
2088     available to cancel or delay the upload before the delay expires since the
2089     maintainer cannot cancel the upload himself.
2090 debacle 4902 </para>
2091 lucas 5353
2092     <para>
2093     If you make an NMU to <literal>DELAYED</literal> and the maintainer updates
2094     his package before the delay expires, your upload will be rejected because a
2095     newer version is already available in the archive.
2096     Ideally, the maintainer will take care to include your proposed changes (or
2097     at least a solution for the problems they address) in that upload.
2098     </para>
2099    
2100 debacle 4902 </section>
2101    
2102 lucas 5353 <section id="nmu-maintainer">
2103     <title>NMUs from the maintainer's point of view</title>
2104    
2105 debacle 4902 <para>
2106 lucas 5353 When someone NMUs your package, this means they want to help you to keep it in
2107     good shape. This gives users fixed packages faster. You
2108     can consider asking the NMUer to become a co-maintainer of the package.
2109     Receiving an NMU on a package is not a bad
2110     thing; it just means that the package is interesting enough for other people to
2111     work on it.
2112 debacle 4902 </para>
2113 lucas 5353
2114 debacle 4902 <para>
2115 lucas 5353 To acknowledge an NMU, include its changes and changelog entry in your next
2116     maintainer upload. If you do not acknowledge the NMU by including the
2117     NMU changelog entry in your changelog, the bugs will remain closed in the
2118     BTS but will be listed as affecting your maintainer version of the package.
2119 debacle 4902 </para>
2120 lucas 5353
2121 debacle 4902 </section>
2122    
2123 lucas 5353 <section id="nmu-binnmu">
2124     <title>Source NMUs vs Binary-only NMUs (binNMUs)</title>
2125    
2126 debacle 4902 <para>
2127 lucas 5353 The full name of an NMU is <emphasis>source NMU</emphasis>. There is also
2128     another type, namely the <emphasis>binary-only NMU</emphasis>, or
2129     <emphasis>binNMU</emphasis>. A binNMU is also a package upload by someone
2130     other than the package's maintainer. However, it is a binary-only upload.
2131 debacle 4902 </para>
2132 lucas 5353
2133 debacle 4902 <para>
2134 lucas 5353 When a library (or other dependency) is updated, the packages using it may need
2135     to be rebuilt. Since no changes to the source are needed, the same source
2136     package is used.
2137 debacle 4902 </para>
2138    
2139     <para>
2140 lucas 5353 BinNMUs are usually triggered on the buildds by wanna-build.
2141     An entry is added to debian/changelog,
2142     explaining why the upload was needed and increasing the version number as
2143     described in <xref linkend="binary-only-nmu"/>.
2144     This entry should not be included in the next upload.
2145 debacle 4902 </para>
2146    
2147     <para>
2148 lucas 5353 Buildds upload packages for their architecture to the archive as binary-only
2149     uploads. Strictly speaking, these are binNMUs. However, they are not normally
2150     called NMU, and they don't add an entry to debian/changelog.
2151 debacle 4902 </para>
2152 lucas 5353
2153 debacle 4902 </section>
2154    
2155 lucas 5353 <section id="nmu-qa-upload">
2156     <title>NMUs vs QA uploads</title>
2157    
2158 debacle 4902 <para>
2159 lucas 5353 NMUs are uploads of packages by somebody else than their assigned maintainer.
2160     There is
2161     another type of upload where the uploaded package is not yours: QA uploads. QA
2162     uploads are uploads of orphaned packages.
2163 debacle 4902 </para>
2164 lucas 5353
2165 debacle 4902 <para>
2166 lucas 5353 QA uploads are very much like normal maintainer uploads: they may fix anything,
2167     even minor issues; the version numbering is normal, and there is no need to use
2168     a delayed upload. The difference is that you are not listed as the Maintainer
2169     or Uploader for the package. Also, the changelog entry of a QA upload has a
2170     special first line:
2171 debacle 4902 </para>
2172 lucas 5353
2173     <screen>
2174     * QA upload.
2175     </screen>
2176    
2177 debacle 4902 <para>
2178 lucas 5353 If you want to do an NMU, and it seems that the maintainer is not active, it is
2179     wise to check if the package is orphaned
2180     (this information is displayed on the package's Package Tracking System page).
2181     When doing the first QA upload to an
2182     orphaned package, the maintainer should be set to <literal>Debian QA Group
2183     &lt;packages@qa.debian.org&gt;</literal>. Orphaned packages which did
2184     not yet have a QA upload still have their old maintainer set. There is a list
2185     of them at <ulink url="&url-orphaned-not-qa;"/>.
2186 debacle 4902 </para>
2187 lucas 5353
2188 debacle 4902 <para>
2189 lucas 5353 Instead of doing a QA upload, you can also consider adopting the package by
2190     making yourself the maintainer. You don't need permission from anybody to
2191     adopt an orphaned package, you can just set yourself as maintainer and upload
2192     the new version (see <xref linkend="adopting"/>).
2193 debacle 4902 </para>
2194 lucas 5353
2195 debacle 4902 </section>
2196    
2197     </section>
2198    
2199     <section id="collaborative-maint">
2200     <title>Collaborative maintenance</title>
2201     <para>
2202     Collaborative maintenance is a term describing the sharing of Debian package
2203     maintenance duties by several people. This collaboration is almost always a
2204     good idea, since it generally results in higher quality and faster bug fix
2205     turnaround times. It is strongly recommended that packages with a priority of
2206     <literal>Standard</literal> or which are part of the base set have
2207     co-maintainers.
2208     </para>
2209     <para>
2210     Generally there is a primary maintainer and one or more co-maintainers. The
2211     primary maintainer is the person whose name is listed in the
2212     <literal>Maintainer</literal> field of the <filename>debian/control</filename>
2213 lucas 5182 file. Co-maintainers are all the other maintainers,
2214     usually listed in the <literal>Uploaders</literal> field of the
2215     <filename>debian/control</filename> file.
2216 debacle 4902 </para>
2217     <para>
2218     In its most basic form, the process of adding a new co-maintainer is quite
2219     easy:
2220     </para>
2221     <itemizedlist>
2222     <listitem>
2223     <para>
2224     Setup the co-maintainer with access to the sources you build the package from.
2225     Generally this implies you are using a network-capable version control system,
2226     such as <command>CVS</command> or <command>Subversion</command>. Alioth (see
2227     <xref linkend="alioth"/> ) provides such tools, amongst others.
2228     </para>
2229     </listitem>
2230     <listitem>
2231     <para>
2232     Add the co-maintainer's correct maintainer name and address to the
2233 lucas 5183 <literal>Uploaders</literal> field in the first paragraph of the
2234 debacle 4902 <filename>debian/control</filename> file.
2235     </para>
2236     <screen>
2237 debacle 4910 Uploaders: John Buzz &lt;jbuzz@debian.org&gt;, Adam Rex &lt;arex@debian.org&gt;
2238 debacle 4902 </screen>
2239     </listitem>
2240     <listitem>
2241     <para>
2242     Using the PTS (<xref linkend="pkg-tracking-system"/> ), the co-maintainers
2243     should subscribe themselves to the appropriate source package.
2244     </para>
2245     </listitem>
2246     </itemizedlist>
2247     <para>
2248     Another form of collaborative maintenance is team maintenance, which is
2249     recommended if you maintain several packages with the same group of developers.
2250     In that case, the Maintainer and Uploaders field of each package must be
2251     managed with care. It is recommended to choose between one of the two
2252     following schemes:
2253     </para>
2254     <orderedlist numeration="arabic">
2255     <listitem>
2256     <para>
2257     Put the team member mainly responsible for the package in the Maintainer field.
2258     In the Uploaders, put the mailing list address, and the team members who care
2259     for the package.
2260     </para>
2261     </listitem>
2262     <listitem>
2263     <para>
2264     Put the mailing list address in the Maintainer field. In the Uploaders field,
2265     put the team members who care for the package. In this case, you must make
2266     sure the mailing list accept bug reports without any human interaction (like
2267     moderation for non-subscribers).
2268     </para>
2269     </listitem>
2270     </orderedlist>
2271     <para>
2272     In any case, it is a bad idea to automatically put all team members in the
2273     Uploaders field. It clutters the Developer's Package Overview listing (see
2274     <xref linkend="ddpo"/> ) with packages one doesn't really care for, and creates
2275     a false sense of good maintenance.
2276     </para>
2277     </section>
2278    
2279     <section id="testing">
2280     <title>The testing distribution</title>
2281     <section id="testing-basics">
2282     <title>Basics</title>
2283     <para>
2284 he 5198 Packages are usually installed into the <literal>testing</literal> distribution
2285     after they have undergone some degree of <literal>testing</literal> in
2286     <literal>unstable</literal>.
2287 debacle 4902 </para>
2288     <para>
2289     They must be in sync on all architectures and mustn't have dependencies that
2290     make them uninstallable; they also have to have generally no known
2291 he 5198 release-critical bugs at the time they're installed into <literal>testing
2292 lucas 5222 </literal>. This way, <literal>testing</literal> should always be close to
2293 he 5198 being a release candidate. Please see below for details.
2294 debacle 4902 </para>
2295     </section>
2296    
2297     <section id="testing-unstable">
2298     <title>Updates from unstable</title>
2299     <para>
2300 he 5196 The scripts that update the <literal>testing</literal> distribution are run
2301 he 5200 twice each day, right after the installation of the updated packages; these
2302     scripts are called <literal>britney</literal>. They generate the
2303 he 5196 <filename>Packages</filename> files for the <literal>testing</literal>
2304 debacle 4902 distribution, but they do so in an intelligent manner; they try to avoid any
2305     inconsistency and to use only non-buggy packages.
2306     </para>
2307     <para>
2308 he 5196 The inclusion of a package from <literal>unstable</literal> is conditional on
2309 debacle 4902 the following:
2310     </para>
2311     <itemizedlist>
2312     <listitem>
2313     <para>
2314 he 5196 The package must have been available in <literal>unstable</literal> for 2, 5
2315 debacle 4902 or 10 days, depending on the urgency (high, medium or low). Please note that
2316     the urgency is sticky, meaning that the highest urgency uploaded since the
2317 he 5198 previous <literal>testing</literal> transition is taken into account. Those
2318     delays may be doubled during a freeze, or <literal>testing</literal>
2319     transitions may be switched off altogether;
2320 debacle 4902 </para>
2321     </listitem>
2322     <listitem>
2323     <para>
2324 lucas 5179 It must not have new release-critical bugs (RC bugs affecting the version
2325 he 5196 available in <literal>unstable</literal>, but not affecting the version in
2326     <literal>testing</literal>);
2327 debacle 4902 </para>
2328     </listitem>
2329     <listitem>
2330     <para>
2331     It must be available on all architectures on which it has previously been built
2332 hertzog 5249 in <literal>unstable</literal>. <xref linkend="dak-ls"/> may be of interest
2333 he 5198 to check that information;
2334 debacle 4902 </para>
2335     </listitem>
2336     <listitem>
2337     <para>
2338     It must not break any dependency of a package which is already available in
2339 he 5196 <literal>testing</literal>;
2340 debacle 4902 </para>
2341     </listitem>
2342     <listitem>
2343     <para>
2344     The packages on which it depends must either be available in
2345 he 5196 <literal>testing</literal> or they must be accepted into
2346     <literal>testing</literal> at the same time (and they will be if they fulfill
2347 debacle 4902 all the necessary criteria);
2348     </para>
2349     </listitem>
2350     </itemizedlist>
2351     <para>
2352 he 5198 To find out whether a package is progressing into <literal>testing</literal>
2353     or not, see the <literal>testing</literal> script output on the <ulink
2354 debacle 4911 url="&url-testing-maint;">web page of the testing
2355 debacle 4902 distribution</ulink>, or use the program <command>grep-excuses</command> which
2356     is in the <systemitem role="package">devscripts</systemitem> package. This
2357     utility can easily be used in a <citerefentry>
2358     <refentrytitle>crontab</refentrytitle> <manvolnum>5</manvolnum> </citerefentry>
2359     to keep yourself informed of the progression of your packages into
2360 he 5196 <literal>testing</literal>.
2361 debacle 4902 </para>
2362     <para>
2363     The <filename>update_excuses</filename> file does not always give the precise
2364     reason why the package is refused; you may have to find it on your own by
2365     looking for what would break with the inclusion of the package. The <ulink
2366 debacle 4911 url="&url-testing-maint;">testing web page</ulink> gives some
2367 debacle 4902 more information about the usual problems which may be causing such troubles.
2368     </para>
2369     <para>
2370 he 5196 Sometimes, some packages never enter <literal>testing</literal> because the
2371 debacle 4902 set of inter-relationship is too complicated and cannot be sorted out by the
2372     scripts. See below for details.
2373     </para>
2374     <para>
2375     Some further dependency analysis is shown on <ulink
2376 he 5200 url="http://release.debian.org/migration/"></ulink> — but be warned, this page also
2377 debacle 4902 shows build dependencies which are not considered by britney.
2378     </para>
2379     <section id="outdated">
2380     <title>out-of-date</title>
2381     <para>
2382 debacle 4906 <!-- FIXME: better rename this file than document rampant professionalism? -->
2383 he 5198 For the <literal>testing</literal> migration script, outdated means: There are
2384     different versions in <literal>unstable</literal> for the release architectures
2385     (except for the architectures in fuckedarches; fuckedarches is a list of
2386 he 5199 architectures that don't keep up (in <filename>update_out.py</filename>), but
2387     currently, it's empty). outdated has nothing whatsoever to do with the
2388     architectures this package has in <literal>testing</literal>.
2389 debacle 4902 </para>
2390     <para>
2391     Consider this example:
2392     </para>
2393     <informaltable pgwide="1">
2394     <tgroup cols="3">
2395     <thead>
2396     <row>
2397     <entry></entry>
2398     <entry>alpha</entry>
2399     <entry>arm</entry>
2400     </row>
2401     </thead>
2402     <tbody>
2403     <row>
2404     <entry>testing</entry>
2405     <entry>1</entry>
2406     <entry>-</entry>
2407     </row>
2408     <row>
2409     <entry>unstable</entry>
2410     <entry>1</entry>
2411     <entry>2</entry>
2412     </row>
2413     </tbody>
2414     </tgroup>
2415     </informaltable>
2416     <para>
2417 he 5198 The package is out of date on alpha in <literal>unstable</literal>, and will
2418 lucas 5222 not go to <literal>testing</literal>. Removing the package would not help at all, the
2419 he 5198 package is still out of date on <literal>alpha</literal>, and will not
2420     propagate to testing.
2421 debacle 4902 </para>
2422     <para>
2423 he 5198 However, if ftp-master removes a package in <literal>unstable</literal> (here
2424     on <literal>arm</literal>):
2425 debacle 4902 </para>
2426     <informaltable pgwide="1">
2427     <tgroup cols="4">
2428     <thead>
2429     <row>
2430     <entry></entry>
2431     <entry>alpha</entry>
2432     <entry>arm</entry>
2433     <entry>hurd-i386</entry>
2434     </row>
2435     </thead>
2436     <tbody>
2437     <row>
2438     <entry>testing</entry>
2439     <entry>1</entry>
2440     <entry>1</entry>
2441     <entry>-</entry>
2442     </row>
2443     <row>
2444     <entry>unstable</entry>
2445     <entry>2</entry>
2446     <entry>-</entry>
2447     <entry>1</entry>
2448     </row>
2449     </tbody>
2450     </tgroup>
2451     </informaltable>
2452     <para>
2453     In this case, the package is up to date on all release architectures in
2454 he 5198 <literal>unstable</literal> (and the extra <literal>hurd-i386</literal>
2455     doesn't matter, as it's not a release architecture).
2456 debacle 4902 </para>
2457     <para>
2458     Sometimes, the question is raised if it is possible to allow packages in that
2459     are not yet built on all architectures: No. Just plainly no. (Except if you
2460     maintain glibc or so.)
2461     </para>
2462     </section>
2463    
2464     <section id="removals">
2465     <title>Removals from testing</title>
2466     <para>
2467     Sometimes, a package is removed to allow another package in: This happens only
2468     to allow <emphasis>another</emphasis> package to go in if it's ready in every
2469 he 5196 other sense. Suppose e.g. that <literal>a</literal> cannot be installed
2470     with the new version of <literal>b</literal>; then <literal>a</literal> may
2471     be removed to allow <literal>b</literal> in.
2472 debacle 4902 </para>
2473     <para>
2474 he 5198 Of course, there is another reason to remove a package from <literal>testing
2475     </literal>: It's just too buggy (and having a single RC-bug is enough to be
2476     in this state).
2477 debacle 4902 </para>
2478     <para>
2479 he 5198 Furthermore, if a package has been removed from <literal>unstable</literal>,
2480     and no package in <literal>testing</literal> depends on it any more, then it
2481     will automatically be removed.
2482 debacle 4902 </para>
2483     </section>
2484    
2485     <section id="circular">
2486     <title>circular dependencies</title>
2487     <para>
2488     A situation which is not handled very well by britney is if package
2489 he 5196 <literal>a</literal> depends on the new version of package
2490     <literal>b</literal>, and vice versa.
2491 debacle 4902 </para>
2492     <para>
2493     An example of this is:
2494     </para>
2495     <informaltable pgwide="1">
2496     <tgroup cols="3">
2497     <thead>
2498     <row>
2499     <entry></entry>
2500     <entry>testing</entry>
2501     <entry>unstable</entry>
2502     </row>
2503     </thead>
2504     <tbody>
2505     <row>
2506     <entry>a</entry>
2507     <entry>1; depends: b=1</entry>
2508     <entry>2; depends: b=2</entry>
2509     </row>
2510     <row>
2511     <entry>b</entry>
2512     <entry>1; depends: a=1</entry>
2513     <entry>2; depends: a=2</entry>
2514     </row>
2515     </tbody>
2516     </tgroup>
2517     </informaltable>
2518     <para>
2519 he 5196 Neither package <literal>a</literal> nor package <literal>b</literal> is
2520 debacle 4902 considered for update.
2521     </para>
2522     <para>
2523     Currently, this requires some manual hinting from the release team. Please
2524 debacle 4911 contact them by sending mail to &email-debian-release; if this
2525     happens to one of your packages.
2526 debacle 4902 </para>
2527     </section>
2528    
2529     <section id="s5.13.2.4">
2530     <title>influence of package in testing</title>
2531     <para>
2532 he 5198 Generally, there is nothing that the status of a package in <literal>testing
2533     </literal> means for transition of the next version from <literal>unstable
2534     </literal> to <literal>testing</literal>, with two exceptions:
2535 debacle 4902 If the RC-bugginess of the package goes down, it may go in even if it is still
2536 he 5198 RC-buggy. The second exception is if the version of the package in <literal>
2537     testing</literal> is out of sync on the different arches: Then any arch might
2538     just upgrade to the version of the source package; however, this can happen
2539     only if the package was previously forced through, the arch is in fuckedarches,
2540     or there was no binary package of that arch present in <literal>unstable
2541     </literal> at all during the <literal>testing</literal> migration.
2542 debacle 4902 </para>
2543     <para>
2544 he 5198 In summary this means: The only influence that a package being in <literal>
2545     testing</literal> has on a new version of the same package is that the new
2546     version might go in easier.
2547 debacle 4902 </para>
2548     </section>
2549    
2550     <section id="details">
2551     <title>details</title>
2552     <para>
2553     If you are interested in details, this is how britney works:
2554     </para>
2555     <para>
2556     The packages are looked at to determine whether they are valid candidates.
2557     This gives the update excuses. The most common reasons why a package is not
2558     considered are too young, RC-bugginess, and out of date on some arches. For
2559     this part of britney, the release managers have hammers of various sizes to
2560     force britney to consider a package. (Also, the base freeze is coded in that
2561     part of britney.) (There is a similar thing for binary-only updates, but this
2562     is not described here. If you're interested in that, please peruse the code.)
2563     </para>
2564     <para>
2565 he 5198 Now, the more complex part happens: Britney tries to update <literal>testing
2566 he 5200 </literal> with the valid candidates. For that, britney tries to add each
2567     valid candidate to the testing distribution. If the number of uninstallable
2568     packages in <literal>testing</literal> doesn't increase, the package is
2569     accepted. From that point on, the accepted package is considered to be part
2570     of <literal>testing</literal>, such that all subsequent installability
2571     tests include this package. Hints from the release team are processed
2572     before or after this main run, depending on the exact type.
2573 debacle 4902 </para>
2574     <para>
2575     If you want to see more details, you can look it up on
2576 he 5198 <filename>merkel:/org/&ftp-debian-org;/testing/update_out/</filename> (or
2577     in <filename>merkel:~aba/testing/update_out</filename> to see a setup with
2578     a smaller packages file). Via web, it's at <ulink
2579 debacle 4910 url="http://&ftp-master-host;/testing/update_out_code/"></ulink>
2580 debacle 4902 </para>
2581     <para>
2582     The hints are available via <ulink
2583 debacle 4910 url="http://&ftp-master-host;/testing/hints/"></ulink>.
2584 debacle 4902 </para>
2585     </section>
2586    
2587     </section>
2588    
2589     <section id="t-p-u">
2590     <title>Direct updates to testing</title>
2591     <para>
2592 he 5198 The <literal>testing</literal> distribution is fed with packages from
2593     <literal>unstable</literal> according to the rules explained above. However,
2594     in some cases, it is necessary to upload packages built only for <literal>
2595     testing</literal>. For that, you may want to upload to <literal>
2596     testing-proposed-updates</literal>.
2597 debacle 4902 </para>
2598     <para>
2599     Keep in mind that packages uploaded there are not automatically processed, they
2600     have to go through the hands of the release manager. So you'd better have a
2601     good reason to upload there. In order to know what a good reason is in the
2602     release managers' eyes, you should read the instructions that they regularly
2603 debacle 4911 give on &email-debian-devel-announce;.
2604 debacle 4902 </para>
2605     <para>
2606 he 5196 You should not upload to <literal>testing-proposed-updates</literal> when you
2607     can update your packages through <literal>unstable</literal>. If you can't
2608 he 5198 (for example because you have a newer development version in <literal>unstable
2609     </literal>), you may use this facility, but it is recommended that you ask for
2610     authorization from the release manager first. Even if a package is frozen,
2611     updates through <literal>unstable</literal> are possible, if the upload via
2612     <literal>unstable</literal> does not pull in any new dependencies.
2613 debacle 4902 </para>
2614     <para>
2615 he 5198 Version numbers are usually selected by adding the codename of the
2616     <literal>testing</literal> distribution and a running number, like
2617     <literal>1.2sarge1</literal> for the first upload through
2618     <literal>testing-proposed-updates</literal> of package version
2619     <literal>1.2</literal>.
2620 debacle 4902 </para>
2621     <para>
2622     Please make sure you didn't miss any of these items in your upload:
2623     </para>
2624     <itemizedlist>
2625     <listitem>
2626     <para>
2627     Make sure that your package really needs to go through
2628 he 5198 <literal>testing-proposed-updates</literal>, and can't go through <literal>
2629     unstable</literal>;
2630 debacle 4902 </para>
2631     </listitem>
2632     <listitem>
2633     <para>
2634     Make sure that you included only the minimal amount of changes;
2635     </para>
2636     </listitem>
2637     <listitem>
2638     <para>
2639     Make sure that you included an appropriate explanation in the changelog;
2640     </para>
2641     </listitem>
2642     <listitem>
2643     <para>
2644 he 5196 Make sure that you've written <literal>testing</literal> or
2645     <literal>testing-proposed-updates</literal> into your target distribution;
2646 debacle 4902 </para>
2647     </listitem>
2648     <listitem>
2649     <para>
2650     Make sure that you've built and tested your package in
2651 he 5196 <literal>testing</literal>, not in <literal>unstable</literal>;
2652 debacle 4902 </para>
2653     </listitem>
2654     <listitem>
2655     <para>
2656     Make sure that your version number is higher than the version in
2657 he 5196 <literal>testing</literal> and <literal>testing-proposed-updates</literal>,
2658     and lower than in <literal>unstable</literal>;
2659 debacle 4902 </para>
2660     </listitem>
2661     <listitem>
2662     <para>
2663     After uploading and successful build on all platforms, contact the release team
2664 debacle 4911 at &email-debian-release; and ask them to approve your upload.
2665 debacle 4902 </para>
2666     </listitem>
2667     </itemizedlist>
2668     </section>
2669    
2670     <section id="faq">
2671     <title>Frequently asked questions</title>
2672     <section id="rc">
2673     <title>What are release-critical bugs, and how do they get counted?</title>
2674     <para>
2675     All bugs of some higher severities are by default considered release-critical;
2676 he 5200 currently, these are <literal>critical</literal>, <literal>grave</literal> and
2677     <literal>serious</literal> bugs.
2678 debacle 4902 </para>
2679     <para>
2680     Such bugs are presumed to have an impact on the chances that the package will
2681 he 5198 be released with the <literal>stable</literal> release of Debian: in general,
2682     if a package has open release-critical bugs filed on it, it won't get into
2683     <literal>testing</literal>, and consequently won't be released in <literal>
2684     stable</literal>.
2685 debacle 4902 </para>
2686     <para>
2687 he 5200 The <literal>unstable</literal> bug count are all release-critical bugs which
2688     are marked to apply to <replaceable>package</replaceable>/<replaceable>version
2689     </replaceable> combinations that are available in unstable for a release
2690     architecture. The <literal>testing</literal> bug count is defined analogously.
2691 debacle 4902 </para>
2692     </section>
2693    
2694     <section id="s5.13.4.2">
2695 he 5198 <title>How could installing a package into <literal>testing</literal> possibly
2696     break other packages?</title>
2697 debacle 4902 <para>
2698     The structure of the distribution archives is such that they can only contain
2699     one version of a package; a package is defined by its name. So when the source
2700 he 5198 package <literal>acmefoo</literal> is installed into <literal>testing</literal>,
2701     along with its binary packages <literal>acme-foo-bin</literal>, <literal>
2702     acme-bar-bin</literal>, <literal>libacme-foo1</literal> and <literal>
2703     libacme-foo-dev</literal>, the old version is removed.
2704 debacle 4902 </para>
2705     <para>
2706     However, the old version may have provided a binary package with an old soname
2707 he 5198 of a library, such as <literal>libacme-foo0</literal>. Removing the old
2708     <literal>acmefoo</literal> will remove <literal>libacme-foo0</literal>, which
2709     will break any packages which depend on it.
2710 debacle 4902 </para>
2711     <para>
2712     Evidently, this mainly affects packages which provide changing sets of binary
2713     packages in different versions (in turn, mainly libraries). However, it will
2714     also affect packages upon which versioned dependencies have been declared of
2715     the ==, &lt;=, or &lt;&lt; varieties.
2716     </para>
2717     <para>
2718     When the set of binary packages provided by a source package change in this
2719     way, all the packages that depended on the old binaries will have to be updated
2720     to depend on the new binaries instead. Because installing such a source
2721 he 5198 package into <literal>testing</literal> breaks all the packages that depended on
2722     it in <literal>testing</literal>,
2723 debacle 4902 some care has to be taken now: all the depending packages must be updated and
2724     ready to be installed themselves so that they won't be broken, and, once
2725     everything is ready, manual intervention by the release manager or an assistant
2726     is normally required.
2727     </para>
2728     <para>
2729     If you are having problems with complicated groups of packages like this,
2730 he 5199 contact &email-debian-devel; or &email-debian-release; for help.
2731 debacle 4902 </para>
2732     </section>
2733    
2734     </section>
2735    
2736     </section>
2737    
2738     </chapter>
2739    

  ViewVC Help
Powered by ViewVC 1.1.5