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