]> git.donarmstrong.com Git - debian/debian-policy.git/blob - policy.sgml
Tighten requirements for maintainer-like fields
[debian/debian-policy.git] / policy.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   <book>
9     <titlepag>
10       <title>Debian Policy Manual</title>
11       <author><qref id="authors">The Debian Policy Mailing List</qref></author>
12       <version>version &version;, &date;</version>
13
14       <abstract>
15         This manual describes the policy requirements for the Debian
16         GNU/Linux distribution.  This includes the structure and
17         contents of the Debian archive and several design issues of
18         the operating system, as well as technical requirements that
19         each package must satisfy to be included in the distribution.
20       </abstract>
21
22       <copyright>
23         <copyrightsummary>
24           Copyright &copy; 1996,1997,1998 Ian Jackson
25           and Christian Schwarz.
26         </copyrightsummary>
27         <p>
28           These are the copyright dates of the original Policy manual.
29           Since then, this manual has been updated by many others.  No
30           comprehensive collection of copyright notices for subsequent
31           work exists.
32         </p>
33
34         <p>
35           This manual is free software; you may redistribute it and/or
36           modify it under the terms of the GNU General Public License
37           as published by the Free Software Foundation; either version
38           2, or (at your option) any later version.
39         </p>
40
41         <p>
42           This is distributed in the hope that it will be useful, but
43           <em>without any warranty</em>; without even the implied
44           warranty of merchantability or fitness for a particular
45           purpose.  See the GNU General Public License for more
46           details.
47         </p>
48
49         <p>
50           A copy of the GNU General Public License is available as
51           <file>/usr/share/common-licenses/GPL</file> in the Debian GNU/Linux
52           distribution or on the World Wide Web at
53           <url id="http://www.gnu.org/copyleft/gpl.html"
54                name="the GNU General Public Licence">. You can also
55           obtain it by writing to the Free Software Foundation, Inc.,
56           51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
57         </p>
58       </copyright>
59     </titlepag>
60
61     <toc detail="sect1">
62
63     <chapt id="scope">
64       <heading>About this manual</heading>
65       <sect>
66         <heading>Scope</heading>
67         <p>
68           This manual describes the policy requirements for the Debian
69           GNU/Linux distribution. This includes the structure and
70           contents of the Debian archive and several design issues of the
71           operating system, as well as technical requirements that
72           each package must satisfy to be included in the
73           distribution.
74         </p>
75
76         <p>
77           This manual also describes Debian policy as it relates to
78           creating Debian packages. It is not a tutorial on how to build
79           packages, nor is it exhaustive where it comes to describing
80           the behavior of the packaging system. Instead, this manual
81           attempts to define the interface to the package management
82           system that the developers have to be conversant with.<footnote>
83               Informally, the criteria used for inclusion is that the
84               material meet one of the following requirements:
85               <taglist compact="compact">
86                 <tag>Standard interfaces</tag>
87                 <item>
88                     The material presented represents an interface to
89                     the packaging system that is mandated for use, and
90                     is used by, a significant number of packages, and
91                     therefore should not be changed without peer
92                     review. Package maintainers can then rely on this
93                     interface not changing, and the package management
94                     software authors need to ensure compatibility with
95                     this interface definition. (Control file and
96                     changelog file formats are examples.)
97                 </item>
98                 <tag>Chosen Convention</tag>
99                 <item>
100                     If there are a number of technically viable choices
101                     that can be made, but one needs to select one of
102                     these options for inter-operability. The version
103                     number format is one example.
104                 </item>
105               </taglist>
106               Please note that these are not mutually exclusive;
107               selected conventions often become parts of standard
108               interfaces.
109           </footnote>
110         </p>
111
112         <p>
113           The footnotes present in this manual are
114           merely informative, and are not part of Debian policy itself.
115         </p>
116
117         <p>
118           The appendices to this manual are not necessarily normative,
119           either. Please see <ref id="pkg-scope"> for more information.
120         </p>
121
122         <p>
123           In the normative part of this manual,
124           the words <em>must</em>, <em>should</em> and
125           <em>may</em>, and the adjectives <em>required</em>,
126           <em>recommended</em> and <em>optional</em>, are used to
127           distinguish the significance of the various guidelines in
128           this policy document. Packages that do not conform to the
129           guidelines denoted by <em>must</em> (or <em>required</em>)
130           will generally not be considered acceptable for the Debian
131           distribution. Non-conformance with guidelines denoted by
132           <em>should</em> (or <em>recommended</em>) will generally be
133           considered a bug, but will not necessarily render a package
134           unsuitable for distribution. Guidelines denoted by
135           <em>may</em> (or <em>optional</em>) are truly optional and
136           adherence is left to the maintainer's discretion.
137         </p>
138
139         <p>
140           These classifications are roughly equivalent to the bug
141           severities <em>serious</em> (for <em>must</em> or
142           <em>required</em> directive violations), <em>minor</em>,
143           <em>normal</em> or <em>important</em>
144           (for <em>should</em> or <em>recommended</em> directive
145           violations) and <em>wishlist</em> (for <em>optional</em>
146           items).
147           <footnote>
148                 Compare RFC 2119.  Note, however, that these words are
149                 used in a different way in this document.
150           </footnote>
151         </p>
152
153         <p>
154           Much of the information presented in this manual will be
155           useful even when building a package which is to be
156           distributed in some other way or is intended for local use
157           only.
158         </p>
159       </sect>
160
161       <sect>
162         <heading>New versions of this document</heading>
163
164         <p>
165           This manual is distributed via the Debian package
166           <package><url name="debian-policy"
167               id="http://packages.debian.org/debian-policy"></package> 
168           (<httpsite>packages.debian.org</httpsite> 
169           <httppath>/debian-policy</httppath>).
170         </p>
171
172         <p>
173           The current version of this document is also available from
174           the Debian web mirrors at
175           <tt><url name="/doc/debian-policy/"
176                 id="http://www.debian.org/doc/debian-policy/"></tt>.
177           (
178           <httpsite>www.debian.org</httpsite>
179           <httppath>/doc/debian-policy/</httppath>)
180           Also available from the same directory are several other
181           formats: <file>policy.html.tar.gz</file>
182           (<httppath>/doc/debian-policy/policy.html.tar.gz</httppath>),
183           <file>policy.pdf.gz</file> 
184           (<httppath>/doc/debian-policy/policy.pdf.gz</httppath>)
185           and <file>policy.ps.gz</file>
186           (<httppath>/doc/debian-policy/policy.ps.gz</httppath>).
187         </p>
188
189         <p>
190           The <package>debian-policy</package> package also includes the file
191           <file>upgrading-checklist.txt.gz</file> which indicates policy
192           changes between versions of this document.
193         </p>
194       </sect>
195
196       <sect id="authors">
197         <heading>Authors and Maintainers</heading>
198
199         <p>
200           Originally called "Debian GNU/Linux Policy Manual", this
201           manual was initially written in 1996 by Ian Jackson.
202           It was revised on November 27th, 1996 by David A. Morris.
203           Christian Schwarz added new sections on March 15th, 1997,
204           and reworked/restructured it in April-July 1997.
205           Christoph Lameter contributed the "Web Standard".
206           Julian Gilbey largely restructured it in 2001.
207         </p>
208
209         <p>
210           Since September 1998, the responsibility for the contents of
211           this document lies on the <url name="debian-policy mailing list"
212           id="mailto:debian-policy@lists.debian.org">. Proposals
213           are discussed there and inserted into policy after a certain
214           consensus is established.
215           <!-- insert shameless policy-process plug here eventually -->
216           The actual editing is done by a group of maintainers that have
217           no editorial powers. These are the current maintainers:
218
219           <enumlist>
220             <item>Julian Gilbey</item>
221             <item>Branden Robinson</item>
222             <item>Josip Rodin</item>
223             <item>Manoj Srivastava</item>
224           </enumlist>
225         </p>
226
227         <p>
228           While the authors of this document have tried hard to avoid
229           typos and other errors, these do still occur. If you discover
230           an error in this manual or if you want to give any
231           comments, suggestions, or criticisms please send an email to
232           the Debian Policy List,
233           <email>debian-policy@lists.debian.org</email>, or submit a
234           bug report against the <tt>debian-policy</tt> package.
235         </p>
236
237         <p>
238           Please do not try to reach the individual authors or maintainers
239           of the Policy Manual regarding changes to the Policy.
240         </p>
241       </sect>
242
243       <sect id="related">
244         <heading>Related documents</heading>
245
246         <p>
247           There are several other documents other than this Policy Manual
248           that are necessary to fully understand some Debian policies and
249           procedures.
250         </p>
251
252         <p>
253           The external "sub-policy" documents are referred to in:
254           <list compact="compact">
255             <item><ref id="fhs"></item>
256             <item><ref id="virtual_pkg"></item>
257             <item><ref id="menus"></item>
258             <item><ref id="mime"></item>
259             <item><ref id="perl"></item>
260             <item><ref id="maintscriptprompt"></item>
261             <item><ref id="emacs"></item>
262           </list>
263         </p>
264
265         <p>
266           In addition to those, which carry the weight of policy, there
267           is the Debian Developer's Reference. This document describes
268           procedures and resources for Debian developers, but it is
269           <em>not</em> normative; rather, it includes things that don't
270           belong in the Policy, such as best practices for developers.
271         </p>
272
273         <p>
274           The Developer's Reference is available in the
275           <package>developers-reference</package> package.
276           It's also available from the Debian web mirrors at
277           <tt><url name="/doc/developers-reference/"
278                 id="http://www.debian.org/doc/developers-reference/"></tt>.
279         </p>
280       </sect>
281
282       <sect id="definitions">
283         <heading>Definitions</heading>
284
285         <p>
286           The following terms are used in this Policy Manual:
287           <taglist>
288             <tag>ASCII</tag>
289             <item>
290               The character encoding specified by ANSI X3.4-1986 and its
291               predecessor standards, referred to in MIME as US-ASCII, and
292               corresponding to an encoding in eight bits per character of
293               the first 128 <url id="http://www.unicode.org/"
294               name="Unicode"> characters, with the eighth bit always zero.
295             </item>
296             <tag>UTF-8</tag>
297             <item>
298               The transformation format (sometimes called encoding) of
299               <url id="http://www.unicode.org/" name="Unicode"> defined by
300               <url id="http://www.rfc-editor.org/rfc/rfc3629.txt"
301               name="RFC 3629">.  UTF-8 has the useful property of having
302               ASCII as a subset, so any text encoded in ASCII is trivially
303               also valid UTF-8.
304             </item>
305           </taglist>
306         </p>
307       </sect>
308     </chapt>
309
310
311     <chapt id="archive">
312       <heading>The Debian Archive</heading>
313
314       <p>
315         The Debian GNU/Linux system is maintained and distributed as a
316         collection of <em>packages</em>. Since there are so many of
317         them (currently well over 15000), they are split into
318         <em>sections</em> and given <em>priorities</em> to simplify
319         the handling of them.
320       </p>
321
322       <p>
323         The effort of the Debian project is to build a free operating
324         system, but not every package we want to make accessible is
325         <em>free</em> in our sense (see the Debian Free Software
326         Guidelines, below), or may be imported/exported without
327         restrictions. Thus, the archive is split into areas<footnote>
328           The Debian archive software uses the term "component" internally
329           and in the Release file format to refer to the division of an
330           archive.  The Debian Social Contract simply refers to "areas."
331           This document uses terminology similar to the Social Contract.
332         </footnote> based on their licenses and other restrictions.
333       </p>
334
335       <p>
336         The aims of this are:
337
338         <list compact="compact">
339           <item>to allow us to make as much software available as we can</item>
340           <item>to allow us to encourage everyone to write free software,
341                 and</item>
342           <item>to allow us to make it easy for people to produce
343                 CD-ROMs of our system without violating any licenses,
344                 import/export restrictions, or any other laws.</item>
345         </list>
346       </p>
347
348       <p>
349         The <em>main</em> archive area forms the <em>Debian GNU/Linux
350         distribution</em>.
351       </p>
352
353       <p>
354         Packages in the other archive areas (<tt>contrib</tt>,
355         <tt>non-free</tt>) are not considered to be part of the Debian
356         distribution, although we support their use and provide
357         infrastructure for them (such as our bug-tracking system and
358         mailing lists). This Debian Policy Manual applies to these
359         packages as well.
360       </p>
361
362       <sect id="dfsg">
363         <heading>The Debian Free Software Guidelines</heading>
364         <p>
365           The Debian Free Software Guidelines (DFSG) form our
366           definition of "free software".  These are:
367             <taglist>
368               <tag>1. Free Redistribution
369               </tag>
370               <item>
371                   The license of a Debian component may not restrict any
372                   party from selling or giving away the software as a
373                   component of an aggregate software distribution
374                   containing programs from several different
375                   sources. The license may not require a royalty or
376                   other fee for such sale.
377               </item>
378               <tag>2. Source Code
379               </tag>
380               <item>
381                   The program must include source code, and must allow
382                   distribution in source code as well as compiled form.
383               </item>
384               <tag>3. Derived Works
385               </tag>
386               <item>
387                   The license must allow modifications and derived
388                   works, and must allow them to be distributed under the
389                   same terms as the license of the original software.
390               </item>
391               <tag>4. Integrity of The Author's Source Code
392               </tag>
393               <item>
394                   The license may restrict source-code from being
395                   distributed in modified form <em>only</em> if the
396                   license allows the distribution of "patch files"
397                   with the source code for the purpose of modifying the
398                   program at build time. The license must explicitly
399                   permit distribution of software built from modified
400                   source code. The license may require derived works to
401                   carry a different name or version number from the
402                   original software.  (This is a compromise. The Debian
403                   Project encourages all authors to not restrict any
404                   files, source or binary, from being modified.)
405               </item>
406               <tag>5. No Discrimination Against Persons or Groups
407               </tag>
408               <item>
409                   The license must not discriminate against any person
410                   or group of persons.
411               </item>
412               <tag>6. No Discrimination Against Fields of Endeavor
413               </tag>
414               <item>
415                   The license must not restrict anyone from making use
416                   of the program in a specific field of endeavor. For
417                   example, it may not restrict the program from being
418                   used in a business, or from being used for genetic
419                   research.
420               </item>
421               <tag>7. Distribution of License
422               </tag>
423               <item>
424                   The rights attached to the program must apply to all
425                   to whom the program is redistributed without the need
426                   for execution of an additional license by those
427                   parties.
428               </item>
429               <tag>8. License Must Not Be Specific to Debian
430               </tag>
431               <item>
432                   The rights attached to the program must not depend on
433                   the program's being part of a Debian system. If the
434                   program is extracted from Debian and used or
435                   distributed without Debian but otherwise within the
436                   terms of the program's license, all parties to whom
437                   the program is redistributed must have the same
438                   rights as those that are granted in conjunction with
439                   the Debian system.
440               </item>
441               <tag>9. License Must Not Contaminate Other Software
442               </tag>
443               <item>
444                   The license must not place restrictions on other
445                   software that is distributed along with the licensed
446                   software. For example, the license must not insist
447                   that all other programs distributed on the same medium
448                   must be free software.
449               </item>
450               <tag>10. Example Licenses
451               </tag>
452               <item>
453                   The "GPL," "BSD," and "Artistic" licenses are examples of
454                   licenses that we consider <em>free</em>.
455               </item>
456             </taglist>
457         </p>
458       </sect>
459
460       <sect id="sections">
461         <heading>Archive areas</heading>
462
463         <sect1 id="main">
464           <heading>The main archive area</heading>
465
466           <p>
467             Every package in <em>main</em> must comply with the DFSG
468             (Debian Free Software Guidelines).
469           </p>
470
471           <p>
472             In addition, the packages in <em>main</em>
473             <list compact="compact">
474               <item>
475                   must not require a package outside of <em>main</em>
476                   for compilation or execution (thus, the package must
477                   not declare a "Depends", "Recommends", or
478                   "Build-Depends" relationship on a non-<em>main</em>
479                   package),
480               </item>
481               <item>
482                   must not be so buggy that we refuse to support them,
483                   and
484               </item>
485               <item>
486                   must meet all policy requirements presented in this
487                   manual.
488               </item>
489             </list>
490           </p>
491
492         </sect1>
493
494         <sect1 id="contrib">
495           <heading>The contrib archive area</heading>
496
497           <p>
498             Every package in <em>contrib</em> must comply with the DFSG.
499           </p>
500
501           <p>
502             In addition, the packages in <em>contrib</em>
503             <list compact="compact">
504               <item>
505                   must not be so buggy that we refuse to support them,
506                   and
507               </item>
508               <item>
509                   must meet all policy requirements presented in this
510                   manual.
511               </item>
512             </list>
513           </p>
514
515
516           <p>
517             Examples of packages which would be included in
518             <em>contrib</em> are:
519             <list compact="compact">
520               <item>
521                   free packages which require <em>contrib</em>,
522                   <em>non-free</em> packages or packages which are not
523                   in our archive at all for compilation or execution,
524                   and
525               </item>
526               <item>
527                   wrapper packages or other sorts of free accessories for
528                   non-free programs.
529               </item>
530             </list>
531           </p>
532         </sect1>
533
534         <sect1 id="non-free">
535           <heading>The non-free archive area</heading>
536
537           <p>
538             Packages must be placed in <em>non-free</em> if they are
539             not compliant with the DFSG or are encumbered by patents
540             or other legal issues that make their distribution
541             problematic.
542           </p>
543
544           <p>
545             In addition, the packages in <em>non-free</em>
546             <list compact="compact">
547               <item>
548                   must not be so buggy that we refuse to support them,
549                   and
550               </item>
551               <item>
552                   must meet all policy requirements presented in this
553                   manual that it is possible for them to meet.
554                   <footnote>
555                       It is possible that there are policy
556                       requirements which the package is unable to
557                       meet, for example, if the source is
558                       unavailable.  These situations will need to be
559                       handled on a case-by-case basis.
560                   </footnote>
561               </item>
562             </list>
563           </p>
564         </sect1>
565
566       </sect>
567
568       <sect id="pkgcopyright">
569         <heading>Copyright considerations</heading>
570
571         <p>
572           Every package must be accompanied by a verbatim copy of its
573           copyright information and distribution license in the file
574           <file>/usr/share/doc/<var>package</var>/copyright</file>
575           (see <ref id="copyrightfile"> for further details).
576         </p>
577
578         <p>
579           We reserve the right to restrict files from being included
580           anywhere in our archives if
581           <list compact="compact">
582             <item>
583                   their use or distribution would break a law,
584             </item>
585             <item>
586                   there is an ethical conflict in their distribution or
587                   use,
588             </item>
589             <item>
590                   we would have to sign a license for them, or
591             </item>
592             <item>
593                   their distribution would conflict with other project
594                   policies.
595             </item>
596           </list>
597         </p>
598
599         <p>
600           Programs whose authors encourage the user to make
601           donations are fine for the main distribution, provided
602           that the authors do not claim that not donating is
603           immoral, unethical, illegal or something similar; in such
604           a case they must go in <em>non-free</em>.
605         </p>
606
607         <p>
608           Packages whose copyright permission notices (or patent
609           problems) do not even allow redistribution of binaries
610           only, and where no special permission has been obtained,
611           must not be placed on the Debian FTP site and its mirrors
612           at all.
613         </p>
614
615         <p>
616           Note that under international copyright law (this applies
617           in the United States, too), <em>no</em> distribution or
618           modification of a work is allowed without an explicit
619           notice saying so.  Therefore a program without a copyright
620           notice <em>is</em> copyrighted and you may not do anything
621           to it without risking being sued! Likewise if a program
622           has a copyright notice but no statement saying what is
623           permitted then nothing is permitted.
624         </p>
625
626         <p>
627           Many authors are unaware of the problems that restrictive
628           copyrights (or lack of copyright notices) can cause for
629           the users of their supposedly-free software.  It is often
630           worthwhile contacting such authors diplomatically to ask
631           them to modify their license terms. However, this can be a
632           politically difficult thing to do and you should ask for
633           advice on the <tt>debian-legal</tt> mailing list first, as
634           explained below.
635         </p>
636
637         <p>
638           When in doubt about a copyright, send mail to
639           <email>debian-legal@lists.debian.org</email>.  Be prepared
640           to provide us with the copyright statement.  Software
641           covered by the GPL, public domain software and BSD-like
642           copyrights are safe; be wary of the phrases "commercial
643           use prohibited" and "distribution restricted".
644         </p>
645       </sect>
646
647       <sect id="subsections">
648         <heading>Sections</heading>
649
650         <p>
651           The packages in the archive areas <em>main</em>,
652           <em>contrib</em> and <em>non-free</em> are grouped further into
653           <em>sections</em> to simplify handling.
654         </p>
655
656         <p>
657           The archive area and section for each package should be
658           specified in the package's <tt>Section</tt> control record (see
659           <ref id="f-Section">).  However, the maintainer of the Debian
660           archive may override this selection to ensure the consistency of
661           the Debian distribution.  The <tt>Section</tt> field should be
662           of the form:
663           <list compact="compact">
664             <item>
665                   <em>section</em> if the package is in the
666                   <em>main</em> archive area,
667             </item>
668             <item>
669                   <em>area/section</em> if the package is in
670                   the <em>contrib</em> or <em>non-free</em>
671                   archive areas.
672             </item>
673           </list>
674         </p>
675
676         <p>
677           The Debian archive maintainers provide the authoritative
678           list of sections.  At present, they are:
679           <em>admin</em>, <em>cli-mono</em>, <em>comm</em>, <em>database</em>,
680           <em>devel</em>, <em>debug</em>, <em>doc</em>, <em>editors</em>,
681           <em>electronics</em>, <em>embedded</em>, <em>fonts</em>,
682           <em>games</em>, <em>gnome</em>, <em>graphics</em>, <em>gnu-r</em>,
683           <em>gnustep</em>, <em>hamradio</em>, <em>haskell</em>,
684           <em>httpd</em>, <em>interpreters</em>, <em>java</em>, <em>kde</em>,
685           <em>kernel</em>, <em>libs</em>, <em>libdevel</em>, <em>lisp</em>,
686           <em>localization</em>, <em>mail</em>, <em>math</em>, <em>misc</em>,
687           <em>net</em>, <em>news</em>, <em>ocaml</em>, <em>oldlibs</em>,
688           <em>otherosfs</em>, <em>perl</em>, <em>php</em>, <em>python</em>,
689           <em>ruby</em>, <em>science</em>, <em>shells</em>, <em>sound</em>,
690           <em>tex</em>, <em>text</em>, <em>utils</em>, <em>vcs</em>,
691           <em>video</em>, <em>web</em>, <em>x11</em>, <em>xfce</em>,
692           <em>zope</em>.  The additional section <em>debian-installer</em>
693           contains special packages used by the installer and is not used
694           for normal Debian packages.
695         </p>
696
697         <p>
698           For more information about the sections and their definitions,
699           see the <url id="http://packages.debian.org/unstable/"
700                        name="list of sections in unstable">.
701         </p>
702       </sect>
703
704       <sect id="priorities">
705         <heading>Priorities</heading>
706
707         <p>
708           Each package should have a <em>priority</em> value, which is
709           included in the package's <em>control record</em>
710           (see <ref id="f-Priority">).
711           This information is used by the Debian package management tools to
712           separate high-priority packages from less-important packages.
713         </p>
714
715         <p>
716           The following <em>priority levels</em> are recognized by the
717           Debian package management tools.
718           <taglist>
719             <tag><tt>required</tt></tag>
720             <item>
721                 Packages which are necessary for the proper
722                 functioning of the system (usually, this means that
723                 dpkg functionality depends on these packages).
724                 Removing a <tt>required</tt> package may cause your
725                 system to become totally broken and you may not even
726                 be able to use <prgn>dpkg</prgn> to put things back,
727                 so only do so if you know what you are doing.  Systems
728                 with only the <tt>required</tt> packages are probably
729                 unusable, but they do have enough functionality to
730                 allow the sysadmin to boot and install more software.
731             </item>
732             <tag><tt>important</tt></tag>
733             <item>
734                 Important programs, including those which one would
735                 expect to find on any Unix-like system.  If the
736                 expectation is that an experienced Unix person who
737                 found it missing would say "What on earth is going on,
738                 where is <prgn>foo</prgn>?", it must be an
739                 <tt>important</tt> package.<footnote>
740                     This is an important criterion because we are
741                     trying to produce, amongst other things, a free
742                     Unix.
743                 </footnote>
744                 Other packages without which the system will not run
745                 well or be usable must also have priority
746                 <tt>important</tt>.  This does
747                 <em>not</em> include Emacs, the X Window System, TeX
748                 or any other large applications.  The
749                 <tt>important</tt> packages are just a bare minimum of
750                 commonly-expected and necessary tools.
751             </item>
752             <tag><tt>standard</tt></tag>
753             <item>
754                 These packages provide a reasonably small but not too
755                 limited character-mode system.  This is what will be
756                 installed by default if the user doesn't select anything
757                 else.  It doesn't include many large applications.
758             </item>
759             <tag><tt>optional</tt></tag>
760             <item>
761                 (In a sense everything that isn't required is
762                 optional, but that's not what is meant here.) This is
763                 all the software that you might reasonably want to
764                 install if you didn't know what it was and don't have
765                 specialized requirements. This is a much larger system
766                 and includes the X Window System, a full TeX
767                 distribution, and many applications. Note that
768                 optional packages should not conflict with each other.
769             </item>
770             <tag><tt>extra</tt></tag>
771             <item>
772                 This contains all packages that conflict with others
773                 with required, important, standard or optional
774                 priorities, or are only likely to be useful if you
775                 already know what they are or have specialized
776                 requirements (such as packages containing only detached
777                 debugging symbols).
778             </item>
779           </taglist>
780         </p>
781
782         <p>
783           Packages must not depend on packages with lower priority
784           values (excluding build-time dependencies).  In order to
785           ensure this, the priorities of one or more packages may need
786           to be adjusted.
787         </p>
788       </sect>
789
790     </chapt>
791
792
793     <chapt id="binary">
794       <heading>Binary packages</heading>
795
796       <p>
797         The Debian GNU/Linux distribution is based on the Debian
798         package management system, called <prgn>dpkg</prgn>. Thus,
799         all packages in the Debian distribution must be provided
800         in the <tt>.deb</tt> file format.
801       </p>
802
803       <sect>
804         <heading>The package name</heading>
805
806         <p>
807           Every package must have a name that's unique within the Debian
808           archive.
809         </p>
810
811         <p>
812           The package name is included in the control field
813           <tt>Package</tt>, the format of which is described
814           in <ref id="f-Package">.
815           The package name is also included as a part of the file name
816           of the <tt>.deb</tt> file.
817         </p>
818       </sect>
819
820       <sect id="versions">
821         <heading>The version of a package</heading>
822
823         <p>
824           Every package has a version number recorded in its
825           <tt>Version</tt> control file field, described in
826           <ref id="f-Version">.
827         </p>
828
829         <p>
830           The package management system imposes an ordering on version
831           numbers, so that it can tell whether packages are being up- or
832           downgraded and so that package system front end applications
833           can tell whether a package it finds available is newer than
834           the one installed on the system.  The version number format
835           has the most significant parts (as far as comparison is
836           concerned) at the beginning.
837         </p>
838
839         <p>
840           If an upstream package has problematic version numbers they
841           should be converted to a sane form for use in the
842           <tt>Version</tt> field.
843         </p>
844
845         <sect1>
846           <heading>Version numbers based on dates</heading>
847
848           <p>
849             In general, Debian packages should use the same version
850             numbers as the upstream sources.
851           </p>
852
853           <p>
854             However, in some cases where the upstream version number is
855             based on a date (e.g., a development "snapshot" release) the
856             package management system cannot handle these version
857             numbers without epochs. For example, dpkg will consider
858             "96May01" to be greater than "96Dec24".
859           </p>
860
861           <p>
862             To prevent having to use epochs for every new upstream
863             version, the date based portion of the version number
864             should be changed to the following format in such cases:
865             "19960501", "19961224". It is up to the maintainer whether
866             they want to bother the upstream maintainer to change
867             the version numbers upstream, too.
868           </p>
869
870           <p>
871             Note that other version formats based on dates which are
872             parsed correctly by the package management system should
873             <em>not</em> be changed.
874           </p>
875
876           <p>
877             Native Debian packages (i.e., packages which have been
878             written especially for Debian) whose version numbers include
879             dates should always use the "YYYYMMDD" format.
880           </p>
881         </sect1>
882
883       </sect>
884
885       <sect>
886         <heading>The maintainer of a package</heading>
887
888         <p>
889           Every package must have a Debian maintainer (the
890           maintainer may be one person or a group of people
891           reachable from a common email address, such as a mailing
892           list).  The maintainer is responsible for ensuring that
893           the package is placed in the appropriate distributions.
894         </p>
895
896         <p>
897           The maintainer must be specified in the
898           <tt>Maintainer</tt> control field with their correct name
899           and a working email address.  If one person maintains
900           several packages, they should try to avoid having
901           different forms of their name and email address in
902           the <tt>Maintainer</tt> fields of those packages.
903         </p>
904
905         <p>
906           The format of the <tt>Maintainer</tt> control field is
907           described in <ref id="f-Maintainer">.
908         </p>
909
910         <p>
911           If the maintainer of a package quits from the Debian
912           project, "Debian QA Group"
913           <email>packages@qa.debian.org</email> takes over the
914           maintainer-ship of the package until someone else
915           volunteers for that task. These packages are called
916           <em>orphaned packages</em>.<footnote>
917                 The detailed procedure for doing this gracefully can
918                 be found in the Debian Developer's Reference,
919                 see <ref id="related">.
920           </footnote>
921         </p>
922       </sect>
923
924       <sect id="descriptions">
925         <heading>The description of a package</heading>
926
927         <p>
928           Every Debian package must have an extended description
929           stored in the appropriate field of the control record.
930           The technical information about the format of the
931           <tt>Description</tt> field is in <ref id="f-Description">.
932         </p>
933
934         <p>
935           The description should describe the package (the program) to a
936           user (system administrator) who has never met it before so that
937           they have enough information to decide whether they want to
938           install it. This description should not just be copied verbatim
939           from the program's documentation.
940         </p>
941
942         <p>
943           Put important information first, both in the synopsis and
944           extended description.  Sometimes only the first part of the
945           synopsis or of the description will be displayed.  You can
946           assume that there will usually be a way to see the whole
947           extended description.
948         </p>
949
950         <p>
951           The description should also give information about the
952           significant dependencies and conflicts between this package
953           and others, so that the user knows why these dependencies and
954           conflicts have been declared.
955         </p>
956
957         <p>
958           Instructions for configuring or using the package should
959           not be included (that is what installation scripts,
960           manual pages, info files, etc., are for).  Copyright
961           statements and other administrivia should not be included
962           either (that is what the copyright file is for).
963         </p>
964
965         <sect1 id="synopsis"><heading>The single line synopsis</heading>
966
967           <p>
968             The single line synopsis should be kept brief - certainly
969             under 80 characters.
970           </p>
971
972           <p>
973             Do not include the package name in the synopsis line.  The
974             display software knows how to display this already, and you
975             do not need to state it.  Remember that in many situations
976             the user may only see the synopsis line - make it as
977             informative as you can.
978           </p>
979
980         </sect1>
981
982         <sect1 id="extendeddesc"><heading>The extended description</heading>
983
984           <p>
985             Do not try to continue the single line synopsis into the
986             extended description.  This will not work correctly when
987             the full description is displayed, and makes no sense
988             where only the summary (the single line synopsis) is
989             available.
990           </p>
991
992           <p>
993             The extended description should describe what the package
994             does and how it relates to the rest of the system (in terms
995             of, for example, which subsystem it is which part of).
996           </p>
997
998           <p>
999             The description field needs to make sense to anyone, even
1000             people who have no idea about any of the things the
1001             package deals with.<footnote>
1002                 The blurb that comes with a program in its
1003                 announcements and/or <prgn>README</prgn> files is
1004                 rarely suitable for use in a description.  It is
1005                 usually aimed at people who are already in the
1006                 community where the package is used.
1007             </footnote>
1008           </p>
1009
1010         </sect1>
1011
1012       </sect>
1013
1014       <sect>
1015         <heading>Dependencies</heading>
1016
1017         <p>
1018           Every package must specify the dependency information
1019           about other packages that are required for the first to
1020           work correctly.
1021         </p>
1022
1023         <p>
1024           For example, a dependency entry must be provided for any
1025           shared libraries required by a dynamically-linked executable
1026           binary in a package.
1027         </p>
1028
1029         <p>
1030           Packages are not required to declare any dependencies they
1031           have on other packages which are marked <tt>Essential</tt>
1032           (see below), and should not do so unless they depend on a
1033           particular version of that package.<footnote>
1034             <p>
1035               Essential is needed in part to avoid unresolvable dependency
1036               loops on upgrade.  If packages add unnecessary dependencies
1037               on packages in this set, the chances that there
1038               <strong>will</strong> be an unresolvable dependency loop
1039               caused by forcing these Essential packages to be configured
1040               first before they need to be is greatly increased.  It also
1041               increases the chances that frontends will be unable to
1042               <strong>calculate</strong> an upgrade path, even if one
1043               exists.
1044             </p>
1045             <p>
1046               Also, functionality is rarely ever removed from the
1047               Essential set, but <em>packages</em> have been removed from
1048               the Essential set when the functionality moved to a
1049               different package. So depending on these packages <em>just
1050               in case</em> they stop being essential does way more harm
1051               than good.
1052             </p>
1053           </footnote>
1054         </p>
1055
1056         <p>
1057           Sometimes, a package requires another package to be installed
1058           <em>and</em> configured before it can be installed. In this
1059           case, you must specify a <tt>Pre-Depends</tt> entry for
1060           the package.
1061         </p>
1062
1063         <p>
1064           You should not specify a <tt>Pre-Depends</tt> entry for a
1065           package before this has been discussed on the
1066           <tt>debian-devel</tt> mailing list and a consensus about
1067           doing that has been reached.
1068         </p>
1069
1070         <p>
1071           The format of the package interrelationship control fields is
1072           described in <ref id="relationships">.
1073         </p>
1074       </sect>
1075
1076       <sect id="virtual_pkg">
1077         <heading>Virtual packages</heading>
1078
1079         <p>
1080           Sometimes, there are several packages which offer
1081           more-or-less the same functionality. In this case, it's
1082           useful to define a <em>virtual package</em> whose name
1083           describes that common functionality.  (The virtual
1084           packages only exist logically, not physically; that's why
1085           they are called <em>virtual</em>.) The packages with this
1086           particular function will then <em>provide</em> the virtual
1087           package. Thus, any other package requiring that function
1088           can simply depend on the virtual package without having to
1089           specify all possible packages individually.
1090         </p>
1091
1092         <p>
1093           All packages should use virtual package names where
1094           appropriate, and arrange to create new ones if necessary.
1095           They should not use virtual package names (except privately,
1096           amongst a cooperating group of packages) unless they have
1097           been agreed upon and appear in the list of virtual package
1098           names. (See also <ref id="virtual">)
1099         </p>
1100
1101         <p>
1102           The latest version of the authoritative list of virtual
1103           package names can be found in the <tt>debian-policy</tt> package.
1104           It is also available from the Debian web mirrors at
1105           <tt><url name="/doc/packaging-manuals/virtual-package-names-list.txt"
1106                 id="http://www.debian.org/doc/packaging-manuals/virtual-package-names-list.txt"></tt>.
1107         </p>
1108
1109         <p>
1110           The procedure for updating the list is described in the preface
1111           to the list.
1112         </p>
1113
1114       </sect>
1115
1116       <sect>
1117         <heading>Base system</heading>
1118
1119         <p>
1120           The <tt>base system</tt> is a minimum subset of the Debian
1121           GNU/Linux system that is installed before everything else
1122           on a new system. Only very few packages are allowed to form
1123           part of the base system, in order to keep the required disk
1124           usage very small.
1125         </p>
1126
1127         <p>
1128           The base system consists of all those packages with priority
1129           <tt>required</tt> or <tt>important</tt>. Many of them will
1130           be tagged <tt>essential</tt> (see below).
1131         </p>
1132       </sect>
1133
1134       <sect>
1135         <heading>Essential packages</heading>
1136
1137         <p>
1138           Essential is defined as the minimal set of functionality that
1139           must be available and usable on the system at all times, even
1140           when packages are in an unconfigured (but unpacked) state.
1141           Packages are tagged <tt>essential</tt> for a system using the
1142           <tt>Essential</tt> control file field.  The format of the
1143           <tt>Essential</tt> control field is described in <ref
1144           id="f-Essential">.
1145         </p>
1146
1147         <p>
1148           Since these packages cannot be easily removed (one has to
1149           specify an extra <em>force option</em> to
1150           <prgn>dpkg</prgn> to do so), this flag must not be used
1151           unless absolutely necessary.  A shared library package
1152           must not be tagged <tt>essential</tt>; dependencies will
1153           prevent its premature removal, and we need to be able to
1154           remove it when it has been superseded.
1155         </p>
1156
1157         <p>
1158           Since dpkg will not prevent upgrading of other packages
1159           while an <tt>essential</tt> package is in an unconfigured
1160             state, all <tt>essential</tt> packages must supply all of
1161             their core functionality even when unconfigured. If the
1162             package cannot satisfy this requirement it must not be
1163             tagged as essential, and any packages depending on this
1164             package must instead have explicit dependency fields as
1165             appropriate.
1166         </p>
1167
1168         <p>
1169           Maintainers should take great care in adding any programs,
1170           interfaces, or functionality to <tt>essential</tt> packages.
1171           Packages may assume that functionality provided by
1172           <tt>essential</tt> packages is always available without
1173           declaring explicit dependencies, which means that removing
1174           functionality from the Essential set is very difficult and is
1175           almost never done.  Any capability added to an
1176           <tt>essential</tt> package therefore creates an obligation to
1177           support that capability as part of the Essential set in
1178           perpetuity.
1179         </p>
1180
1181         <p>
1182           You must not tag any packages <tt>essential</tt> before
1183           this has been discussed on the <tt>debian-devel</tt>
1184           mailing list and a consensus about doing that has been
1185           reached.
1186         </p>
1187       </sect>
1188
1189       <sect id="maintscripts">
1190         <heading>Maintainer Scripts</heading>
1191
1192         <p>
1193           The package installation scripts should avoid producing
1194           output which is unnecessary for the user to see and
1195           should rely on <prgn>dpkg</prgn> to stave off boredom on
1196           the part of a user installing many packages.  This means,
1197           amongst other things, using the <tt>--quiet</tt> option on
1198           <prgn>install-info</prgn>.
1199         </p>
1200
1201         <p>
1202           Errors which occur during the execution of an installation
1203           script must be checked and the installation must not
1204           continue after an error.
1205         </p>
1206
1207         <p>
1208           Note that in general <ref id="scripts"> applies to package
1209           maintainer scripts, too.
1210         </p>
1211
1212         <p>
1213           You should not use <prgn>dpkg-divert</prgn> on a file
1214           belonging to another package without consulting the
1215           maintainer of that package first.
1216         </p>
1217
1218         <p>
1219           All packages which supply an instance of a common command
1220           name (or, in general, filename) should generally use
1221           <prgn>update-alternatives</prgn>, so that they may be
1222           installed together.  If <prgn>update-alternatives</prgn>
1223           is not used, then each package must use
1224           <tt>Conflicts</tt> to ensure that other packages are
1225           de-installed.  (In this case, it may be appropriate to
1226           specify a conflict against earlier versions of something
1227           that previously did not use
1228           <prgn>update-alternatives</prgn>; this is an exception to
1229           the usual rule that versioned conflicts should be
1230           avoided.)
1231         </p>
1232
1233         <sect1 id="maintscriptprompt">
1234           <heading>Prompting in maintainer scripts</heading>
1235           <p>
1236             Package maintainer scripts may prompt the user if
1237             necessary. Prompting must be done by communicating
1238             through a program, such as <prgn>debconf</prgn>, which
1239             conforms to the Debian Configuration Management
1240             Specification, version 2 or higher.
1241           </p>
1242
1243           <p>
1244             Packages which are essential, or which are dependencies of
1245             essential packages, may fall back on another prompting method
1246             if no such interface is available when they are executed.
1247           </p>
1248
1249           <p>
1250             The Debian Configuration Management Specification is included
1251             in the <file>debconf_specification</file> files in the
1252             <package>debian-policy</package> package.
1253             It is also available from the Debian web mirrors at
1254             <tt><url name="/doc/packaging-manuals/debconf_specification.html"
1255                 id="http://www.debian.org/doc/packaging-manuals/debconf_specification.html"></tt>.
1256           </p>
1257
1258           <p>
1259             Packages which use the Debian Configuration Management
1260             Specification may contain an additional
1261             <prgn>config</prgn> script and a <tt>templates</tt>
1262             file in their control archive<footnote>
1263                 The control.tar.gz inside the .deb.
1264                 See <manref name="deb" section="5">.
1265             </footnote>.
1266             The <prgn>config</prgn> script might be run before the
1267             <prgn>preinst</prgn> script, and before the package is unpacked
1268             or any of its dependencies or pre-dependencies are satisfied.
1269             Therefore it must work using only the tools present in
1270             <em>essential</em> packages.<footnote>
1271                   <package>Debconf</package> or another tool that
1272                   implements the Debian Configuration Management
1273                   Specification will also be installed, and any
1274                   versioned dependencies on it will be satisfied
1275                   before preconfiguration begins.
1276             </footnote>
1277           </p>
1278
1279           <p>
1280             Packages which use the Debian Configuration Management
1281             Specification must allow for translation of their user-visible
1282             messages by using a gettext-based system such as the one
1283             provided by the <package>po-debconf</package> package.
1284           </p>
1285
1286           <p>
1287             Packages should try to minimize the amount of prompting
1288             they need to do, and they should ensure that the user
1289             will only ever be asked each question once.  This means
1290             that packages should try to use appropriate shared
1291             configuration files (such as <file>/etc/papersize</file> and
1292             <file>/etc/news/server</file>), and shared
1293             <package>debconf</package> variables rather than each
1294             prompting for their own list of required pieces of
1295             information.
1296           </p>
1297
1298           <p>
1299             It also means that an upgrade should not ask the same
1300             questions again, unless the user has used
1301             <tt>dpkg --purge</tt> to remove the package's configuration.
1302             The answers to configuration questions should be stored in an
1303             appropriate place in <file>/etc</file> so that the user can
1304             modify them, and how this has been done should be
1305             documented.
1306           </p>
1307
1308           <p>
1309             If a package has a vitally important piece of
1310             information to pass to the user (such as "don't run me
1311             as I am, you must edit the following configuration files
1312             first or you risk your system emitting badly-formatted
1313             messages"), it should display this in the
1314             <prgn>config</prgn> or <prgn>postinst</prgn> script and
1315             prompt the user to hit return to acknowledge the
1316             message.  Copyright messages do not count as vitally
1317             important (they belong in
1318             <file>/usr/share/doc/<var>package</var>/copyright</file>);
1319             neither do instructions on how to use a program (these
1320             should be in on-line documentation, where all the users
1321             can see them).
1322           </p>
1323
1324           <p>
1325             Any necessary prompting should almost always be confined
1326             to the <prgn>config</prgn> or <prgn>postinst</prgn>
1327             script. If it is done in the <prgn>postinst</prgn>, it
1328             should be protected with a conditional so that
1329             unnecessary prompting doesn't happen if a package's
1330             installation fails and the <prgn>postinst</prgn> is
1331             called with <tt>abort-upgrade</tt>,
1332             <tt>abort-remove</tt> or <tt>abort-deconfigure</tt>.
1333           </p>
1334         </sect1>
1335
1336       </sect>
1337
1338     </chapt>
1339
1340
1341     <chapt id="source">
1342       <heading>Source packages</heading>
1343
1344       <sect id="standardsversion">
1345         <heading>Standards conformance</heading>
1346
1347         <p>
1348           Source packages should specify the most recent version number
1349           of this policy document with which your package complied
1350           when it was last updated.
1351         </p>
1352
1353         <p>
1354           This information may be used to file bug reports
1355           automatically if your package becomes too much out of date.
1356         </p>
1357
1358         <p>
1359           The version is specified in the <tt>Standards-Version</tt>
1360           control field.
1361           The format of the <tt>Standards-Version</tt> field is
1362           described in <ref id="f-Standards-Version">.
1363         </p>
1364
1365         <p>
1366           You should regularly, and especially if your package has
1367           become out of date, check for the newest Policy Manual
1368           available and update your package, if necessary. When your
1369           package complies with the new standards you should update the
1370           <tt>Standards-Version</tt> source package field and
1371           release it.<footnote>
1372                 See the file <file>upgrading-checklist</file> for
1373                 information about policy which has changed between
1374                 different versions of this document.
1375           </footnote>
1376         </p>
1377
1378       </sect>
1379
1380       <sect id="pkg-relations">
1381         <heading>Package relationships</heading>
1382
1383         <p>
1384           Source packages should specify which binary packages they
1385           require to be installed or not to be installed in order to
1386           build correctly.  For example, if building a package
1387           requires a certain compiler, then the compiler should be
1388           specified as a build-time dependency.
1389         </p>
1390
1391         <p>
1392           It is not necessary to explicitly specify build-time
1393           relationships on a minimal set of packages that are always
1394           needed to compile, link and put in a Debian package a
1395           standard "Hello World!" program written in C or C++.  The
1396           required packages are called <em>build-essential</em>, and
1397           an informational list can be found in
1398           <file>/usr/share/doc/build-essential/list</file> (which is
1399           contained in the <tt>build-essential</tt>
1400           package).<footnote>
1401             Rationale:
1402                 <list compact="compact">
1403                   <item>
1404                       This allows maintaining the list separately
1405                       from the policy documents (the list does not
1406                       need the kind of control that the policy
1407                       documents do).
1408                   </item>
1409                   <item>
1410                       Having a separate package allows one to install
1411                       the build-essential packages on a machine, as
1412                       well as allowing other packages such as tasks to
1413                       require installation of the build-essential
1414                       packages using the depends relation.
1415                   </item>
1416                   <item>
1417                       The separate package allows bug reports against
1418                       the list to be categorized separately from
1419                       the policy management process in the BTS.
1420                   </item>
1421                 </list>
1422           </footnote>
1423         </p>
1424
1425         <p>
1426           When specifying the set of build-time dependencies, one
1427           should list only those packages explicitly required by the
1428           build.  It is not necessary to list packages which are
1429           required merely because some other package in the list of
1430           build-time dependencies depends on them.<footnote>
1431                 The reason for this is that dependencies change, and
1432                 you should list all those packages, and <em>only</em>
1433                 those packages that <em>you</em> need directly.  What
1434                 others need is their business.  For example, if you
1435                 only link against <file>libimlib</file>, you will need to
1436                 build-depend on <package>libimlib2-dev</package> but
1437                 not against any <tt>libjpeg*</tt> packages, even
1438                 though <tt>libimlib2-dev</tt> currently depends on
1439                 them: installation of <package>libimlib2-dev</package>
1440                 will automatically ensure that all of its run-time
1441                 dependencies are satisfied.
1442           </footnote>
1443         </p>
1444
1445         <p>
1446           If build-time dependencies are specified, it must be
1447           possible to build the package and produce working binaries
1448           on a system with only essential and build-essential
1449           packages installed and also those required to satisfy the
1450           build-time relationships (including any implied
1451           relationships).  In particular, this means that version
1452           clauses should be used rigorously in build-time
1453           relationships so that one cannot produce bad or
1454           inconsistently configured packages when the relationships
1455           are properly satisfied.
1456         </p>
1457
1458         <p>
1459           <ref id="relationships"> explains the technical details.
1460         </p>
1461       </sect>
1462
1463       <sect>
1464         <heading>Changes to the upstream sources</heading>
1465
1466         <p>
1467           If changes to the source code are made that are not
1468           specific to the needs of the Debian system, they should be
1469           sent to the upstream authors in whatever form they prefer
1470           so as to be included in the upstream version of the
1471           package.
1472         </p>
1473
1474         <p>
1475           If you need to configure the package differently for
1476           Debian or for Linux, and the upstream source doesn't
1477           provide a way to do so, you should add such configuration
1478           facilities (for example, a new <prgn>autoconf</prgn> test
1479           or <tt>#define</tt>) and send the patch to the upstream
1480           authors, with the default set to the way they originally
1481           had it.  You can then easily override the default in your
1482           <file>debian/rules</file> or wherever is appropriate.
1483         </p>
1484
1485         <p>
1486           You should make sure that the <prgn>configure</prgn> utility
1487           detects the correct architecture specification string
1488           (refer to <ref id="arch-spec"> for details).
1489         </p>
1490
1491         <p>
1492           If you need to edit a <prgn>Makefile</prgn> where GNU-style
1493           <prgn>configure</prgn> scripts are used, you should edit the
1494           <file>.in</file> files rather than editing the
1495           <prgn>Makefile</prgn> directly.  This allows the user to
1496           reconfigure the package if necessary.  You should
1497           <em>not</em> configure the package and edit the generated
1498           <prgn>Makefile</prgn>!  This makes it impossible for someone
1499           else to later reconfigure the package without losing the
1500           changes you made.
1501         </p>
1502
1503       </sect>
1504
1505       <sect id="dpkgchangelog">
1506         <heading>Debian changelog: <file>debian/changelog</file></heading>
1507
1508         <p>
1509           Changes in the Debian version of the package should be
1510           briefly explained in the Debian changelog file
1511           <file>debian/changelog</file>.<footnote>
1512             <p>
1513               Mistakes in changelogs are usually best rectified by
1514               making a new changelog entry rather than "rewriting
1515               history" by editing old changelog entries.
1516             </p>
1517           </footnote>
1518           This includes modifications
1519           made in the Debian package compared to the upstream one
1520           as well as other changes and updates to the package.
1521           <footnote>
1522               Although there is nothing stopping an author who is also
1523               the Debian maintainer from using this changelog for all
1524               their changes, it will have to be renamed if the Debian
1525               and upstream maintainers become different people. In such
1526               a case, however, it might be better to maintain the package
1527               as a non-native package.
1528           </footnote>
1529         </p>
1530
1531         <p>
1532           The format of the <file>debian/changelog</file> allows the
1533           package building tools to discover which version of the package
1534           is being built and find out other release-specific information.
1535         </p>
1536
1537         <p>
1538           That format is a series of entries like this:
1539
1540 <example compact="compact">
1541 <var>package</var> (<var>version</var>) <var>distribution(s)</var>; urgency=<var>urgency</var>
1542             <var>
1543               [optional blank line(s), stripped]
1544             </var>
1545   * <var>change details</var>
1546     <var>more change details</var>
1547             <var>
1548               [blank line(s), included in output of dpkg-parsechangelog]
1549             </var>
1550   * <var>even more change details</var>
1551             <var>
1552               [optional blank line(s), stripped]
1553             </var>
1554  -- <var>maintainer name</var> &lt;<var>email address</var>&gt;<var>[two spaces]</var>  <var>date</var>
1555 </example>
1556         </p>
1557
1558         <p>
1559           <var>package</var> and <var>version</var> are the source
1560           package name and version number.
1561         </p>
1562
1563         <p>
1564           <var>distribution(s)</var> lists the distributions where
1565           this version should be installed when it is uploaded - it
1566           is copied to the <tt>Distribution</tt> field in the
1567           <file>.changes</file> file.  See <ref id="f-Distribution">.
1568         </p>
1569
1570         <p>
1571           <var>urgency</var> is the value for the <tt>Urgency</tt>
1572           field in the <file>.changes</file> file for the upload
1573           (see <ref id="f-Urgency">). It is not possible to specify
1574           an urgency containing commas; commas are used to separate
1575           <tt><var>keyword</var>=<var>value</var></tt> settings in the
1576           <prgn>dpkg</prgn> changelog format (though there is
1577           currently only one useful <var>keyword</var>,
1578           <tt>urgency</tt>).
1579         </p>
1580
1581         <p>
1582           The change details may in fact be any series of lines
1583           starting with at least two spaces, but conventionally each
1584           change starts with an asterisk and a separating space and
1585           continuation lines are indented so as to bring them in
1586           line with the start of the text above.  Blank lines may be
1587           used here to separate groups of changes, if desired.
1588         </p>
1589
1590         <p>
1591           If this upload resolves bugs recorded in the Bug Tracking
1592           System (BTS), they may be automatically closed on the
1593           inclusion of this package into the Debian archive by
1594           including the string: <tt>closes: Bug#<var>nnnnn</var></tt>
1595           in the change details.<footnote>
1596               To be precise, the string should match the following
1597               Perl regular expression:
1598               <example>
1599 /closes:\s*(?:bug)?\#?\s?\d+(?:,\s*(?:bug)?\#?\s?\d+)*/i
1600               </example>
1601               Then all of the bug numbers listed will be closed by the
1602               archive maintenance script (<prgn>katie</prgn>) using the
1603               <var>version</var> of the changelog entry.
1604           </footnote>
1605           This information is conveyed via the <tt>Closes</tt> field
1606           in the <tt>.changes</tt> file (see <ref id="f-Closes">).
1607         </p>
1608
1609         <p>
1610           The maintainer name and email address used in the changelog
1611           should be the details of the person uploading <em>this</em>
1612           version.  They are <em>not</em> necessarily those of the
1613           usual package maintainer.  The information here will be
1614           copied to the <tt>Changed-By</tt> field in the
1615           <tt>.changes</tt> file (see <ref id="f-Changed-By">),
1616           and then later used to send an acknowledgement when the
1617           upload has been installed.
1618         </p>
1619
1620         <p>
1621           The <var>date</var> has the following format<footnote>
1622               This is the same as the format generated by <tt>date
1623               -R</tt>.
1624           </footnote> (compatible and with the same semantics of
1625           RFC 2822 and RFC 5322):
1626           <example>day-of-week, dd month yyyy hh:mm:ss +zzzz</example>
1627           where:
1628           <list compact="compact">
1629             <item>
1630               day-of week is one of: Mon, Tue, Wed, Thu, Fri, Sat, Sun
1631             </item>
1632             <item>
1633               dd is a one- or two-digit day of the month (01-31)
1634             </item>
1635             <item>
1636               month is one of: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug,
1637               Sep, Oct, Nov, Dec
1638             </item>
1639             <item>yyyy is the four-digit year (e.g. 2010)</item>
1640             <item>hh is the two-digit hour (00-23)</item>
1641             <item>mm is the two-digit minutes (00-59)</item>
1642             <item>ss is the two-digit seconds (00-60)</item>
1643             <item>
1644               +zzzz or -zzzz is the the time zone offset from Coordinated
1645               Universal Time (UTC).  "+" indicates that the time is ahead
1646               of (i.e., east of) UTC and "-" indicates that the time is
1647               behind (i.e., west of) UTC.  The first two digits indicate
1648               the hour difference from UTC and the last two digits
1649               indicate the number of additional minutes difference from
1650               UTC.  The last two digits must be in the range 00-59.
1651             </item>
1652           </list>
1653         </p>
1654
1655         <p>
1656           The first "title" line with the package name must start
1657           at the left hand margin.  The "trailer" line with the
1658           maintainer and date details must be preceded by exactly
1659           one space.  The maintainer details and the date must be
1660           separated by exactly two spaces.
1661         </p>
1662
1663         <p>
1664           The entire changelog must be encoded in UTF-8.
1665         </p>
1666
1667         <p>
1668           For more information on placement of the changelog files
1669           within binary packages, please see <ref id="changelogs">.
1670         </p>
1671       </sect>
1672
1673       <sect id="dpkgcopyright">
1674         <heading>Copyright: <file>debian/copyright</file></heading>
1675         <p>
1676           Every package must be accompanied by a verbatim copy of its
1677           copyright information and distribution license in the file
1678           <file>/usr/share/doc/<var>package</var>/copyright</file>
1679           (see <ref id="copyrightfile"> for further details). Also see
1680           <ref id="pkgcopyright"> for further considerations related
1681           to copyrights for packages.
1682         </p>
1683       </sect>
1684       <sect>
1685         <heading>Error trapping in makefiles</heading>
1686
1687         <p>
1688           When <prgn>make</prgn> invokes a command in a makefile
1689           (including your package's upstream makefiles and
1690           <file>debian/rules</file>), it does so using <prgn>sh</prgn>.  This
1691           means that <prgn>sh</prgn>'s usual bad error handling
1692           properties apply: if you include a miniature script as one
1693           of the commands in your makefile you'll find that if you
1694           don't do anything about it then errors are not detected
1695           and <prgn>make</prgn> will blithely continue after
1696           problems.
1697         </p>
1698
1699         <p>
1700           Every time you put more than one shell command (this
1701           includes using a loop) in a makefile command you
1702           must make sure that errors are trapped.  For
1703           simple compound commands, such as changing directory and
1704           then running a program, using <tt>&amp;&amp;</tt> rather
1705           than semicolon as a command separator is sufficient.  For
1706           more complex commands including most loops and
1707           conditionals you should include a separate <tt>set -e</tt>
1708           command at the start of every makefile command that's
1709           actually one of these miniature shell scripts.
1710         </p>
1711       </sect>
1712
1713       <sect id="timestamps">
1714         <heading>Time Stamps</heading>
1715         <p>
1716           Maintainers should preserve the modification times of the
1717           upstream source files in a package, as far as is reasonably
1718           possible.<footnote>
1719               The rationale is that there is some information conveyed
1720               by knowing the age of the file, for example, you could
1721               recognize that some documentation is very old by looking
1722               at the modification time, so it would be nice if the
1723               modification time of the upstream source would be
1724               preserved.
1725           </footnote>
1726         </p>
1727       </sect>
1728
1729       <sect id="restrictions">
1730         <heading>Restrictions on objects in source packages</heading>
1731
1732         <p>
1733           The source package may not contain any hard links<footnote>
1734             <p>
1735               This is not currently detected when building source
1736               packages, but only when extracting
1737               them.
1738             </p>
1739             <p>
1740               Hard links may be permitted at some point in the
1741               future, but would require a fair amount of
1742               work.
1743             </p>
1744           </footnote>, device special files, sockets or setuid or
1745           setgid files.<footnote>
1746               Setgid directories are allowed.
1747           </footnote>
1748         </p>
1749       </sect>
1750
1751       <sect id="debianrules">
1752         <heading>Main building script: <file>debian/rules</file></heading>
1753
1754         <p>
1755           This file must be an executable makefile, and contains the
1756           package-specific recipes for compiling the package and
1757           building binary package(s) from the source.
1758         </p>
1759
1760         <p>
1761           It must start with the line <tt>#!/usr/bin/make -f</tt>,
1762           so that it can be invoked by saying its name rather than
1763           invoking <prgn>make</prgn> explicitly. That is, invoking
1764           either of <tt>make -f debian/rules <em>args...</em></tt>
1765           or <tt>./debian/rules <em>args...</em></tt> must result in
1766           identical behavior.
1767         </p>
1768
1769         <p>
1770           Since an interactive <file>debian/rules</file> script makes it
1771           impossible to auto-compile that package and also makes it
1772           hard for other people to reproduce the same binary
1773           package, all <em>required targets</em> must be
1774           non-interactive. At a minimum, required targets are the
1775           ones called by <prgn>dpkg-buildpackage</prgn>, namely,
1776           <em>clean</em>, <em>binary</em>, <em>binary-arch</em>,
1777           <em>binary-indep</em>, and <em>build</em>. It also follows
1778           that any target that these targets depend on must also be
1779           non-interactive.
1780         </p>
1781
1782         <p>
1783           The targets are as follows (required unless stated otherwise):
1784           <taglist>
1785             <tag><tt>build</tt></tag>
1786             <item>
1787               <p>
1788                 The <tt>build</tt> target should perform all the
1789                 configuration and compilation of the package.
1790                 If a package has an interactive pre-build
1791                 configuration routine, the Debianized source package
1792                 must either be built after this has taken place (so
1793                 that the binary package can be built without rerunning
1794                 the configuration) or the configuration routine
1795                 modified to become non-interactive.  (The latter is
1796                 preferable if there are architecture-specific features
1797                 detected by the configuration routine.)
1798               </p>
1799
1800               <p>
1801                 For some packages, notably ones where the same
1802                 source tree is compiled in different ways to produce
1803                 two binary packages, the <tt>build</tt> target
1804                 does not make much sense.  For these packages it is
1805                 good enough to provide two (or more) targets
1806                 (<tt>build-a</tt> and <tt>build-b</tt> or whatever)
1807                 for each of the ways of building the package, and a
1808                 <tt>build</tt> target that does nothing.  The
1809                 <tt>binary</tt> target will have to build the
1810                 package in each of the possible ways and make the
1811                 binary package out of each.
1812               </p>
1813
1814               <p>
1815                 The <tt>build</tt> target must not do anything
1816                 that might require root privilege.
1817               </p>
1818
1819               <p>
1820                 The <tt>build</tt> target may need to run the
1821                 <tt>clean</tt> target first - see below.
1822               </p>
1823
1824               <p>
1825                 When a package has a configuration and build routine
1826                 which takes a long time, or when the makefiles are
1827                 poorly designed, or when <tt>build</tt> needs to
1828                 run <tt>clean</tt> first, it is a good idea to
1829                 <tt>touch build</tt> when the build process is
1830                 complete.  This will ensure that if <tt>debian/rules
1831                 build</tt> is run again it will not rebuild the whole
1832                 program.<footnote>
1833                     Another common way to do this is for <tt>build</tt>
1834                     to depend on <prgn>build-stamp</prgn> and to do
1835                     nothing else, and for the <prgn>build-stamp</prgn>
1836                     target to do the building and to <tt>touch
1837                     build-stamp</tt> on completion.  This is
1838                     especially useful if the build routine creates a
1839                     file or directory called <tt>build</tt>; in such a
1840                     case, <tt>build</tt> will need to be listed as
1841                     a phony target (i.e., as a dependency of the
1842                     <tt>.PHONY</tt> target).  See the documentation of
1843                     <prgn>make</prgn> for more information on phony
1844                     targets.
1845                 </footnote>
1846               </p>
1847             </item>
1848
1849             <tag><tt>build-arch</tt> (optional),
1850                  <tt>build-indep</tt> (optional)
1851             </tag>
1852             <item>
1853               <p>
1854                 A package may also provide both of the targets
1855                 <tt>build-arch</tt> and <tt>build-indep</tt>.
1856                 The <tt>build-arch</tt> target, if provided, should
1857                 perform all the configuration and compilation required for
1858                 producing all architecture-dependant binary packages
1859                 (those packages for which the body of the
1860                 <tt>Architecture</tt> field in <tt>debian/control</tt> is
1861                 not <tt>all</tt>).  Similarly, the <tt>build-indep</tt>
1862                 target, if provided, should perform all the configuration
1863                 and compilation required for producing all
1864                 architecture-independent binary packages (those packages
1865                 for which the body of the <tt>Architecture</tt> field
1866                 in <tt>debian/control</tt> is <tt>all</tt>).
1867                 The <tt>build</tt> target should depend on those of the
1868                 targets <tt>build-arch</tt> and <tt>build-indep</tt> that
1869                 are provided in the rules file.<footnote>
1870                   The intent of this split is so that binary-only builds
1871                   need not install the dependencies required for
1872                   the <tt>build-indep</tt> target.  However, this is not
1873                   yet used in practice since <tt>dpkg-buildpackage
1874                   -B</tt>, and therefore the autobuilders,
1875                   invoke <tt>build</tt> rather than <tt>build-arch</tt>
1876                   due to the difficulties in determining whether the
1877                   optional <tt>build-arch</tt> target exists.
1878                 </footnote>
1879               </p>
1880
1881               <p>
1882                 If one or both of the targets <tt>build-arch</tt> and
1883                 <tt>build-indep</tt> are not provided, then invoking
1884                 <file>debian/rules</file> with one of the not-provided
1885                 targets as arguments should produce a exit status code
1886                 of 2.  Usually this is provided automatically by make
1887                 if the target is missing.
1888               </p>
1889
1890               <p>
1891                 The <tt>build-arch</tt> and <tt>build-indep</tt> targets
1892                 must not do anything that might require root privilege.
1893               </p>
1894             </item>
1895
1896             <tag><tt>binary</tt>, <tt>binary-arch</tt>,
1897               <tt>binary-indep</tt>
1898             </tag>
1899             <item>
1900               <p>
1901                 The <tt>binary</tt> target must be all that is
1902                 necessary for the user to build the binary package(s)
1903                 produced from this source package.  It is
1904                 split into two parts: <prgn>binary-arch</prgn> builds
1905                 the binary packages which are specific to a particular
1906                 architecture, and <tt>binary-indep</tt> builds
1907                 those which are not.
1908               </p>
1909               <p>
1910                 <tt>binary</tt> may be (and commonly is) a target with
1911                 no commands which simply depends on
1912                 <tt>binary-arch</tt> and <tt>binary-indep</tt>.
1913               </p>
1914               <p>
1915                 Both <tt>binary-*</tt> targets should depend on the
1916                 <tt>build</tt> target, or on the appropriate
1917                 <tt>build-arch</tt> or <tt>build-indep</tt> target, if
1918                 provided, so that the package is built if it has not
1919                 been already.  It should then create the relevant
1920                 binary package(s), using <prgn>dpkg-gencontrol</prgn> to
1921                 make their control files and <prgn>dpkg-deb</prgn> to
1922                 build them and place them in the parent of the top
1923                 level directory.
1924               </p>
1925
1926               <p>
1927                 Both the <tt>binary-arch</tt> and
1928                 <tt>binary-indep</tt> targets <em>must</em> exist.
1929                 If one of them has nothing to do (which will always be
1930                 the case if the source generates only a single binary
1931                 package, whether architecture-dependent or not), it
1932                 must still exist and must always succeed.
1933               </p>
1934
1935               <p>
1936                 The <tt>binary</tt> targets must be invoked as
1937                 root.<footnote>
1938                     The <prgn>fakeroot</prgn> package often allows one
1939                     to build a package correctly even without being
1940                     root.
1941                 </footnote>
1942               </p>
1943             </item>
1944
1945             <tag><tt>clean</tt></tag>
1946             <item>
1947               <p>
1948                 This must undo any effects that the <tt>build</tt>
1949                 and <tt>binary</tt> targets may have had, except
1950                 that it should leave alone any output files created in
1951                 the parent directory by a run of a <tt>binary</tt>
1952                 target.
1953               </p>
1954
1955               <p>
1956                 If a <tt>build</tt> file is touched at the end of
1957                 the <tt>build</tt> target, as suggested above, it
1958                 should be removed as the first action that
1959                 <tt>clean</tt> performs, so that running
1960                 <tt>build</tt> again after an interrupted
1961                 <tt>clean</tt> doesn't think that everything is
1962                 already done.
1963               </p>
1964
1965               <p>
1966                 The <tt>clean</tt> target may need to be
1967                 invoked as root if <tt>binary</tt> has been
1968                 invoked since the last <tt>clean</tt>, or if
1969                 <tt>build</tt> has been invoked as root (since
1970                 <tt>build</tt> may create directories, for
1971                 example).
1972               </p>
1973             </item>
1974
1975             <tag><tt>get-orig-source</tt> (optional)</tag>
1976             <item>
1977               <p>
1978                 This target fetches the most recent version of the
1979                 original source package from a canonical archive site
1980                 (via FTP or WWW, for example), does any necessary
1981                 rearrangement to turn it into the original source
1982                 tar file format described below, and leaves it in the
1983                 current directory.
1984               </p>
1985
1986               <p>
1987                 This target may be invoked in any directory, and
1988                 should take care to clean up any temporary files it
1989                 may have left.
1990               </p>
1991
1992               <p>
1993                 This target is optional, but providing it if
1994                 possible is a good idea.
1995               </p>
1996             </item>
1997
1998             <tag><tt>patch</tt> (optional)</tag>
1999             <item>
2000               <p>
2001                 This target performs whatever additional actions are
2002                 required to make the source ready for editing (unpacking
2003                 additional upstream archives, applying patches, etc.).
2004                 It is recommended to be implemented for any package where
2005                 <tt>dpkg-source -x</tt> does not result in source ready
2006                 for additional modification.  See
2007                 <ref id="readmesource">.
2008               </p>
2009             </item>
2010           </taglist>
2011
2012         <p>
2013           The <tt>build</tt>, <tt>binary</tt> and
2014           <tt>clean</tt> targets must be invoked with the current
2015           directory being the package's top-level directory.
2016         </p>
2017
2018
2019         <p>
2020           Additional targets may exist in <file>debian/rules</file>,
2021           either as published or undocumented interfaces or for the
2022           package's internal use.
2023         </p>
2024
2025         <p>
2026           The architectures we build on and build for are determined
2027           by <prgn>make</prgn> variables using the utility
2028           <qref id="pkg-dpkg-architecture"><prgn>dpkg-architecture</prgn></qref>.
2029           You can determine the
2030           Debian architecture and the GNU style architecture
2031           specification string for the build machine (the machine type
2032           we are building on) as well as for the host machine (the
2033           machine type we are building for).  Here is a list of
2034           supported <prgn>make</prgn> variables:
2035           <list compact="compact">
2036             <item>
2037                 <tt>DEB_*_ARCH</tt> (the Debian architecture)
2038             </item>
2039             <item>
2040                 <tt>DEB_*_ARCH_CPU</tt> (the Debian CPU name)
2041             </item>
2042             <item>
2043                 <tt>DEB_*_ARCH_OS</tt> (the Debian System name)
2044             </item>
2045             <item>
2046                 <tt>DEB_*_GNU_TYPE</tt> (the GNU style architecture
2047                 specification string)
2048             </item>
2049             <item>
2050                 <tt>DEB_*_GNU_CPU</tt> (the CPU part of
2051                 <tt>DEB_*_GNU_TYPE</tt>)
2052             </item>
2053             <item>
2054                 <tt>DEB_*_GNU_SYSTEM</tt> (the System part of
2055                 <tt>DEB_*_GNU_TYPE</tt>)
2056           </list>
2057           where <tt>*</tt> is either <tt>BUILD</tt> for specification of
2058           the build machine or <tt>HOST</tt> for specification of the
2059           host machine.
2060         </p>
2061
2062         <p>
2063           Backward compatibility can be provided in the rules file
2064           by setting the needed variables to suitable default
2065           values; please refer to the documentation of
2066           <prgn>dpkg-architecture</prgn> for details.
2067         </p>
2068
2069         <p>
2070           It is important to understand that the <tt>DEB_*_ARCH</tt>
2071           string only determines which Debian architecture we are
2072           building on or for. It should not be used to get the CPU
2073           or system information; the <tt>DEB_*_ARCH_CPU</tt> and
2074           <tt>DEB_*_ARCH_OS</tt> variables should be used for that.
2075           GNU style variables should generally only be used with upstream
2076           build systems.
2077         </p>
2078
2079         <sect1 id="debianrules-options">
2080           <heading><file>debian/rules</file> and
2081             <tt>DEB_BUILD_OPTIONS</tt></heading>
2082
2083           <p>
2084             Supporting the standardized environment variable
2085             <tt>DEB_BUILD_OPTIONS</tt> is recommended.  This variable can
2086             contain several flags to change how a package is compiled and
2087             built.  Each flag must be in the form <var>flag</var> or
2088             <var>flag</var>=<var>options</var>.  If multiple flags are
2089             given, they must be separated by whitespace.<footnote>
2090               Some packages support any delimiter, but whitespace is the
2091               easiest to parse inside a makefile and avoids ambiguity with
2092               flag values that contain commas.
2093             </footnote>
2094             <var>flag</var> must start with a lowercase letter
2095             (<tt>a-z</tt>) and consist only of lowercase letters,
2096             numbers (<tt>0-9</tt>), and the characters
2097             <tt>-</tt> and <tt>_</tt> (hyphen and underscore).
2098             <var>options</var> must not contain whitespace.  The same
2099             tag should not be given multiple times with conflicting
2100             values.  Package maintainers may assume that
2101             <tt>DEB_BUILD_OPTIONS</tt> will not contain conflicting tags.
2102           </p>
2103
2104           <p>
2105             The meaning of the following tags has been standardized:
2106             <taglist>
2107               <tag>nocheck</tag>
2108               <item>
2109                   This tag says to not run any build-time test suite
2110                   provided by the package.
2111               </item>
2112               <tag>noopt</tag>
2113               <item>
2114                   The presence of this tag means that the package should
2115                   be compiled with a minimum of optimization.  For C
2116                   programs, it is best to add <tt>-O0</tt> to
2117                   <tt>CFLAGS</tt> (although this is usually the default).
2118                   Some programs might fail to build or run at this level
2119                   of optimization; it may be necessary to use
2120                   <tt>-O1</tt>, for example.
2121               </item>
2122               <tag>nostrip</tag>
2123               <item>
2124                   This tag means that the debugging symbols should not be
2125                   stripped from the binary during installation, so that
2126                   debugging information may be included in the package.
2127               </item>
2128               <tag>parallel=n</tag>
2129               <item>
2130                   This tag means that the package should be built using up
2131                   to <tt>n</tt> parallel processes if the package build
2132                   system supports this.<footnote>
2133                       Packages built with <tt>make</tt> can often implement
2134                       this by passing the <tt>-j</tt><var>n</var> option to
2135                       <tt>make</tt>.
2136                   </footnote>
2137                   If the package build system does not support parallel
2138                   builds, this string must be ignored.  If the package
2139                   build system only supports a lower level of concurrency
2140                   than <var>n</var>, the package should be built using as
2141                   many parallel processes as the package build system
2142                   supports.  It is up to the package maintainer to decide
2143                   whether the package build times are long enough and the
2144                   package build system is robust enough to make supporting
2145                   parallel builds worthwhile.
2146                </item>
2147             </taglist>
2148           </p>
2149
2150           <p>
2151             Unknown flags must be ignored by <file>debian/rules</file>.
2152           </p>
2153
2154           <p>
2155             The following makefile snippet is an example of how one may
2156             implement the build options; you will probably have to
2157             massage this example in order to make it work for your
2158             package.
2159             <example compact="compact">
2160 CFLAGS = -Wall -g
2161 INSTALL = install
2162 INSTALL_FILE    = $(INSTALL) -p    -o root -g root  -m  644
2163 INSTALL_PROGRAM = $(INSTALL) -p    -o root -g root  -m  755
2164 INSTALL_SCRIPT  = $(INSTALL) -p    -o root -g root  -m  755
2165 INSTALL_DIR     = $(INSTALL) -p -d -o root -g root  -m  755
2166
2167 ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
2168     CFLAGS += -O0
2169 else
2170     CFLAGS += -O2
2171 endif
2172 ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
2173     INSTALL_PROGRAM += -s
2174 endif
2175 ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
2176     NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
2177     MAKEFLAGS += -j$(NUMJOBS)
2178 endif
2179
2180 build:
2181         # ...
2182 ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
2183         # Code to run the package test suite.
2184 endif
2185             </example>
2186           </p>
2187         </sect1>
2188       </sect>
2189
2190 <!-- FIXME: section pkg-srcsubstvars is the same as substvars -->
2191       <sect id="substvars">
2192         <heading>Variable substitutions: <file>debian/substvars</file></heading>
2193
2194         <p>
2195           When <prgn>dpkg-gencontrol</prgn>,
2196           <prgn>dpkg-genchanges</prgn> and <prgn>dpkg-source</prgn>
2197           generate control files they perform variable substitutions
2198           on their output just before writing it.  Variable
2199           substitutions have the form <tt>${<var>variable</var>}</tt>.
2200           The optional file <file>debian/substvars</file> contains
2201           variable substitutions to be used; variables can also be set
2202           directly from <file>debian/rules</file> using the <tt>-V</tt>
2203           option to the source packaging commands, and certain
2204           predefined variables are also available.
2205         </p>
2206
2207         <p>
2208           The <file>debian/substvars</file> file is usually generated and
2209           modified dynamically by <file>debian/rules</file> targets, in
2210           which case it must be removed by the <tt>clean</tt> target.
2211         </p>
2212
2213         <p>
2214           See <manref name="deb-substvars" section="5"> for full
2215           details about source variable substitutions, including the
2216           format of <file>debian/substvars</file>.</p>
2217       </sect>
2218
2219       <sect id="debianwatch">
2220         <heading>Optional upstream source location: <file>debian/watch</file></heading>
2221
2222         <p>
2223           This is an optional, recommended control file for the
2224           <tt>uscan</tt> utility which defines how to automatically
2225           scan ftp or http sites for newly available updates of the
2226           package. This is used by <url id="
2227           http://dehs.alioth.debian.org/"> and other Debian QA tools
2228           to help with quality control and maintenance of the
2229           distribution as a whole.
2230         </p>
2231
2232       </sect>
2233
2234       <sect id="debianfiles">
2235         <heading>Generated files list: <file>debian/files</file></heading>
2236
2237         <p>
2238           This file is not a permanent part of the source tree; it
2239           is used while building packages to record which files are
2240           being generated.  <prgn>dpkg-genchanges</prgn> uses it
2241           when it generates a <file>.changes</file> file.
2242         </p>
2243
2244         <p>
2245           It should not exist in a shipped source package, and so it
2246           (and any backup files or temporary files such as
2247           <file>files.new</file><footnote>
2248               <file>files.new</file> is used as a temporary file by
2249               <prgn>dpkg-gencontrol</prgn> and
2250               <prgn>dpkg-distaddfile</prgn> - they write a new
2251               version of <tt>files</tt> here before renaming it,
2252               to avoid leaving a corrupted copy if an error
2253               occurs.
2254           </footnote>) should be removed by the
2255           <tt>clean</tt> target.  It may also be wise to
2256           ensure a fresh start by emptying or removing it at the
2257           start of the <tt>binary</tt> target.
2258         </p>
2259
2260         <p>
2261           When <prgn>dpkg-gencontrol</prgn> is run for a binary
2262           package, it adds an entry to <file>debian/files</file> for the
2263           <file>.deb</file> file that will be created when <tt>dpkg-deb
2264           --build</tt> is run for that binary package.  So for most
2265           packages all that needs to be done with this file is to
2266           delete it in the <tt>clean</tt> target.
2267         </p>
2268
2269         <p>
2270           If a package upload includes files besides the source
2271           package and any binary packages whose control files were
2272           made with <prgn>dpkg-gencontrol</prgn> then they should be
2273           placed in the parent of the package's top-level directory
2274           and <prgn>dpkg-distaddfile</prgn> should be called to add
2275           the file to the list in <file>debian/files</file>.</p>
2276       </sect>
2277
2278       <sect id="embeddedfiles">
2279         <heading>Convenience copies of code</heading>
2280
2281         <p>
2282           Some software packages include in their distribution convenience
2283           copies of code from other software packages, generally so that
2284           users compiling from source don't have to download multiple
2285           packages.  Debian packages should not make use of these
2286           convenience copies unless the included package is explicitly
2287           intended to be used in this way.<footnote>
2288             For example, parts of the GNU build system work like this.
2289           </footnote>
2290           If the included code is already in the Debian archive in the
2291           form of a library, the Debian packaging should ensure that
2292           binary packages reference the libraries already in Debian and
2293           the convenience copy is not used.  If the included code is not
2294           already in Debian, it should be packaged separately as a
2295           prerequisite if possible.
2296           <footnote>
2297             Having multiple copies of the same code in Debian is
2298             inefficient, often creates either static linking or shared
2299             library conflicts, and, most importantly, increases the
2300             difficulty of handling security vulnerabilities in the
2301             duplicated code.
2302           </footnote>
2303         </p>
2304       </sect>
2305
2306       <sect id="readmesource">
2307         <heading>Source package handling:
2308           <file>debian/README.source</file></heading>
2309
2310         <p>
2311           If running <prgn>dpkg-source -x</prgn> on a source package
2312           doesn't produce the source of the package, ready for editing,
2313           and allow one to make changes and run
2314           <prgn>dpkg-buildpackage</prgn> to produce a modified package
2315           without taking any additional steps, creating a
2316           <file>debian/README.source</file> documentation file is
2317           recommended.  This file should explain how to do all of the
2318           following:
2319             <enumlist>
2320               <item>Generate the fully patched source, in a form ready for
2321               editing, that would be built to create Debian
2322               packages.  Doing this with a <tt>patch</tt> target in
2323               <file>debian/rules</file> is recommended; see
2324               <ref id="debianrules">.</item>
2325               <item>Modify the source and save those modifications so that
2326               they will be applied when building the package.</item>
2327               <item>Remove source modifications that are currently being
2328               applied when building the package.</item>
2329               <item>Optionally, document what steps are necessary to
2330               upgrade the Debian source package to a new upstream version,
2331               if applicable.</item>
2332             </enumlist>
2333           This explanation should include specific commands and mention
2334           any additional required Debian packages.  It should not assume
2335           familiarity with any specific Debian packaging system or patch
2336           management tools.
2337         </p>
2338
2339         <p>
2340           This explanation may refer to a documentation file installed by
2341           one of the package's build dependencies provided that the
2342           referenced documentation clearly explains these tasks and is not
2343           a general reference manual.
2344         </p>
2345
2346         <p>
2347           <file>debian/README.source</file> may also include any other
2348           information that would be helpful to someone modifying the
2349           source package.  Even if the package doesn't fit the above
2350           description, maintainers are encouraged to document in a
2351           <file>debian/README.source</file> file any source package with a
2352           particularly complex or unintuitive source layout or build
2353           system (for example, a package that builds the same source
2354           multiple times to generate different binary packages).
2355         </p>
2356       </sect>
2357     </chapt>
2358
2359
2360     <chapt id="controlfields">
2361       <heading>Control files and their fields</heading>
2362
2363       <p>
2364         The package management system manipulates data represented in
2365         a common format, known as <em>control data</em>, stored in
2366         <em>control files</em>.
2367         Control files are used for source packages, binary packages and
2368         the <file>.changes</file> files which control the installation
2369         of uploaded files<footnote>
2370             <prgn>dpkg</prgn>'s internal databases are in a similar
2371             format.
2372         </footnote>.
2373       </p>
2374
2375       <sect id="controlsyntax">
2376         <heading>Syntax of control files</heading>
2377
2378         <p>
2379           A control file consists of one or more paragraphs of
2380           fields<footnote>
2381                 The paragraphs are also sometimes referred to as stanzas.
2382           </footnote>.
2383           The paragraphs are separated by blank lines.  Some control
2384           files allow only one paragraph; others allow several, in
2385           which case each paragraph usually refers to a different
2386           package.  (For example, in source packages, the first
2387           paragraph refers to the source package, and later paragraphs
2388           refer to binary packages generated from the source.)
2389         </p>
2390
2391         <p>
2392           Each paragraph consists of a series of data fields; each
2393           field consists of the field name, followed by a colon and
2394           then the data/value associated with that field.  It ends at
2395           the end of the (logical) line.  Horizontal whitespace
2396           (spaces and tabs) may occur immediately before or after the
2397           value and is ignored there; it is conventional to put a
2398           single space after the colon.  For example, a field might
2399           be:
2400           <example compact="compact">
2401 Package: libc6
2402           </example>
2403           the field name is <tt>Package</tt> and the field value
2404           <tt>libc6</tt>.
2405         </p>
2406
2407         <p>
2408           A paragraph must not contain more than one instance of a
2409           particular field name.
2410         </p>
2411
2412         <p>
2413           Many fields' values may span several lines; in this case
2414           each continuation line must start with a space or a tab.
2415           Any trailing spaces or tabs at the end of individual
2416           lines of a field value are ignored. 
2417         </p>
2418
2419         <p>
2420           In fields where it is specified that lines may not wrap,
2421           only a single line of data is allowed and whitespace is not
2422           significant in a field body. Whitespace must not appear
2423           inside names (of packages, architectures, files or anything
2424           else) or version numbers, or between the characters of
2425           multi-character version relationships.
2426         </p>
2427
2428         <p>
2429           Field names are not case-sensitive, but it is usual to
2430           capitalize the field names using mixed case as shown below.
2431           Field values are case-sensitive unless the description of the
2432           field says otherwise.
2433         </p>
2434
2435         <p>
2436           Blank lines, or lines consisting only of spaces and tabs,
2437           are not allowed within field values or between fields - that
2438           would mean a new paragraph.
2439         </p>
2440
2441         <p>
2442           All control files must be encoded in UTF-8.
2443         </p>
2444       </sect>
2445
2446       <sect id="sourcecontrolfiles">
2447         <heading>Source package control files -- <file>debian/control</file></heading>
2448
2449         <p>
2450           The <file>debian/control</file> file contains the most vital
2451           (and version-independent) information about the source package
2452           and about the binary packages it creates.
2453         </p>
2454
2455         <p>
2456           The first paragraph of the control file contains information about
2457           the source package in general. The subsequent sets each describe a
2458           binary package that the source tree builds.
2459         </p>
2460
2461         <p>
2462           The fields in the general paragraph (the first one, for the source
2463           package) are:
2464
2465           <list compact="compact">
2466             <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2467             <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2468             <item><qref id="f-Uploaders"><tt>Uploaders</tt></qref></item>
2469             <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2470             <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2471             <item><qref id="sourcebinarydeps"><tt>Build-Depends</tt> et al</qref></item>
2472             <item><qref id="f-Standards-Version"><tt>Standards-Version</tt></qref> (recommended)</item>
2473             <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2474           </list>
2475         </p>
2476
2477         <p>
2478           The fields in the binary package paragraphs are:
2479
2480           <list compact="compact">
2481             <item><qref id="f-Package"><tt>Package</tt></qref> (mandatory)</item>
2482             <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2483             <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2484             <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2485             <item><qref id="f-Essential"><tt>Essential</tt></qref></item>
2486             <item><qref id="binarydeps"><tt>Depends</tt> et al</qref></item>
2487             <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2488             <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2489           </list>
2490         </p>
2491
2492         <p>
2493           The syntax and semantics of the fields are described below.
2494         </p>
2495
2496         <p>
2497           These fields are used by <prgn>dpkg-gencontrol</prgn> to
2498           generate control files for binary packages (see below), by
2499           <prgn>dpkg-genchanges</prgn> to generate the
2500           <tt>.changes</tt> file to accompany the upload, and by
2501           <prgn>dpkg-source</prgn> when it creates the
2502           <file>.dsc</file> source control file as part of a source
2503           archive. Many fields are permitted to span multiple lines in
2504           <file>debian/control</file> but not in any other control
2505           file. These tools are responsible for removing the line
2506           breaks from such fields when using fields from
2507           <file>debian/control</file> to generate other control files.
2508         </p>
2509
2510         <p>
2511           The fields here may contain variable references - their
2512           values will be substituted by <prgn>dpkg-gencontrol</prgn>,
2513           <prgn>dpkg-genchanges</prgn> or <prgn>dpkg-source</prgn>
2514           when they generate output control files.
2515           See <ref id="substvars"> for details.
2516         </p>
2517
2518         <p>
2519           In addition to the control file syntax described <qref
2520           id="controlsyntax">above</qref>, this file may also contain
2521           comment lines starting with <tt>#</tt> without any preceding
2522           whitespace.  All such lines are ignored, even in the middle of
2523           continuation lines for a multiline field, and do not end a
2524           multiline field.
2525         </p>
2526
2527       </sect>
2528
2529       <sect id="binarycontrolfiles">
2530         <heading>Binary package control files -- <file>DEBIAN/control</file></heading>
2531
2532         <p>
2533           The <file>DEBIAN/control</file> file contains the most vital
2534           (and version-dependent) information about a binary package.
2535         </p>
2536
2537         <p>
2538           The fields in this file are:
2539
2540           <list compact="compact">
2541             <item><qref id="f-Package"><tt>Package</tt></qref> (mandatory)</item>
2542             <item><qref id="f-Source"><tt>Source</tt></qref></item>
2543             <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2544             <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2545             <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2546             <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2547             <item><qref id="f-Essential"><tt>Essential</tt></qref></item>
2548             <item><qref id="binarydeps"><tt>Depends</tt> et al</qref></item>
2549             <item><qref id="f-Installed-Size"><tt>Installed-Size</tt></qref></item>
2550             <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2551             <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2552             <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2553           </list>
2554         </p>
2555       </sect>
2556
2557       <sect id="debiansourcecontrolfiles">
2558         <heading>Debian source control files -- <tt>.dsc</tt></heading>
2559
2560         <p>
2561           This file contains a series of fields, identified and
2562           separated just like the fields in the control file of
2563           a binary package.  The fields are listed below; their
2564           syntax is described above, in <ref id="pkg-controlfields">.
2565
2566         <list compact="compact">
2567           <item><qref id="f-Format"><tt>Format</tt></qref> (mandatory)</item>
2568           <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2569           <item><qref id="f-Binary"><tt>Binary</tt></qref></item>
2570           <item><qref id="f-Architecture"><tt>Architecture</tt></qref></item>
2571           <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2572           <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2573           <item><qref id="f-Uploaders"><tt>Uploaders</tt></qref></item>
2574           <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2575           <item><qref id="f-Standards-Version"><tt>Standards-Version</tt></qref> (recommended)</item>
2576           <item><qref id="sourcebinarydeps"><tt>Build-Depends</tt> et al</qref></item>
2577           <item><qref id="f-Checksums"><tt>Checksums-Sha1</tt>
2578               and <tt>Checksums-Sha256</tt> (recommended)</item>
2579           <item><qref id="f-Files"><tt>Files</tt></qref> (mandatory)</item>
2580         </list>
2581         </p>
2582
2583         <p>
2584           The source package control file is generated by
2585           <prgn>dpkg-source</prgn> when it builds the source
2586           archive, from other files in the source package,
2587           described above.  When unpacking, it is checked against
2588           the files and directories in the other parts of the
2589           source package.
2590         </p>
2591
2592       </sect>
2593
2594       <sect id="debianchangesfiles">
2595         <heading>Debian changes files -- <file>.changes</file></heading>
2596
2597         <p>
2598           The .changes files are used by the Debian archive maintenance
2599           software to process updates to packages. They contain one
2600           paragraph which contains information from the
2601           <tt>debian/control</tt> file and other data about the
2602           source package gathered via <tt>debian/changelog</tt>
2603           and <tt>debian/rules</tt>.
2604         </p>
2605
2606         <p>
2607           The fields in this file are:
2608
2609           <list compact="compact">
2610             <item><qref id="f-Format"><tt>Format</tt></qref> (mandatory)</item>
2611             <item><qref id="f-Date"><tt>Date</tt></qref> (mandatory)</item>
2612             <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2613             <item><qref id="f-Binary"><tt>Binary</tt></qref> (mandatory)</item>
2614             <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2615             <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2616             <item><qref id="f-Distribution"><tt>Distribution</tt></qref> (mandatory)</item>
2617             <item><qref id="f-Urgency"><tt>Urgency</tt></qref> (recommended)</item>
2618             <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2619             <item><qref id="f-Changed-By"><tt>Changed-By</tt></qref></item>
2620             <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2621             <item><qref id="f-Closes"><tt>Closes</tt></qref></item>
2622             <item><qref id="f-Changes"><tt>Changes</tt></qref> (mandatory)</item>
2623             <item><qref id="f-Checksums"><tt>Checksums-Sha1</tt>
2624                 and <tt>Checksums-Sha256</tt> (recommended)</item>
2625             <item><qref id="f-Files"><tt>Files</tt></qref> (mandatory)</item>
2626           </list>
2627         </p>
2628       </sect>
2629
2630       <sect id="controlfieldslist">
2631         <heading>List of fields</heading>
2632
2633         <sect1 id="f-Source">
2634           <heading><tt>Source</tt></heading>
2635
2636           <p>
2637             This field identifies the source package name.
2638           </p>
2639
2640           <p>
2641             In <file>debian/control</file> or a <file>.dsc</file> file,
2642             this field must contain only the name of the source package.
2643           </p>
2644
2645           <p>
2646             In a binary package control file or a <file>.changes</file>
2647             file, the source package name may be followed by a version
2648             number in parentheses<footnote>
2649                 It is customary to leave a space after the package name
2650                 if a version number is specified.
2651             </footnote>.
2652             This version number may be omitted (and is, by
2653             <prgn>dpkg-gencontrol</prgn>) if it has the same value as
2654             the <tt>Version</tt> field of the binary package in
2655             question.  The field itself may be omitted from a binary
2656             package control file when the source package has the same
2657             name and version as the binary package.
2658           </p>
2659
2660           <p>
2661             Package names (both source and binary,
2662             see <ref id="f-Package">) must consist only of lower case
2663             letters (<tt>a-z</tt>), digits (<tt>0-9</tt>), plus
2664             (<tt>+</tt>) and minus (<tt>-</tt>) signs, and periods
2665             (<tt>.</tt>).  They must be at least two characters long and
2666             must start with an alphanumeric character.
2667           </p>
2668         </sect1>
2669
2670         <sect1 id="f-Maintainer">
2671           <heading><tt>Maintainer</tt></heading>
2672
2673           <p>
2674             The package maintainer's name and email address.  The name
2675             must come first, then the email address inside angle
2676             brackets <tt>&lt;&gt</tt> (in RFC822 format).
2677           </p>
2678
2679           <p>
2680             If the maintainer's name contains a full stop then the
2681             whole field will not work directly as an email address due
2682             to a misfeature in the syntax specified in RFC822; a
2683             program using this field as an address must check for this
2684             and correct the problem if necessary (for example by
2685             putting the name in round brackets and moving it to the
2686             end, and bringing the email address forward).
2687           </p>
2688         </sect1>
2689
2690         <sect1 id="f-Uploaders">
2691           <heading><tt>Uploaders</tt></heading>
2692
2693           <p>
2694             List of the names and email addresses of co-maintainers of
2695             the package, if any. If the package has other maintainers
2696             beside the one named in the
2697             <qref id="f-Maintainer">Maintainer field</qref>, their names
2698             and email addresses should be listed here. The format is the
2699             same as that of the Maintainer tag, and multiple entries must
2700             be comma separated.  This is an optional field.
2701           </p>
2702
2703           <p>
2704             Any parser that interprets the Uploaders field in
2705             <file>debian/control</file> must permit it to span multiple
2706             lines.  Line breaks in an Uploaders field that spans multiple
2707             lines are not significant and the semantics of the field are
2708             the same as if the line breaks had not been present.
2709           </p>
2710         </sect1>
2711
2712         <sect1 id="f-Changed-By">
2713           <heading><tt>Changed-By</tt></heading>
2714
2715           <p>
2716             The name and email address of the person who prepared this
2717             version of the package, usually a maintainer.  The syntax is
2718             the same as for the <qref id="f-Maintainer">Maintainer
2719             field</qref>.
2720           </p>
2721         </sect1>
2722
2723         <sect1 id="f-Section">
2724           <heading><tt>Section</tt></heading>
2725
2726           <p>
2727             This field specifies an application area into which the package
2728             has been classified. See <ref id="subsections">.
2729           </p>
2730
2731           <p>
2732             When it appears in the <file>debian/control</file> file,
2733             it gives the value for the subfield of the same name in
2734             the <tt>Files</tt> field of the <file>.changes</file> file.
2735             It also gives the default for the same field in the binary
2736             packages.
2737           </p>
2738         </sect1>
2739
2740         <sect1 id="f-Priority">
2741           <heading><tt>Priority</tt></heading>
2742
2743           <p>
2744             This field represents how important it is that the user
2745             have the package installed. See <ref id="priorities">.
2746           </p>
2747
2748           <p>
2749             When it appears in the <file>debian/control</file> file,
2750             it gives the value for the subfield of the same name in
2751             the <tt>Files</tt> field of the <file>.changes</file> file.
2752             It also gives the default for the same field in the binary
2753             packages.
2754           </p>
2755         </sect1>
2756
2757         <sect1 id="f-Package">
2758           <heading><tt>Package</tt></heading>
2759
2760           <p>
2761             The name of the binary package.
2762           </p>
2763
2764           <p>
2765             Binary package names must follow the same syntax and
2766             restrictions as source package names.  See <ref id="f-Source">
2767             for the details.
2768           </p>
2769         </sect1>
2770
2771         <sect1 id="f-Architecture">
2772           <heading><tt>Architecture</tt></heading>
2773
2774           <p>
2775             Depending on context and the control file used, the
2776             <tt>Architecture</tt> field can include the following sets of
2777             values:
2778             <list>
2779                 <item>
2780                   A unique single word identifying a Debian machine
2781                   architecture as described in <ref id="arch-spec">.
2782                 </item>
2783                 <item>
2784                   An architecture wildcard identifying a set of Debian
2785                   machine architectures, see <ref id="arch-wildcard-spec">.
2786                   <tt>any</tt> matches all Debian machine architectures
2787                   and is the most frequently used.
2788                 </item>
2789                 <item>
2790                   <tt>all</tt>, which indicates an
2791                   architecture-independent package.
2792                 </item>
2793                 <item>
2794                   <tt>source</tt>, which indicates a source package.
2795                 </item>
2796             </list>
2797           </p>
2798
2799           <p>
2800             In the main <file>debian/control</file> file in the source
2801             package, this field may contain the special
2802             value <tt>all</tt>, the special architecture
2803             wildcard <tt>any</tt>, or a list of specific and wildcard
2804             architectures separated by spaces.  If <tt>all</tt>
2805             or <tt>any</tt> appears, that value must be the entire
2806             contents of the field.  Most packages will use
2807             either <tt>all</tt> or <tt>any</tt>.
2808           </p>
2809
2810           <p>
2811             Specifying a specific list of architectures indicates that the
2812             source will build an architecture-dependent package only on
2813             architectures included in the list.  Specifying a list of
2814             architecture wildcards indicates that the source will build an
2815             architecture-dependent package on only those architectures
2816             that match any of the specified architecture wildcards.
2817             Specifying a list of architectures or architecture wildcards
2818             other than <tt>any</tt> is for the minority of cases where a
2819             program is not portable or is not useful on some
2820             architectures.  Where possible, the program should be made
2821             portable instead.
2822           </p>
2823
2824           <p>
2825             In the source package control file <file>.dsc</file>, this
2826             field may contain either the architecture
2827             wildcard <tt>any</tt> or a list of architectures and
2828             architecture wildcards separated by spaces. If a list is
2829             given, it may include (or consist solely of) the special
2830             value <tt>all</tt>.  In other words, in <file>.dsc</file>
2831             files unlike the <file>debian/control</file>, <tt>all</tt> may
2832             occur in combination with specific architectures.
2833             The <tt>Architecture</tt> field in the source package control
2834             file <file>.dsc</file> is generally constructed from
2835             the <tt>Architecture</tt> fields in
2836             the <file>debian/control</file> in the source package.
2837           </p>
2838
2839           <p>
2840             Specifying <tt>any</tt> indicates that the source package
2841             isn't dependent on any particular architecture and should
2842             compile fine on any one. The produced binary package(s)
2843             will either be specific to whatever the current build
2844             architecture is or will be architecture-independent.
2845           </p>
2846
2847           <p>
2848             Specifying only <tt>all</tt> indicates that the source package
2849             will only build architecture-independent packages.  If this is
2850             the case, <tt>all</tt> must be used rather than <tt>any</tt>;
2851             <tt>any</tt> implies that the source package will build at
2852             least one architecture-dependent package.
2853           </p>
2854
2855           <p>
2856             Specifying a list of architectures or architecture wildcards
2857             indicates that the source will build an architecture-dependent
2858             package, and will only work correctly on the listed or
2859             matching architectures.  If the source package also builds at
2860             least one architecture-independent package, <tt>all</tt> will
2861             also be included in the list.
2862           </p>
2863
2864           <p>
2865             In a <file>.changes</file> file, the <tt>Architecture</tt>
2866             field lists the architecture(s) of the package(s) currently
2867             being uploaded.  This will be a list; if the source for the
2868             package is also being uploaded, the special
2869             entry <tt>source</tt> is also present.  <tt>all</tt> will be
2870             present if any architecture-independent packages are being
2871             uploaded.  Architecture wildcards such as <tt>any</tt> must
2872             never occur in the <tt>Architecture</tt> field in
2873             the <file>.changes</file> file.
2874           </p>
2875
2876           <p>
2877             See <ref id="debianrules"> for information on how to get
2878             the architecture for the build process.
2879           </p>
2880         </sect1>
2881
2882         <sect1 id="f-Essential">
2883           <heading><tt>Essential</tt></heading>
2884
2885           <p>
2886             This is a boolean field which may occur only in the
2887             control file of a binary package or in a per-package fields
2888             paragraph of a main source control data file.
2889           </p>
2890
2891           <p>
2892             If set to <tt>yes</tt> then the package management system
2893             will refuse to remove the package (upgrading and replacing
2894             it is still possible). The other possible value is <tt>no</tt>,
2895             which is the same as not having the field at all.
2896           </p>
2897         </sect1>
2898
2899         <sect1>
2900           <heading>Package interrelationship fields:
2901             <tt>Depends</tt>, <tt>Pre-Depends</tt>,
2902             <tt>Recommends</tt>, <tt>Suggests</tt>,
2903             <tt>Breaks</tt>, <tt>Conflicts</tt>,
2904             <tt>Provides</tt>, <tt>Replaces</tt>, <tt>Enhances</tt>
2905           </heading>
2906
2907           <p>
2908             These fields describe the package's relationships with
2909             other packages.  Their syntax and semantics are described
2910             in <ref id="relationships">.</p>
2911         </sect1>
2912
2913         <sect1 id="f-Standards-Version">
2914           <heading><tt>Standards-Version</tt></heading>
2915
2916           <p>
2917             The most recent version of the standards (the policy
2918             manual and associated texts) with which the package
2919             complies.
2920           </p>
2921
2922           <p>
2923             The version number has four components: major and minor
2924             version number and major and minor patch level.  When the
2925             standards change in a way that requires every package to
2926             change the major number will be changed.  Significant
2927             changes that will require work in many packages will be
2928             signaled by a change to the minor number.  The major patch
2929             level will be changed for any change to the meaning of the
2930             standards, however small; the minor patch level will be
2931             changed when only cosmetic, typographical or other edits
2932             are made which neither change the meaning of the document
2933             nor affect the contents of packages.
2934           </p>
2935
2936           <p>
2937             Thus only the first three components of the policy version
2938             are significant in the <em>Standards-Version</em> control
2939             field, and so either these three components or all four
2940             components may be specified.<footnote>
2941                 In the past, people specified the full version number
2942                 in the Standards-Version field, for example "2.3.0.0".
2943                 Since minor patch-level changes don't introduce new
2944                 policy, it was thought it would be better to relax
2945                 policy and only require the first 3 components to be
2946                 specified, in this example "2.3.0".  All four
2947                 components may still be used if someone wishes to do so.
2948             </footnote>
2949           </p>
2950
2951         </sect1>
2952
2953         <sect1 id="f-Version">
2954           <heading><tt>Version</tt></heading>
2955
2956           <p>
2957             The version number of a package. The format is:
2958             [<var>epoch</var><tt>:</tt>]<var>upstream_version</var>[<tt>-</tt><var>debian_revision</var>]
2959           </p>
2960
2961           <p>
2962             The three components here are:
2963             <taglist>
2964               <tag><var>epoch</var></tag>
2965               <item>
2966                 <p>
2967                   This is a single (generally small) unsigned integer.  It
2968                   may be omitted, in which case zero is assumed.  If it is
2969                   omitted then the <var>upstream_version</var> may not
2970                   contain any colons.
2971                 </p>
2972
2973                 <p>
2974                   It is provided to allow mistakes in the version numbers
2975                   of older versions of a package, and also a package's
2976                   previous version numbering schemes, to be left behind.
2977                 </p>
2978               </item>
2979
2980               <tag><var>upstream_version</var></tag>
2981               <item>
2982                 <p>
2983                   This is the main part of the version number.  It is
2984                   usually the version number of the original ("upstream")
2985                   package from which the <file>.deb</file> file has been made,
2986                   if this is applicable.  Usually this will be in the same
2987                   format as that specified by the upstream author(s);
2988                   however, it may need to be reformatted to fit into the
2989                   package management system's format and comparison
2990                   scheme.
2991                 </p>
2992
2993                 <p>
2994                   The comparison behavior of the package management system
2995                   with respect to the <var>upstream_version</var> is
2996                   described below.  The <var>upstream_version</var>
2997                   portion of the version number is mandatory.
2998                 </p>
2999
3000                 <p>
3001                   The <var>upstream_version</var> may contain only
3002                   alphanumerics<footnote>
3003                         Alphanumerics are <tt>A-Za-z0-9</tt> only.
3004                   </footnote>
3005                   and the characters <tt>.</tt> <tt>+</tt> <tt>-</tt>
3006                   <tt>:</tt> <tt>~</tt> (full stop, plus, hyphen, colon,
3007                   tilde) and should start with a digit.  If there is no
3008                   <var>debian_revision</var> then hyphens are not allowed;
3009                   if there is no <var>epoch</var> then colons are not
3010                   allowed.
3011                 </p>
3012               </item>
3013
3014               <tag><var>debian_revision</var></tag>
3015               <item>
3016                 <p>
3017                   This part of the version number specifies the version of
3018                   the Debian package based on the upstream version.  It
3019                   may contain only alphanumerics and the characters
3020                   <tt>+</tt> <tt>.</tt> <tt>~</tt> (plus, full stop,
3021                   tilde) and is compared in the same way as the
3022                   <var>upstream_version</var> is.
3023                 </p>
3024
3025                 <p>
3026                   It is optional; if it isn't present then the
3027                   <var>upstream_version</var> may not contain a hyphen.
3028                   This format represents the case where a piece of
3029                   software was written specifically to be turned into a
3030                   Debian package, and so there is only one "debianisation"
3031                   of it and therefore no revision indication is required.
3032                 </p>
3033
3034                 <p>
3035                   It is conventional to restart the
3036                   <var>debian_revision</var> at <tt>1</tt> each time the
3037                   <var>upstream_version</var> is increased.
3038                 </p>
3039
3040                 <p>
3041                   The package management system will break the version
3042                   number apart at the last hyphen in the string (if there
3043                   is one) to determine the <var>upstream_version</var> and
3044                   <var>debian_revision</var>.  The absence of a
3045                   <var>debian_revision</var> is equivalent to a
3046                   <var>debian_revision</var> of <tt>0</tt>.
3047                 </p>
3048               </item>
3049             </taglist>
3050           </p>
3051
3052           <p>
3053             When comparing two version numbers, first the <var>epoch</var>
3054             of each are compared, then the <var>upstream_version</var> if
3055             <var>epoch</var> is equal, and then <var>debian_revision</var>
3056             if <var>upstream_version</var> is also equal.
3057             <var>epoch</var> is compared numerically.  The
3058             <var>upstream_version</var> and <var>debian_revision</var>
3059             parts are compared by the package management system using the
3060             following algorithm:
3061           </p>
3062
3063           <p>
3064             The strings are compared from left to right.
3065           </p>
3066
3067           <p>
3068             First the initial part of each string consisting entirely of
3069             non-digit characters is determined.  These two parts (one of
3070             which may be empty) are compared lexically.  If a difference
3071             is found it is returned.  The lexical comparison is a
3072             comparison of ASCII values modified so that all the letters
3073             sort earlier than all the non-letters and so that a tilde
3074             sorts before anything, even the end of a part.  For example,
3075             the following parts are in sorted order from earliest to
3076             latest: <tt>~~</tt>, <tt>~~a</tt>, <tt>~</tt>, the empty part,
3077             <tt>a</tt>.<footnote>
3078               One common use of <tt>~</tt> is for upstream pre-releases.
3079               For example, <tt>1.0~beta1~svn1245</tt> sorts earlier than
3080               <tt>1.0~beta1</tt>, which sorts earlier than <tt>1.0</tt>.
3081             </footnote>
3082           </p>
3083
3084           <p>
3085             Then the initial part of the remainder of each string which
3086             consists entirely of digit characters is determined.  The
3087             numerical values of these two parts are compared, and any
3088             difference found is returned as the result of the comparison.
3089             For these purposes an empty string (which can only occur at
3090             the end of one or both version strings being compared) counts
3091             as zero.
3092           </p>
3093
3094           <p>
3095             These two steps (comparing and removing initial non-digit
3096             strings and initial digit strings) are repeated until a
3097             difference is found or both strings are exhausted.
3098           </p>
3099
3100           <p>
3101             Note that the purpose of epochs is to allow us to leave behind
3102             mistakes in version numbering, and to cope with situations
3103             where the version numbering scheme changes.  It is
3104             <em>not</em> intended to cope with version numbers containing
3105             strings of letters which the package management system cannot
3106             interpret (such as <tt>ALPHA</tt> or <tt>pre-</tt>), or with
3107             silly orderings.<footnote>
3108               The author of this manual has heard of a package whose
3109               versions went <tt>1.1</tt>, <tt>1.2</tt>, <tt>1.3</tt>,
3110               <tt>1</tt>, <tt>2.1</tt>, <tt>2.2</tt>, <tt>2</tt> and so
3111               forth.
3112             </footnote>
3113           </p>
3114         </sect1>
3115
3116         <sect1 id="f-Description">
3117           <heading><tt>Description</tt></heading>
3118
3119           <p>
3120             In a source or binary control file, the <tt>Description</tt>
3121             field contains a description of the binary package, consisting
3122             of two parts, the synopsis or the short description, and the
3123             long description. The field's format is as follows:
3124           </p>
3125
3126           <p>
3127 <example>
3128         Description: &lt;single line synopsis&gt;
3129          &lt;extended description over several lines&gt;
3130 </example>
3131           </p>
3132
3133           <p>
3134             The lines in the extended description can have these formats:
3135           </p>
3136
3137           <p><list>
3138
3139             <item>
3140               Those starting with a single space are part of a paragraph.
3141               Successive lines of this form will be word-wrapped when
3142               displayed. The leading space will usually be stripped off.
3143             </item>
3144
3145             <item>
3146               Those starting with two or more spaces. These will be
3147               displayed verbatim. If the display cannot be panned
3148               horizontally, the displaying program will line wrap them "hard"
3149               (i.e., without taking account of word breaks). If it can they
3150               will be allowed to trail off to the right. None, one or two
3151               initial spaces may be deleted, but the number of spaces
3152               deleted from each line will be the same (so that you can have
3153               indenting work correctly, for example).
3154             </item>
3155
3156             <item>
3157               Those containing a single space followed by a single full stop
3158               character. These are rendered as blank lines. This is the
3159               <em>only</em> way to get a blank line<footnote>
3160                 Completely empty lines will not be rendered as blank lines.
3161                 Instead, they will cause the parser to think you're starting
3162                 a whole new record in the control file, and will therefore
3163                 likely abort with an error.
3164               </footnote>.
3165             </item>
3166
3167             <item>
3168               Those containing a space, a full stop and some more characters.
3169               These are for future expansion. Do not use them.
3170             </item>
3171
3172           </list></p>
3173
3174           <p>
3175             Do not use tab characters.  Their effect is not predictable.
3176           </p>
3177
3178           <p>
3179             See <ref id="descriptions"> for further information on this.
3180           </p>
3181
3182           <p>
3183             In a <file>.changes</file> file, the <tt>Description</tt>
3184             field contains a summary of the descriptions for the packages
3185             being uploaded.  For this case, the first line of the field
3186             value (the part on the same line as <tt>Description:</tt>) is
3187             always empty.  The content of the field is expressed as
3188             continuation lines, one line per package.  Each line is
3189             indented by one space and contains the name of a binary
3190             package, a space, a hyphen (<tt>-</tt>), a space, and the
3191             short description line from that package.
3192           </p>
3193         </sect1>
3194
3195         <sect1 id="f-Distribution">
3196           <heading><tt>Distribution</tt></heading>
3197
3198           <p>
3199             In a <file>.changes</file> file or parsed changelog output
3200             this contains the (space-separated) name(s) of the
3201             distribution(s) where this version of the package should
3202             be installed.  Valid distributions are determined by the
3203             archive maintainers.<footnote>
3204               Example distribution names in the Debian archive used in
3205               <file>.changes</file> files are:
3206                 <taglist compact="compact">
3207                   <tag><em>unstable</em></tag>
3208                   <item>
3209                     This distribution value refers to the
3210                     <em>developmental</em> part of the Debian distribution
3211                     tree.  Most new packages, new upstream versions of
3212                     packages and bug fixes go into the <em>unstable</em>
3213                     directory tree.
3214                   </item>
3215
3216                   <tag><em>experimental</em></tag>
3217                   <item>
3218                     The packages with this distribution value are deemed
3219                     by their maintainers to be high risk.  Oftentimes they
3220                     represent early beta or developmental packages from
3221                     various sources that the maintainers want people to
3222                     try, but are not ready to be a part of the other parts
3223                     of the Debian distribution tree.
3224                   </item>
3225                 </taglist>
3226
3227                 <p>
3228                   Others are used for updating stable releases or for
3229                   security uploads.  More information is available in the
3230                   Debian Developer's Reference, section "The Debian
3231                   archive".
3232                 </p>
3233             </footnote>
3234             The Debian archive software only supports listing a single
3235             distribution.  Migration of packages to other distributions is
3236             handled outside of the upload process.
3237           </p>
3238         </sect1>
3239
3240         <sect1 id="f-Date">
3241           <heading><tt>Date</tt></heading>
3242
3243           <p>
3244             This field includes the date the package was built or last
3245             edited.  It must be in the same format as the <var>date</var>
3246             in a <file>debian/changelog</file> entry.
3247           </p>
3248
3249           <p>
3250             The value of this field is usually extracted from the
3251             <file>debian/changelog</file> file - see
3252             <ref id="dpkgchangelog">).
3253           </p>
3254         </sect1>
3255
3256         <sect1 id="f-Format">
3257           <heading><tt>Format</tt></heading>
3258
3259           <p>
3260             This field specifies a format revision for the file.
3261             The most current format described in the Policy Manual
3262             is version <strong>1.5</strong>.  The syntax of the
3263             format value is the same as that of a package version
3264             number except that no epoch or Debian revision is allowed
3265             - see <ref id="f-Version">.
3266           </p>
3267         </sect1>
3268
3269         <sect1 id="f-Urgency">
3270           <heading><tt>Urgency</tt></heading>
3271
3272           <p>
3273             This is a description of how important it is to upgrade to
3274             this version from previous ones.  It consists of a single
3275             keyword taking one of the values <tt>low</tt>,
3276             <tt>medium</tt>, <tt>high</tt>, <tt>emergency</tt>, or
3277             <tt>critical</tt><footnote>
3278               Other urgency values are supported with configuration
3279               changes in the archive software but are not used in Debian.
3280               The urgency affects how quickly a package will be considered
3281               for inclusion into the <tt>testing</tt> distribution and
3282               gives an indication of the importance of any fixes included
3283               in the upload.  <tt>Emergency</tt> and <tt>critical</tt> are
3284               treated as synonymous.
3285             </footnote> (not case-sensitive) followed by an optional
3286             commentary (separated by a space) which is usually in
3287             parentheses.  For example:
3288
3289             <example>
3290   Urgency: low (HIGH for users of diversions)
3291             </example>
3292
3293           </p>
3294
3295           <p>
3296             The value of this field is usually extracted from the
3297             <file>debian/changelog</file> file - see
3298             <ref id="dpkgchangelog">.
3299           </p>
3300         </sect1>
3301
3302         <sect1 id="f-Changes">
3303           <heading><tt>Changes</tt></heading>
3304
3305           <p>
3306             This field contains the human-readable changes data, describing
3307             the differences between the last version and the current one.
3308           </p>
3309
3310           <p>
3311             The first line of the field value (the part on the same line
3312             as <tt>Changes:</tt>) is always empty.  The content of the
3313             field is expressed as continuation lines, with each line
3314             indented by at least one space.  Blank lines must be
3315             represented by a line consisting only of a space and a full
3316             stop (<tt>.</tt>).
3317           </p>
3318
3319           <p>
3320             The value of this field is usually extracted from the
3321             <file>debian/changelog</file> file - see
3322             <ref id="dpkgchangelog">).
3323           </p>
3324
3325           <p>
3326             Each version's change information should be preceded by a
3327             "title" line giving at least the version, distribution(s)
3328             and urgency, in a human-readable way.
3329           </p>
3330
3331           <p>
3332             If data from several versions is being returned the entry
3333             for the most recent version should be returned first, and
3334             entries should be separated by the representation of a
3335             blank line (the "title" line may also be followed by the
3336             representation of a blank line).
3337           </p>
3338         </sect1>
3339
3340         <sect1 id="f-Binary">
3341           <heading><tt>Binary</tt></heading>
3342
3343           <p>
3344             This field is a list of binary packages.  Its syntax and
3345             meaning varies depending on the control file in which it
3346             appears.
3347           </p>
3348
3349           <p>
3350             When it appears in the <file>.dsc</file> file, it lists binary
3351             packages which a source package can produce, separated by
3352             commas<footnote>
3353                 A space after each comma is conventional.
3354             </footnote>.  It may span multiple lines.  The source package
3355             does not necessarily produce all of these binary packages for
3356             every architecture.  The source control file doesn't contain
3357             details of which architectures are appropriate for which of
3358             the binary packages.
3359           </p>
3360
3361           <p>
3362             When it appears in a <file>.changes</file> file, it lists the
3363             names of the binary packages being uploaded, separated by
3364             whitespace (not commas).  It may span multiple lines.
3365           </p>
3366         </sect1>
3367
3368         <sect1 id="f-Installed-Size">
3369           <heading><tt>Installed-Size</tt></heading>
3370
3371           <p>
3372             This field appears in the control files of binary packages,
3373             and in the <file>Packages</file> files.  It gives an estimate
3374             of the total amount of disk space required to install the
3375             named package.  Actual installed size may vary based on block
3376             size, file system properties, or actions taken by package
3377             maintainer scripts.
3378           </p>
3379
3380           <p>
3381             The disk space is given as the integer value of the estimated
3382             installed size in bytes, divided by 1024 and rounded up.
3383           </p>
3384         </sect1>
3385
3386         <sect1 id="f-Files">
3387           <heading><tt>Files</tt></heading>
3388
3389           <p>
3390             This field contains a list of files with information about
3391             each one.  The exact information and syntax varies with
3392             the context.
3393           </p>
3394
3395           <p>
3396             In all cases, Files is a multiline field.  The first line of
3397             the field value (the part on the same line as <tt>Files:</tt>)
3398             is always empty.  The content of the field is expressed as
3399             continuation lines, one line per file.  Each line must be
3400             indented by one space and contain a number of sub-fields,
3401             separated by spaces, as described below.
3402           </p>
3403
3404           <p>
3405             In the <file>.dsc</file> file, each line contains the MD5
3406             checksum, size and filename of the tar file and (if
3407             applicable) diff file which make up the remainder of the
3408             source package<footnote>
3409               That is, the parts which are not the <tt>.dsc</tt>.
3410             </footnote>.  For example:
3411             <example>
3412 Files:
3413  c6f698f19f2a2aa07dbb9bbda90a2754 571925 example_1.2.orig.tar.gz
3414  938512f08422f3509ff36f125f5873ba 6220 example_1.2-1.diff.gz
3415             </example>
3416             The exact forms of the filenames are described
3417             in <ref id="pkg-sourcearchives">.
3418           </p>
3419
3420           <p>
3421             In the <file>.changes</file> file this contains one line per
3422             file being uploaded.  Each line contains the MD5 checksum,
3423             size, section and priority and the filename.  For example:
3424             <example>
3425 Files:
3426  4c31ab7bfc40d3cf49d7811987390357 1428 text extra example_1.2-1.dsc
3427  c6f698f19f2a2aa07dbb9bbda90a2754 571925 text extra example_1.2.orig.tar.gz
3428  938512f08422f3509ff36f125f5873ba 6220 text extra example_1.2-1.diff.gz
3429  7c98fe853b3bbb47a00e5cd129b6cb56 703542 text extra example_1.2-1_i386.deb
3430             </example>
3431             The <qref id="f-Section">section</qref>
3432             and <qref id="f-Priority">priority</qref> are the values of
3433             the corresponding fields in the main source control file.  If
3434             no section or priority is specified then <tt>-</tt> should be
3435             used, though section and priority values must be specified for
3436             new packages to be installed properly.
3437           </p>
3438
3439           <p>
3440             The special value <tt>byhand</tt> for the section in a
3441             <tt>.changes</tt> file indicates that the file in question
3442             is not an ordinary package file and must by installed by
3443             hand by the distribution maintainers.  If the section is
3444             <tt>byhand</tt> the priority should be <tt>-</tt>.
3445           </p>
3446
3447           <p>
3448             If a new Debian revision of a package is being shipped and
3449             no new original source archive is being distributed the
3450             <tt>.dsc</tt> must still contain the <tt>Files</tt> field
3451             entry for the original source archive
3452             <file><var>package</var>_<var>upstream-version</var>.orig.tar.gz</file>,
3453             but the <file>.changes</file> file should leave it out.  In
3454             this case the original source archive on the distribution
3455             site must match exactly, byte-for-byte, the original
3456             source archive which was used to generate the
3457             <file>.dsc</file> file and diff which are being uploaded.</p>
3458         </sect1>
3459
3460         <sect1 id="f-Closes">
3461           <heading><tt>Closes</tt></heading>
3462
3463           <p>
3464             A space-separated list of bug report numbers that the upload
3465             governed by the .changes file closes.
3466           </p>
3467         </sect1>
3468
3469         <sect1 id="f-Homepage">
3470           <heading><tt>Homepage</tt></heading>
3471
3472           <p>
3473             The URL of the web site for this package, preferably (when
3474             applicable) the site from which the original source can be
3475             obtained and any additional upstream documentation or
3476             information may be found.  The content of this field is a
3477             simple URL without any surrounding characters such as
3478             <tt>&lt;&gt;</tt>.
3479           </p>
3480         </sect1>
3481
3482         <sect1 id="f-Checksums">
3483           <heading><tt>Checksums-Sha1</tt>
3484             and <tt>Checksums-Sha256</tt></heading>
3485
3486           <p>
3487             These fields contain a list of files with a checksum and size
3488             for each one.  Both <tt>Checksums-Sha1</tt>
3489             and <tt>Checksums-Sha256</tt> have the same syntax and differ
3490             only in the checksum algorithm used: SHA-1
3491             for <tt>Checksums-Sha1</tt> and SHA-256
3492             for <tt>Checksums-Sha256</tt>.
3493           </p>
3494
3495           <p>
3496             <tt>Checksums-Sha1</tt> and <tt>Checksums-Sha256</tt> are
3497             multiline fields.  The first line of the field value (the part
3498             on the same line as <tt>Checksums-Sha1:</tt>
3499             or <tt>Checksums-Sha256:</tt>) is always empty.  The content
3500             of the field is expressed as continuation lines, one line per
3501             file.  Each line consists of the checksum, a space, the file
3502             size, a space, and the file name.  For example (from
3503             a <file>.changes</file> file):
3504             <example>
3505 Checksums-Sha1:
3506  1f418afaa01464e63cc1ee8a66a05f0848bd155c 1276 example_1.0-1.dsc
3507  a0ed1456fad61116f868b1855530dbe948e20f06 171602 example_1.0.orig.tar.gz
3508  5e86ecf0671e113b63388dac81dd8d00e00ef298 6137 example_1.0-1.debian.tar.gz
3509  71a0ff7da0faaf608481195f9cf30974b142c183 548402 example_1.0-1_i386.deb
3510 Checksums-Sha256:
3511  ac9d57254f7e835bed299926fd51bf6f534597cc3fcc52db01c4bffedae81272 1276 example_1.0-1.dsc
3512  0d123be7f51e61c4bf15e5c492b484054be7e90f3081608a5517007bfb1fd128 171602 example_1.0.orig.tar.gz
3513  f54ae966a5f580571ae7d9ef5e1df0bd42d63e27cb505b27957351a495bc6288 6137 example_1.0-1.debian.tar.gz
3514  3bec05c03974fdecd11d020fc2e8250de8404867a8a2ce865160c250eb723664 548402 example_1.0-1_i386.deb
3515             </example>
3516           </p>
3517
3518           <p>
3519             In the <file>.dsc</file> file, these fields should list all
3520             files that make up the source package.  In
3521             the <file>.changes</file> file, these fields should list all
3522             files being uploaded.  The list of files in these fields
3523             must match the list of files in the <tt>Files</tt> field.
3524           </p>
3525         </sect1>
3526
3527       </sect>
3528
3529       <sect>
3530         <heading>User-defined fields</heading>
3531
3532         <p>
3533           Additional user-defined fields may be added to the
3534           source package control file.  Such fields will be
3535           ignored, and not copied to (for example) binary or
3536           source package control files or upload control files.
3537         </p>
3538
3539         <p>
3540           If you wish to add additional unsupported fields to
3541           these output files you should use the mechanism
3542           described here.
3543         </p>
3544
3545         <p>
3546           Fields in the main source control information file with
3547           names starting <tt>X</tt>, followed by one or more of
3548           the letters <tt>BCS</tt> and a hyphen <tt>-</tt>, will
3549           be copied to the output files.  Only the part of the
3550           field name after the hyphen will be used in the output
3551           file.  Where the letter <tt>B</tt> is used the field
3552           will appear in binary package control files, where the
3553           letter <tt>S</tt> is used in source package control
3554           files and where <tt>C</tt> is used in upload control
3555           (<tt>.changes</tt>) files.
3556         </p>
3557
3558         <p>
3559           For example, if the main source information control file
3560           contains the field
3561           <example>
3562   XBS-Comment: I stand between the candle and the star.
3563           </example>
3564           then the binary and source package control files will contain the
3565           field
3566           <example>
3567   Comment: I stand between the candle and the star.
3568           </example>
3569         </p>
3570
3571       </sect>
3572
3573     </chapt>
3574
3575
3576     <chapt id="maintainerscripts">
3577       <heading>Package maintainer scripts and installation procedure</heading>
3578
3579       <sect>
3580         <heading>Introduction to package maintainer scripts</heading>
3581
3582         <p>
3583           It is possible to supply scripts as part of a package which
3584           the package management system will run for you when your
3585           package is installed, upgraded or removed.
3586         </p>
3587
3588         <p>
3589           These scripts are the files <prgn>preinst</prgn>,
3590           <prgn>postinst</prgn>, <prgn>prerm</prgn> and
3591           <prgn>postrm</prgn> in the control area of the package.
3592           They must be proper executable files; if they are scripts
3593           (which is recommended), they must start with the usual
3594           <tt>#!</tt> convention.  They should be readable and
3595           executable by anyone, and must not be world-writable.
3596         </p>
3597
3598         <p>
3599           The package management system looks at the exit status from
3600           these scripts.  It is important that they exit with a
3601           non-zero status if there is an error, so that the package
3602           management system can stop its processing.  For shell
3603           scripts this means that you <em>almost always</em> need to
3604           use <tt>set -e</tt> (this is usually true when writing shell
3605           scripts, in fact).  It is also important, of course, that
3606           they exit with a zero status if everything went well.
3607         </p>
3608
3609         <p>
3610           Additionally, packages interacting with users using
3611           <tt>debconf</tt> in the <prgn>postinst</prgn> script should
3612           install a <prgn>config</prgn> script  in the control area,
3613           see <ref id="maintscriptprompt"> for details.
3614         </p>
3615
3616         <p>
3617           When a package is upgraded a combination of the scripts from
3618           the old and new packages is called during the upgrade
3619           procedure.  If your scripts are going to be at all
3620           complicated you need to be aware of this, and may need to
3621           check the arguments to your scripts.
3622         </p>
3623
3624         <p>
3625           Broadly speaking the <prgn>preinst</prgn> is called before
3626           (a particular version of) a package is installed, and the
3627           <prgn>postinst</prgn> afterwards; the <prgn>prerm</prgn>
3628           before (a version of) a package is removed and the
3629           <prgn>postrm</prgn> afterwards.
3630         </p>
3631
3632         <p>
3633           Programs called from maintainer scripts should not normally
3634           have a path prepended to them. Before installation is
3635           started, the package management system checks to see if the
3636           programs <prgn>ldconfig</prgn>,
3637           <prgn>start-stop-daemon</prgn>, <prgn>install-info</prgn>,
3638           and <prgn>update-rc.d</prgn> can be found via the
3639           <tt>PATH</tt> environment variable. Those programs, and any
3640           other program that one would expect to be in the
3641           <tt>PATH</tt>, should thus be invoked without an absolute
3642           pathname. Maintainer scripts should also not reset the
3643           <tt>PATH</tt>, though they might choose to modify it by
3644           prepending or appending package-specific directories. These
3645           considerations really apply to all shell scripts.</p>
3646       </sect>
3647
3648       <sect id="idempotency">
3649         <heading>Maintainer scripts idempotency</heading>
3650
3651         <p>
3652           It is necessary for the error recovery procedures that the
3653           scripts be idempotent.  This means that if it is run
3654           successfully, and then it is called again, it doesn't bomb
3655           out or cause any harm, but just ensures that everything is
3656           the way it ought to be.  If the first call failed, or
3657           aborted half way through for some reason, the second call
3658           should merely do the things that were left undone the first
3659           time, if any, and exit with a success status if everything
3660           is OK.<footnote>
3661               This is so that if an error occurs, the user interrupts
3662               <prgn>dpkg</prgn> or some other unforeseen circumstance
3663               happens you don't leave the user with a badly-broken
3664               package when <prgn>dpkg</prgn> attempts to repeat the
3665               action.
3666           </footnote>
3667         </p>
3668       </sect>
3669
3670       <sect id="controllingterminal">
3671         <heading>Controlling terminal for maintainer scripts</heading>
3672
3673         <p>
3674           Maintainer scripts are not guaranteed to run with a controlling
3675           terminal and may not be able to interact with the user.  They
3676           must be able to fall back to noninteractive behavior if no
3677           controlling terminal is available.  Maintainer scripts that
3678           prompt via a program conforming to the Debian Configuration
3679           Management Specification (see <ref id="maintscriptprompt">) may
3680           assume that program will handle falling back to noninteractive
3681           behavior.
3682         </p>
3683
3684         <p>
3685           For high-priority prompts without a reasonable default answer,
3686           maintainer scripts may abort if there is no controlling
3687           terminal.  However, this situation should be avoided if at all
3688           possible, since it prevents automated or unattended installs.
3689           In most cases, users will consider this to be a bug in the
3690           package.
3691         </p>
3692       </sect>
3693
3694       <sect id="exitstatus">
3695         <heading>Exit status</heading>
3696
3697         <p>
3698           Each script must return a zero exit status for
3699           success, or a nonzero one for failure, since the package
3700           management system looks for the exit status of these scripts
3701           and determines what action to take next based on that datum.
3702         </p>
3703       </sect>
3704
3705       <sect id="mscriptsinstact"><heading>Summary of ways maintainer
3706           scripts are called
3707         </heading>
3708
3709         <p>
3710           <list compact="compact">
3711             <item>
3712               <var>new-preinst</var> <tt>install</tt>
3713             </item>
3714             <item>
3715               <var>new-preinst</var> <tt>install</tt> <var>old-version</var>
3716             </item>
3717             <item>
3718                 <var>new-preinst</var> <tt>upgrade</tt> <var>old-version</var>
3719             </item>
3720             <item>
3721                 <var>old-preinst</var> <tt>abort-upgrade</tt>
3722                 <var>new-version</var>
3723             </item>
3724           </list>
3725
3726         <p>
3727           <list compact="compact">
3728             <item>
3729                 <var>postinst</var> <tt>configure</tt>
3730                 <var>most-recently-configured-version</var>
3731             </item>
3732             <item>
3733                 <var>old-postinst</var> <tt>abort-upgrade</tt>
3734                 <var>new-version</var>
3735             </item>
3736             <item>
3737                 <var>conflictor's-postinst</var> <tt>abort-remove</tt>
3738                 <tt>in-favour</tt> <var>package</var>
3739                 <var>new-version</var>
3740             </item>
3741             <item>
3742                 <var>postinst</var> <tt>abort-remove</tt>
3743             </item>
3744             <item>
3745                 <var>deconfigured's-postinst</var>
3746                 <tt>abort-deconfigure</tt> <tt>in-favour</tt>
3747                 <var>failed-install-package</var> <var>version</var>
3748                 [<tt>removing</tt> <var>conflicting-package</var>
3749                 <var>version</var>]
3750             </item>
3751           </list>
3752
3753         <p>
3754           <list compact="compact">
3755             <item>
3756                 <var>prerm</var> <tt>remove</tt>
3757             </item>
3758             <item>
3759                 <var>old-prerm</var> <tt>upgrade</tt>
3760                 <var>new-version</var>
3761             </item>
3762             <item>
3763                 <var>new-prerm</var> <tt>failed-upgrade</tt>
3764                 <var>old-version</var>
3765             </item>
3766             <item>
3767                 <var>conflictor's-prerm</var> <tt>remove</tt>
3768                 <tt>in-favour</tt> <var>package</var>
3769                 <var>new-version</var>
3770             </item>
3771             <item>
3772                 <var>deconfigured's-prerm</var> <tt>deconfigure</tt>
3773                 <tt>in-favour</tt> <var>package-being-installed</var>
3774                 <var>version</var> [<tt>removing</tt>
3775                 <var>conflicting-package</var>
3776                 <var>version</var>]
3777             </item>
3778           </list>
3779
3780         <p>
3781           <list compact="compact">
3782             <item>
3783                 <var>postrm</var> <tt>remove</tt>
3784             </item>
3785             <item>
3786                 <var>postrm</var> <tt>purge</tt>
3787             </item>
3788             <item>
3789                 <var>old-postrm</var> <tt>upgrade</tt>
3790                 <var>new-version</var>
3791             </item>
3792             <item>
3793                 <var>new-postrm</var> <tt>failed-upgrade</tt>
3794                 <var>old-version</var>
3795             </item>
3796             <item>
3797                 <var>new-postrm</var> <tt>abort-install</tt>
3798             </item>
3799             <item>
3800                 <var>new-postrm</var> <tt>abort-install</tt>
3801                 <var>old-version</var>
3802             </item>
3803             <item>
3804                 <var>new-postrm</var> <tt>abort-upgrade</tt>
3805                 <var>old-version</var>
3806             </item>
3807             <item>
3808                 <var>disappearer's-postrm</var> <tt>disappear</tt>
3809                 <var>overwriter</var>
3810                 <var>overwriter-version</var>
3811             </item>
3812           </list>
3813         </p>
3814
3815
3816       <sect id="unpackphase">
3817         <heading>Details of unpack phase of installation or upgrade</heading>
3818
3819         <p>
3820           The procedure on installation/upgrade/overwrite/disappear
3821           (i.e., when running <tt>dpkg --unpack</tt>, or the unpack
3822           stage of <tt>dpkg --install</tt>) is as follows.  In each
3823           case, if a major error occurs (unless listed below) the
3824           actions are, in general, run backwards - this means that the
3825           maintainer scripts are run with different arguments in
3826           reverse order.  These are the "error unwind" calls listed
3827           below.
3828
3829           <enumlist>
3830             <item>
3831                 <enumlist>
3832                   <item>
3833                       If a version of the package is already installed, call
3834                       <example compact="compact">
3835 <var>old-prerm</var> upgrade <var>new-version</var>
3836                       </example>
3837                   </item>
3838                   <item>
3839                       If the script runs but exits with a non-zero
3840                       exit status, <prgn>dpkg</prgn> will attempt:
3841                       <example compact="compact">
3842 <var>new-prerm</var> failed-upgrade <var>old-version</var>
3843                       </example>
3844                       If this works, the upgrade continues. If this
3845                       does not work, the error unwind:
3846                       <example compact="compact">
3847 <var>old-postinst</var> abort-upgrade <var>new-version</var>
3848                       </example>
3849                       If this works, then the old-version is
3850                       "Installed", if not, the old version is in a
3851                       "Half-Configured" state.
3852                   </item>
3853                 </enumlist>
3854             </item>
3855
3856             <item>
3857                 If a "conflicting" package is being removed at the same time,
3858                 or if any package will be broken (due to <tt>Breaks</tt>):
3859                 <enumlist>
3860                   <item>
3861                       If <tt>--auto-deconfigure</tt> is
3862                       specified, call, for each package to be deconfigured
3863                       due to <tt>Breaks</tt>:
3864                       <example compact="compact">
3865 <var>deconfigured's-prerm</var> deconfigure \
3866   in-favour <var>package-being-installed</var> <var>version</var>
3867                       </example>
3868                       Error unwind:
3869                       <example compact="compact">
3870 <var>deconfigured's-postinst</var> abort-deconfigure \
3871   in-favour <var>package-being-installed-but-failed</var> <var>version</var>
3872                       </example>
3873                       The deconfigured packages are marked as
3874                       requiring configuration, so that if
3875                       <tt>--install</tt> is used they will be
3876                       configured again if possible.
3877                   </item>
3878                   <item>
3879                       If any packages depended on a conflicting
3880                       package being removed and <tt>--auto-deconfigure</tt> is
3881                       specified, call, for each such package:
3882                       <example compact="compact">
3883 <var>deconfigured's-prerm</var> deconfigure \
3884   in-favour <var>package-being-installed</var> <var>version</var> \
3885     removing <var>conflicting-package</var> <var>version</var>
3886                       </example>
3887                       Error unwind:
3888                       <example compact="compact">
3889 <var>deconfigured's-postinst</var> abort-deconfigure \
3890   in-favour <var>package-being-installed-but-failed</var> <var>version</var> \
3891     removing <var>conflicting-package</var> <var>version</var>
3892                       </example>
3893                       The deconfigured packages are marked as
3894                       requiring configuration, so that if
3895                       <tt>--install</tt> is used they will be
3896                       configured again if possible.
3897                   </item>
3898                   <item>
3899                       To prepare for removal of each conflicting package, call:
3900                       <example compact="compact">
3901 <var>conflictor's-prerm</var> remove \
3902   in-favour <var>package</var> <var>new-version</var>
3903                       </example>
3904                       Error unwind:
3905                       <example compact="compact">
3906 <var>conflictor's-postinst</var> abort-remove \
3907   in-favour <var>package</var> <var>new-version</var>
3908                       </example>
3909                   </item>
3910                 </enumlist>
3911             </item>
3912
3913             <item>
3914                 <enumlist>
3915                   <item>
3916                       If the package is being upgraded, call:
3917                       <example compact="compact">
3918 <var>new-preinst</var> upgrade <var>old-version</var>
3919                       </example>
3920                       If this fails, we call:
3921                       <example>
3922 <var>new-postrm</var> abort-upgrade <var>old-version</var>
3923                       </example>
3924                       <enumlist>
3925                         <item>
3926                           <p>
3927                             If that works, then
3928                             <example>
3929 <var>old-postinst</var> abort-upgrade <var>new-version</var>
3930                             </example>
3931                             is called. If this works, then the old version
3932                             is in an "Installed" state, or else it is left
3933                             in an "Unpacked" state.
3934                           </p>
3935                         </item>
3936                         <item>
3937                           <p>
3938                             If it fails, then the old version is left
3939                             in an "Half-Installed" state.
3940                           </p>
3941                         </item>
3942                       </enumlist>
3943                       
3944                   </item>
3945                   <item>
3946                       Otherwise, if the package had some configuration
3947                       files from a previous version installed (i.e., it
3948                       is in the "configuration files only" state):
3949                       <example compact="compact">
3950 <var>new-preinst</var> install <var>old-version</var>
3951                       </example>
3952                       Error unwind:
3953                       <example>
3954 <var>new-postrm</var> abort-install <var>old-version</var>
3955                       </example>
3956                       If this fails, the package is left in a
3957                       "Half-Installed" state, which requires a
3958                       reinstall. If it works, the packages is left in
3959                       a "Config-Files" state.
3960                   </item>
3961                   <item>
3962                       Otherwise (i.e., the package was completely purged):
3963                       <example compact="compact">
3964 <var>new-preinst</var> install
3965                       </example>
3966                       Error unwind:
3967                       <example compact="compact">
3968 <var>new-postrm</var> abort-install
3969                       </example>
3970                       If the error-unwind fails, the package is in a
3971                       "Half-Installed" phase, and requires a
3972                       reinstall. If the error unwind works, the
3973                       package is in a not installed state.
3974                   </item>
3975                 </enumlist>
3976             </item>
3977
3978             <item>
3979               <p>
3980                 The new package's files are unpacked, overwriting any
3981                 that may be on the system already, for example any
3982                 from the old version of the same package or from
3983                 another package.  Backups of the old files are kept
3984                 temporarily, and if anything goes wrong the package
3985                 management system will attempt to put them back as
3986                 part of the error unwind.
3987               </p>
3988
3989               <p>
3990                 It is an error for a package to contain files which
3991                 are on the system in another package, unless
3992                 <tt>Replaces</tt> is used (see <ref id="replaces">).
3993                 <!--
3994                 The following paragraph is not currently the case:
3995                 Currently the <tt>- - force-overwrite</tt> flag is
3996                 enabled, downgrading it to a warning, but this may not
3997                 always be the case.
3998                 -->
3999               </p>
4000
4001               <p>
4002                 It is a more serious error for a package to contain a
4003                 plain file or other kind of non-directory where another
4004                 package has a directory (again, unless
4005                 <tt>Replaces</tt> is used).  This error can be
4006                 overridden if desired using
4007                 <tt>--force-overwrite-dir</tt>, but this is not
4008                 advisable.
4009               </p>
4010
4011               <p>
4012                 Packages which overwrite each other's files produce
4013                 behavior which, though deterministic, is hard for the
4014                 system administrator to understand.  It can easily
4015                 lead to "missing" programs if, for example, a package
4016                 is installed which overwrites a file from another
4017                 package, and is then removed again.<footnote>
4018                     Part of the problem is due to what is arguably a
4019                     bug in <prgn>dpkg</prgn>.
4020                 </footnote>
4021               </p>
4022
4023               <p>
4024                 A directory will never be replaced by a symbolic link
4025                 to a directory or vice versa; instead, the existing
4026                 state (symlink or not) will be left alone and
4027                 <prgn>dpkg</prgn> will follow the symlink if there is
4028                 one.
4029               </p>
4030             </item>
4031
4032             <item>
4033               <p>
4034                 <enumlist>
4035                   <item>
4036                       If the package is being upgraded, call
4037                       <example compact="compact">
4038 <var>old-postrm</var> upgrade <var>new-version</var>
4039                       </example>
4040                   </item>
4041                   <item>
4042                       If this fails, <prgn>dpkg</prgn> will attempt:
4043                       <example compact="compact">
4044 <var>new-postrm</var> failed-upgrade <var>old-version</var>
4045                       </example>
4046                       If this works, installation continues. If not, 
4047                       Error unwind:
4048                       <example compact="compact">
4049 <var>old-preinst</var> abort-upgrade <var>new-version</var>
4050                       </example>
4051                       If this fails, the old version is left in a
4052                       "Half-Installed" state. If it works, dpkg now
4053                       calls:
4054                       <example compact="compact">
4055 <var>new-postrm</var> abort-upgrade <var>old-version</var>
4056                       </example>
4057                       If this fails, the old version is left in a
4058                       "Half-Installed" state. If it works, dpkg now
4059                       calls:
4060                       <example compact="compact">
4061 <var>old-postinst</var> abort-upgrade <var>new-version</var>
4062                       </example>
4063                       If this fails, the old version is in an
4064                       "Unpacked" state.
4065                   </item>
4066                 </enumlist>
4067               </p>
4068
4069               <p>
4070                 This is the point of no return - if
4071                 <prgn>dpkg</prgn> gets this far, it won't back off
4072                 past this point if an error occurs.  This will
4073                 leave the package in a fairly bad state, which
4074                 will require a successful re-installation to clear
4075                 up, but it's when <prgn>dpkg</prgn> starts doing
4076                 things that are irreversible.
4077               </p>
4078             </item>
4079
4080             <item>
4081                 Any files which were in the old version of the package
4082                 but not in the new are removed.
4083             </item>
4084
4085             <item>
4086                 The new file list replaces the old.
4087             </item>
4088
4089             <item>
4090                 The new maintainer scripts replace the old.
4091             </item>
4092
4093             <item>
4094                 Any packages all of whose files have been overwritten
4095                 during the installation, and which aren't required for
4096                 dependencies, are considered to have been removed.
4097                 For each such package
4098                 <enumlist>
4099                   <item>
4100                       <prgn>dpkg</prgn> calls:
4101                       <example compact="compact">
4102 <var>disappearer's-postrm</var> disappear \
4103   <var>overwriter</var> <var>overwriter-version</var>
4104                       </example>
4105                   </item>
4106                   <item>
4107                       The package's maintainer scripts are removed.
4108                   </item>
4109                   <item>
4110                       It is noted in the status database as being in a
4111                       sane state, namely not installed (any conffiles
4112                       it may have are ignored, rather than being
4113                       removed by <prgn>dpkg</prgn>).  Note that
4114                       disappearing packages do not have their prerm
4115                       called, because <prgn>dpkg</prgn> doesn't know
4116                       in advance that the package is going to
4117                       vanish.
4118                   </item>
4119                 </enumlist>
4120             </item>
4121
4122             <item>
4123                 Any files in the package we're unpacking that are also
4124                 listed in the file lists of other packages are removed
4125                 from those lists.  (This will lobotomize the file list
4126                 of the "conflicting" package if there is one.)
4127             </item>
4128
4129             <item>
4130                 The backup files made during installation, above, are
4131                 deleted.
4132             </item>
4133
4134             <item>
4135               <p>
4136                 The new package's status is now sane, and recorded as
4137                 "unpacked".
4138               </p>
4139
4140               <p>
4141                 Here is another point of no return - if the
4142                 conflicting package's removal fails we do not unwind
4143                 the rest of the installation; the conflicting package
4144                 is left in a half-removed limbo.
4145               </p>
4146             </item>
4147
4148             <item>
4149                 If there was a conflicting package we go and do the
4150                 removal actions (described below), starting with the
4151                 removal of the conflicting package's files (any that
4152                 are also in the package being installed have already
4153                 been removed from the conflicting package's file list,
4154                 and so do not get removed now).
4155             </item>
4156           </enumlist>
4157         </p>
4158       </sect>
4159
4160       <sect id="configdetails"><heading>Details of configuration</heading>
4161
4162         <p>
4163           When we configure a package (this happens with <tt>dpkg
4164             --install</tt> and <tt>dpkg --configure</tt>), we first
4165           update any <tt>conffile</tt>s and then call:
4166           <example compact="compact">
4167 <var>postinst</var> configure <var>most-recently-configured-version</var>
4168           </example>
4169         </p>
4170
4171         <p>
4172           No attempt is made to unwind after errors during
4173           configuration. If the configuration fails, the package is in
4174           a "Failed Config" state, and an error message is generated.
4175         </p>
4176
4177         <p>
4178           If there is no most recently configured version
4179           <prgn>dpkg</prgn> will pass a null argument.
4180           <footnote>
4181             <p>
4182               Historical note: Truly ancient (pre-1997) versions of
4183               <prgn>dpkg</prgn> passed <tt>&lt;unknown&gt;</tt>
4184               (including the angle brackets) in this case.  Even older
4185               ones did not pass a second argument at all, under any
4186               circumstance.  Note that upgrades using such an old dpkg
4187               version are unlikely to work for other reasons, even if
4188               this old argument behavior is handled by your postinst script.
4189             </p>
4190           </footnote>     
4191         </p>
4192       </sect>
4193
4194       <sect id="removedetails"><heading>Details of removal and/or
4195       configuration purging</heading>
4196
4197         <p>
4198           <enumlist>
4199             <item>
4200               <p>
4201                 <example compact="compact">
4202 <var>prerm</var> remove
4203                 </example>
4204               </p>
4205               <p>
4206                 If prerm fails during replacement due to conflict
4207                 <example>
4208 <var>conflictor's-postinst</var> abort-remove \
4209   in-favour <var>package</var> <var>new-version</var>
4210                 </example>
4211                 Or else we call:
4212                 <example>
4213 <var>postinst</var> abort-remove
4214                 </example>
4215               </p>
4216               <p>
4217                 If this fails, the package is in a "Half-Configured"
4218                 state, or else it remains "Installed".
4219               </p>
4220             </item>
4221             <item>
4222                 The package's files are removed (except <tt>conffile</tt>s).
4223             </item>
4224             <item>
4225                 <example compact="compact">
4226 <var>postrm</var> remove
4227                 </example>
4228
4229               <p>
4230                 If it fails, there's no error unwind, and the package is in
4231                 an "Half-Installed" state.
4232               </p>
4233             </item>
4234             <item>
4235               <p>
4236                 All the maintainer scripts except the <prgn>postrm</prgn>
4237                 are removed.
4238               </p>
4239
4240               <p>
4241                 If we aren't purging the package we stop here.  Note
4242                 that packages which have no <prgn>postrm</prgn> and no
4243                 <tt>conffile</tt>s are automatically purged when
4244                 removed, as there is no difference except for the
4245                 <prgn>dpkg</prgn> status.
4246               </p>
4247             </item>
4248             <item>
4249                 The <tt>conffile</tt>s and any backup files
4250                 (<tt>~</tt>-files, <tt>#*#</tt> files,
4251                 <tt>%</tt>-files, <tt>.dpkg-{old,new,tmp}</tt>, etc.)
4252                 are removed.
4253             </item>
4254             <item>
4255               <p>
4256                 <example compact="compact">
4257 <var>postrm</var> purge
4258                 </example>
4259               </p>
4260               <p>
4261                 If this fails, the package remains in a "Config-Files"
4262                 state.
4263               </p>
4264             </item>
4265             <item>
4266                 The package's file list is removed.
4267             </item>
4268           </enumlist>
4269
4270         </p>
4271       </sect>
4272     </chapt>
4273
4274
4275     <chapt id="relationships">
4276       <heading>Declaring relationships between packages</heading>
4277
4278       <sect id="depsyntax">
4279         <heading>Syntax of relationship fields</heading>
4280
4281         <p>
4282           These fields all have a uniform syntax.  They are a list of
4283           package names separated by commas.
4284         </p>
4285
4286         <p>
4287           In the <tt>Depends</tt>, <tt>Recommends</tt>,
4288           <tt>Suggests</tt>, <tt>Pre-Depends</tt>,
4289           <tt>Build-Depends</tt> and <tt>Build-Depends-Indep</tt>
4290           control file fields of the package, which declare
4291           dependencies on other packages, the package names listed may
4292           also include lists of alternative package names, separated
4293           by vertical bar (pipe) symbols <tt>|</tt>.  In such a case,
4294           if any one of the alternative packages is installed, that
4295           part of the dependency is considered to be satisfied.
4296         </p>
4297
4298         <p>
4299           All of the fields except for <tt>Provides</tt> may restrict
4300           their applicability to particular versions of each named
4301           package.  This is done in parentheses after each individual
4302           package name; the parentheses should contain a relation from
4303           the list below followed by a version number, in the format
4304           described in <ref id="f-Version">.
4305         </p>
4306
4307         <p>
4308           The relations allowed are <tt>&lt;&lt;</tt>, <tt>&lt;=</tt>,
4309           <tt>=</tt>, <tt>&gt;=</tt> and <tt>&gt;&gt;</tt> for
4310           strictly earlier, earlier or equal, exactly equal, later or
4311           equal and strictly later, respectively.  The deprecated
4312           forms <tt>&lt;</tt> and <tt>&gt;</tt> were used to mean
4313           earlier/later or equal, rather than strictly earlier/later,
4314           so they should not appear in new packages (though
4315           <prgn>dpkg</prgn> still supports them).
4316         </p>
4317
4318         <p>
4319           Whitespace may appear at any point in the version
4320           specification subject to the rules in <ref
4321           id="controlsyntax">, and must appear where it's necessary to
4322           disambiguate; it is not otherwise significant.  All of the
4323           relationship fields may span multiple lines.  For
4324           consistency and in case of future changes to
4325           <prgn>dpkg</prgn> it is recommended that a single space be
4326           used after a version relationship and before a version
4327           number; it is also conventional to put a single space after
4328           each comma, on either side of each vertical bar, and before
4329           each open parenthesis.  When wrapping a relationship field, it
4330           is conventional to do so after a comma and before the space
4331           following that comma.
4332         </p>
4333
4334         <p>
4335           For example, a list of dependencies might appear as:
4336           <example compact="compact">
4337 Package: mutt
4338 Version: 1.3.17-1
4339 Depends: libc6 (>= 2.2.1), exim | mail-transport-agent
4340           </example>
4341         </p>
4342
4343         <p>
4344           All fields that specify build-time relationships
4345           (<tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
4346           <tt>Build-Conflicts</tt> and <tt>Build-Conflicts-Indep</tt>)
4347           may be restricted to a certain set of architectures.  This
4348           is indicated in brackets after each individual package name and
4349           the optional version specification.  The brackets enclose a
4350           list of Debian architecture names separated by whitespace.
4351           Exclamation marks may be prepended to each of the names.
4352           (It is not permitted for some names to be prepended with
4353           exclamation marks while others aren't.) If the current Debian
4354           host architecture is not in this list and there are no
4355           exclamation marks in the list, or it is in the list with a
4356           prepended exclamation mark, the package name and the
4357           associated version specification are ignored completely for
4358           the purposes of defining the relationships.
4359         </p>
4360
4361         <p>
4362           For example:
4363           <example compact="compact">
4364 Source: glibc
4365 Build-Depends-Indep: texinfo
4366 Build-Depends: kernel-headers-2.2.10 [!hurd-i386],
4367   hurd-dev [hurd-i386], gnumach-dev [hurd-i386]
4368           </example>
4369           requires <tt>kernel-headers-2.2.10</tt> on all architectures
4370           other than hurd-i386 and requires <tt>hurd-dev</tt> and
4371           <tt>gnumach-dev</tt> only on hurd-i386.
4372         </p>
4373
4374         <p>
4375           If the architecture-restricted dependency is part of a set of
4376           alternatives using <tt>|</tt>, that alternative is ignored
4377           completely on architectures that do not match the restriction.
4378           For example:
4379           <example compact="compact">
4380 Build-Depends: foo [!i386] | bar [!amd64]
4381           </example>
4382           is equivalent to <tt>bar</tt> on the i386 architecture, to
4383           <tt>foo</tt> on the amd64 architecture, and to <tt>foo |
4384           bar</tt> on all other architectures.
4385         </p>
4386
4387         <p>
4388           All fields that specify build-time relationships may also be
4389           restricted to a certain set of architectures using architecture
4390           wildcards.  The syntax for declaring such restrictions is the
4391           same as declaring restrictions using a certain set of
4392           architectures without architecture wildcards.  For example:
4393           <example compact="compact">
4394 Build-Depends: foo [linux-any], bar [any-i386], baz [!linux-any]
4395           </example>
4396           is equivalent to <tt>foo</tt> on architectures using the Linux
4397           kernel and any cpu, <tt>bar</tt> on architectures using any
4398           kernel and an i386 cpu, and <tt>baz</tt> on any architecture
4399           using a kernel other than Linux.
4400         </p>
4401
4402         <p>
4403           Note that the binary package relationship fields such as
4404           <tt>Depends</tt> appear in one of the binary package
4405           sections of the control file, whereas the build-time
4406           relationships such as <tt>Build-Depends</tt> appear in the
4407           source package section of the control file (which is the
4408           first section).
4409         </p>
4410       </sect>
4411
4412       <sect id="binarydeps">
4413         <heading>Binary Dependencies - <tt>Depends</tt>,
4414           <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4415           <tt>Pre-Depends</tt>
4416         </heading>
4417
4418         <p>
4419           Packages can declare in their control file that they have
4420           certain relationships to other packages - for example, that
4421           they may not be installed at the same time as certain other
4422           packages, and/or that they depend on the presence of others.
4423         </p>
4424
4425         <p>
4426           This is done using the <tt>Depends</tt>, <tt>Pre-Depends</tt>,
4427           <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4428           <tt>Breaks</tt> and <tt>Conflicts</tt> control file fields.
4429           <tt>Breaks</tt> is described in <ref id="breaks">, and
4430           <tt>Conflicts</tt> is described in <ref id="conflicts">.  The
4431           rest are described below.
4432         </p>
4433
4434         <p>
4435           These seven fields are used to declare a dependency
4436           relationship by one package on another.  Except for
4437           <tt>Enhances</tt> and <tt>Breaks</tt>, they appear in the
4438           depending (binary) package's control file.
4439           (<tt>Enhances</tt> appears in the recommending package's
4440           control file, and <tt>Breaks</tt> appears in the version of
4441           depended-on package which causes the named package to
4442           break).
4443         </p>
4444
4445         <p>
4446           A <tt>Depends</tt> field takes effect <em>only</em> when a
4447           package is to be configured.  It does not prevent a package
4448           being on the system in an unconfigured state while its
4449           dependencies are unsatisfied, and it is possible to replace
4450           a package whose dependencies are satisfied and which is
4451           properly installed with a different version whose
4452           dependencies are not and cannot be satisfied; when this is
4453           done the depending package will be left unconfigured (since
4454           attempts to configure it will give errors) and will not
4455           function properly.  If it is necessary, a
4456           <tt>Pre-Depends</tt> field can be used, which has a partial
4457           effect even when a package is being unpacked, as explained
4458           in detail below.  (The other three dependency fields,
4459           <tt>Recommends</tt>, <tt>Suggests</tt> and
4460           <tt>Enhances</tt>, are only used by the various front-ends
4461           to <prgn>dpkg</prgn> such as <prgn>apt-get</prgn>,
4462           <prgn>aptitude</prgn>, and <prgn>dselect</prgn>.)
4463         </p>
4464
4465         <p>
4466           For this reason packages in an installation run are usually
4467           all unpacked first and all configured later; this gives
4468           later versions of packages with dependencies on later
4469           versions of other packages the opportunity to have their
4470           dependencies satisfied.
4471         </p>
4472
4473         <p>
4474           In case of circular dependencies, since installation or
4475           removal order honoring the dependency order can't be
4476           established, dependency loops are broken at some point
4477           (based on rules below), and some packages may not be able to
4478           rely on their dependencies being present when being
4479           installed or removed, depending on which side of the break
4480           of the circular dependency loop they happen to be on.  If one
4481           of the packages in the loop has no postinst script, then the
4482           cycle will be broken at that package, so as to ensure that
4483           all postinst scripts run with the dependencies properly
4484           configured if this is possible. Otherwise the breaking point
4485           is arbitrary.
4486         </p>
4487
4488         <p>
4489           The <tt>Depends</tt> field thus allows package maintainers
4490           to impose an order in which packages should be configured.
4491         </p>
4492
4493         <p>
4494           The meaning of the five dependency fields is as follows:
4495           <taglist>
4496             <tag><tt>Depends</tt></tag>
4497             <item>
4498               <p>
4499                 This declares an absolute dependency.  A package will
4500                 not be configured unless all of the packages listed in
4501                 its <tt>Depends</tt> field have been correctly
4502                 configured.
4503               </p>
4504
4505               <p>
4506                 The <tt>Depends</tt> field should be used if the
4507                 depended-on package is required for the depending
4508                 package to provide a significant amount of
4509                 functionality.
4510               </p>
4511
4512               <p>
4513                 The <tt>Depends</tt> field should also be used if the
4514                 <prgn>postinst</prgn>, <prgn>prerm</prgn> or
4515                 <prgn>postrm</prgn> scripts require the package to be
4516                 present in order to run.  Note, however, that the
4517                 <prgn>postrm</prgn> cannot rely on any non-essential
4518                 packages to be present during the <tt>purge</tt>
4519                 phase.
4520             </item>
4521
4522             <tag><tt>Recommends</tt></tag>
4523             <item>
4524               <p>
4525                 This declares a strong, but not absolute, dependency.
4526               </p>
4527
4528               <p>
4529                 The <tt>Recommends</tt> field should list packages
4530                 that would be found together with this one in all but
4531                 unusual installations.
4532               </p>
4533             </item>
4534
4535             <tag><tt>Suggests</tt></tag>
4536             <item>
4537                 This is used to declare that one package may be more
4538                 useful with one or more others.  Using this field
4539                 tells the packaging system and the user that the
4540                 listed packages are related to this one and can
4541                 perhaps enhance its usefulness, but that installing
4542                 this one without them is perfectly reasonable.
4543             </item>
4544
4545             <tag><tt>Enhances</tt></tag>
4546             <item>
4547                 This field is similar to Suggests but works in the
4548                 opposite direction. It is used to declare that a
4549                 package can enhance the functionality of another
4550                 package.
4551             </item>
4552
4553             <tag><tt>Pre-Depends</tt></tag>
4554             <item>
4555               <p>
4556                 This field is like <tt>Depends</tt>, except that it
4557                 also forces <prgn>dpkg</prgn> to complete installation
4558                 of the packages named before even starting the
4559                 installation of the package which declares the
4560                 pre-dependency, as follows:
4561               </p>
4562
4563               <p>
4564                 When a package declaring a pre-dependency is about to
4565                 be <em>unpacked</em> the pre-dependency can be
4566                 satisfied if the depended-on package is either fully
4567                 configured, <em>or even if</em> the depended-on
4568                 package(s) are only unpacked or in the "Half-Configured"
4569                 state, provided that they have been configured
4570                 correctly at some point in the past (and not removed
4571                 or partially removed since).  In this case, both the
4572                 previously-configured and currently unpacked or
4573                 "Half-Configured" versions must satisfy any version
4574                 clause in the <tt>Pre-Depends</tt> field.
4575               </p>
4576
4577               <p>
4578                 When the package declaring a pre-dependency is about
4579                 to be <em>configured</em>, the pre-dependency will be
4580                 treated as a normal <tt>Depends</tt>, that is, it will
4581                 be considered satisfied only if the depended-on
4582                 package has been correctly configured.
4583               </p>
4584
4585               <p>
4586                 <tt>Pre-Depends</tt> should be used sparingly,
4587                 preferably only by packages whose premature upgrade or
4588                 installation would hamper the ability of the system to
4589                 continue with any upgrade that might be in progress.
4590               </p>
4591
4592               <p>
4593                 <tt>Pre-Depends</tt> are also required if the
4594                 <prgn>preinst</prgn> script depends on the named
4595                 package.  It is best to avoid this situation if
4596                 possible.
4597               </p>
4598             </item>
4599           </taglist>
4600         </p>
4601
4602         <p>
4603           When selecting which level of dependency to use you should
4604           consider how important the depended-on package is to the
4605           functionality of the one declaring the dependency.  Some
4606           packages are composed of components of varying degrees of
4607           importance.  Such a package should list using
4608           <tt>Depends</tt> the package(s) which are required by the
4609           more important components.  The other components'
4610           requirements may be mentioned as Suggestions or
4611           Recommendations, as appropriate to the components' relative
4612           importance.
4613         </p>
4614       </sect>
4615
4616       <sect id="breaks">
4617         <heading>Packages which break other packages - <tt>Breaks</tt></heading>
4618
4619         <p>
4620           When one binary package declares that it breaks another,
4621           <prgn>dpkg</prgn> will refuse to allow the package which
4622           declares <tt>Breaks</tt> be installed unless the broken
4623           package is deconfigured first, and it will refuse to
4624           allow the broken package to be reconfigured.
4625         </p>
4626
4627         <p>
4628           A package will not be regarded as causing breakage merely
4629           because its configuration files are still installed; it must
4630           be at least "Half-Installed".
4631         </p>
4632
4633         <p>
4634           A special exception is made for packages which declare that
4635           they break their own package name or a virtual package which
4636           they provide (see below): this does not count as a real
4637           breakage.
4638         </p>
4639
4640         <p>
4641           Normally a <tt>Breaks</tt> entry will have an "earlier than"
4642           version clause; such a <tt>Breaks</tt> is introduced in the
4643           version of an (implicit or explicit) dependency which
4644           violates an assumption or reveals a bug in earlier versions
4645           of the broken package.  This use of <tt>Breaks</tt> will
4646           inform higher-level package management tools that broken
4647           package must be upgraded before the new one.
4648         </p>
4649
4650         <p>
4651           If the breaking package also overwrites some files from the
4652           older package, it should use <tt>Replaces</tt> (not
4653           <tt>Conflicts</tt>) to ensure this goes smoothly.
4654         </p>
4655       </sect>
4656
4657       <sect id="conflicts">
4658         <heading>Conflicting binary packages - <tt>Conflicts</tt></heading>
4659
4660         <p>
4661           When one binary package declares a conflict with another
4662           using a <tt>Conflicts</tt> field, <prgn>dpkg</prgn> will
4663           refuse to allow them to be installed on the system at the
4664           same time.
4665         </p>
4666
4667         <p>
4668           If one package is to be installed, the other must be removed
4669           first - if the package being installed is marked as
4670           replacing (see <ref id="replaces">) the one on the system,
4671           or the one on the system is marked as deselected, or both
4672           packages are marked <tt>Essential</tt>, then
4673           <prgn>dpkg</prgn> will automatically remove the package
4674           which is causing the conflict, otherwise it will halt the
4675           installation of the new package with an error.  This
4676           mechanism is specifically designed to produce an error when
4677           the installed package is <tt>Essential</tt>, but the new
4678           package is not.
4679         </p>
4680
4681         <p>
4682           A package will not cause a conflict merely because its
4683           configuration files are still installed; it must be at least
4684           "Half-Installed".
4685         </p>
4686
4687         <p>
4688           A special exception is made for packages which declare a
4689           conflict with their own package name, or with a virtual
4690           package which they provide (see below): this does not
4691           prevent their installation, and allows a package to conflict
4692           with others providing a replacement for it.  You use this
4693           feature when you want the package in question to be the only
4694           package providing some feature.
4695         </p>
4696
4697         <p>
4698           A <tt>Conflicts</tt> entry should almost never have an
4699           "earlier than" version clause.  This would prevent
4700           <prgn>dpkg</prgn> from upgrading or installing the package
4701           which declared such a conflict until the upgrade or removal
4702           of the conflicted-with package had been completed.  Instead,
4703           <tt>Breaks</tt> may be used.
4704         </p>
4705       </sect>
4706
4707       <sect id="virtual"><heading>Virtual packages - <tt>Provides</tt>
4708         </heading>
4709
4710         <p>
4711           As well as the names of actual ("concrete") packages, the
4712           package relationship fields <tt>Depends</tt>,
4713           <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4714           <tt>Pre-Depends</tt>, <tt>Breaks</tt>, <tt>Conflicts</tt>,
4715           <tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
4716           <tt>Build-Conflicts</tt> and <tt>Build-Conflicts-Indep</tt>
4717           may mention "virtual packages".
4718         </p>
4719
4720         <p>
4721           A <em>virtual package</em> is one which appears in the
4722           <tt>Provides</tt> control file field of another package.
4723           The effect is as if the package(s) which provide a
4724           particular virtual package name had been listed by name
4725           everywhere the virtual package name appears. (See also <ref
4726             id="virtual_pkg">)
4727         </p>
4728
4729         <p>
4730           If there are both concrete and virtual packages of the same
4731           name, then the dependency may be satisfied (or the conflict
4732           caused) by either the concrete package with the name in
4733           question or any other concrete package which provides the
4734           virtual package with the name in question.  This is so that,
4735           for example, supposing we have
4736           <example compact="compact">
4737 Package: foo
4738 Depends: bar
4739           </example> and someone else releases an enhanced version of
4740           the <tt>bar</tt> package they can say:
4741           <example compact="compact">
4742 Package: bar-plus
4743 Provides: bar
4744           </example>
4745           and the <tt>bar-plus</tt> package will now also satisfy the
4746           dependency for the <tt>foo</tt> package.
4747         </p>
4748
4749         <p>
4750           If a relationship field has a version number attached
4751           then only real packages will be considered to see whether
4752           the relationship is satisfied (or the prohibition violated,
4753           for a conflict or breakage) - it is assumed that a real
4754           package which provides the virtual package is not of the
4755           "right" version.  So, a <tt>Provides</tt> field may not
4756           contain version numbers, and the version number of the
4757           concrete package which provides a particular virtual package
4758           will not be looked at when considering a dependency on or
4759           conflict with the virtual package name.
4760         </p>
4761
4762         <p>
4763           It is likely that the ability will be added in a future
4764           release of <prgn>dpkg</prgn> to specify a version number for
4765           each virtual package it provides.  This feature is not yet
4766           present, however, and is expected to be used only
4767           infrequently.
4768         </p>
4769
4770         <p>
4771           If you want to specify which of a set of real packages
4772           should be the default to satisfy a particular dependency on
4773           a virtual package, you should list the real package as an
4774           alternative before the virtual one.
4775         </p>
4776       </sect>
4777
4778
4779       <sect id="replaces"><heading>Overwriting files and replacing
4780           packages - <tt>Replaces</tt></heading>
4781
4782         <p>
4783           Packages can declare in their control file that they should
4784           overwrite files in certain other packages, or completely
4785           replace other packages. The <tt>Replaces</tt> control file
4786           field has these two distinct purposes.
4787         </p>
4788
4789         <sect1><heading>Overwriting files in other packages</heading>
4790
4791           <p>
4792             Firstly, as mentioned before, it is usually an error for a
4793             package to contain files which are on the system in
4794             another package.
4795           </p>
4796
4797           <p>
4798             However, if the overwriting package declares that it
4799             <tt>Replaces</tt> the one containing the file being
4800             overwritten, then <prgn>dpkg</prgn> will replace the file
4801             from the old package with that from the new.  The file
4802             will no longer be listed as "owned" by the old package.
4803           </p>
4804
4805           <p>
4806             For example, if a package <package>foo</package> is split
4807             into <package>foo</package> and <package>foo-data</package>
4808             starting at version 1.2-3, <package>foo-data</package> should
4809             have the field
4810             <example compact="compact">
4811 Replaces: foo (&lt;&lt; 1.2-3)
4812             </example>
4813             in its control file.  The package <package>foo</package>
4814             doesn't need any special control fields in this example,
4815             although would generally depend on or
4816             recommend <package>foo-data</package>.
4817           </p>
4818
4819           <p>
4820             If a package is completely replaced in this way, so that
4821             <prgn>dpkg</prgn> does not know of any files it still
4822             contains, it is considered to have "disappeared".  It will
4823             be marked as not wanted on the system (selected for
4824             removal) and not installed.  Any <tt>conffile</tt>s
4825             details noted for the package will be ignored, as they
4826             will have been taken over by the overwriting package.  The
4827             package's <prgn>postrm</prgn> script will be run with a
4828             special argument to allow the package to do any final
4829             cleanup required.  See <ref id="mscriptsinstact">.
4830             <footnote>
4831               <p>
4832                 Replaces is a one way relationship -- you have to              
4833                 install the replacing package after the replaced
4834                 package.
4835               </p>
4836             </footnote>
4837           </p>
4838
4839           <p>
4840             For this usage of <tt>Replaces</tt>, virtual packages (see
4841             <ref id="virtual">) are not considered when looking at a
4842             <tt>Replaces</tt> field - the packages declared as being
4843             replaced must be mentioned by their real names.
4844           </p>
4845
4846           <p>
4847             Furthermore, this usage of <tt>Replaces</tt> only takes
4848             effect when both packages are at least partially on the
4849             system at once, so that it can only happen if they do not
4850             conflict or if the conflict has been overridden.
4851           </p>
4852
4853         </sect1>
4854
4855         <sect1><heading>Replacing whole packages, forcing their
4856             removal</heading>
4857
4858           <p>
4859             Secondly, <tt>Replaces</tt> allows the packaging system to
4860             resolve which package should be removed when there is a
4861             conflict - see <ref id="conflicts">.  This usage only
4862             takes effect when the two packages <em>do</em> conflict,
4863             so that the two usages of this field do not interfere with
4864             each other.
4865           </p>
4866
4867           <p>
4868             In this situation, the package declared as being replaced
4869             can be a virtual package, so for example, all mail
4870             transport agents (MTAs) would have the following fields in
4871             their control files:
4872             <example compact="compact">
4873 Provides: mail-transport-agent
4874 Conflicts: mail-transport-agent
4875 Replaces: mail-transport-agent
4876             </example>
4877             ensuring that only one MTA can be installed at any one
4878             time.
4879         </sect1>
4880       </sect>
4881
4882       <sect id="sourcebinarydeps">
4883         <heading>Relationships between source and binary packages -
4884           <tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
4885           <tt>Build-Conflicts</tt>, <tt>Build-Conflicts-Indep</tt>
4886         </heading>
4887
4888         <p>
4889           Source packages that require certain binary packages to be
4890           installed or absent at the time of building the package
4891           can declare relationships to those binary packages.
4892         </p>
4893
4894         <p>
4895           This is done using the <tt>Build-Depends</tt>,
4896           <tt>Build-Depends-Indep</tt>, <tt>Build-Conflicts</tt> and
4897           <tt>Build-Conflicts-Indep</tt> control file fields.
4898         </p>
4899
4900         <p>
4901           Build-dependencies on "build-essential" binary packages can be
4902           omitted. Please see <ref id="pkg-relations"> for more information.
4903         </p>
4904
4905         <p>
4906           The dependencies and conflicts they define must be satisfied
4907           (as defined earlier for binary packages) in order to invoke
4908           the targets in <tt>debian/rules</tt>, as follows:<footnote>
4909             <p>
4910               There is no Build-Depends-Arch; this role is essentially
4911               met with Build-Depends.  Anyone building the
4912               <tt>build-indep</tt> and binary-indep<tt></tt> targets is
4913               assumed to be building the whole package, and therefore
4914               installation of all build dependencies is required.
4915             </p>
4916             <p>
4917               The autobuilders use <tt>dpkg-buildpackage -B</tt>, which
4918               calls <tt>build</tt>, not <tt>build-arch</tt> since it does
4919               not yet know how to check for its existence, and
4920               <tt>binary-arch</tt>.  The purpose of the original split
4921               between <tt>Build-Depends</tt> and
4922               <tt>Build-Depends-Indep</tt> was so that the autobuilders
4923               wouldn't need to install extra packages needed only for the
4924               binary-indep targets.  But without a build-arch/build-indep
4925               split, this didn't work, since most of the work is done in
4926               the build target, not in the binary target.
4927             </p>
4928           </footnote>
4929           <taglist>
4930             <tag><tt>clean</tt>, <tt>build-arch</tt>, and
4931               <tt>binary-arch</tt></tag>
4932             <item>
4933               Only the <tt>Build-Depends</tt> and <tt>Build-Conflicts</tt>
4934               fields must be satisfied when these targets are invoked.
4935             </item>
4936             <tag><tt>build</tt>, <tt>build-indep</tt>, <tt>binary</tt>,
4937               and <tt>binary-indep</tt></tag>
4938             <item>
4939               The <tt>Build-Depends</tt>, <tt>Build-Conflicts</tt>,
4940               <tt>Build-Depends-Indep</tt>, and
4941               <tt>Build-Conflicts-Indep</tt> fields must be satisfied when
4942               these targets are invoked.
4943             </item>
4944           </taglist>
4945         </p>
4946       </sect>
4947     </chapt>
4948
4949
4950     <chapt id="sharedlibs"><heading>Shared libraries</heading>
4951
4952       <p>
4953         Packages containing shared libraries must be constructed with
4954         a little care to make sure that the shared library is always
4955         available.  This is especially important for packages whose
4956         shared libraries are vitally important, such as the C library
4957         (currently <tt>libc6</tt>).
4958       </p>
4959
4960       <p>
4961         Packages involving shared libraries should be split up into
4962         several binary packages. This section mostly deals with how
4963         this separation is to be accomplished; rules for files within
4964         the shared library packages are in <ref id="libraries"> instead.
4965       </p>
4966
4967       <sect id="sharedlibs-runtime">
4968         <heading>Run-time shared libraries</heading>
4969
4970       <p>
4971         The run-time shared library needs to be placed in a package
4972         whose name changes whenever the shared object version
4973         changes.<footnote>
4974             <p>
4975               Since it is common place to install several versions of a
4976               package that just provides shared libraries, it is a
4977               good idea that the library package should not
4978               contain any extraneous non-versioned files, unless they
4979               happen to be in versioned directories.</p>
4980           </footnote>
4981           The most common mechanism is to place it in a package
4982         called
4983         <package><var>libraryname</var><var>soversion</var></package>,
4984         where <file><var>soversion</var></file> is the version number
4985         in the soname of the shared library<footnote>
4986               The soname is the shared object name: it's the thing
4987               that has to match exactly between building an executable
4988               and running it for the dynamic linker to be able run the
4989               program.  For example, if the soname of the library is
4990               <file>libfoo.so.6</file>, the library package would be
4991               called <file>libfoo6</file>.
4992           </footnote>.
4993         Alternatively, if it would be confusing to directly append
4994         <var>soversion</var> to <var>libraryname</var> (e.g. because
4995         <var>libraryname</var> itself ends in a number), you may use
4996         <package><var>libraryname</var>-<var>soversion</var></package> and
4997         <package><var>libraryname</var>-<var>soversion</var>-dev</package>
4998         instead.
4999       </p>
5000
5001       <p>
5002         If you have several shared libraries built from the same
5003         source tree you may lump them all together into a single
5004         shared library package, provided that you change all of
5005         their sonames at once (so that you don't get filename
5006         clashes if you try to install different versions of the
5007         combined shared libraries package).
5008       </p>
5009
5010       <p>
5011         The package should install the shared libraries under
5012         their normal names.  For example, the <package>libgdbm3</package>
5013         package should install <file>libgdbm.so.3.0.0</file> as
5014         <file>/usr/lib/libgdbm.so.3.0.0</file>.  The files should not be
5015         renamed or re-linked by any <prgn>prerm</prgn> or
5016         <prgn>postrm</prgn> scripts; <prgn>dpkg</prgn> will take care
5017         of renaming things safely without affecting running programs,
5018         and attempts to interfere with this are likely to lead to
5019         problems.
5020       </p>
5021
5022       <p>
5023         Shared libraries should not be installed executable, since
5024         the dynamic linker does not require this and trying to
5025         execute a shared library usually results in a core dump.
5026       </p>
5027
5028       <p>
5029         The run-time library package should include the symbolic link that
5030         <prgn>ldconfig</prgn> would create for the shared libraries.
5031         For example, the <package>libgdbm3</package> package should include
5032         a symbolic link from <file>/usr/lib/libgdbm.so.3</file> to
5033         <file>libgdbm.so.3.0.0</file>.  This is needed so that the dynamic
5034         linker (for example <prgn>ld.so</prgn> or
5035         <prgn>ld-linux.so.*</prgn>) can find the library between the
5036         time that <prgn>dpkg</prgn> installs it and the time that
5037         <prgn>ldconfig</prgn> is run in the <prgn>postinst</prgn>
5038         script.<footnote>
5039             The package management system requires the library to be
5040             placed before the symbolic link pointing to it in the
5041             <file>.deb</file> file.  This is so that when
5042             <prgn>dpkg</prgn> comes to install the symlink
5043             (overwriting the previous symlink pointing at an older
5044             version of the library), the new shared library is already
5045             in place.  In the past, this was achieved by creating the
5046             library in the temporary packaging directory before
5047             creating the symlink.  Unfortunately, this was not always
5048             effective, since the building of the tar file in the
5049             <file>.deb</file> depended on the behavior of the underlying
5050             file system.  Some file systems (such as reiserfs) reorder
5051             the files so that the order of creation is forgotten.
5052             Since version 1.7.0, <prgn>dpkg</prgn>
5053             reorders the files itself as necessary when building a
5054             package.  Thus it is no longer important to concern
5055             oneself with the order of file creation.
5056         </footnote>
5057       </p>
5058
5059         <sect1 id="ldconfig">
5060           <heading><tt>ldconfig</tt></heading>
5061
5062         <p>
5063           Any package installing shared libraries in one of the default
5064           library directories of the dynamic linker (which are currently
5065           <file>/usr/lib</file> and <file>/lib</file>) or a directory that is
5066           listed in <file>/etc/ld.so.conf</file><footnote>
5067             These are currently
5068             <list compact="compact">
5069               <item>/usr/local/lib</item>
5070               <item>/usr/lib/libc5-compat</item>
5071               <item>/lib/libc5-compat</item>
5072             </list>
5073           </footnote>
5074           must use <prgn>ldconfig</prgn> to update the shared library
5075           system.
5076         </p>
5077
5078         <p>
5079             The package maintainer scripts must only call
5080             <prgn>ldconfig</prgn> under these circumstances:
5081             <list compact="compact">
5082               <item>When the <prgn>postinst</prgn> script is run with a
5083                   first argument of <tt>configure</tt>, the script must call
5084                   <prgn>ldconfig</prgn>, and may optionally invoke
5085                   <prgn>ldconfig</prgn> at other times.
5086               </item>
5087               <item>When the <prgn>postrm</prgn> script is run with a
5088                   first argument of <tt>remove</tt>, the script should call
5089                   <prgn>ldconfig</prgn>.
5090               </item>
5091             </list>
5092          <footnote>
5093             <p>
5094               During install or upgrade, the preinst is called before
5095               the new files are installed, so calling "ldconfig" is
5096               pointless.  The preinst of an existing package can also be
5097               called if an upgrade fails.  However, this happens during
5098               the critical time when a shared libs may exist on-disk
5099               under a temporary name.  Thus, it is dangerous and
5100               forbidden by current policy to call "ldconfig" at this
5101               time.
5102             </p>
5103
5104             <p>
5105               When a package is installed or upgraded, "postinst
5106               configure" runs after the new files are safely on-disk.
5107               Since it is perfectly safe to invoke ldconfig
5108               unconditionally in a postinst, it is OK for a package to
5109               simply put ldconfig in its postinst without checking the
5110               argument.  The postinst can also be called to recover from
5111               a failed upgrade.  This happens before any new files are
5112               unpacked, so there is no reason to call "ldconfig" at this
5113               point.
5114             </p>
5115
5116             <p>
5117               For a package that is being removed, prerm is
5118               called with all the files intact, so calling ldconfig is
5119               useless.  The other calls to "prerm" happen in the case of
5120               upgrade at a time when all the files of the old package
5121               are on-disk, so again calling "ldconfig" is pointless.
5122             </p>
5123
5124             <p>
5125               postrm, on the other hand, is called with the "remove"
5126               argument just after the files are removed, so this is
5127               the proper time to call "ldconfig" to notify the system
5128               of the fact that the shared libraries from the package
5129               are removed.  The postrm can be called at several other
5130               times.  At the time of "postrm purge", "postrm
5131               abort-install", or "postrm abort-upgrade", calling
5132               "ldconfig" is useless because the shared lib files are
5133               not on-disk.  However, when "postrm" is invoked with
5134               arguments "upgrade", "failed-upgrade", or "disappear", a
5135               shared lib may exist on-disk under a temporary filename.
5136             </p>
5137           </footnote>
5138         </p>
5139         </sect1>
5140
5141       </sect>
5142
5143       <sect id="sharedlibs-support-files">
5144         <heading>Shared library support files</heading>
5145
5146         <p>
5147           If your package contains files whose names do not change with
5148           each change in the library shared object version, you must not
5149           put them in the shared library package.  Otherwise, several
5150           versions of the shared library cannot be installed at the same
5151           time without filename clashes, making upgrades and transitions
5152           unnecessarily difficult.
5153         </p>
5154
5155         <p>
5156           It is recommended that supporting files and run-time support
5157           programs that do not need to be invoked manually by users, but
5158           are nevertheless required for the package to function, be placed
5159           (if they are binary) in a subdirectory of <file>/usr/lib</file>,
5160           preferably under <file>/usr/lib/</file><var>package-name</var>.
5161           If the program or file is architecture independent, the
5162           recommendation is for it to be placed in a subdirectory of
5163           <file>/usr/share</file> instead, preferably under
5164           <file>/usr/share/</file><var>package-name</var>.  Following the
5165           <var>package-name</var> naming convention ensures that the file
5166           names change when the shared object version changes.
5167         </p>
5168
5169         <p>
5170           Run-time support programs that use the shared library but are
5171           not required for the library to function or files used by the
5172           shared library that can be used by any version of the shared
5173           library package should instead be put in a separate package.
5174           This package might typically be named
5175           <package><var>libraryname</var>-tools</package>; note the
5176           absence of the <var>soversion</var> in the package name.
5177         </p>
5178
5179         <p>
5180           Files and support programs only useful when compiling software
5181           against the library should be included in the development
5182           package for the library.<footnote>
5183             For example, a <file><var>package-name</var>-config</file>
5184             script or <package>pkg-config</package> configuration files.
5185           </footnote>
5186         </p>
5187       </sect>
5188
5189       <sect id="sharedlibs-static">
5190         <heading>Static libraries</heading>
5191
5192       <p>
5193         The static library (<file><var>libraryname.a</var></file>)
5194         is usually provided in addition to the shared version.
5195         It is placed into the development package (see below).
5196       </p>
5197
5198       <p>
5199         In some cases, it is acceptable for a library to be
5200         available in static form only; these cases include:
5201         <list>
5202           <item>libraries for languages whose shared library support
5203                 is immature or unstable</item>
5204           <item>libraries whose interfaces are in flux or under
5205                 development (commonly the case when the library's
5206                 major version number is zero, or where the ABI breaks
5207                 across patchlevels)</item>
5208           <item>libraries which are explicitly intended to be
5209                 available only in static form by their upstream
5210                 author(s)</item>
5211         </list>
5212       </p>
5213
5214       <sect id="sharedlibs-dev">
5215         <heading>Development files</heading>
5216
5217       <p>
5218         The development files associated to a shared library need to be
5219         placed in a package called
5220         <package><var>libraryname</var><var>soversion</var>-dev</package>,
5221         or if you prefer only to support one development version at a
5222         time, <package><var>libraryname</var>-dev</package>.
5223       </p>
5224
5225       <p>
5226         In case several development versions of a library exist, you may
5227         need to use <prgn>dpkg</prgn>'s Conflicts mechanism (see
5228         <ref id="conflicts">) to ensure that the user only installs one
5229         development version at a time (as different development versions are
5230         likely to have the same header files in them, which would cause a
5231         filename clash if both were installed).
5232       </p>
5233
5234       <p>
5235         The development package should contain a symlink for the associated
5236         shared library without a version number. For example, the
5237         <package>libgdbm-dev</package> package should include a symlink
5238         from <file>/usr/lib/libgdbm.so</file> to
5239         <file>libgdbm.so.3.0.0</file>.  This symlink is needed by the linker
5240         (<prgn>ld</prgn>) when compiling packages, as it will only look for
5241         <file>libgdbm.so</file> when compiling dynamically.
5242       </p>
5243       </sect>
5244
5245       <sect id="sharedlibs-intradeps">
5246         <heading>Dependencies between the packages of the same library</heading>
5247
5248         <p>
5249           Typically the development version should have an exact
5250           version dependency on the runtime library, to make sure that
5251           compilation and linking happens correctly.  The
5252           <tt>${binary:Version}</tt> substitution variable can be
5253           useful for this purpose.
5254           <footnote>
5255             Previously, <tt>${Source-Version}</tt> was used, but its name
5256             was confusing and it has been deprecated since dpkg 1.13.19.
5257           </footnote>
5258         </p>
5259       </sect>
5260
5261       <sect id="sharedlibs-shlibdeps">
5262         <heading>Dependencies between the library and other packages -
5263         the <tt>shlibs</tt> system</heading>
5264
5265         <p>
5266           If a package contains a binary or library which links to a
5267           shared library, we must ensure that when the package is
5268           installed on the system, all of the libraries needed are
5269           also installed.  This requirement led to the creation of the
5270           <tt>shlibs</tt> system, which is very simple in its design:
5271           any package which <em>provides</em> a shared library also
5272           provides information on the package dependencies required to
5273           ensure the presence of this library, and any package which
5274           <em>uses</em> a shared library uses this information to
5275           determine the dependencies it requires.  The files which
5276           contain the mapping from shared libraries to the necessary
5277           dependency information are called <file>shlibs</file> files.
5278         </p>
5279
5280         <p>
5281           Thus, when a package is built which contains any shared
5282           libraries, it must provide a <file>shlibs</file> file for other
5283           packages to use, and when a package is built which contains
5284           any shared libraries or compiled binaries, it must run
5285           <qref id="pkg-dpkg-shlibdeps"><prgn>dpkg-shlibdeps</prgn></qref>
5286           on these to determine the libraries used and hence the
5287           dependencies needed by this package.<footnote>
5288             <p>
5289               In the past, the shared libraries linked to were
5290               determined by calling <prgn>ldd</prgn>, but now
5291               <prgn>objdump</prgn> is used to do this.  The only
5292               change this makes to package building is that
5293               <prgn>dpkg-shlibdeps</prgn> must also be run on shared
5294               libraries, whereas in the past this was unnecessary.
5295               The rest of this footnote explains the advantage that
5296               this method gives.
5297             </p>
5298
5299             <p>
5300               We say that a binary <tt>foo</tt> <em>directly</em> uses
5301               a library <tt>libbar</tt> if it is explicitly linked
5302               with that library (that is, it uses the flag
5303               <tt>-lbar</tt> during the linking stage).  Other
5304               libraries that are needed by <tt>libbar</tt> are linked
5305               <em>indirectly</em> to <tt>foo</tt>, and the dynamic
5306               linker will load them automatically when it loads
5307               <tt>libbar</tt>.  A package should depend on
5308               the libraries it directly uses, and the dependencies for
5309               those libraries should automatically pull in the other
5310               libraries.
5311             </p>
5312
5313             <p>
5314               Unfortunately, the <prgn>ldd</prgn> program shows both
5315               the directly and indirectly used libraries, meaning that
5316               the dependencies determined included both direct and
5317               indirect dependencies.  The use of <prgn>objdump</prgn>
5318               avoids this problem by determining only the directly
5319               used libraries.
5320             </p>
5321
5322             <p>
5323               A good example of where this helps is the following.  We
5324               could update <tt>libimlib</tt> with a new version that
5325               supports a new graphics format called dgf (but retaining
5326               the same major version number).  If we used the old
5327               <prgn>ldd</prgn> method, every package that uses
5328               <tt>libimlib</tt> would need to be recompiled so it
5329               would also depend on <tt>libdgf</tt> or it wouldn't run
5330               due to missing symbols.  However with the new system,
5331               packages using <tt>libimlib</tt> can rely on
5332               <tt>libimlib</tt> itself having the dependency on
5333               <tt>libdgf</tt> and so they would not need rebuilding.
5334             </p>
5335           </footnote>
5336         </p>
5337
5338         <p>
5339           In the following sections, we will first describe where the
5340           various <tt>shlibs</tt> files are to be found, then how to
5341           use <prgn>dpkg-shlibdeps</prgn>, and finally the <tt>shlibs</tt>
5342           file format and how to create them if your package contains a
5343           shared library.
5344         </p>
5345
5346       <sect1>
5347         <heading>The <tt>shlibs</tt> files present on the system</heading>
5348
5349         <p>
5350           There are several places where <tt>shlibs</tt> files are
5351           found.  The following list gives them in the order in which
5352           they are read by
5353           <qref id="pkg-dpkg-shlibdeps"><prgn>dpkg-shlibdeps</prgn></qref>.
5354           (The first one which gives the required information is used.)
5355         </p>
5356
5357         <p>
5358           <list>
5359             <item>
5360               <p><file>debian/shlibs.local</file></p>
5361
5362               <p>
5363                 This lists overrides for this package.  Its use is
5364                 described below (see <ref id="shlibslocal">).
5365               </p>
5366             </item>
5367
5368             <item>
5369               <p><file>/etc/dpkg/shlibs.override</file></p>
5370
5371               <p>
5372                 This lists global overrides.  This list is normally
5373                 empty.  It is maintained by the local system
5374                 administrator.
5375               </p>
5376             </item>
5377
5378             <item>
5379               <p><file>DEBIAN/shlibs</file> files in the "build directory"</p>
5380
5381               <p>
5382                 When packages are being built, any
5383                 <file>debian/shlibs</file> files are copied into the
5384                 control file area of the temporary build directory and
5385                 given the name <file>shlibs</file>.  These files give
5386                 details of any shared libraries included in the
5387                 package.<footnote>
5388                     An example may help here.  Let us say that the
5389                     source package <tt>foo</tt> generates two binary
5390                     packages, <tt>libfoo2</tt> and
5391                     <tt>foo-runtime</tt>.  When building the binary
5392                     packages, the two packages are created in the
5393                     directories <file>debian/libfoo2</file> and
5394                     <file>debian/foo-runtime</file> respectively.
5395                     (<file>debian/tmp</file> could be used instead of one
5396                     of these.)  Since <tt>libfoo2</tt> provides the
5397                     <tt>libfoo</tt> shared library, it will require a
5398                     <tt>shlibs</tt> file, which will be installed in
5399                     <file>debian/libfoo2/DEBIAN/shlibs</file>, eventually
5400                     to become
5401                     <file>/var/lib/dpkg/info/libfoo2.shlibs</file>.  Then
5402                     when <prgn>dpkg-shlibdeps</prgn> is run on the
5403                     executable
5404                     <file>debian/foo-runtime/usr/bin/foo-prog</file>, it
5405                     will examine the
5406                     <file>debian/libfoo2/DEBIAN/shlibs</file> file to
5407                     determine whether <tt>foo-prog</tt>'s library
5408                     dependencies are satisfied by any of the libraries
5409                     provided by <tt>libfoo2</tt>.  For this reason,
5410                     <prgn>dpkg-shlibdeps</prgn> must only be run once
5411                     all of the individual binary packages'
5412                     <tt>shlibs</tt> files have been installed into the
5413                     build directory.
5414                 </footnote>
5415               </p>
5416             </item>
5417
5418             <item>
5419               <p><file>/var/lib/dpkg/info/*.shlibs</file></p>
5420
5421               <p>
5422                 These are the <file>shlibs</file> files corresponding to
5423                 all of the packages installed on the system, and are
5424                 maintained by the relevant package maintainers.
5425               </p>
5426             </item>
5427
5428             <item>
5429               <p><file>/etc/dpkg/shlibs.default</file></p>
5430
5431               <p>
5432                 This file lists any shared libraries whose packages
5433                 have failed to provide correct <file>shlibs</file> files.
5434                 It was used when the <file>shlibs</file> setup was first
5435                 introduced, but it is now normally empty.  It is
5436                 maintained by the <tt>dpkg</tt> maintainer.
5437               </p>
5438             </item>
5439           </list>
5440         </p>
5441       </sect1>
5442
5443       <sect1>
5444         <heading>How to use <prgn>dpkg-shlibdeps</prgn> and the
5445             <file>shlibs</file> files</heading>
5446
5447         <p>
5448           Put a call to
5449           <qref id="pkg-dpkg-shlibdeps"><prgn>dpkg-shlibdeps</prgn></qref>
5450           into your <file>debian/rules</file> file.  If your package
5451           contains only compiled binaries and libraries (but no scripts),
5452           you can use a command such as:
5453           <example compact="compact">
5454 dpkg-shlibdeps debian/tmp/usr/bin/* debian/tmp/usr/sbin/* \
5455   debian/tmp/usr/lib/*
5456           </example>
5457           Otherwise, you will need to explicitly list the compiled
5458           binaries and libraries.<footnote>
5459               If you are using <tt>debhelper</tt>, the
5460               <prgn>dh_shlibdeps</prgn> program will do this work for
5461               you.  It will also correctly handle multi-binary
5462               packages.
5463           </footnote>
5464         </p>
5465
5466         <p>
5467           This command puts the dependency information into the
5468           <file>debian/substvars</file> file, which is then used by
5469           <prgn>dpkg-gencontrol</prgn>.  You will need to place a
5470           <tt>${shlibs:Depends}</tt> variable in the <tt>Depends</tt>
5471           field in the control file for this to work.
5472         </p>
5473
5474         <p>
5475           If <prgn>dpkg-shlibdeps</prgn> doesn't complain, you're
5476           done.  If it does complain you might need to create your own
5477           <file>debian/shlibs.local</file> file, as explained below (see
5478           <ref id="shlibslocal">).
5479         </p>
5480
5481         <p>
5482           If you have multiple binary packages, you will need to call
5483           <prgn>dpkg-shlibdeps</prgn> on each one which contains
5484           compiled libraries or binaries.  In such a case, you will
5485           need to use the <tt>-T</tt> option to the <tt>dpkg</tt>
5486           utilities to specify a different <file>substvars</file> file.
5487         </p>
5488
5489         <p>
5490           If you are creating a udeb for use in the Debian Installer,
5491           you will need to specify that <prgn>dpkg-shlibdeps</prgn>
5492           should use the dependency line of type <tt>udeb</tt> by
5493           adding the <tt>-tudeb</tt> option<footnote>
5494               <prgn>dh_shlibdeps</prgn> from the <tt>debhelper</tt> suite
5495               will automatically add this option if it knows it is
5496               processing a udeb.
5497           </footnote>. If there is no dependency line of type <tt>udeb</tt>
5498           in the <file>shlibs</file> file, <prgn>dpkg-shlibdeps</prgn> will
5499           fall back to the regular dependency line.
5500         </p>
5501
5502         <p>
5503           For more details on dpkg-shlibdeps, please see
5504           <ref id="pkg-dpkg-shlibdeps"> and
5505           <manref name="dpkg-shlibdeps" section="1">.
5506         </p>
5507       </sect1>
5508
5509       <sect1 id="shlibs">
5510         <heading>The <file>shlibs</file> File Format</heading>
5511
5512         <p>
5513           Each <file>shlibs</file> file has the same format.  Lines
5514           beginning with <tt>#</tt> are considered to be comments and
5515           are ignored.  Each line is of the form:
5516           <example compact="compact">
5517 [<var>type</var>: ]<var>library-name</var> <var>soname-version</var> <var>dependencies ...</var>
5518           </example>
5519         </p>
5520
5521         <p>
5522           We will explain this by reference to the example of the
5523           <tt>zlib1g</tt> package, which (at the time of writing)
5524           installs the shared library <file>/usr/lib/libz.so.1.1.3</file>.
5525         </p>
5526
5527         <p>
5528           <var>type</var> is an optional element that indicates the type
5529           of package for which the line is valid. The only type currently
5530           in use is <tt>udeb</tt>. The colon and space after the type are
5531           required.
5532         </p>
5533
5534         <p>
5535           <var>library-name</var> is the name of the shared library,
5536           in this case <tt>libz</tt>.  (This must match the name part
5537           of the soname, see below.)
5538         </p>
5539
5540         <p>
5541           <var>soname-version</var> is the version part of the soname of
5542           the library.  The soname is the thing that must exactly match
5543           for the library to be recognized by the dynamic linker, and is
5544           usually of the form
5545           <tt><var>name</var>.so.<var>major-version</var></tt>, in our
5546           example, <tt>libz.so.1</tt>.<footnote>
5547               This can be determined using the command
5548               <example compact="compact">
5549 objdump -p /usr/lib/libz.so.1.1.3 | grep SONAME
5550               </example>
5551           </footnote>
5552           The version part is the part which comes after
5553           <tt>.so.</tt>, so in our case, it is <tt>1</tt>.
5554         </p>
5555
5556         <p>
5557           <var>dependencies</var> has the same syntax as a dependency
5558           field in a binary package control file.  It should give
5559           details of which packages are required to satisfy a binary
5560           built against the version of the library contained in the
5561           package.  See <ref id="depsyntax"> for details.
5562         </p>
5563
5564         <p>
5565           In our example, if the first version of the <tt>zlib1g</tt>
5566           package which contained a minor number of at least
5567           <tt>1.3</tt> was <var>1:1.1.3-1</var>, then the
5568           <tt>shlibs</tt> entry for this library could say:
5569           <example compact="compact">
5570 libz 1 zlib1g (>= 1:1.1.3)
5571           </example>
5572           The version-specific dependency is to avoid warnings from
5573           the dynamic linker about using older shared libraries with
5574           newer binaries.
5575         </p>
5576
5577         <p>
5578           As zlib1g also provides a udeb containing the shared library,
5579           there would also be a second line:
5580           <example compact="compact">
5581 udeb: libz 1 zlib1g-udeb (>= 1:1.1.3)
5582           </example>
5583         </p>
5584       </sect1>
5585
5586       <sect1>
5587         <heading>Providing a <file>shlibs</file> file</heading>
5588
5589         <p>
5590           If your package provides a shared library, you need to create
5591           a <file>shlibs</file> file following the format described above.
5592           It is usual to call this file <file>debian/shlibs</file> (but if
5593           you have multiple binary packages, you might want to call it
5594           <file>debian/shlibs.<var>package</var></file> instead).  Then
5595           let <file>debian/rules</file> install it in the control area:
5596           <example compact="compact">
5597 install -m644 debian/shlibs debian/tmp/DEBIAN
5598           </example>
5599           or, in the case of a multi-binary package:
5600           <example compact="compact">
5601 install -m644 debian/shlibs.<var>package</var> debian/<var>package</var>/DEBIAN/shlibs
5602           </example>
5603           An alternative way of doing this is to create the
5604           <file>shlibs</file> file in the control area directly from
5605           <file>debian/rules</file> without using a <file>debian/shlibs</file>
5606           file at all,<footnote>
5607               This is what <prgn>dh_makeshlibs</prgn> in the
5608               <tt>debhelper</tt> suite does. If your package also has a udeb
5609               that provides a shared library, <prgn>dh_makeshlibs</prgn> can
5610               automatically generate the <tt>udeb:</tt> lines if you specify
5611               the name of the udeb with the <tt>--add-udeb</tt> option.
5612           </footnote>
5613           since the <file>debian/shlibs</file> file itself is ignored by
5614           <prgn>dpkg-shlibdeps</prgn>.
5615         </p>
5616
5617         <p>
5618           As <prgn>dpkg-shlibdeps</prgn> reads the
5619           <file>DEBIAN/shlibs</file> files in all of the binary packages
5620           being built from this source package, all of the
5621           <file>DEBIAN/shlibs</file> files should be installed before
5622           <prgn>dpkg-shlibdeps</prgn> is called on any of the binary
5623           packages.
5624         </p>
5625       </sect1>
5626
5627       <sect1 id="shlibslocal">
5628         <heading>Writing the <file>debian/shlibs.local</file> file</heading>
5629
5630         <p>
5631           This file is intended only as a <em>temporary</em> fix if
5632           your binaries or libraries depend on a library whose package
5633           does not yet provide a correct <file>shlibs</file> file.
5634         </p>
5635
5636         <p>
5637           We will assume that you are trying to package a binary
5638           <tt>foo</tt>.  When you try running
5639           <prgn>dpkg-shlibdeps</prgn> you get the following error
5640           message (<tt>-O</tt> displays the dependency information on
5641           <tt>stdout</tt> instead of writing it to
5642           <tt>debian/substvars</tt>, and the lines have been wrapped
5643           for ease of reading):
5644           <example compact="compact">
5645 $ dpkg-shlibdeps -O debian/tmp/usr/bin/foo
5646 dpkg-shlibdeps: warning: unable to find dependency
5647   information for shared library libbar (soname 1,
5648   path /usr/lib/libbar.so.1, dependency field Depends)
5649 shlibs:Depends=libc6 (>= 2.2.2-2)
5650           </example>
5651           You can then run <prgn>ldd</prgn> on the binary to find the
5652           full location of the library concerned:
5653           <example compact="compact">
5654 $ ldd foo
5655 libbar.so.1 => /usr/lib/libbar.so.1 (0x4001e000)
5656 libc.so.6 => /lib/libc.so.6 (0x40032000)
5657 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
5658           </example>
5659           So the <prgn>foo</prgn> binary depends on the
5660           <prgn>libbar</prgn> shared library, but no package seems to
5661           provide a <file>*.shlibs</file> file handling
5662           <file>libbar.so.1</file> in <file>/var/lib/dpkg/info/</file>.  Let's
5663           determine the package responsible:
5664           <example compact="compact">
5665 $ dpkg -S /usr/lib/libbar.so.1
5666 bar1: /usr/lib/libbar.so.1
5667 $ dpkg -s bar1 | grep Version
5668 Version: 1.0-1
5669           </example>
5670           This tells us that the <tt>bar1</tt> package, version 1.0-1,
5671           is the one we are using.  Now we can file a bug against the
5672           <tt>bar1</tt> package and create our own
5673           <file>debian/shlibs.local</file> to locally fix the problem.
5674           Including the following line into your
5675           <file>debian/shlibs.local</file> file:
5676           <example compact="compact">
5677 libbar 1 bar1 (>= 1.0-1)
5678           </example>
5679           should allow the package build to work.
5680         </p>
5681
5682         <p>
5683           As soon as the maintainer of <tt>bar1</tt> provides a
5684           correct <file>shlibs</file> file, you should remove this line
5685           from your <file>debian/shlibs.local</file> file.  (You should
5686           probably also then have a versioned <tt>Build-Depends</tt>
5687           on <tt>bar1</tt> to help ensure that others do not have the
5688           same problem building your package.)
5689         </p>
5690       </sect1>
5691
5692       </sect>
5693
5694     </chapt>
5695
5696
5697     <chapt id="opersys"><heading>The Operating System</heading>
5698
5699       <sect>
5700         <heading>File system hierarchy</heading>
5701
5702
5703         <sect1 id="fhs">
5704           <heading>File System Structure</heading>
5705
5706           <p>
5707             The location of all installed files and directories must
5708             comply with the Filesystem Hierarchy Standard (FHS),
5709             version 2.3, with the exceptions noted below, and except
5710             where doing so would violate other terms of Debian
5711             Policy.  The following exceptions to the FHS apply:
5712
5713             <enumlist>
5714               <item>
5715                 <p>
5716                   The optional rules related to user specific
5717                   configuration files for applications are stored in
5718                   the user's home directory are relaxed.  It is
5719                   recommended that such files start with the
5720                   '<tt>.</tt>' character (a "dot file"), and if an
5721                   application needs to create more than one dot file
5722                   then the preferred placement is in a subdirectory
5723                   with a name starting with a '.' character, (a "dot
5724                   directory"). In this case it is recommended the
5725                   configuration files not start with the '.'
5726                   character.
5727                 </p>
5728               </item>
5729               <item>
5730                 <p>
5731                   The requirement for amd64 to use <file>/lib64</file>
5732                   for 64 bit binaries is removed.
5733                 </p>
5734               </item>
5735               <item>
5736                 <p>
5737                   The requirement for object files, internal binaries, and
5738                   libraries, including <file>libc.so.*</file>, to be located
5739                   directly under <file>/lib{,32}</file> and
5740                   <file>/usr/lib{,32}</file> is amended, permitting files
5741                   to instead be installed to
5742                   <file>/lib/<var>triplet</var></file> and
5743                   <file>/usr/lib/<var>triplet</var></file>, where
5744                   <tt><var>triplet</var></tt> is the value returned by
5745                   <tt>dpkg-architecture -qDEB_HOST_GNU_TYPE</tt> for the
5746                   architecture of the package.  Packages may <em>not</em>
5747                   install files to any <var>triplet</var> path other
5748                   than the one matching the architecture of that package;
5749                   for instance, an <tt>Architecture: amd64</tt> package
5750                   containing 32-bit x86 libraries may not install these
5751                   libraries to <file>/usr/lib/i486-linux-gnu</file>.
5752                   <footnote>
5753                     This is necessary in order to reserve the directories for
5754                     use in cross-installation of library packages from other
5755                     architectures, as part of the planned deployment of
5756                     <tt>multiarch</tt>.
5757                   </footnote>
5758                 </p>
5759                 <p>
5760                   Applications may also use a single subdirectory under
5761                   <file>/usr/lib/<var>triplet</var></file>.
5762                 </p>
5763                 <p>
5764                   The execution time linker/loader, ld*, must still be made
5765                   available in the existing location under /lib or /lib64
5766                   since this is part of the ELF ABI for the architecture.
5767                 </p>
5768               </item>
5769               <item>
5770                 <p>
5771                   The requirement that
5772                   <file>/usr/local/share/man</file> be "synonymous"
5773                   with <file>/usr/local/man</file> is relaxed to a
5774                   recommendation</p>
5775               </item>
5776               <item>
5777                 <p>
5778                   The requirement that windowmanagers with a single
5779                   configuration file call it <file>system.*wmrc</file>
5780                   is removed, as is the restriction that the window
5781                   manager subdirectory be named identically to the
5782                   window manager name itself.
5783                 </p>
5784               </item>
5785               <item>
5786                 <p>
5787                   The requirement that boot manager configuration
5788                   files live in <file>/etc</file>, or at least are
5789                   symlinked there, is relaxed to a recommendation.
5790                 </p>
5791               </item>
5792               <item>
5793                 <p>
5794                   The following directories in the root filesystem are
5795                   additionally allowed: <file>/sys</file> and
5796                   <file>/selinux</file>. <footnote>These directories
5797                   are used as mount points to mount virtual filesystems
5798                   to get access to kernel information.</footnote>
5799                 </p>
5800               </item>
5801             </enumlist>
5802
5803           </p>
5804           <p>
5805             The version of this document referred here can be
5806             found in the <tt>debian-policy</tt> package or on <url
5807             id="http://www.debian.org/doc/packaging-manuals/fhs/"
5808               name="FHS (Debian copy)"> alongside this manual (or, if
5809             you have the <package>debian-policy</package> installed,
5810             you can try <url
5811               id="file:///usr/share/doc/debian-policy/fhs/" name="FHS
5812               (local copy)">). The
5813             latest version, which may be a more recent version, may
5814             be found on
5815             <url id="http://www.pathname.com/fhs/" name="FHS (upstream)">.
5816             Specific questions about following the standard may be
5817             asked on the <tt>debian-devel</tt> mailing list, or
5818             referred to the FHS mailing list (see the
5819             <url id="http://www.pathname.com/fhs/" name="FHS web site"> for
5820             more information).
5821           </p>
5822         </sect1>
5823
5824         <sect1>
5825           <heading>Site-specific programs</heading>
5826
5827           <p>
5828             As mandated by the FHS, packages must not place any
5829             files in <file>/usr/local</file>, either by putting them in
5830             the file system archive to be unpacked by <prgn>dpkg</prgn>
5831             or by manipulating them in their maintainer scripts.
5832           </p>
5833
5834           <p>
5835             However, the package may create empty directories below
5836             <file>/usr/local</file> so that the system administrator knows
5837             where to place site-specific files.  These are not
5838             directories <em>in</em> <file>/usr/local</file>, but are
5839             children of directories in <file>/usr/local</file>.  These
5840             directories (<file>/usr/local/*/dir/</file>)
5841             should be removed on package removal if they are
5842             empty.
5843           </p>
5844
5845           <p>
5846             Note that this applies only to
5847             directories <em>below</em> <file>/usr/local</file>,
5848             not <em>in</em> <file>/usr/local</file>.  Packages must
5849             not create sub-directories in the
5850             directory <file>/usr/local</file> itself, except those
5851             listed in FHS, section 4.5.  However, you may create
5852             directories below them as you wish. You must not remove
5853             any of the directories listed in 4.5, even if you created
5854             them.
5855           </p>
5856
5857           <p>
5858             Since <file>/usr/local</file> can be mounted read-only from a
5859             remote server, these directories must be created and
5860             removed by the <prgn>postinst</prgn> and <prgn>prerm</prgn>
5861             maintainer scripts and not be included in the
5862             <file>.deb</file> archive.  These scripts must not fail if
5863             either of these operations fail.
5864           </p>
5865
5866           <p>
5867             For example, the <tt>emacsen-common</tt> package could
5868             contain something like
5869             <example compact="compact">
5870 if [ ! -e /usr/local/share/emacs ]
5871 then
5872   if mkdir /usr/local/share/emacs 2>/dev/null
5873   then
5874     chown root:staff /usr/local/share/emacs
5875     chmod 2775 /usr/local/share/emacs
5876   fi
5877 fi
5878             </example>
5879             in its <prgn>postinst</prgn> script, and
5880             <example compact="compact">
5881 rmdir /usr/local/share/emacs/site-lisp 2>/dev/null || true
5882 rmdir /usr/local/share/emacs 2>/dev/null || true
5883             </example>
5884             in the <prgn>prerm</prgn> script.  (Note that this form is
5885             used to ensure that if the script is interrupted, the
5886             directory <file>/usr/local/share/emacs</file> will still be
5887             removed.)
5888           </p>
5889
5890           <p>
5891             If you do create a directory in <file>/usr/local</file> for
5892             local additions to a package, you should ensure that
5893             settings in <file>/usr/local</file> take precedence over the
5894             equivalents in <file>/usr</file>.
5895           </p>
5896
5897           <p>
5898             However, because <file>/usr/local</file> and its contents are
5899             for exclusive use of the local administrator, a package
5900             must not rely on the presence or absence of files or
5901             directories in <file>/usr/local</file> for normal operation.
5902           </p>
5903
5904           <p>
5905             The <file>/usr/local</file> directory itself and all the
5906             subdirectories created by the package should (by default) have
5907             permissions 2775 (group-writable and set-group-id) and be
5908             owned by <tt>root:staff</tt>.
5909           </p>
5910         </sect1>
5911
5912         <sect1>
5913           <heading>The system-wide mail directory</heading>
5914           <p>
5915             The system-wide mail directory
5916             is <file>/var/mail</file>. This directory is part of the
5917             base system and should not be owned by any particular mail
5918             agents.  The use of the old
5919             location <file>/var/spool/mail</file> is deprecated, even
5920             though the spool may still be physically located there.
5921           </p>
5922         </sect1>
5923       </sect>
5924
5925       <sect>
5926         <heading>Users and groups</heading>
5927
5928         <sect1>
5929           <heading>Introduction</heading>
5930           <p>
5931             The Debian system can be configured to use either plain or
5932             shadow passwords.
5933           </p>
5934
5935           <p>
5936             Some user ids (UIDs) and group ids (GIDs) are reserved
5937             globally for use by certain packages.  Because some
5938             packages need to include files which are owned by these
5939             users or groups, or need the ids compiled into binaries,
5940             these ids must be used on any Debian system only for the
5941             purpose for which they are allocated. This is a serious
5942             restriction, and we should avoid getting in the way of
5943             local administration policies. In particular, many sites
5944             allocate users and/or local system groups starting at 100.
5945           </p>
5946
5947           <p>
5948             Apart from this we should have dynamically allocated ids,
5949             which should by default be arranged in some sensible
5950             order, but the behavior should be configurable.
5951           </p>
5952
5953           <p>
5954             Packages other than <tt>base-passwd</tt> must not modify
5955             <file>/etc/passwd</file>, <file>/etc/shadow</file>,
5956             <file>/etc/group</file> or <file>/etc/gshadow</file>.
5957           </p>
5958         </sect1>
5959
5960         <sect1>
5961           <heading>UID and GID classes</heading>
5962           <p>
5963             The UID and GID numbers are divided into classes as
5964             follows:
5965             <taglist>
5966               <tag>0-99:</tag>
5967               <item>
5968                 <p>
5969                   Globally allocated by the Debian project, the same
5970                   on every Debian system.  These ids will appear in
5971                   the <file>passwd</file> and <file>group</file> files of all
5972                   Debian systems, new ids in this range being added
5973                   automatically as the <tt>base-passwd</tt> package is
5974                   updated.
5975                 </p>
5976
5977                 <p>
5978                   Packages which need a single statically allocated
5979                   uid or gid should use one of these; their
5980                   maintainers should ask the <tt>base-passwd</tt>
5981                   maintainer for ids.
5982                 </p>
5983               </item>
5984
5985               <tag>100-999:</tag>
5986               <item>
5987                 <p>
5988                   Dynamically allocated system users and groups.
5989                   Packages which need a user or group, but can have
5990                   this user or group allocated dynamically and
5991                   differently on each system, should use <tt>adduser
5992                   --system</tt> to create the group and/or user.
5993                   <prgn>adduser</prgn> will check for the existence of
5994                   the user or group, and if necessary choose an unused
5995                   id based on the ranges specified in
5996                   <file>adduser.conf</file>.
5997                 </p>
5998               </item>
5999
6000               <tag>1000-59999:</tag>
6001               <item>
6002                 <p>
6003                   Dynamically allocated user accounts.  By default
6004                   <prgn>adduser</prgn> will choose UIDs and GIDs for
6005                   user accounts in this range, though
6006                   <file>adduser.conf</file> may be used to modify this
6007                   behavior.
6008                 </p>
6009               </item>
6010
6011               <tag>60000-64999:</tag>
6012               <item>
6013                 <p>
6014                   Globally allocated by the Debian project, but only
6015                   created on demand. The ids are allocated centrally
6016                   and statically, but the actual accounts are only
6017                   created on users' systems on demand.
6018                 </p>
6019
6020                 <p>
6021                   These ids are for packages which are obscure or
6022                   which require many statically-allocated ids.  These
6023                   packages should check for and create the accounts in
6024                   <file>/etc/passwd</file> or <file>/etc/group</file> (using
6025                   <prgn>adduser</prgn> if it has this facility) if
6026                   necessary.  Packages which are likely to require
6027                   further allocations should have a "hole" left after
6028                   them in the allocation, to give them room to
6029                   grow.
6030                 </p>
6031               </item>
6032
6033               <tag>65000-65533:</tag>
6034               <item>
6035                 <p>Reserved.</p>
6036               </item>
6037
6038               <tag>65534:</tag>
6039               <item>
6040                 <p>
6041                   User <tt>nobody</tt>. The corresponding gid refers
6042                   to the group <tt>nogroup</tt>.
6043                 </p>
6044               </item>
6045
6046               <tag>65535:</tag>
6047               <item>
6048                 <p>
6049                   <tt>(uid_t)(-1) == (gid_t)(-1)</tt> <em>must
6050                   not</em> be used, because it is the error return
6051                   sentinel value.
6052                 </p>
6053               </item>
6054             </taglist>
6055           </p>
6056         </sect1>
6057       </sect>
6058
6059       <sect id="sysvinit">
6060         <heading>System run levels and <file>init.d</file> scripts</heading>
6061
6062         <sect1 id="/etc/init.d">
6063           <heading>Introduction</heading>
6064
6065           <p>
6066             The <file>/etc/init.d</file> directory contains the scripts
6067             executed by <prgn>init</prgn> at boot time and when the
6068             init state (or "runlevel") is changed (see <manref
6069             name="init" section="8">).
6070           </p>
6071
6072           <p>
6073             There are at least two different, yet functionally
6074             equivalent, ways of handling these scripts.  For the sake
6075             of simplicity, this document describes only the symbolic
6076             link method. However, it must not be assumed by maintainer
6077             scripts that this method is being used, and any automated
6078             manipulation of the various runlevel behaviors by
6079             maintainer scripts must be performed using
6080             <prgn>update-rc.d</prgn> as described below and not by
6081             manually installing or removing symlinks.  For information
6082             on the implementation details of the other method,
6083             implemented in the <tt>file-rc</tt> package, please refer
6084             to the documentation of that package.
6085           </p>
6086
6087           <p>
6088             These scripts are referenced by symbolic links in the
6089             <file>/etc/rc<var>n</var>.d</file> directories.  When changing
6090             runlevels, <prgn>init</prgn> looks in the directory
6091             <file>/etc/rc<var>n</var>.d</file> for the scripts it should
6092             execute, where <tt><var>n</var></tt> is the runlevel that
6093             is being changed to, or <tt>S</tt> for the boot-up
6094             scripts.
6095           </p>
6096
6097           <p>
6098             The names of the links all have the form
6099             <file>S<var>mm</var><var>script</var></file> or
6100             <file>K<var>mm</var><var>script</var></file> where
6101             <var>mm</var> is a two-digit number and <var>script</var>
6102             is the name of the script (this should be the same as the
6103             name of the actual script in <file>/etc/init.d</file>).
6104           </p>
6105
6106           <p>
6107             When <prgn>init</prgn> changes runlevel first the targets
6108             of the links whose names start with a <tt>K</tt> are
6109             executed, each with the single argument <tt>stop</tt>,
6110             followed by the scripts prefixed with an <tt>S</tt>, each
6111             with the single argument <tt>start</tt>.  (The links are
6112             those in the <file>/etc/rc<var>n</var>.d</file> directory
6113             corresponding to the new runlevel.)  The <tt>K</tt> links
6114             are responsible for killing services and the <tt>S</tt>
6115             link for starting services upon entering the runlevel.
6116           </p>
6117
6118           <p>
6119             For example, if we are changing from runlevel 2 to
6120             runlevel 3, init will first execute all of the <tt>K</tt>
6121             prefixed scripts it finds in <file>/etc/rc3.d</file>, and then
6122             all of the <tt>S</tt> prefixed scripts in that directory.
6123             The links starting with <tt>K</tt> will cause the
6124             referred-to file to be executed with an argument of
6125             <tt>stop</tt>, and the <tt>S</tt> links with an argument
6126             of <tt>start</tt>.
6127           </p>
6128
6129           <p>
6130             The two-digit number <var>mm</var> is used to determine
6131             the order in which to run the scripts: low-numbered links
6132             have their scripts run first.  For example, the
6133             <tt>K20</tt> scripts will be executed before the
6134             <tt>K30</tt> scripts.  This is used when a certain service
6135             must be started before another.  For example, the name
6136             server <prgn>bind</prgn> might need to be started before
6137             the news server <prgn>inn</prgn> so that <prgn>inn</prgn>
6138             can set up its access lists.  In this case, the script
6139             that starts <prgn>bind</prgn> would have a lower number
6140             than the script that starts <prgn>inn</prgn> so that it
6141             runs first:
6142             <example compact="compact">
6143 /etc/rc2.d/S17bind
6144 /etc/rc2.d/S70inn
6145             </example>
6146           </p>
6147
6148           <p>
6149             The two runlevels 0 (halt) and 6 (reboot) are slightly
6150             different.  In these runlevels, the links with an
6151             <tt>S</tt> prefix are still called after those with a
6152             <tt>K</tt> prefix, but they too are called with the single
6153             argument <tt>stop</tt>.
6154           </p>
6155         </sect1>
6156
6157         <sect1 id="writing-init">
6158           <heading>Writing the scripts</heading>
6159
6160           <p>
6161             Packages that include daemons for system services should
6162             place scripts in <file>/etc/init.d</file> to start or stop
6163             services at boot time or during a change of runlevel.
6164             These scripts should be named
6165             <file>/etc/init.d/<var>package</var></file>, and they should
6166             accept one argument, saying what to do:
6167
6168             <taglist>
6169               <tag><tt>start</tt></tag>
6170               <item>start the service,</item>
6171
6172               <tag><tt>stop</tt></tag>
6173               <item>stop the service,</item>
6174
6175               <tag><tt>restart</tt></tag>
6176               <item>stop and restart the service if it's already running,
6177                   otherwise start the service</item>
6178
6179               <tag><tt>reload</tt></tag>
6180               <item><p>cause the configuration of the service to be
6181                   reloaded without actually stopping and restarting
6182                   the service,</item>
6183
6184               <tag><tt>force-reload</tt></tag>
6185               <item>cause the configuration to be reloaded if the
6186                   service supports this, otherwise restart the
6187                   service.</item>
6188             </taglist>
6189
6190             The <tt>start</tt>, <tt>stop</tt>, <tt>restart</tt>, and
6191             <tt>force-reload</tt> options should be supported by all
6192             scripts in <file>/etc/init.d</file>, the <tt>reload</tt>
6193             option is optional.
6194           </p>
6195
6196           <p>
6197             The <file>init.d</file> scripts must ensure that they will
6198             behave sensibly (i.e., returning success and not starting
6199             multiple copies of a service) if invoked with <tt>start</tt>
6200             when the service is already running, or with <tt>stop</tt>
6201             when it isn't, and that they don't kill unfortunately-named
6202             user processes.  The best way to achieve this is usually to
6203             use <prgn>start-stop-daemon</prgn> with the <tt>--oknodo</tt>
6204             option.
6205           </p>
6206
6207           <p>
6208             Be careful of using <tt>set -e</tt> in <file>init.d</file>
6209             scripts.  Writing correct <file>init.d</file> scripts requires
6210             accepting various error exit statuses when daemons are already
6211             running or already stopped without aborting
6212             the <file>init.d</file> script, and common <file>init.d</file>
6213             function libraries are not safe to call with <tt>set -e</tt>
6214             in effect<footnote>
6215               <tt>/lib/lsb/init-functions</tt>, which assists in writing
6216               LSB-compliant init scripts, may fail if <tt>set -e</tt> is
6217               in effect and echoing status messages to the console fails,
6218               for example.
6219             </footnote>.  For <tt>init.d</tt> scripts, it's often easier
6220             to not use <tt>set -e</tt> and instead check the result of
6221             each command separately.
6222           </p>
6223
6224           <p>
6225             If a service reloads its configuration automatically (as
6226             in the case of <prgn>cron</prgn>, for example), the
6227             <tt>reload</tt> option of the <file>init.d</file> script
6228             should behave as if the configuration has been reloaded
6229             successfully.
6230           </p>
6231
6232           <p>
6233             The <file>/etc/init.d</file> scripts must be treated as
6234             configuration files, either (if they are present in the
6235             package, that is, in the .deb file) by marking them as
6236             <tt>conffile</tt>s, or, (if they do not exist in the .deb)
6237             by managing them correctly in the maintainer scripts (see
6238             <ref id="config-files">).  This is important since we want
6239             to give the local system administrator the chance to adapt
6240             the scripts to the local system, e.g., to disable a
6241             service without de-installing the package, or to specify
6242             some special command line options when starting a service,
6243             while making sure their changes aren't lost during the next
6244             package upgrade.
6245           </p>
6246
6247           <p>
6248             These scripts should not fail obscurely when the
6249             configuration files remain but the package has been
6250             removed, as configuration files remain on the system after
6251             the package has been removed.  Only when <prgn>dpkg</prgn>
6252             is executed with the <tt>--purge</tt> option will
6253             configuration files be removed.  In particular, as the
6254             <file>/etc/init.d/<var>package</var></file> script itself is
6255             usually a <tt>conffile</tt>, it will remain on the system
6256             if the package is removed but not purged.  Therefore, you
6257             should include a <tt>test</tt> statement at the top of the
6258             script, like this:
6259             <example compact="compact">
6260 test -f <var>program-executed-later-in-script</var> || exit 0
6261             </example>
6262           </p>
6263
6264           <p>
6265             Often there are some variables in the <file>init.d</file>
6266             scripts whose values control the behavior of the scripts,
6267             and which a system administrator is likely to want to
6268             change.  As the scripts themselves are frequently
6269             <tt>conffile</tt>s, modifying them requires that the
6270             administrator merge in their changes each time the package
6271             is upgraded and the <tt>conffile</tt> changes.  To ease
6272             the burden on the system administrator, such configurable
6273             values should not be placed directly in the script.
6274             Instead, they should be placed in a file in
6275             <file>/etc/default</file>, which typically will have the same
6276             base name as the <file>init.d</file> script.  This extra file
6277             should be sourced by the script when the script runs.  It
6278             must contain only variable settings and comments in SUSv3
6279             <prgn>sh</prgn> format.  It may either be a
6280             <tt>conffile</tt> or a configuration file maintained by
6281             the package maintainer scripts.  See <ref id="config-files">
6282             for more details.
6283           </p>
6284
6285           <p>
6286             To ensure that vital configurable values are always
6287             available, the <file>init.d</file> script should set default
6288             values for each of the shell variables it uses, either
6289             before sourcing the <file>/etc/default/</file> file or
6290             afterwards using something like the <tt>:
6291             ${VAR:=default}</tt> syntax.  Also, the <file>init.d</file>
6292             script must behave sensibly and not fail if the
6293             <file>/etc/default</file> file is deleted.
6294           </p>
6295
6296           <p>
6297             <file>/var/run</file> and <file>/var/lock</file> may be mounted
6298             as temporary filesystems<footnote>
6299                 For example, using the <tt>RAMRUN</tt> and <tt>RAMLOCK</tt>
6300                 options in <file>/etc/default/rcS</file>.
6301             </footnote>, so the <file>init.d</file> scripts must handle this
6302             correctly. This will typically amount to creating any required
6303             subdirectories dynamically when the <file>init.d</file> script
6304             is run, rather than including them in the package and relying on
6305             <prgn>dpkg</prgn> to create them.
6306           </p>
6307         </sect1>
6308
6309         <sect1>
6310           <heading>Interfacing with the initscript system</heading>
6311
6312           <p>
6313             Maintainers should use the abstraction layer provided by
6314             the <prgn>update-rc.d</prgn> and <prgn>invoke-rc.d</prgn>
6315             programs to deal with initscripts in their packages'
6316             scripts such as <prgn>postinst</prgn>, <prgn>prerm</prgn>
6317             and <prgn>postrm</prgn>.
6318           </p>
6319
6320           <p>
6321             Directly managing the /etc/rc?.d links and directly
6322             invoking the <file>/etc/init.d/</file> initscripts should
6323             be done only by packages providing the initscript
6324             subsystem (such as <prgn>sysv-rc</prgn> and
6325             <prgn>file-rc</prgn>).
6326           </p>
6327
6328           <sect2>
6329             <heading>Managing the links</heading>
6330
6331             <p>
6332               The program <prgn>update-rc.d</prgn> is provided for
6333               package maintainers to arrange for the proper creation and
6334               removal of <file>/etc/rc<var>n</var>.d</file> symbolic links,
6335               or their functional equivalent if another method is being
6336               used.  This may be used by maintainers in their packages'
6337               <prgn>postinst</prgn> and <prgn>postrm</prgn> scripts.
6338             </p>
6339
6340             <p>
6341               You must not include any <file>/etc/rc<var>n</var>.d</file>
6342               symbolic links in the actual archive or manually create or
6343               remove the symbolic links in maintainer scripts; you must
6344               use the <prgn>update-rc.d</prgn> program instead.  (The
6345               former will fail if an alternative method of maintaining
6346               runlevel information is being used.)  You must not include
6347               the <file>/etc/rc<var>n</var>.d</file> directories themselves
6348               in the archive either.  (Only the <tt>sysvinit</tt>
6349               package may do so.)
6350             </p>
6351
6352             <p>
6353               By default <prgn>update-rc.d</prgn> will start services in
6354               each of the multi-user state runlevels (2, 3, 4, and 5)
6355               and stop them in the halt runlevel (0), the single-user
6356               runlevel (1) and the reboot runlevel (6).  The system
6357               administrator will have the opportunity to customize
6358               runlevels by simply adding, moving, or removing the
6359               symbolic links in <file>/etc/rc<var>n</var>.d</file> if
6360               symbolic links are being used, or by modifying
6361               <file>/etc/runlevel.conf</file> if the <tt>file-rc</tt> method
6362               is being used.
6363             </p>
6364
6365             <p>
6366               To get the default behavior for your package, put in your
6367               <prgn>postinst</prgn> script
6368               <example compact="compact">
6369                 update-rc.d <var>package</var> defaults
6370               </example>
6371               and in your <prgn>postrm</prgn>
6372               <example compact="compact">
6373                 if [ "$1" = purge ]; then
6374                 update-rc.d <var>package</var> remove
6375                 fi
6376               </example>. Note that if your package changes runlevels
6377               or priority, you may have to remove and recreate the links,
6378               since otherwise the old links may persist. Refer to the
6379               documentation of <prgn>update-rc.d</prgn>.
6380             </p>
6381
6382             <p>
6383               This will use a default sequence number of 20.  If it does
6384               not matter when or in which order the <file>init.d</file>
6385               script is run, use this default.  If it does, then you
6386               should talk to the maintainer of the <prgn>sysvinit</prgn>
6387               package or post to <tt>debian-devel</tt>, and they will
6388               help you choose a number.
6389             </p>
6390
6391             <p>
6392               For more information about using <tt>update-rc.d</tt>,
6393               please consult its man page <manref name="update-rc.d"
6394                 section="8">.
6395             </p>
6396           </sect2>
6397
6398           <sect2>
6399             <heading>Running initscripts</heading>
6400             <p>
6401               The program <prgn>invoke-rc.d</prgn> is provided to make
6402               it easier for package maintainers to properly invoke an
6403               initscript, obeying runlevel and other locally-defined
6404               constraints that might limit a package's right to start,
6405               stop and otherwise manage services. This program may be
6406               used by maintainers in their packages' scripts.
6407             </p>
6408
6409             <p>
6410               The package maintainer scripts must use
6411               <prgn>invoke-rc.d</prgn> to invoke the
6412               <file>/etc/init.d/*</file> initscripts, instead of
6413               calling them directly.
6414             </p>
6415
6416             <p>
6417               By default, <prgn>invoke-rc.d</prgn> will pass any
6418               action requests (start, stop, reload, restart...) to the
6419               <file>/etc/init.d</file> script, filtering out requests
6420               to start or restart a service out of its intended
6421               runlevels.
6422             </p>
6423
6424             <p>
6425               Most packages will simply need to change:
6426               <example compact="compact">/etc/init.d/&lt;package&gt;
6427               &lt;action&gt;</example> in their <prgn>postinst</prgn>
6428               and <prgn>prerm</prgn> scripts to:
6429               <example compact="compact">
6430         if which invoke-rc.d >/dev/null 2>&1; then
6431                 invoke-rc.d <var>package</var> &lt;action&gt;
6432         else
6433                 /etc/init.d/<var>package</var> &lt;action&gt;
6434         fi
6435               </example>
6436             </p>
6437
6438             <p>
6439               A package should register its initscript services using
6440               <prgn>update-rc.d</prgn> before it tries to invoke them
6441               using <prgn>invoke-rc.d</prgn>. Invocation of
6442               unregistered services may fail.
6443             </p>
6444
6445             <p>
6446               For more information about using
6447               <prgn>invoke-rc.d</prgn>, please consult its man page
6448               <manref name="invoke-rc.d" section="8">.
6449             </p>
6450           </sect2>
6451         </sect1>
6452
6453         <sect1>
6454           <heading>Boot-time initialization</heading>
6455
6456           <p>
6457             There used to be another directory, <file>/etc/rc.boot</file>,
6458             which contained scripts which were run once per machine
6459             boot. This has been deprecated in favour of links from
6460             <file>/etc/rcS.d</file> to files in <file>/etc/init.d</file> as
6461             described in <ref id="/etc/init.d">.  Packages must not
6462             place files in <file>/etc/rc.boot</file>.
6463           </p>
6464         </sect1>
6465
6466         <sect1>
6467           <heading>Example</heading>
6468
6469           <p>
6470             An example on which you can base your
6471             <file>/etc/init.d</file> scripts is found in
6472             <file>/etc/init.d/skeleton</file>.
6473           </p>
6474
6475         </sect1>
6476       </sect>
6477
6478       <sect>
6479         <heading>Console messages from <file>init.d</file> scripts</heading>
6480
6481         <p>
6482           This section describes the formats to be used for messages
6483           written to standard output by the <file>/etc/init.d</file>
6484           scripts.  The intent is to improve the consistency of
6485           Debian's startup and shutdown look and feel.  For this
6486           reason, please look very carefully at the details.  We want
6487           the messages to have the same format in terms of wording,
6488           spaces, punctuation and case of letters.
6489         </p>
6490
6491         <p>
6492           Here is a list of overall rules that should be used for
6493           messages generated by <file>/etc/init.d</file> scripts.  
6494         </p>
6495
6496         <p>
6497           <list>
6498             <item>
6499                 The message should fit in one line (fewer than 80
6500                 characters), start with a capital letter and end with
6501                 a period (<tt>.</tt>) and line feed (<tt>"\n"</tt>).
6502             </item>
6503
6504             <item>
6505               If the script is performing some time consuming task in
6506               the background (not merely starting or stopping a
6507               program, for instance), an ellipsis (three dots:
6508               <tt>...</tt>) should be output to the screen, with no
6509               leading or tailing whitespace or line feeds.
6510             </item>
6511
6512             <item>
6513               The messages should appear as if the computer is telling
6514               the user what it is doing (politely :-), but should not
6515                 mention "it" directly.  For example, instead of:
6516                 <example compact="compact">
6517 I'm starting network daemons: nfsd mountd.
6518                 </example>
6519                 the message should say
6520                 <example compact="compact">
6521 Starting network daemons: nfsd mountd.
6522                 </example>
6523             </item>
6524           </list>
6525         </p>
6526
6527         <p>
6528           <tt>init.d</tt> script should use the following  standard
6529           message formats for the situations enumerated below.
6530         </p>
6531
6532         <p>
6533           <list>
6534             <item>
6535               <p>When daemons are started</p>
6536
6537               <p>
6538                 If the script starts one or more daemons, the output
6539                 should look like this (a single line, no leading
6540                 spaces):
6541                 <example compact="compact">
6542 Starting <var>description</var>: <var>daemon-1</var> ... <var>daemon-n</var>.
6543                 </example>
6544                 The <var>description</var> should describe the
6545                 subsystem the daemon or set of daemons are part of,
6546                 while <var>daemon-1</var> up to <var>daemon-n</var>
6547                 denote each daemon's name (typically the file name of
6548                 the program).
6549               </p>
6550
6551               <p>
6552                 For example, the output of <file>/etc/init.d/lpd</file>
6553                 would look like:
6554                 <example compact="compact">
6555 Starting printer spooler: lpd.
6556                 </example>
6557               </p>
6558
6559               <p>
6560                 This can be achieved by saying
6561                 <example compact="compact">
6562 echo -n "Starting printer spooler: lpd"
6563 start-stop-daemon --start --quiet --exec /usr/sbin/lpd
6564 echo "."
6565                 </example>
6566                 in the script. If there are more than one daemon to
6567                 start, the output should look like this:
6568                 <example compact="compact">
6569 echo -n "Starting remote file system services:"
6570 echo -n " nfsd"; start-stop-daemon --start --quiet nfsd
6571 echo -n " mountd"; start-stop-daemon --start --quiet mountd
6572 echo -n " ugidd"; start-stop-daemon --start --quiet ugidd
6573 echo "."
6574                 </example>
6575                 This makes it possible for the user to see what is
6576                 happening and when the final daemon has been started.
6577                 Care should be taken in the placement of white spaces:
6578                 in the example above the system administrators can
6579                 easily comment out a line if they don't want to start
6580                 a specific daemon, while the displayed message still
6581                 looks good.
6582               </p>
6583             </item>
6584
6585             <item>
6586               <p>When a system parameter is being set</p>
6587
6588               <p>
6589                 If you have to set up different system parameters
6590                 during the system boot, you should use this format:
6591                 <example compact="compact">
6592 Setting <var>parameter</var> to "<var>value</var>".
6593                 </example>
6594               </p>
6595
6596               <p>
6597                 You can use a statement such as the following to get
6598                 the quotes right:
6599                 <example compact="compact">
6600 echo "Setting DNS domainname to \"$domainname\"."
6601                 </example>
6602               </p>
6603
6604               <p>
6605                 Note that the same symbol (<tt>"</tt>) <!-- " --> is used
6606                 for the left and right quotation marks.  A grave accent
6607                 (<tt>`</tt>) is not a quote character; neither is an
6608                 apostrophe (<tt>'</tt>).
6609               </p>
6610             </item>
6611
6612             <item>
6613               <p>When a daemon is stopped or restarted</p>
6614
6615               <p>
6616                 When you stop or restart a daemon, you should issue a
6617                 message identical to the startup message, except that
6618                 <tt>Starting</tt> is replaced with <tt>Stopping</tt>
6619                 or <tt>Restarting</tt> respectively.
6620               </p>
6621
6622               <p>
6623                 For example, stopping the printer daemon will look like
6624                 this:
6625                 <example compact="compact">
6626 Stopping printer spooler: lpd.
6627                 </example>
6628               </p>
6629             </item>
6630
6631             <item>
6632               <p>When something is executed</p>
6633
6634               <p>
6635                 There are several examples where you have to run a
6636                 program at system startup or shutdown to perform a
6637                 specific task, for example, setting the system's clock
6638                 using <prgn>netdate</prgn> or killing all processes
6639                 when the system shuts down.  Your message should look
6640                 like this:
6641                 <example compact="compact">
6642 Doing something very useful...done.
6643                 </example>
6644                 You should print the <tt>done.</tt> immediately after
6645                 the job has been completed, so that the user is
6646                 informed why they have to wait.  You can get this
6647                 behavior by saying
6648                 <example compact="compact">
6649 echo -n "Doing something very useful..."
6650 do_something
6651 echo "done."
6652                 </example>
6653                 in your script.
6654               </p>
6655             </item>
6656
6657             <item>
6658               <p>When the configuration is reloaded</p>
6659
6660               <p>
6661                 When a daemon is forced to reload its configuration
6662                 files you should use the following format:
6663                 <example compact="compact">
6664 Reloading <var>description</var> configuration...done.
6665                 </example>
6666                 where <var>description</var> is the same as in the
6667                 daemon starting message.
6668               </p>
6669             </item>
6670           </list>
6671         </p>
6672       </sect>
6673
6674       <sect>
6675         <heading>Cron jobs</heading>
6676
6677         <p>
6678           Packages must not modify the configuration file
6679           <file>/etc/crontab</file>, and they must not modify the files in
6680           <file>/var/spool/cron/crontabs</file>.</p>
6681
6682         <p>
6683           If a package wants to install a job that has to be executed
6684           via cron, it should place a file with the name of the
6685           package in one or more of the following directories:
6686           <example compact="compact">
6687 /etc/cron.hourly
6688 /etc/cron.daily
6689 /etc/cron.weekly
6690 /etc/cron.monthly
6691           </example>
6692           As these directory names imply, the files within them are
6693           executed on an hourly, daily, weekly, or monthly basis,
6694           respectively. The exact times are listed in
6695           <file>/etc/crontab</file>.</p>
6696
6697         <p>
6698           All files installed in any of these directories must be
6699           scripts (e.g., shell scripts or Perl scripts) so that they
6700           can easily be modified by the local system administrator.
6701           In addition, they must be treated as configuration files.
6702         </p>
6703
6704         <p>
6705           If a certain job has to be executed at some other frequency or
6706           at a specific time, the package should install a file
6707           <file>/etc/cron.d/<var>package</var></file>. This file uses the
6708           same syntax as <file>/etc/crontab</file> and is processed by
6709           <prgn>cron</prgn> automatically. The file must also be
6710           treated as a configuration file. (Note that entries in the
6711           <file>/etc/cron.d</file> directory are not handled by
6712           <prgn>anacron</prgn>. Thus, you should only use this
6713           directory for jobs which may be skipped if the system is not
6714           running.)</p>
6715         <p>
6716           Unlike <file>crontab</file> files described in the IEEE Std
6717           1003.1-2008 (POSIX.1) available from
6718           <url id="http://www.opengroup.org/onlinepubs/9699919799/"
6719                name="The Open Group">, the files in
6720           <file>/etc/cron.d</file> and the file
6721           <file>/etc/crontab</file> have seven fields; namely:
6722           <enumlist>
6723             <item>Minute [0,59]</item>
6724             <item>Hour [0,23]</item>
6725             <item>Day of the month [1,31]</item>
6726             <item>Month of the year [1,12]</item>
6727             <item>Day of the week ([0,6] with 0=Sunday)</item>
6728             <item>Username</item>
6729             <item>Command to be run</item>
6730           </enumlist>
6731           Ranges of numbers are allowed.  Ranges are two numbers
6732           separated with a hyphen.  The specified range is inclusive.
6733           Lists are allowed.  A list is a set of numbers (or ranges)
6734           separated by commas. Step values can be used in conjunction
6735           with ranges.
6736         </p>
6737
6738         <p>
6739           The scripts or <tt>crontab</tt> entries in these directories should
6740           check if all necessary programs are installed before they
6741           try to execute them. Otherwise, problems will arise when a
6742           package was removed but not purged since configuration files
6743           are kept on the system in this situation.
6744         </p>
6745
6746         <p>
6747           Any <tt>cron</tt> daemon must provide
6748           <file>/usr/bin/crontab</file> and support normal
6749           <tt>crontab</tt> entries as specified in POSIX. The daemon
6750           must also support names for days and months, ranges, and
6751           step values. It has to support <file>/etc/crontab</file>,
6752           and correctly execute the scripts in
6753           <file>/etc/cron.d</file>. The daemon must also correctly
6754           execute scripts in
6755           <file>/etc/cron.{hourly,daily,weekly,monthly}</file>.
6756         </p>
6757       </sect>
6758
6759       <sect id="menus">
6760         <heading>Menus</heading>
6761
6762         <p>
6763           The Debian <tt>menu</tt> package provides a standard
6764           interface between packages providing applications and
6765           <em>menu programs</em> (either X window managers or
6766           text-based menu programs such as <prgn>pdmenu</prgn>).
6767         </p>
6768
6769         <p>
6770           All packages that provide applications that need not be
6771           passed any special command line arguments for normal
6772           operation should register a menu entry for those
6773           applications, so that users of the <tt>menu</tt> package
6774           will automatically get menu entries in their window
6775           managers, as well in shells like <tt>pdmenu</tt>.
6776         </p>
6777
6778         <p>
6779           Menu entries should follow the current menu policy.
6780         </p>
6781
6782         <p>
6783           The menu policy can be found in the <tt>menu-policy</tt>
6784           files in the <tt>debian-policy</tt> package.
6785           It is also available from the Debian web mirrors at
6786           <tt><url name="/doc/packaging-manuals/menu-policy/"
6787                 id="http://www.debian.org/doc/packaging-manuals/menu-policy/"></tt>.
6788         </p>
6789
6790         <p>
6791           Please also refer to the <em>Debian Menu System</em>
6792           documentation that comes with the <package>menu</package>
6793           package for information about how to register your
6794           applications.
6795         </p>
6796       </sect>
6797
6798       <sect id="mime">
6799         <heading>Multimedia handlers</heading>
6800
6801         <p>
6802           MIME (Multipurpose Internet Mail Extensions, RFCs 2045-2049)
6803           is a mechanism for encoding files and data streams and
6804           providing meta-information about them, in particular their
6805           type (e.g.  audio or video) and format (e.g. PNG, HTML,
6806           MP3).
6807         </p>
6808
6809         <p>
6810           Registration of MIME type handlers allows programs like mail
6811           user agents and web browsers to invoke these handlers to
6812           view, edit or display MIME types they don't support directly.
6813         </p>
6814
6815         <p>
6816           Packages which provide the ability to view/show/play,
6817           compose, edit or print MIME types should register themselves
6818           as such following the current MIME support policy.
6819         </p>
6820
6821         <p>
6822           The MIME support policy can be found in the <tt>mime-policy</tt>
6823           files in the <tt>debian-policy</tt> package.
6824           It is also available from the Debian web mirrors at
6825           <tt><url name="/doc/packaging-manuals/mime-policy/"
6826                 id="http://www.debian.org/doc/packaging-manuals/mime-policy/"></tt>.
6827         </p>
6828
6829       </sect>
6830
6831       <sect>
6832         <heading>Keyboard configuration</heading>
6833
6834         <p>
6835           To achieve a consistent keyboard configuration so that all
6836           applications interpret a keyboard event the same way, all
6837           programs in the Debian distribution must be configured to
6838           comply with the following guidelines.
6839         </p>
6840
6841         <p>
6842           The following keys must have the specified interpretations:
6843
6844           <taglist>
6845             <tag><tt>&lt;--</tt></tag>
6846             <item>delete the character to the left of the cursor</item>
6847
6848             <tag><tt>Delete</tt></tag>
6849             <item>delete the character to the right of the cursor</item>
6850
6851             <tag><tt>Control+H</tt></tag>
6852             <item>emacs: the help prefix</item>
6853           </taglist>
6854
6855           The interpretation of any keyboard events should be
6856           independent of the terminal that is used, be it a virtual
6857           console, an X terminal emulator, an rlogin/telnet session,
6858           etc.
6859         </p>
6860
6861         <p>
6862           The following list explains how the different programs
6863           should be set up to achieve this:
6864         </p>
6865
6866         <p>
6867           <list>
6868             <item>
6869                 <tt>&lt;--</tt> generates <tt>KB_BackSpace</tt> in X.
6870             </item>
6871
6872             <item>
6873                 <tt>Delete</tt> generates <tt>KB_Delete</tt> in X.
6874             </item>
6875
6876             <item>
6877                 X translations are set up to make
6878                 <tt>KB_Backspace</tt> generate ASCII DEL, and to make
6879                 <tt>KB_Delete</tt> generate <tt>ESC [ 3 ~</tt> (this
6880                 is the vt220 escape code for the "delete character"
6881                 key).  This must be done by loading the X resources
6882                 using <prgn>xrdb</prgn> on all local X displays, not
6883                 using the application defaults, so that the
6884                 translation resources used correspond to the
6885                 <prgn>xmodmap</prgn> settings.
6886             </item>
6887
6888             <item>
6889                 The Linux console is configured to make
6890                 <tt>&lt;--</tt> generate DEL, and <tt>Delete</tt>
6891                 generate <tt>ESC [ 3 ~</tt>.
6892             </item>
6893
6894             <item>
6895                 X applications are configured so that <tt>&lt;</tt>
6896                 deletes left, and <tt>Delete</tt> deletes right.  Motif
6897                 applications already work like this.
6898             </item>
6899
6900             <item>
6901                 Terminals should have <tt>stty erase ^?</tt> .
6902             </item>
6903
6904             <item>
6905                 The <tt>xterm</tt> terminfo entry should have <tt>ESC
6906                 [ 3 ~</tt> for <tt>kdch1</tt>, just as for
6907                 <tt>TERM=linux</tt> and <tt>TERM=vt220</tt>.
6908             </item>
6909
6910             <item>
6911                 Emacs is programmed to map <tt>KB_Backspace</tt> or
6912                 the <tt>stty erase</tt> character to
6913                 <tt>delete-backward-char</tt>, and <tt>KB_Delete</tt>
6914                 or <tt>kdch1</tt> to <tt>delete-forward-char</tt>, and
6915                 <tt>^H</tt> to <tt>help</tt> as always.
6916             </item>
6917
6918             <item>
6919                 Other applications use the <tt>stty erase</tt>
6920                 character and <tt>kdch1</tt> for the two delete keys,
6921                 with ASCII DEL being "delete previous character" and
6922                 <tt>kdch1</tt> being "delete character under
6923                 cursor".
6924             </item>
6925
6926           </list>
6927         </p>
6928
6929         <p>
6930           This will solve the problem except for the following
6931           cases:
6932         </p>
6933
6934         <p>
6935           <list>
6936             <item>
6937                 Some terminals have a <tt>&lt;--</tt> key that cannot
6938                 be made to produce anything except <tt>^H</tt>.  On
6939                 these terminals Emacs help will be unavailable on
6940                 <tt>^H</tt> (assuming that the <tt>stty erase</tt>
6941                 character takes precedence in Emacs, and has been set
6942                 correctly).  <tt>M-x help</tt> or <tt>F1</tt> (if
6943                 available) can be used instead.
6944             </item>
6945
6946             <item>
6947                 Some operating systems use <tt>^H</tt> for <tt>stty
6948                 erase</tt>.  However, modern telnet versions and all
6949                 rlogin versions propagate <tt>stty</tt> settings, and
6950                 almost all UNIX versions honour <tt>stty erase</tt>.
6951                 Where the <tt>stty</tt> settings are not propagated
6952                 correctly, things can be made to work by using
6953                 <tt>stty</tt> manually.
6954             </item>
6955
6956             <item>
6957                 Some systems (including previous Debian versions) use
6958                 <prgn>xmodmap</prgn> to arrange for both
6959                 <tt>&lt;--</tt> and <tt>Delete</tt> to generate
6960                 <tt>KB_Delete</tt>.  We can change the behavior of
6961                 their X clients using the same X resources that we use
6962                 to do it for our own clients, or configure our clients
6963                 using their resources when things are the other way
6964                 around.  On displays configured like this
6965                 <tt>Delete</tt> will not work, but <tt>&lt;--</tt>
6966                 will.
6967             </item>
6968
6969             <item>
6970                 Some operating systems have different <tt>kdch1</tt>
6971                 settings in their <tt>terminfo</tt> database for
6972                 <tt>xterm</tt> and others.  On these systems the
6973                 <tt>Delete</tt> key will not work correctly when you
6974                 log in from a system conforming to our policy, but
6975                 <tt>&lt;--</tt> will.
6976             </item>
6977           </list>
6978         </p>
6979       </sect>
6980
6981       <sect>
6982         <heading>Environment variables</heading>
6983
6984         <p>
6985           A program must not depend on environment variables to get
6986           reasonable defaults.  (That's because these environment
6987           variables would have to be set in a system-wide
6988           configuration file like <file>/etc/profile</file>, which is not
6989           supported by all shells.)
6990         </p>
6991
6992         <p>
6993           If a program usually depends on environment variables for its
6994           configuration, the program should be changed to fall back to
6995           a reasonable default configuration if these environment
6996           variables are not present. If this cannot be done easily
6997           (e.g., if the source code of a non-free program is not
6998           available), the program must be replaced by a small
6999           "wrapper" shell script which sets the environment variables
7000           if they are not already defined, and calls the original program.
7001         </p>
7002
7003         <p>
7004           Here is an example of a wrapper script for this purpose:
7005
7006           <example compact="compact">
7007 #!/bin/sh
7008 BAR=${BAR:-/var/lib/fubar}
7009 export BAR
7010 exec /usr/lib/foo/foo "$@"
7011           </example>
7012         </p>
7013
7014         <p>
7015           Furthermore, as <file>/etc/profile</file> is a configuration
7016           file of the <prgn>base-files</prgn> package, other packages must
7017           not put any environment variables or other commands into that
7018           file.
7019         </p>
7020       </sect>
7021
7022       <sect id="doc-base">
7023         <heading>Registering Documents using doc-base</heading>
7024
7025         <p>
7026           The <package>doc-base</package> package implements a
7027           flexible mechanism for handling and presenting
7028           documentation. The recommended practice is for every Debian
7029           package that provides online documentation (other than just
7030           manual pages) to register these documents with
7031           <package>doc-base</package> by installing a
7032           <package>doc-base</package> control file via the
7033           <prgn/install-docs/ script at installation time and
7034           de-register the manuals again when the package is removed.
7035         </p> 
7036         <p>
7037           Please refer to the documentation that comes with the
7038           <package>doc-base</package>  package for information and
7039           details. 
7040         </p>
7041       </sect>
7042
7043     </chapt>
7044
7045
7046     <chapt id="files">
7047       <heading>Files</heading>
7048
7049       <sect>
7050         <heading>Binaries</heading>
7051
7052         <p>
7053           Two different packages must not install programs with
7054           different functionality but with the same filenames.  (The
7055           case of two programs having the same functionality but
7056           different implementations is handled via "alternatives" or
7057           the "Conflicts" mechanism.  See <ref id="maintscripts"> and
7058           <ref id="conflicts"> respectively.)  If this case happens,
7059           one of the programs must be renamed.  The maintainers should
7060           report this to the <tt>debian-devel</tt> mailing list and
7061           try to find a consensus about which program will have to be
7062           renamed.  If a consensus cannot be reached, <em>both</em>
7063           programs must be renamed.
7064         </p>
7065
7066         <p>
7067          By default, when a package is being built, any binaries
7068          created should include debugging information, as well as
7069          being compiled with optimization.  You should also turn on
7070          as many reasonable compilation warnings as possible; this
7071          makes life easier for porters, who can then look at build
7072          logs for possible problems.  For the C programming language,
7073          this means the following compilation parameters should be
7074          used:
7075           <example compact="compact">
7076 CC = gcc
7077 CFLAGS = -O2 -g -Wall # sane warning options vary between programs
7078 LDFLAGS = # none
7079 INSTALL = install -s # (or use strip on the files in debian/tmp)
7080           </example>
7081         </p>
7082
7083         <p>
7084           Note that by default all installed binaries should be stripped,
7085           either by using the <tt>-s</tt> flag to
7086           <prgn>install</prgn>, or by calling <prgn>strip</prgn> on
7087           the binaries after they have been copied into
7088           <file>debian/tmp</file> but before the tree is made into a
7089           package.
7090         </p>
7091
7092         <p>
7093           Although binaries in the build tree should be compiled with
7094           debugging information by default, it can often be difficult to
7095           debug programs if they are also subjected to compiler
7096           optimization.  For this reason, it is recommended to support the
7097           standardized environment variable <tt>DEB_BUILD_OPTIONS</tt>
7098           (see <ref id="debianrules-options">).  This variable can contain
7099           several flags to change how a package is compiled and built.
7100         </p>
7101
7102         <p>
7103           It is up to the package maintainer to decide what
7104           compilation options are best for the package.  Certain
7105           binaries (such as computationally-intensive programs) will
7106           function better with certain flags (<tt>-O3</tt>, for
7107           example); feel free to use them.  Please use good judgment
7108           here.  Don't use flags for the sake of it; only use them
7109           if there is good reason to do so.  Feel free to override
7110           the upstream author's ideas about which compilation
7111           options are best: they are often inappropriate for our
7112           environment.
7113         </p>
7114       </sect>
7115
7116
7117       <sect id="libraries">
7118         <heading>Libraries</heading>
7119
7120         <p>
7121           If the package is <strong>architecture: any</strong>, then
7122           the shared library compilation and linking flags must have
7123           <tt>-fPIC</tt>, or the package shall not build on some of
7124           the supported architectures<footnote>
7125             <p>
7126               If you are using GCC, <tt>-fPIC</tt> produces code with
7127               relocatable position independent code, which is required for
7128               most architectures to create a shared library, with i386 and
7129               perhaps some others where non position independent code is
7130               permitted in a shared library.
7131             </p>
7132             <p>
7133               Position independent code may have a performance penalty,
7134               especially on <tt>i386</tt>. However, in most cases the
7135               speed penalty must be measured against the memory wasted on
7136               the few architectures where non position independent code is
7137               even possible.
7138             </p>
7139           </footnote>. Any exception to this rule must be discussed on
7140           the mailing list <em>debian-devel@lists.debian.org</em>, and
7141           a rough consensus obtained.  The reasons for not compiling
7142           with <tt>-fPIC</tt> flag must be recorded in the file
7143           <tt>README.Debian</tt>, and care must be taken to either
7144           restrict the architecture or arrange for <tt>-fPIC</tt> to
7145           be used on architectures where it is required.<footnote>
7146             <p>
7147               Some of the reasons why this might be required is if the
7148               library contains hand crafted assembly code that is not
7149               relocatable, the speed penalty is excessive for compute
7150               intensive libs, and similar reasons.
7151             </p>
7152           </footnote>
7153         </p>
7154         <p>
7155           As to the static libraries, the common case is not to have
7156           relocatable code, since there is no benefit, unless in specific
7157           cases; therefore the static version must not be compiled
7158           with the <tt>-fPIC</tt> flag. Any exception to this rule
7159           should be discussed on the mailing list
7160           <em>debian-devel@lists.debian.org</em>,  and the reasons for
7161           compiling with the <tt>-fPIC</tt> flag must be recorded in
7162           the file <tt>README.Debian</tt>. <footnote>
7163             <p>
7164               Some of the reasons for linking static libraries with
7165               the <tt>-fPIC</tt> flag are if, for example, one needs a
7166               Perl API for a library that is under rapid development,
7167               and has an unstable API, so shared libraries are
7168               pointless at this phase of the library's development. In
7169               that case, since Perl needs a library with relocatable
7170               code, it may make sense to create a static library with
7171               relocatable code. Another reason cited is if you are
7172               distilling various libraries into a common shared
7173               library, like <tt>mklibs</tt> does in the Debian
7174               installer project.
7175             </p>
7176           </footnote>
7177         </p>
7178         <p>
7179           In other words, if both a shared and a static library is
7180           being built, each source unit (<tt>*.c</tt>, for example,
7181           for C files) will need to be compiled twice, for the normal
7182           case. 
7183         </p>
7184         <p>
7185           You must specify the gcc option <tt>-D_REENTRANT</tt>
7186           when building a library (either static or shared) to make
7187           the library compatible with LinuxThreads.
7188         </p>
7189
7190         <p>
7191           Although not enforced by the build tools, shared libraries
7192           must be linked against all libraries that they use symbols from
7193           in the same way that binaries are.  This ensures the correct
7194           functioning of the <qref id="sharedlibs-shlibdeps">shlibs</qref>
7195           system and guarantees that all libraries can be safely opened
7196           with <tt>dlopen()</tt>.  Packagers may wish to use the gcc
7197           option <tt>-Wl,-z,defs</tt> when building a shared library.
7198           Since this option enforces symbol resolution at build time,
7199           a missing library reference will be caught early as a fatal
7200           build error.
7201         </p>
7202
7203         <p>
7204           All installed shared libraries should be stripped with
7205           <example compact="compact">
7206 strip --strip-unneeded <var>your-lib</var>
7207           </example>
7208           (The option <tt>--strip-unneeded</tt> makes
7209           <prgn>strip</prgn> remove only the symbols which aren't
7210           needed for relocation processing.)  Shared libraries can
7211           function perfectly well when stripped, since the symbols for
7212           dynamic linking are in a separate part of the ELF object
7213           file.<footnote>
7214               You might also want to use the options
7215               <tt>--remove-section=.comment</tt> and
7216               <tt>--remove-section=.note</tt> on both shared libraries
7217               and executables, and <tt>--strip-debug</tt> on static
7218               libraries.
7219           </footnote>
7220         </p>
7221
7222         <p>
7223           Note that under some circumstances it may be useful to
7224           install a shared library unstripped, for example when
7225           building a separate package to support debugging.
7226         </p>
7227
7228         <p>
7229           Shared object files (often <file>.so</file> files) that are not
7230           public libraries, that is, they are not meant to be linked
7231           to by third party executables (binaries of other packages),
7232           should be installed in subdirectories of the
7233           <file>/usr/lib</file> directory.  Such files are exempt from the
7234           rules that govern ordinary shared libraries, except that
7235           they must not be installed executable and should be
7236           stripped.<footnote>
7237               A common example are the so-called "plug-ins",
7238               internal shared objects that are dynamically loaded by
7239               programs using <manref name="dlopen" section="3">.
7240           </footnote>
7241         </p>
7242
7243         <p>
7244           An ever increasing number of packages are using
7245           <prgn>libtool</prgn> to do their linking.  The latest GNU
7246           libtools (>= 1.3a) can take advantage of the metadata in the
7247           installed <prgn>libtool</prgn> archive files (<file>*.la</file>
7248           files).  The main advantage of <prgn>libtool</prgn>'s
7249           <file>.la</file> files is that it allows <prgn>libtool</prgn> to
7250           store and subsequently access metadata with respect to the
7251           libraries it builds.  <prgn>libtool</prgn> will search for
7252           those files, which contain a lot of useful information about
7253           a library (such as library dependency information for static
7254           linking).  Also, they're <em>essential</em> for programs
7255           using <tt>libltdl</tt>.<footnote>
7256               Although <prgn>libtool</prgn> is fully capable of
7257               linking against shared libraries which don't have
7258               <tt>.la</tt> files, as it is a mere shell script it can
7259               add considerably to the build time of a
7260               <prgn>libtool</prgn>-using package if that shell script
7261               has to derive all this information from first principles
7262               for each library every time it is linked.  With the
7263               advent of <prgn>libtool</prgn> version 1.4 (and to a
7264               lesser extent <prgn>libtool</prgn> version 1.3), the
7265               <file>.la</file> files also store information about
7266               inter-library dependencies which cannot necessarily be
7267               derived after the <file>.la</file> file is deleted.
7268           </footnote>
7269         </p>
7270
7271         <p>
7272           Packages that use <prgn>libtool</prgn> to create shared
7273           libraries should include the <file>.la</file> files in the
7274           <tt>-dev</tt> package, unless the package relies on
7275           <tt>libtool</tt>'s <tt>libltdl</tt> library, in which case
7276           the <tt>.la</tt> files must go in the run-time library
7277           package.
7278         </p>
7279
7280         <p>
7281           You must make sure that you use only released versions of
7282           shared libraries to build your packages; otherwise other
7283           users will not be able to run your binaries
7284           properly. Producing source packages that depend on
7285           unreleased compilers is also usually a bad
7286           idea.
7287         </p>
7288       </sect>
7289
7290
7291       <sect>
7292         <heading>Shared libraries</heading>
7293         <p>
7294           This section has moved to <ref id="sharedlibs">.
7295         </p>
7296       </sect>
7297
7298
7299       <sect id="scripts">
7300         <heading>Scripts</heading>
7301
7302         <p>
7303           All command scripts, including the package maintainer
7304           scripts inside the package and used by <prgn>dpkg</prgn>,
7305           should have a <tt>#!</tt> line naming the shell to be used
7306           to interpret them.
7307         </p>
7308
7309         <p>
7310           In the case of Perl scripts this should be
7311           <tt>#!/usr/bin/perl</tt>.
7312         </p>
7313
7314         <p>
7315           When scripts are installed into a directory in the system
7316           PATH, the script name should not include an extension such
7317           as <tt>.sh</tt> or <tt>.pl</tt> that denotes the scripting
7318           language currently used to implement it.
7319         </p>
7320         <p>
7321           Shell scripts (<prgn>sh</prgn> and <prgn>bash</prgn>) other than
7322           <file>init.d</file> scripts should almost certainly start
7323           with <tt>set -e</tt> so that errors are detected.
7324           <file>init.d</file> scripts are something of a special case, due
7325           to how frequently they need to call commands that are allowed to
7326           fail, and it may instead be easier to check the exit status of
7327           commands directly.  See <ref id="writing-init"> for more
7328           information about writing <file>init.d</file> scripts.
7329         </p>
7330         <p>
7331           Every script should use <tt>set -e</tt> or check the exit status
7332           of <em>every</em> command.
7333         </p>
7334         <p>
7335           Scripts may assume that <file>/bin/sh</file> implements the
7336           SUSv3 Shell Command Language<footnote>
7337             Single UNIX Specification, version 3, which is also IEEE
7338             1003.1-2004 (POSIX), and is available on the World Wide Web
7339             from <url id="http://www.unix.org/version3/online.html"
7340                       name="The Open Group"> after free
7341             registration.</footnote>
7342           plus the following additional features not mandated by
7343           SUSv3:<footnote>
7344             These features are in widespread use in the Linux community
7345             and are implemented in all of bash, dash, and ksh, the most
7346             common shells users may wish to use as <file>/bin/sh</file>.
7347           </footnote>
7348           <list>
7349             <item><tt>echo -n</tt>, if implemented as a shell built-in,
7350               must not generate a newline.</item>
7351             <item><tt>test</tt>, if implemented as a shell built-in, must
7352               support <tt>-a</tt> and <tt>-o</tt> as binary logical
7353               operators.</item>
7354             <item><tt>local</tt> to create a scoped variable must be
7355               supported, including listing multiple variables in a single
7356               local command and assigning a value to a variable at the
7357               same time as localizing it.  <tt>local</tt> may or
7358               may not preserve the variable value from an outer scope if
7359               no assignment is present.  Uses such as:
7360 <example compact>
7361 fname () {
7362     local a b c=delta d
7363     # ... use a, b, c, d ...
7364 }
7365 </example>
7366               must be supported and must set the value of <tt>c</tt> to
7367               <tt>delta</tt>.
7368             </item>
7369           </list>
7370           If a shell script requires non-SUSv3 features from the shell
7371           interpreter other than those listed above, the appropriate shell
7372           must be specified in the first line of the script (e.g.,
7373           <tt>#!/bin/bash</tt>) and the package must depend on the package
7374           providing the shell (unless the shell package is marked
7375           "Essential", as in the case of <prgn>bash</prgn>).
7376         </p>
7377
7378         <p>
7379           You may wish to restrict your script to SUSv3 features plus the
7380           above set when possible so that it may use <file>/bin/sh</file>
7381           as its interpreter. If your script works with <prgn>dash</prgn>
7382           (originally called <prgn>ash</prgn>), it probably complies with
7383           the above requirements, but if you are in doubt, use
7384           <file>/bin/bash</file>.
7385         </p>
7386
7387         <p>
7388           Perl scripts should check for errors when making any
7389           system calls, including <tt>open</tt>, <tt>print</tt>,
7390           <tt>close</tt>, <tt>rename</tt> and <tt>system</tt>.
7391         </p>
7392
7393         <p>
7394           <prgn>csh</prgn> and <prgn>tcsh</prgn> should be avoided as
7395           scripting languages.  See <em>Csh Programming Considered
7396           Harmful</em>, one of the <tt>comp.unix.*</tt> FAQs, which
7397           can be found at <url id="http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/">.
7398           If an upstream package comes with <prgn>csh</prgn> scripts
7399           then you must make sure that they start with
7400           <tt>#!/bin/csh</tt> and make your package depend on the
7401           <prgn>c-shell</prgn> virtual package.
7402         </p>
7403
7404         <p>
7405           Any scripts which create files in world-writeable
7406           directories (e.g., in <file>/tmp</file>) must use a
7407           mechanism which will fail atomically if a file with the same
7408           name already exists.
7409         </p>
7410
7411         <p>
7412           The Debian base system provides the <prgn>tempfile</prgn>
7413           and <prgn>mktemp</prgn> utilities for use by scripts for
7414           this purpose.
7415         </p>
7416       </sect>
7417
7418
7419       <sect>
7420         <heading>Symbolic links</heading>
7421
7422         <p>
7423           In general, symbolic links within a top-level directory
7424           should be relative, and symbolic links pointing from one
7425           top-level directory into another should be absolute. (A
7426           top-level directory is a sub-directory of the root
7427           directory <file>/</file>.)
7428         </p>
7429
7430         <p>
7431           In addition, symbolic links should be specified as short as
7432           possible, i.e., link targets like <file>foo/../bar</file> are
7433           deprecated.
7434         </p>
7435
7436         <p>
7437           Note that when creating a relative link using
7438           <prgn>ln</prgn> it is not necessary for the target of the
7439           link to exist relative to the working directory you're
7440           running <prgn>ln</prgn> from, nor is it necessary to change
7441           directory to the directory where the link is to be made.
7442           Simply include the string that should appear as the target
7443           of the link (this will be a pathname relative to the
7444           directory in which the link resides) as the first argument
7445           to <prgn>ln</prgn>.
7446         </p>
7447
7448         <p>
7449           For example, in your <prgn>Makefile</prgn> or
7450           <file>debian/rules</file>, you can do things like:
7451           <example compact="compact">
7452 ln -fs gcc $(prefix)/bin/cc
7453 ln -fs gcc debian/tmp/usr/bin/cc
7454 ln -fs ../sbin/sendmail $(prefix)/bin/runq
7455 ln -fs ../sbin/sendmail debian/tmp/usr/bin/runq
7456           </example>
7457         </p>
7458
7459         <p>
7460           A symbolic link pointing to a compressed file should always
7461           have the same file extension as the referenced file. (For
7462           example, if a file <file>foo.gz</file> is referenced by a
7463           symbolic link, the filename of the link has to end with
7464           "<file>.gz</file>" too, as in <file>bar.gz</file>.)
7465         </p>
7466       </sect>
7467
7468       <sect>
7469         <heading>Device files</heading>
7470
7471         <p>
7472           Packages must not include device files or named pipes in the
7473           package file tree.
7474         </p>
7475
7476         <p>
7477           If a package needs any special device files that are not
7478           included in the base system, it must call
7479           <prgn>MAKEDEV</prgn> in the <prgn>postinst</prgn> script,
7480           after notifying the user<footnote>
7481               This notification could be done via a (low-priority)
7482               debconf message, or an echo (printf) statement.
7483           </footnote>.
7484         </p>
7485
7486         <p>
7487           Packages must not remove any device files in the
7488           <prgn>postrm</prgn> or any other script. This is left to the
7489           system administrator.
7490         </p>
7491
7492         <p>
7493           Debian uses the serial devices
7494           <file>/dev/ttyS*</file>. Programs using the old
7495           <file>/dev/cu*</file> devices should be changed to use
7496           <file>/dev/ttyS*</file>.
7497         </p>
7498
7499         <p>
7500           Named pipes needed by the package must be created in
7501           the <prgn>postinst</prgn> script<footnote>
7502             It's better to use <prgn>mkfifo</prgn> rather
7503             than <prgn>mknod</prgn> to create named pipes so that
7504             automated checks for packages incorrectly creating device
7505             files with <prgn>mknod</prgn> won't have false positives.
7506           </footnote> and removed in
7507           the <prgn>prerm</prgn> or <prgn>postrm</prgn> script as
7508           appropriate.
7509         </p>
7510       </sect>
7511
7512       <sect id="config-files">
7513         <heading>Configuration files</heading>
7514
7515         <sect1>
7516           <heading>Definitions</heading>
7517
7518           <p>
7519             <taglist>
7520               <tag>configuration file</tag>
7521               <item>
7522                   A file that affects the operation of a program, or
7523                   provides site- or host-specific information, or
7524                   otherwise customizes the behavior of a program.
7525                   Typically, configuration files are intended to be
7526                   modified by the system administrator (if needed or
7527                   desired) to conform to local policy or to provide
7528                   more useful site-specific behavior.
7529               </item>
7530
7531               <tag><tt>conffile</tt></tag>
7532               <item>
7533                   A file listed in a package's <tt>conffiles</tt>
7534                   file, and is treated specially by <prgn>dpkg</prgn>
7535                   (see <ref id="configdetails">).
7536               </item>
7537             </taglist>
7538           </p>
7539
7540           <p>
7541             The distinction between these two is important; they are
7542             not interchangeable concepts. Almost all
7543             <tt>conffile</tt>s are configuration files, but many
7544             configuration files are not <tt>conffiles</tt>.
7545           </p>
7546
7547           <p>
7548             As noted elsewhere, <file>/etc/init.d</file> scripts,
7549             <file>/etc/default</file> files, scripts installed in
7550             <file>/etc/cron.{hourly,daily,weekly,monthly}</file>, and cron
7551             configuration installed in <file>/etc/cron.d</file> must be
7552             treated as configuration files.  In general, any script that
7553             embeds configuration information is de-facto a configuration
7554             file and should be treated as such.
7555           </p>
7556         </sect1>
7557
7558         <sect1>
7559           <heading>Location</heading>
7560
7561           <p>
7562             Any configuration files created or used by your package
7563             must reside in <file>/etc</file>. If there are several,
7564             consider creating a subdirectory of <file>/etc</file>
7565             named after your package.
7566           </p>
7567
7568           <p>
7569             If your package creates or uses configuration files
7570             outside of <file>/etc</file>, and it is not feasible to modify
7571             the package to use <file>/etc</file> directly, put the files
7572             in <file>/etc</file> and create symbolic links to those files
7573             from the location that the package requires.
7574           </p>
7575         </sect1>
7576
7577         <sect1>
7578           <heading>Behavior</heading>
7579
7580           <p>
7581             Configuration file handling must conform to the following
7582             behavior:
7583             <list compact="compact">
7584               <item>
7585                   local changes must be preserved during a package
7586                   upgrade, and
7587               </item>
7588               <item>
7589                   configuration files must be preserved when the
7590                   package is removed, and only deleted when the
7591                   package is purged.
7592               </item>
7593             </list>
7594             Obsolete configuration files without local changes may be
7595             removed by the package during upgrade.
7596           </p>
7597
7598           <p>
7599             The easy way to achieve this behavior is to make the
7600             configuration file a <tt>conffile</tt>. This is
7601             appropriate only if it is possible to distribute a default
7602             version that will work for most installations, although
7603             some system administrators may choose to modify it. This
7604             implies that the default version will be part of the
7605             package distribution, and must not be modified by the
7606             maintainer scripts during installation (or at any other
7607             time).
7608           </p>
7609
7610           <p>
7611             In order to ensure that local changes are preserved
7612             correctly, no package may contain or make hard links to
7613             conffiles.<footnote>
7614                 Rationale: There are two problems with hard links.
7615                 The first is that some editors break the link while
7616                 editing one of the files, so that the two files may
7617                 unwittingly become unlinked and different.  The second
7618                 is that <prgn>dpkg</prgn> might break the hard link
7619                 while upgrading <tt>conffile</tt>s.
7620             </footnote>
7621           </p>
7622
7623           <p>
7624             The other way to do it is via the maintainer scripts.  In
7625             this case, the configuration file must not be listed as a
7626             <tt>conffile</tt> and must not be part of the package
7627             distribution. If the existence of a file is required for
7628             the package to be sensibly configured it is the
7629             responsibility of the package maintainer to provide
7630             maintainer scripts which correctly create, update and
7631             maintain the file and remove it on purge.  (See <ref
7632             id="maintainerscripts"> for more information.)  These
7633             scripts must be idempotent (i.e., must work correctly if
7634             <prgn>dpkg</prgn> needs to re-run them due to errors
7635             during installation or removal), must cope with all the
7636             variety of ways <prgn>dpkg</prgn> can call maintainer
7637             scripts, must not overwrite or otherwise mangle the user's
7638             configuration without asking, must not ask unnecessary
7639             questions (particularly during upgrades), and must
7640             otherwise be good citizens.
7641           </p>
7642
7643           <p>
7644             The scripts are not required to configure every possible
7645             option for the package, but only those necessary to get
7646             the package running on a given system. Ideally the
7647             sysadmin should not have to do any configuration other
7648             than that done (semi-)automatically by the
7649             <prgn>postinst</prgn> script.
7650           </p>
7651
7652           <p>
7653             A common practice is to create a script called
7654             <file><var>package</var>-configure</file> and have the
7655             package's <prgn>postinst</prgn> call it if and only if the
7656             configuration file does not already exist.  In certain
7657             cases it is useful for there to be an example or template
7658             file which the maintainer scripts use.  Such files should
7659             be in <file>/usr/share/<var>package</var></file> or
7660             <file>/usr/lib/<var>package</var></file> (depending on whether
7661             they are architecture-independent or not).  There should
7662             be symbolic links to them from
7663             <file>/usr/share/doc/<var>package</var>/examples</file> if
7664             they are examples, and should be perfectly ordinary
7665             <prgn>dpkg</prgn>-handled files (<em>not</em>
7666             configuration files).
7667           </p>
7668
7669           <p>
7670             These two styles of configuration file handling must
7671             not be mixed, for that way lies madness:
7672             <prgn>dpkg</prgn> will ask about overwriting the file
7673             every time the package is upgraded.
7674           </p>
7675         </sect1>
7676
7677         <sect1>
7678           <heading>Sharing configuration files</heading>
7679
7680           <p>
7681             Packages which specify the same file as a
7682             <tt>conffile</tt> must be tagged as <em>conflicting</em>
7683             with each other.  (This is an instance of the general rule
7684             about not sharing files.  Note that neither alternatives
7685             nor diversions are likely to be appropriate in this case;
7686             in particular, <prgn>dpkg</prgn> does not handle diverted
7687             <tt>conffile</tt>s well.)
7688           </p>
7689
7690           <p>
7691             The maintainer scripts must not alter a <tt>conffile</tt>
7692             of <em>any</em> package, including the one the scripts
7693             belong to.
7694           </p>
7695
7696           <p>
7697             If two or more packages use the same configuration file
7698             and it is reasonable for both to be installed at the same
7699             time, one of these packages must be defined as
7700             <em>owner</em> of the configuration file, i.e., it will be
7701             the package which handles that file as a configuration
7702             file.  Other packages that use the configuration file must
7703             depend on the owning package if they require the
7704             configuration file to operate. If the other package will
7705             use the configuration file if present, but is capable of
7706             operating without it, no dependency need be declared.
7707           </p>
7708
7709           <p>
7710             If it is desirable for two or more related packages to
7711             share a configuration file <em>and</em> for all of the
7712             related packages to be able to modify that configuration
7713             file, then the following should be done:
7714             <enumlist compact="compact">
7715               <item>
7716                   One of the related packages (the "owning" package)
7717                   will manage the configuration file with maintainer
7718                   scripts as described in the previous section.
7719               </item>
7720               <item>
7721                   The owning package should also provide a program
7722                   that the other packages may use to modify the
7723                   configuration file.
7724               </item>
7725               <item>
7726                   The related packages must use the provided program
7727                   to make any desired modifications to the
7728                   configuration file.  They should either depend on
7729                   the core package to guarantee that the configuration
7730                   modifier program is available or accept gracefully
7731                   that they cannot modify the configuration file if it
7732                   is not.  (This is in addition to the fact that the
7733                   configuration file may not even be present in the
7734                   latter scenario.)
7735               </item>
7736             </enumlist>
7737           </p>
7738
7739           <p>
7740             Sometimes it's appropriate to create a new package which
7741             provides the basic infrastructure for the other packages
7742             and which manages the shared configuration files.  (The
7743             <tt>sgml-base</tt> package is a good example.)
7744           </p>
7745         </sect1>
7746
7747         <sect1>
7748           <heading>User configuration files ("dotfiles")</heading>
7749
7750           <p>
7751             The files in <file>/etc/skel</file> will automatically be
7752             copied into new user accounts by <prgn>adduser</prgn>.
7753             No other program should reference the files in
7754             <file>/etc/skel</file>.
7755           </p>
7756
7757           <p>
7758             Therefore, if a program needs a dotfile to exist in
7759             advance in <file>$HOME</file> to work sensibly, that dotfile
7760             should be installed in <file>/etc/skel</file> and treated as a
7761             configuration file.
7762           </p>
7763
7764           <p>
7765             However, programs that require dotfiles in order to
7766             operate sensibly are a bad thing, unless they do create
7767             the dotfiles themselves automatically.
7768           </p>
7769
7770           <p>
7771             Furthermore, programs should be configured by the Debian
7772             default installation to behave as closely to the upstream
7773             default behavior as possible.
7774           </p>
7775
7776           <p>
7777             Therefore, if a program in a Debian package needs to be
7778             configured in some way in order to operate sensibly, that
7779             should be done using a site-wide configuration file placed
7780             in <file>/etc</file>.  Only if the program doesn't support a
7781             site-wide default configuration and the package maintainer
7782             doesn't have time to add it may a default per-user file be
7783             placed in <file>/etc/skel</file>.
7784           </p>
7785
7786           <p>
7787             <file>/etc/skel</file> should be as empty as we can make it.
7788             This is particularly true because there is no easy (or
7789             necessarily desirable) mechanism for ensuring that the
7790             appropriate dotfiles are copied into the accounts of
7791             existing users when a package is installed.
7792           </p>
7793         </sect1>
7794       </sect>
7795
7796       <sect>
7797         <heading>Log files</heading>
7798         <p>
7799           Log files should usually be named
7800           <file>/var/log/<var>package</var>.log</file>.  If you have many
7801           log files, or need a separate directory for permission
7802           reasons (<file>/var/log</file> is writable only by
7803           <file>root</file>), you should usually create a directory named
7804           <file>/var/log/<var>package</var></file> and place your log
7805           files there.
7806         </p>
7807
7808         <p>
7809           Log files must be rotated occasionally so that they don't
7810           grow indefinitely; the best way to do this is to drop a log
7811           rotation configuration file into the directory
7812           <file>/etc/logrotate.d</file> and use the facilities provided by
7813           logrotate.<footnote>
7814             <p>
7815               The traditional approach to log files has been to set up
7816               <em>ad hoc</em> log rotation schemes using simple shell
7817               scripts and cron.  While this approach is highly
7818               customizable, it requires quite a lot of sysadmin work.
7819               Even though the original Debian system helped a little
7820               by automatically installing a system which can be used
7821               as a template, this was deemed not enough.
7822             </p>
7823
7824             <p>
7825               The use of <prgn>logrotate</prgn>, a program developed
7826               by Red Hat, is better, as it centralizes log management.
7827               It has both a configuration file
7828               (<file>/etc/logrotate.conf</file>) and a directory where
7829               packages can drop their individual log rotation
7830               configurations (<file>/etc/logrotate.d</file>).
7831             </p>
7832           </footnote>
7833           Here is a good example for a logrotate config
7834           file (for more information see <manref name="logrotate"
7835             section="8">):
7836           <example compact="compact">
7837 /var/log/foo/*.log {
7838 rotate 12
7839 weekly
7840 compress
7841 postrotate
7842 /etc/init.d/foo force-reload
7843 endscript
7844 }
7845           </example>
7846           This rotates all files under <file>/var/log/foo</file>, saves 12
7847           compressed generations, and forces the daemon to reload its
7848           configuration information after the log rotation.
7849         </p>
7850
7851         <p>
7852           Log files should be removed when the package is
7853           purged (but not when it is only removed).  This should be
7854           done by the <prgn>postrm</prgn> script when it is called
7855           with the argument <tt>purge</tt> (see <ref
7856           id="removedetails">).
7857         </p>
7858       </sect>
7859
7860       <sect>
7861         <heading>Permissions and owners</heading>
7862
7863         <p>
7864           The rules in this section are guidelines for general use.
7865           If necessary you may deviate from the details below.
7866           However, if you do so you must make sure that what is done
7867           is secure and you should try to be as consistent as possible
7868           with the rest of the system.  You should probably also
7869           discuss it on <prgn>debian-devel</prgn> first.
7870         </p>
7871
7872         <p>
7873           Files should be owned by <tt>root:root</tt>, and made
7874           writable only by the owner and universally readable (and
7875           executable, if appropriate), that is mode 644 or 755.
7876         </p>
7877
7878         <p>
7879           Directories should be mode 755 or (for group-writability)
7880           mode 2775.  The ownership of the directory should be
7881           consistent with its mode: if a directory is mode 2775, it
7882           should be owned by the group that needs write access to
7883           it.<footnote>
7884             <p>
7885               When a package is upgraded, and the owner or permissions
7886               of a file included in the package has changed, dpkg
7887               arranges for the ownership and permissions to be
7888               correctly set upon installation. However, this does not
7889               extend to directories; the permissions and ownership of
7890               directories already on the system does not change on
7891               install or upgrade of packages.  This makes sense, since
7892               otherwise common directories like <tt>/usr</tt> would
7893               always be in flux.  To correctly change permissions of a
7894               directory the package owns, explicit action is required,
7895               usually in the <tt>postinst</tt> script. Care must be
7896               taken to handle downgrades as well, in that case.
7897             </p>
7898           </footnote>
7899         </p>
7900
7901
7902         <p>
7903           Setuid and setgid executables should be mode 4755 or 2755
7904           respectively, and owned by the appropriate user or group.
7905           They should not be made unreadable (modes like 4711 or
7906           2711 or even 4111); doing so achieves no extra security,
7907           because anyone can find the binary in the freely available
7908           Debian package; it is merely inconvenient.  For the same
7909           reason you should not restrict read or execute permissions
7910           on non-set-id executables.
7911         </p>
7912
7913         <p>
7914           Some setuid programs need to be restricted to particular
7915           sets of users, using file permissions.  In this case they
7916           should be owned by the uid to which they are set-id, and by
7917           the group which should be allowed to execute them.  They
7918           should have mode 4754; again there is no point in making
7919           them unreadable to those users who must not be allowed to
7920           execute them.
7921         </p>
7922
7923         <p>
7924           It is possible to arrange that the system administrator can
7925           reconfigure the package to correspond to their local
7926           security policy by changing the permissions on a binary:
7927           they can do this by using <prgn>dpkg-statoverride</prgn>, as
7928           described below.<footnote>
7929             Ordinary files installed by <prgn>dpkg</prgn> (as
7930             opposed to <tt>conffile</tt>s and other similar objects)
7931             normally have their permissions reset to the distributed
7932             permissions when the package is reinstalled.  However,
7933             the use of <prgn>dpkg-statoverride</prgn> overrides this
7934             default behavior.
7935           </footnote>
7936           Another method you should consider is to create a group for
7937           people allowed to use the program(s) and make any setuid
7938           executables executable only by that group.
7939         </p>
7940
7941         <p>
7942           If you need to create a new user or group for your package
7943           there are two possibilities.  Firstly, you may need to
7944           make some files in the binary package be owned by this
7945           user or group, or you may need to compile the user or
7946           group id (rather than just the name) into the binary
7947           (though this latter should be avoided if possible, as in
7948           this case you need a statically allocated id).</p>
7949
7950         <p>
7951           If you need a statically allocated id, you must ask for a
7952           user or group id from the <tt>base-passwd</tt> maintainer,
7953           and must not release the package until you have been
7954           allocated one.  Once you have been allocated one you must
7955           either make the package depend on a version of the
7956           <tt>base-passwd</tt> package with the id present in
7957           <file>/etc/passwd</file> or <file>/etc/group</file>, or arrange for
7958           your package to create the user or group itself with the
7959           correct id (using <tt>adduser</tt>) in its
7960           <prgn>preinst</prgn> or <prgn>postinst</prgn>.  (Doing it in
7961           the <prgn>postinst</prgn> is to be preferred if it is
7962           possible, otherwise a pre-dependency will be needed on the
7963           <tt>adduser</tt> package.)
7964         </p>
7965
7966         <p>
7967           On the other hand, the program might be able to determine
7968           the uid or gid from the user or group name at runtime, so
7969           that a dynamically allocated id can be used.  In this case
7970           you should choose an appropriate user or group name,
7971           discussing this on <prgn>debian-devel</prgn> and checking
7972           with the <package/base-passwd/ maintainer that it is unique and that
7973           they do not wish you to use a statically allocated id
7974           instead.  When this has been checked you must arrange for
7975           your package to create the user or group if necessary using
7976           <prgn>adduser</prgn> in the <prgn>preinst</prgn> or
7977           <prgn>postinst</prgn> script (again, the latter is to be
7978           preferred if it is possible).
7979         </p>
7980
7981         <p>
7982           Note that changing the numeric value of an id associated
7983           with a name is very difficult, and involves searching the
7984           file system for all appropriate files.  You need to think
7985           carefully whether a static or dynamic id is required, since
7986           changing your mind later will cause problems.
7987         </p>
7988
7989         <sect1><heading>The use of <prgn>dpkg-statoverride</prgn></heading>
7990           <p>
7991             This section is not intended as policy, but as a
7992             description of the use of <prgn>dpkg-statoverride</prgn>.
7993           </p>
7994
7995           <p>
7996             If a system administrator wishes to have a file (or
7997             directory or other such thing) installed with owner and
7998             permissions different from those in the distributed Debian
7999             package, they can use the <prgn>dpkg-statoverride</prgn>
8000             program to instruct <prgn>dpkg</prgn> to use the different
8001             settings every time the file is installed.  Thus the
8002             package maintainer should distribute the files with their
8003             normal permissions, and leave it for the system
8004             administrator to make any desired changes.  For example, a
8005             daemon which is normally required to be setuid root, but
8006             in certain situations could be used without being setuid,
8007             should be installed setuid in the <tt>.deb</tt>.  Then the
8008             local system administrator can change this if they wish.
8009             If there are two standard ways of doing it, the package
8010             maintainer can use <tt>debconf</tt> to find out the
8011             preference, and call <prgn>dpkg-statoverride</prgn> in the
8012             maintainer script if necessary to accommodate the system
8013             administrator's choice. Care must be taken during
8014             upgrades to not override an existing setting.
8015           </p>
8016
8017           <p>
8018             Given the above, <prgn>dpkg-statoverride</prgn> is
8019             essentially a tool for system administrators and would not
8020             normally be needed in the maintainer scripts.  There is
8021             one type of situation, though, where calls to
8022             <prgn>dpkg-statoverride</prgn> would be needed in the
8023             maintainer scripts, and that involves packages which use
8024             dynamically allocated user or group ids.  In such a
8025             situation, something like the following idiom can be very
8026             helpful in the package's <prgn>postinst</prgn>, where
8027             <tt>sysuser</tt> is a dynamically allocated id:
8028             <example>
8029 for i in /usr/bin/foo /usr/sbin/bar
8030 do
8031   # only do something when no setting exists
8032   if ! dpkg-statoverride --list $i >/dev/null 2>&1
8033   then
8034     #include: debconf processing, question about foo and bar
8035     if [ "$RET" = "true" ] ; then
8036       dpkg-statoverride --update --add sysuser root 4755 $i
8037     fi
8038   fi
8039 done
8040             </example>
8041             The corresponding code to remove the override when the package
8042             is purged would be:
8043             <example>
8044 for i in /usr/bin/foo /usr/sbin/bar
8045 do
8046   if dpkg-statoverride --list $i >/dev/null 2>&1
8047   then
8048     dpkg-statoverride --remove $i
8049   fi
8050 done
8051             </example>
8052           </p>
8053         </sect1>
8054       </sect>
8055     </chapt>
8056
8057
8058     <chapt id="customized-programs">
8059       <heading>Customized programs</heading>
8060
8061       <sect id="arch-spec">
8062         <heading>Architecture specification strings</heading>
8063
8064         <p>
8065           If a program needs to specify an <em>architecture specification
8066           string</em> in some place, it should select one of the strings
8067           provided by <tt>dpkg-architecture -L</tt>. The strings are in
8068           the format <tt><var>os</var>-<var>arch</var></tt>, though the OS
8069           part is sometimes elided, as when the OS is Linux.
8070         </p>
8071
8072         <p>
8073           Note that we don't want to use
8074           <tt><var>arch</var>-debian-linux</tt> to apply to the rule
8075           <tt><var>architecture</var>-<var>vendor</var>-<var>os</var></tt>
8076           since this would make our programs incompatible with other
8077           Linux distributions.  We also don't use something like
8078           <tt><var>arch</var>-unknown-linux</tt>, since the
8079           <tt>unknown</tt> does not look very good.
8080         </p>
8081
8082         <sect1 id="arch-wildcard-spec">
8083           <heading>Architecture wildcards</heading>
8084
8085           <p>
8086             A package may specify an architecture wildcard. Architecture
8087             wildcards are in the format <tt>any</tt> (which matches every
8088             architecture), <tt><var>os</var></tt>-any, or
8089             any-<tt><var>cpu</var></tt>. <footnote>
8090               Internally, the package system normalizes the GNU triplets
8091               and the Debian arches into Debian arch triplets (which are
8092               kind of inverted GNU triplets), with the first component of
8093               the triplet representing the libc and ABI in use, and then
8094               does matching against those triplets.  However, such
8095               triplets are an internal implementation detail that should
8096               not be used by packages directly.  The libc and ABI portion
8097               is handled internally by the package system based on
8098               the <var>os</var> and <var>cpu</var>.
8099             </footnote>
8100           </p>
8101         </sect1>
8102       </sect>
8103
8104       <sect>
8105         <heading>Daemons</heading>
8106
8107         <p>
8108           The configuration files <file>/etc/services</file>,
8109           <file>/etc/protocols</file>, and <file>/etc/rpc</file> are managed
8110           by the <prgn>netbase</prgn> package and must not be modified
8111           by other packages.
8112         </p>
8113
8114         <p>
8115           If a package requires a new entry in one of these files, the
8116           maintainer should get in contact with the
8117           <prgn>netbase</prgn> maintainer, who will add the entries
8118           and release a new version of the <prgn>netbase</prgn>
8119           package.
8120         </p>
8121
8122         <p>
8123           The configuration file <file>/etc/inetd.conf</file> must not be
8124           modified by the package's scripts except via the
8125           <prgn>update-inetd</prgn> script or the
8126           <file>DebianNet.pm</file> Perl module.  See their documentation
8127           for details on how to add entries.
8128         </p>
8129
8130         <p>
8131           If a package wants to install an example entry into
8132           <file>/etc/inetd.conf</file>, the entry must be preceded with
8133           exactly one hash character (<tt>#</tt>). Such lines are
8134           treated as "commented out by user" by the
8135           <prgn>update-inetd</prgn> script and are not changed or
8136           activated during package updates.
8137         </p>
8138       </sect>
8139
8140       <sect>
8141         <heading>Using pseudo-ttys and modifying wtmp, utmp and
8142         lastlog</heading>
8143
8144         <p>
8145           Some programs need to create pseudo-ttys. This should be done
8146           using Unix98 ptys if the C library supports it. The resulting
8147           program must not be installed setuid root, unless that
8148           is required for other functionality.
8149         </p>
8150
8151         <p>
8152           The files <file>/var/run/utmp</file>, <file>/var/log/wtmp</file> and
8153           <file>/var/log/lastlog</file> must be installed writable by
8154           group <tt>utmp</tt>.  Programs which need to modify those
8155           files must be installed setgid <tt>utmp</tt>.
8156         </p>
8157       </sect>
8158
8159       <sect>
8160         <heading>Editors and pagers</heading>
8161
8162         <p>
8163           Some programs have the ability to launch an editor or pager
8164           program to edit or display a text document.  Since there are
8165           lots of different editors and pagers available in the Debian
8166           distribution, the system administrator and each user should
8167           have the possibility to choose their preferred editor and
8168           pager.
8169         </p>
8170
8171         <p>
8172           In addition, every program should choose a good default
8173           editor/pager if none is selected by the user or system
8174           administrator.
8175         </p>
8176
8177         <p>
8178           Thus, every program that launches an editor or pager must
8179           use the EDITOR or PAGER environment variable to determine
8180           the editor or pager the user wishes to use.  If these
8181           variables are not set, the programs <file>/usr/bin/editor</file>
8182           and <file>/usr/bin/pager</file> should be used, respectively.
8183         </p>
8184
8185         <p>
8186           These two files are managed through the <prgn>dpkg</prgn>
8187           "alternatives" mechanism.  Thus every package providing an
8188           editor or pager must call the
8189           <prgn>update-alternatives</prgn> script to register these
8190           programs.
8191         </p>
8192
8193         <p>
8194           If it is very hard to adapt a program to make use of the
8195           EDITOR or PAGER variables, that program may be configured to
8196           use <file>/usr/bin/sensible-editor</file> and
8197           <file>/usr/bin/sensible-pager</file> as the editor or pager
8198           program respectively.  These are two scripts provided in the
8199           <package>sensible-utils</package> package that check the EDITOR
8200           and PAGER variables and launch the appropriate program, and fall
8201           back to <file>/usr/bin/editor</file>
8202           and <file>/usr/bin/pager</file> if the variable is not set.
8203         </p>
8204
8205         <p>
8206           A program may also use the VISUAL environment variable to
8207           determine the user's choice of editor.  If it exists, it
8208           should take precedence over EDITOR.  This is in fact what
8209           <file>/usr/bin/sensible-editor</file> does.
8210         </p>
8211
8212         <p>
8213           It is not required for a package to depend on
8214           <tt>editor</tt> and <tt>pager</tt>, nor is it required for a
8215           package to provide such virtual packages.<footnote>
8216               The Debian base system already provides an editor and a
8217               pager program.
8218           </footnote>
8219         </p>
8220       </sect>
8221
8222       <sect id="web-appl">
8223         <heading>Web servers and applications</heading>
8224
8225         <p>
8226           This section describes the locations and URLs that should
8227           be used by all web servers and web applications in the
8228           Debian system.
8229         </p>
8230
8231         <p>
8232           <enumlist>
8233             <item>
8234                 Cgi-bin executable files are installed in the
8235                 directory
8236                 <example compact="compact">
8237 /usr/lib/cgi-bin/<var>cgi-bin-name</var>
8238                 </example>
8239                 and should be referred to as
8240                 <example compact="compact">
8241 http://localhost/cgi-bin/<var>cgi-bin-name</var>
8242                 </example>
8243
8244             </item>
8245
8246             <item>
8247               <p>Access to HTML documents</p>
8248
8249               <p>
8250                 HTML documents for a package are stored in
8251                 <file>/usr/share/doc/<var>package</var></file>
8252                 and can be referred to as
8253                 <example compact="compact">
8254 http://localhost/doc/<var>package</var>/<var>filename</var>
8255                 </example>
8256               </p>
8257
8258               <p>
8259                 The web server should restrict access to the document
8260                 tree so that only clients on the same host can read
8261                 the documents. If the web server does not support such
8262                 access controls, then it should not provide access at
8263                 all, or ask about providing access during installation.
8264               </p>
8265             </item>
8266
8267             <item>
8268               <p>Access to images</p>
8269               <p>
8270                 It is recommended that images for a package be stored
8271                 in <tt>/usr/share/images/<var>package</var></tt> and
8272                 may be referred to through an alias <tt>/images/</tt>
8273                 as
8274                 <example>
8275                   http://localhost/images/&lt;package&gt;/&lt;filename&gt;     
8276                 </example>
8277                 
8278               </p>
8279             </item>
8280
8281             <item>
8282               <p>Web Document Root</p>
8283
8284               <p>
8285                 Web Applications should try to avoid storing files in
8286                 the Web Document Root.  Instead they should use the
8287                 /usr/share/doc/<var>package</var> directory for
8288                 documents and register the Web Application via the
8289                 <package>doc-base</package> package.  If access to the
8290                 web document root is unavoidable then use
8291                 <example compact="compact">
8292 /var/www
8293                 </example>
8294                 as the Document Root.  This might be just a symbolic
8295                 link to the location where the system administrator
8296                 has put the real document root.
8297               </p>
8298             </item>
8299             <item><p>Providing httpd and/or httpd-cgi</p>
8300               <p>
8301                 All web servers should provide the virtual package
8302                 <tt>httpd</tt>. If a web server has CGI support it should
8303                 provide <tt>httpd-cgi</tt> additionally.
8304               </p>
8305               <p>
8306                 All web applications which do not contain CGI scripts should
8307                 depend on <tt>httpd</tt>, all those web applications which
8308                 <tt>do</tt> contain CGI scripts, should depend on
8309                 <tt>httpd-cgi</tt>.
8310               </p>
8311             </item>
8312           </enumlist>
8313         </p>
8314       </sect>
8315
8316       <sect id="mail-transport-agents">
8317         <heading>Mail transport, delivery and user agents</heading>
8318
8319         <p>
8320           Debian packages which process electronic mail, whether mail
8321           user agents (MUAs) or mail transport agents (MTAs), must
8322           ensure that they are compatible with the configuration
8323           decisions below.  Failure to do this may result in lost
8324           mail, broken <tt>From:</tt> lines, and other serious brain
8325           damage!
8326         </p>
8327
8328         <p>
8329           The mail spool is <file>/var/mail</file> and the interface to
8330           send a mail message is <file>/usr/sbin/sendmail</file> (as per
8331           the FHS).  On older systems, the mail spool may be
8332           physically located in <file>/var/spool/mail</file>, but all
8333           access to the mail spool should be via the
8334           <file>/var/mail</file> symlink.  The mail spool is part of the
8335           base system and not part of the MTA package.
8336         </p>
8337
8338         <p>
8339           All Debian MUAs, MTAs, MDAs and other mailbox accessing
8340           programs (such as IMAP daemons) must lock the mailbox in an
8341           NFS-safe way. This means that <tt>fcntl()</tt> locking must
8342           be combined with dot locking.  To avoid deadlocks, a program
8343           should use <tt>fcntl()</tt> first and dot locking after
8344           this, or alternatively implement the two locking methods in
8345           a non blocking way<footnote>
8346               If it is not possible to establish both locks, the
8347               system shouldn't wait for the second lock to be
8348               established, but remove the first lock, wait a (random)
8349               time, and start over locking again.
8350           </footnote>. Using the functions <tt>maillock</tt> and
8351           <tt>mailunlock</tt> provided by the
8352           <tt>liblockfile*</tt><footnote>
8353               You will need to depend on <tt>liblockfile1 (&gt;&gt;1.01)</tt>
8354               to use these functions.
8355           </footnote> packages is the recommended way to realize this.
8356         </p>
8357
8358         <p>
8359           Mailboxes are generally either mode 600 and owned by
8360           <var>user</var> or mode 660 and owned by
8361           <tt><var>user</var>:mail</tt><footnote>
8362             There are two traditional permission schemes for mail spools:
8363             mode 600 with all mail delivery done by processes running as
8364             the destination user, or mode 660 and owned by group mail with
8365             mail delivery done by a process running as a system user in
8366             group mail.  Historically, Debian required mode 660 mail
8367             spools to enable the latter model, but that model has become
8368             increasingly uncommon and the principle of least privilege
8369             indicates that mail systems that use the first model should
8370             use permissions of 600.  If delivery to programs is permitted,
8371             it's easier to keep the mail system secure if the delivery
8372             agent runs as the destination user.  Debian Policy therefore
8373             permits either scheme.
8374           </footnote>. The local system administrator may choose a
8375           different permission scheme; packages should not make
8376           assumptions about the permission and ownership of mailboxes
8377           unless required (such as when creating a new mailbox).  A MUA
8378           may remove a mailbox (unless it has nonstandard permissions) in
8379           which case the MTA or another MUA must recreate it if needed.
8380         </p>
8381
8382         <p>
8383           The mail spool is 2775 <tt>root:mail</tt>, and MUAs should
8384           be setgid mail to do the locking mentioned above (and
8385           must obviously avoid accessing other users' mailboxes
8386           using this privilege).</p>
8387
8388         <p>
8389           <file>/etc/aliases</file> is the source file for the system mail
8390           aliases (e.g., postmaster, usenet, etc.), it is the one
8391           which the sysadmin and <prgn>postinst</prgn> scripts may
8392           edit.  After <file>/etc/aliases</file> is edited the program or
8393           human editing it must call <prgn>newaliases</prgn>.  All MTA
8394           packages must come with a <prgn>newaliases</prgn> program,
8395           even if it does nothing, but older MTA packages did not do
8396           this so programs should not fail if <prgn>newaliases</prgn>
8397           cannot be found.  Note that because of this, all MTA
8398           packages must have <tt>Provides</tt>, <tt>Conflicts</tt> and
8399           <tt>Replaces: mail-transport-agent</tt> control file
8400           fields.
8401         </p>
8402
8403         <p>
8404           The convention of writing <tt>forward to
8405             <var>address</var></tt> in the mailbox itself is not
8406           supported.  Use a <tt>.forward</tt> file instead.</p>
8407
8408         <p>
8409           The <prgn>rmail</prgn> program used by UUCP
8410           for incoming mail should be  <file>/usr/sbin/rmail</file>.
8411           Likewise, <prgn>rsmtp</prgn>, for receiving
8412           batch-SMTP-over-UUCP, should be <file>/usr/sbin/rsmtp</file> if it
8413           is supported.</p>
8414
8415         <p>
8416           If your package needs to know what hostname to use on (for
8417           example) outgoing news and mail messages which are generated
8418           locally, you should use the file <file>/etc/mailname</file>.  It
8419           will contain the portion after the username and <tt>@</tt>
8420           (at) sign for email addresses of users on the machine
8421           (followed by a newline).
8422         </p>
8423
8424         <p>
8425           Such a package should check for the existence of this file
8426           when it is being configured.  If it exists, it should be
8427           used without comment, although an MTA's configuration script
8428           may wish to prompt the user even if it finds that this file
8429           exists.  If the file does not exist, the package should
8430           prompt the user for the value (preferably using
8431           <prgn>debconf</prgn>) and store it in <file>/etc/mailname</file>
8432           as well as using it in the package's configuration.  The
8433           prompt should make it clear that the name will not just be
8434           used by that package.  For example, in this situation the
8435           <tt>inn</tt> package could say something like:
8436           <example compact="compact">
8437 Please enter the "mail name" of your system.  This is the
8438 hostname portion of the address to be shown on outgoing
8439 news and mail messages.  The default is
8440 <var>syshostname</var>, your system's host name.  Mail
8441 name ["<var>syshostname</var>"]:
8442           </example>
8443           where <var>syshostname</var> is the output of <tt>hostname
8444             --fqdn</tt>.
8445         </p>
8446       </sect>
8447
8448       <sect>
8449         <heading>News system configuration</heading>
8450
8451         <p>
8452           All the configuration files related to the NNTP (news)
8453           servers and clients should be located under
8454           <file>/etc/news</file>.</p>
8455
8456         <p>
8457           There are some configuration issues that apply to a number
8458           of news clients and server packages on the machine. These
8459           are:
8460
8461           <taglist>
8462             <tag><file>/etc/news/organization</file></tag>
8463             <item>
8464                 A string which should appear as the
8465                 organization header for all messages posted
8466                 by NNTP clients on the machine
8467             </item>
8468
8469             <tag><file>/etc/news/server</file></tag>
8470             <item>
8471                 Contains the FQDN of the upstream NNTP
8472                 server, or localhost if the local machine is
8473                 an NNTP server.
8474             </item>
8475           </taglist>
8476
8477           Other global files may be added as required for cross-package news
8478           configuration.
8479         </p>
8480       </sect>
8481
8482
8483       <sect>
8484         <heading>Programs for the X Window System</heading>
8485
8486         <sect1>
8487           <heading>Providing X support and package priorities</heading>
8488
8489           <p>
8490             Programs that can be configured with support for the X
8491             Window System must be configured to do so and must declare
8492             any package dependencies necessary to satisfy their
8493             runtime requirements when using the X Window System.  If
8494             such a package is of higher priority than the X packages
8495             on which it depends, it is required that either the
8496             X-specific components be split into a separate package, or
8497             that an alternative version of the package, which includes
8498             X support, be provided, or that the package's priority be
8499             lowered.
8500           </p>
8501         </sect1>
8502
8503         <sect1>
8504           <heading>Packages providing an X server</heading>
8505
8506           <p>
8507             Packages that provide an X server that, directly or
8508             indirectly, communicates with real input and display
8509             hardware should declare in their control data that they
8510             provide the virtual package <tt>xserver</tt>.<footnote>
8511                 This implements current practice, and provides an
8512                 actual policy for usage of the <tt>xserver</tt>
8513                 virtual package which appears in the virtual packages
8514                 list.  In a nutshell, X servers that interface
8515                 directly with the display and input hardware or via
8516                 another subsystem (e.g., GGI) should provide
8517                 <tt>xserver</tt>.  Things like <tt>Xvfb</tt>,
8518                 <tt>Xnest</tt>, and <tt>Xprt</tt> should not.
8519             </footnote>
8520           </p>
8521         </sect1>
8522
8523         <sect1>
8524           <heading>Packages providing a terminal emulator</heading>
8525
8526           <p>
8527             Packages that provide a terminal emulator for the X Window
8528             System which meet the criteria listed below should declare
8529             in their control data that they provide the virtual
8530             package <tt>x-terminal-emulator</tt>.  They should also
8531             register themselves as an alternative for
8532             <file>/usr/bin/x-terminal-emulator</file>, with a priority of
8533             20.
8534           </p>
8535
8536           <p>
8537             To be an <tt>x-terminal-emulator</tt>, a program must:
8538             <list compact="compact">
8539               <item>
8540                   Be able to emulate a DEC VT100 terminal, or a
8541                   compatible terminal.
8542               </item>
8543
8544               <item>
8545                   Support the command-line option <tt>-e
8546                     <var>command</var></tt>, which creates a new
8547                   terminal window<footnote>
8548                       "New terminal window" does not necessarily mean
8549                       a new top-level X window directly parented by
8550                       the window manager; it could, if the terminal
8551                       emulator application were so coded, be a new
8552                       "view" in a multiple-document interface (MDI).
8553                   </footnote>
8554                   and runs the specified <var>command</var>,
8555                   interpreting the entirety of the rest of the command
8556                   line as a command to pass straight to exec, in the
8557                   manner that <tt>xterm</tt> does.
8558               </item>
8559
8560               <item>
8561                   Support the command-line option <tt>-T
8562                     <var>title</var></tt>, which creates a new terminal
8563                   window with the window title <var>title</var>.
8564               </item>
8565             </list>
8566           </p>
8567         </sect1>
8568
8569         <sect1>
8570           <heading>Packages providing a window manager</heading>
8571
8572           <p>
8573             Packages that provide a window manager should declare in
8574             their control data that they provide the virtual package
8575             <tt>x-window-manager</tt>.  They should also register
8576             themselves as an alternative for
8577             <file>/usr/bin/x-window-manager</file>, with a priority
8578             calculated as follows:
8579             <list compact="compact">
8580               <item>
8581                   Start with a priority of 20.
8582               </item>
8583
8584               <item>
8585                   If the window manager supports the Debian menu
8586                   system, add 20 points if this support is available
8587                   in the package's default configuration (i.e., no
8588                   configuration files belonging to the system or user
8589                   have to be edited to activate the feature); if
8590                   configuration files must be modified, add only 10
8591                   points.
8592                 </p>
8593               </item>
8594
8595               <item>
8596                   If the window manager complies with <url
8597                     id="http://www.freedesktop.org/Standards/wm-spec"
8598                     name="The Window Manager Specification Project">,
8599                   written by the <url id="http://www.freedesktop.org/"
8600                     name="Free Desktop Group">, add 40 points.
8601               </item>
8602
8603               <item>
8604                   If the window manager permits the X session to be
8605                   restarted using a <em>different</em> window manager
8606                   (without killing the X server) in its default
8607                   configuration, add 10 points; otherwise add none.
8608               </item>
8609             </list>
8610           </p>
8611         </sect1>
8612
8613         <sect1>
8614           <heading>Packages providing fonts</heading>
8615
8616           <p>
8617             Packages that provide fonts for the X Window
8618             System<footnote>
8619                 For the purposes of Debian Policy, a "font for the X
8620                 Window System" is one which is accessed via X protocol
8621                 requests.  Fonts for the Linux console, for PostScript
8622                 renderer, or any other purpose, do not fit this
8623                 definition.  Any tool which makes such fonts available
8624                 to the X Window System, however, must abide by this
8625                 font policy.
8626             </footnote>
8627             must do a number of things to ensure that they are both
8628             available without modification of the X or font server
8629             configuration, and that they do not corrupt files used by
8630             other font packages to register information about
8631             themselves.
8632             <enumlist>
8633               <item>
8634                   Fonts of any type supported by the X Window System
8635                   must be in a separate binary package from any
8636                   executables, libraries, or documentation (except
8637                   that specific to the fonts shipped, such as their
8638                   license information).  If one or more of the fonts
8639                   so packaged are necessary for proper operation of
8640                   the package with which they are associated the font
8641                   package may be Recommended; if the fonts merely
8642                   provide an enhancement, a Suggests relationship may
8643                   be used.  Packages must not Depend on font
8644                   packages.<footnote>
8645                       This is because the X server may retrieve fonts
8646                       from the local file system or over the network
8647                       from an X font server; the Debian package system
8648                       is empowered to deal only with the local
8649                       file system.
8650                   </footnote>
8651               </item>
8652
8653               <item>
8654                   BDF fonts must be converted to PCF fonts with the
8655                   <prgn>bdftopcf</prgn> utility (available in the
8656                   <tt>xfonts-utils</tt> package, <prgn>gzip</prgn>ped, and
8657                   placed in a directory that corresponds to their
8658                   resolution:
8659                   <list compact="compact">
8660                     <item>
8661                         100 dpi fonts must be placed in
8662                         <file>/usr/share/fonts/X11/100dpi/</file>.
8663                     </item>
8664
8665                     <item>
8666                         75 dpi fonts must be placed in
8667                         <file>/usr/share/fonts/X11/75dpi/</file>.
8668                     </item>
8669
8670                     <item>
8671                         Character-cell fonts, cursor fonts, and other
8672                         low-resolution fonts must be placed in
8673                         <file>/usr/share/fonts/X11/misc/</file>.
8674                     </item>
8675                   </list>
8676               </item>
8677
8678               <item>
8679                   Type 1 fonts must be placed in
8680                   <file>/usr/share/fonts/X11/Type1/</file>.  If font
8681                   metric files are available, they must be placed here
8682                   as well.
8683               </item>
8684
8685               <item>
8686                   Subdirectories of <file>/usr/share/fonts/X11/</file>
8687                   other than those listed above must be neither
8688                   created nor used.  (The <file>PEX</file>, <file>CID</file>,
8689                   <file>Speedo</file>, and <file>cyrillic</file> directories
8690                   are excepted for historical reasons, but installation of
8691                   files into these directories remains discouraged.)
8692               </item>
8693
8694               <item>
8695                   Font packages may, instead of placing files directly
8696                   in the X font directories listed above, provide
8697                   symbolic links in that font directory pointing to
8698                   the files' actual location in the filesystem.  Such
8699                   a location must comply with the FHS.
8700               </item>
8701
8702               <item>
8703                   Font packages should not contain both 75dpi and
8704                   100dpi versions of a font.  If both are available,
8705                   they should be provided in separate binary packages
8706                   with <tt>-75dpi</tt> or <tt>-100dpi</tt> appended to
8707                   the names of the packages containing the
8708                   corresponding fonts.
8709               </item>
8710
8711               <item>
8712                   Fonts destined for the <file>misc</file> subdirectory
8713                   should not be included in the same package as 75dpi
8714                   or 100dpi fonts; instead, they should be provided in
8715                   a separate package with <tt>-misc</tt> appended to
8716                   its name.
8717               </item>
8718
8719               <item>
8720                   Font packages must not provide the files
8721                   <file>fonts.dir</file>, <file>fonts.alias</file>, or
8722                   <file>fonts.scale</file> in a font directory:
8723                   <list>
8724                     <item>
8725                         <file>fonts.dir</file> files must not be provided at all.
8726                     </item>
8727
8728                     <item>
8729                         <file>fonts.alias</file> and <file>fonts.scale</file>
8730                         files, if needed, should be provided in the
8731                         directory
8732                         <file>/etc/X11/fonts/<var>fontdir</var>/<var>package</var>.<var>extension</var></file>,
8733                         where <var>fontdir</var> is the name of the
8734                         subdirectory of
8735                         <file>/usr/share/fonts/X11/</file> where the
8736                         package's corresponding fonts are stored
8737                         (e.g., <tt>75dpi</tt> or <tt>misc</tt>),
8738                         <var>package</var> is the name of the package
8739                         that provides these fonts, and
8740                         <var>extension</var> is either <tt>scale</tt>
8741                         or <tt>alias</tt>, whichever corresponds to
8742                         the file contents.
8743                     </item>
8744                   </list>
8745               </item>
8746
8747               <item>
8748                   Font packages must declare a dependency on
8749                   <tt>xfonts-utils</tt> in their control
8750                   data.
8751               </item>
8752
8753               <item>
8754                   Font packages that provide one or more
8755                   <file>fonts.scale</file> files as described above must
8756                   invoke <prgn>update-fonts-scale</prgn> on each
8757                   directory into which they installed fonts
8758                   <em>before</em> invoking
8759                   <prgn>update-fonts-dir</prgn> on that directory.
8760                   This invocation must occur in both the
8761                   <prgn>postinst</prgn> (for all arguments) and
8762                   <prgn>postrm</prgn> (for all arguments except
8763                   <tt>upgrade</tt>) scripts.
8764               </item>
8765
8766               <item>
8767                   Font packages that provide one or more
8768                   <file>fonts.alias</file> files as described above must
8769                   invoke <prgn>update-fonts-alias</prgn> on each
8770                   directory into which they installed fonts.  This
8771                   invocation must occur in both the
8772                   <prgn>postinst</prgn> (for all arguments) and
8773                   <prgn>postrm</prgn> (for all arguments except
8774                   <tt>upgrade</tt>) scripts.
8775               </item>
8776
8777               <item>
8778                   Font packages must invoke
8779                   <prgn>update-fonts-dir</prgn> on each directory into
8780                   which they installed fonts.  This invocation must
8781                   occur in both the <prgn>postinst</prgn> (for all
8782                   arguments) and <prgn>postrm</prgn> (for all
8783                   arguments except <tt>upgrade</tt>) scripts.
8784               </item>
8785
8786               <item>
8787                   Font packages must not provide alias names for the
8788                   fonts they include which collide with alias names
8789                   already in use by fonts already packaged.
8790               </item>
8791
8792               <item>
8793                   Font packages must not provide fonts with the same
8794                   XLFD registry name as another font already packaged.
8795               </item>
8796             </enumlist>
8797           </p>
8798         </sect1>
8799
8800         <sect1 id="appdefaults">
8801           <heading>Application defaults files</heading>
8802
8803           <p>
8804             Application defaults files must be installed in the
8805             directory <file>/etc/X11/app-defaults/</file> (use of a
8806             localized subdirectory of <file>/etc/X11/</file> as described
8807             in the <em>X Toolkit Intrinsics - C Language
8808             Interface</em> manual is also permitted).  They must be
8809             registered as <tt>conffile</tt>s or handled as
8810             configuration files.
8811           </p>
8812
8813           <p>
8814             Customization of programs' X resources may also be
8815             supported with the provision of a file with the same name
8816             as that of the package placed in
8817             the <file>/etc/X11/Xresources/</file> directory, which
8818             must be registered as a <tt>conffile</tt> or handled as a
8819             configuration file.<footnote>
8820                 Note that this mechanism is not the same as using
8821                 app-defaults; app-defaults are tied to the client
8822                 binary on the local file system, whereas X resources
8823                 are stored in the X server and affect all connecting
8824                 clients.
8825             </footnote>
8826           </p>
8827         </sect1>
8828
8829         <sect1>
8830           <heading>Installation directory issues</heading>
8831
8832           <p>
8833             Historically, packages using the X Window System used a
8834             separate set of installation directories from other packages.
8835             This practice has been discontinued and packages using the X
8836             Window System should now generally be installed in the same
8837             directories as any other package.  Specifically, packages must
8838             not install files under the <file>/usr/X11R6/</file> directory
8839             and the <file>/usr/X11R6/</file> directory hierarchy should be
8840             regarded as obsolete.
8841           </p>
8842
8843           <p>
8844             Include files previously installed under
8845             <file>/usr/X11R6/include/X11/</file> should be installed into
8846             <file>/usr/include/X11/</file>.  For files previously
8847             installed into subdirectories of
8848             <file>/usr/X11R6/lib/X11/</file>, package maintainers should
8849             determine if subdirectories of <file>/usr/lib/</file> and
8850             <file>/usr/share/</file> can be used.  If not, a subdirectory
8851             of <file>/usr/lib/X11/</file> should be used.
8852           </p>
8853
8854           <p>
8855             Configuration files for window, display, or session managers
8856             or other applications that are tightly integrated with the X
8857             Window System may be placed in a subdirectory
8858             of <file>/etc/X11/</file> corresponding to the package name.
8859             Other X Window System applications should use
8860             the <file>/etc/</file> directory unless otherwise mandated by
8861             policy (such as for <ref id="appdefaults">).
8862           </p>
8863         </sect1>
8864
8865         <sect1>
8866           <heading>The OSF/Motif and OpenMotif libraries</heading>
8867
8868           <p>
8869             <em>Programs that require the non-DFSG-compliant OSF/Motif or
8870               OpenMotif libraries</em><footnote>
8871                 OSF/Motif and OpenMotif are collectively referred to as
8872                 "Motif" in this policy document.
8873             </footnote>
8874             should be compiled against and tested with LessTif (a free
8875             re-implementation of Motif) instead.  If the maintainer
8876             judges that the program or programs do not work
8877             sufficiently well with LessTif to be distributed and
8878             supported, but do so when compiled against Motif, then two
8879             versions of the package should be created; one linked
8880             statically against Motif and with <tt>-smotif</tt>
8881             appended to the package name, and one linked dynamically
8882             against Motif and with <tt>-dmotif</tt> appended to the
8883             package name.
8884           </p>
8885
8886           <p>
8887             Both Motif-linked versions are dependent
8888             upon non-DFSG-compliant software and thus cannot be
8889             uploaded to the <em>main</em> distribution; if the
8890             software is itself DFSG-compliant it may be uploaded to
8891             the <em>contrib</em> distribution.  While known existing
8892             versions of Motif permit unlimited redistribution of
8893             binaries linked against the library (whether statically or
8894             dynamically), it is the package maintainer's
8895             responsibility to determine whether this is permitted by
8896             the license of the copy of Motif in their possession.
8897           </p>
8898         </sect1>
8899       </sect>
8900
8901       <sect id="perl">
8902         <heading>Perl programs and modules</heading>
8903
8904         <p>
8905           Perl programs and modules should follow the current Perl policy.
8906         </p>
8907
8908         <p>
8909           The Perl policy can be found in the <tt>perl-policy</tt>
8910           files in the <tt>debian-policy</tt> package.
8911           It is also available from the Debian web mirrors at
8912           <tt><url name="/doc/packaging-manuals/perl-policy/"
8913                 id="http://www.debian.org/doc/packaging-manuals/perl-policy/"></tt>.
8914         </p>
8915       </sect>
8916
8917       <sect id="emacs">
8918         <heading>Emacs lisp programs</heading>
8919
8920         <p>
8921           Please refer to the "Debian Emacs Policy" for details of how to
8922           package emacs lisp programs.
8923         </p>
8924
8925         <p>
8926           The Emacs policy is available in
8927           <file>debian-emacs-policy.gz</file> of the
8928           <package>emacsen-common</package> package.
8929           It is also available from the Debian web mirrors at
8930           <tt><url name="/doc/packaging-manuals/debian-emacs-policy"
8931                 id="http://www.debian.org/doc/packaging-manuals/debian-emacs-policy"></tt>.
8932         </p>
8933       </sect>
8934
8935       <sect>
8936         <heading>Games</heading>
8937
8938         <p>
8939           The permissions on <file>/var/games</file> are mode 755, owner
8940           <tt>root</tt> and group <tt>root</tt>.
8941         </p>
8942
8943         <p>
8944           Each game decides on its own security policy.</p>
8945
8946         <p>
8947           Games which require protected, privileged access to
8948           high-score files, saved games, etc., may be made
8949           set-<em>group</em>-id (mode 2755) and owned by
8950           <tt>root:games</tt>, and use files and directories with
8951           appropriate permissions (770 <tt>root:games</tt>, for
8952           example).  They must not be made
8953           set-<em>user</em>-id, as this causes security problems. (If
8954           an attacker can subvert any set-user-id game they can
8955           overwrite the executable of any other, causing other players
8956           of these games to run a Trojan horse program.  With a
8957           set-group-id game the attacker only gets access to less
8958           important game data, and if they can get at the other
8959           players' accounts at all it will take considerably more
8960           effort.)</p>
8961
8962         <p>
8963           Some packages, for example some fortune cookie programs, are
8964           configured by the upstream authors to install with their
8965           data files or other static information made unreadable so
8966           that they can only be accessed through set-id programs
8967           provided.  You should not do this in a Debian package: anyone can
8968           download the <file>.deb</file> file and read the data from it,
8969           so there is no point making the files unreadable.  Not
8970           making the files unreadable also means that you don't have
8971           to make so many programs set-id, which reduces the risk of a
8972           security hole.</p>
8973
8974         <p>
8975           As described in the FHS, binaries of games should be
8976           installed in the directory <file>/usr/games</file>. This also
8977           applies to games that use the X Window System. Manual pages
8978           for games (X and non-X games) should be installed in
8979           <file>/usr/share/man/man6</file>.</p>
8980       </sect>
8981     </chapt>
8982
8983
8984     <chapt id="docs">
8985       <heading>Documentation</heading>
8986
8987       <sect>
8988         <heading>Manual pages</heading>
8989
8990         <p>
8991           You should install manual pages in <prgn>nroff</prgn> source
8992           form, in appropriate places under <file>/usr/share/man</file>.
8993           You should only use sections 1 to 9 (see the FHS for more
8994           details).  You must not install a pre-formatted "cat page".
8995         </p>
8996
8997         <p>
8998           Each program, utility, and function should have an
8999           associated manual page included in the same package. It is
9000           suggested that all configuration files also have a manual
9001           page included as well. Manual pages for protocols and other
9002           auxiliary things are optional.
9003         </p>
9004
9005         <p>
9006           If no manual page is available, this is considered as a bug
9007           and should be reported to the Debian Bug Tracking System (the
9008           maintainer of the package is allowed to write this bug report
9009           themselves, if they so desire).  Do not close the bug report
9010           until a proper man page is available.<footnote>
9011               It is not very hard to write a man page. See the
9012               <url id="http://www.schweikhardt.net/man_page_howto.html"
9013                 name="Man-Page-HOWTO">,
9014               <manref name="man" section="7">, the examples
9015               created by <prgn>debmake</prgn> or <prgn>dh_make</prgn>,
9016               the helper program <prgn>help2man</prgn>, or the
9017               directory <file>/usr/share/doc/man-db/examples</file>.
9018           </footnote>
9019         </p>
9020
9021         <p>
9022           You may forward a complaint about a missing man page to the
9023           upstream authors, and mark the bug as forwarded in the
9024           Debian bug tracking system.  Even though the GNU Project do
9025           not in general consider the lack of a man page to be a bug,
9026           we do; if they tell you that they don't consider it a bug
9027           you should leave the bug in our bug tracking system open
9028           anyway.
9029         </p>
9030
9031         <p>
9032           Manual pages should be installed compressed using <tt>gzip -9</tt>.
9033         </p>
9034
9035         <p>
9036           If one man page needs to be accessible via several names it
9037           is better to use a symbolic link than the <file>.so</file>
9038           feature, but there is no need to fiddle with the relevant
9039           parts of the upstream source to change from <file>.so</file> to
9040           symlinks: don't do it unless it's easy.  You should not
9041           create hard links in the manual page directories, nor put
9042           absolute filenames in <file>.so</file> directives.  The filename
9043           in a <file>.so</file> in a man page should be relative to the
9044           base of the man page tree (usually
9045           <file>/usr/share/man</file>). If you do not create any links
9046           (whether symlinks, hard links, or <tt>.so</tt> directives)
9047           in the file system to the alternate names of the man page,
9048           then you should not rely on <prgn>man</prgn> finding your
9049           man page under those names based solely on the information in
9050           the man page's header.<footnote>
9051               Supporting this in <prgn>man</prgn> often requires
9052               unreasonable processing time to find a manual page or to
9053               report that none exists, and moves knowledge into man's
9054               database that would be better left in the file system.
9055               This support is therefore deprecated and will cease to
9056               be present in the future.
9057           </footnote>
9058         </p>
9059
9060         <p>
9061           Manual pages in locale-specific subdirectories of
9062           <file>/usr/share/man</file> should use either UTF-8 or the usual
9063           legacy encoding for that language (normally the one corresponding
9064           to the shortest relevant locale name in
9065           <file>/usr/share/i18n/SUPPORTED</file>). For example, pages under
9066           <file>/usr/share/man/fr</file> should use either UTF-8 or
9067           ISO-8859-1.<footnote>
9068             <prgn>man</prgn> will automatically detect whether UTF-8 is in
9069             use. In future, all manual pages will be required to use
9070             UTF-8.
9071           </footnote>
9072         </p>
9073
9074         <p>
9075           A country name (the <tt>DE</tt> in <tt>de_DE</tt>) should not be
9076           included in the subdirectory name unless it indicates a
9077           significant difference in the language, as this excludes
9078           speakers of the language in other countries.<footnote>
9079             At the time of writing, Chinese and Portuguese are the main
9080             languages with such differences, so <file>pt_BR</file>,
9081             <file>zh_CN</file>, and <file>zh_TW</file> are all allowed.
9082           </footnote>
9083         </p>
9084
9085         <p>
9086           If a localized version of a manual page is provided, it should
9087           either be up-to-date or it should be obvious to the reader that
9088           it is outdated and the original manual page should be used
9089           instead.  This can be done either by a note at the beginning of
9090           the manual page or by showing the missing or changed portions in
9091           the original language instead of the target language.
9092         </p>
9093       </sect>
9094
9095       <sect>
9096         <heading>Info documents</heading>
9097
9098         <p>
9099           Info documents should be installed in <file>/usr/share/info</file>.
9100           They should be compressed with <tt>gzip -9</tt>.
9101         </p>
9102
9103         <p>
9104           The <prgn>install-info</prgn> program maintains a directory of
9105           installed info documents in <file>/usr/share/info/dir</file> for
9106           the use of info readers.<footnote>
9107             It was previously necessary for packages installing info
9108             documents to run <prgn>install-info</prgn> from maintainer
9109             scripts.  This is no longer necessary.  The installation
9110             system now uses dpkg triggers.
9111           </footnote>
9112           This file must not be included in packages.  Packages containing
9113           info documents should depend on <tt>dpkg (>= 1.15.4) |
9114           install-info</tt> to ensure that the directory file is properly
9115           rebuilt during partial upgrades from Debian 5.0 (lenny) and
9116           earlier.
9117         </p>
9118
9119         <p>
9120           Info documents should contain section and directory entry
9121           information in the document for the use
9122           of <prgn>install-info</prgn>.  The section should be specified
9123           via a line starting with <tt>INFO-DIR-SECTION</tt> followed by a
9124           space and the section of this info page.  The directory entry or
9125           entries should be included between
9126           a <tt>START-INFO-DIR-ENTRY</tt> line and
9127           an <tt>END-INFO-DIR-ENTRY</tt> line.  For example:
9128           <example>
9129 INFO-DIR-SECTION Individual utilities
9130 START-INFO-DIR-ENTRY
9131 * example: (example).               An example info directory entry.
9132 END-INFO-DIR-ENTRY
9133           </example>
9134           To determine which section to use, you should look
9135           at <file>/usr/share/info/dir</file> on your system and choose
9136           the most relevant (or create a new section if none of the
9137           current sections are relevant).<footnote>
9138             Normally, info documents are generated from Texinfo source.
9139             To include this information in the generated info document, if
9140             it is absent, add commands like:
9141             <example>
9142 @dircategory Individual utilities
9143 @direntry
9144 * example: (example).               An example info directory entry.
9145 @end direntry
9146             </example>
9147             to the Texinfo source of the document and ensure that the info
9148             documents are rebuilt from source during the package build.
9149           </footnote>
9150         </p>
9151       </sect>
9152
9153       <sect>
9154         <heading>Additional documentation</heading>
9155
9156         <p>
9157           Any additional documentation that comes with the package may
9158           be installed at the discretion of the package maintainer.
9159           Plain text documentation should be installed in the directory
9160           <file>/usr/share/doc/<var>package</var></file>, where
9161           <var>package</var> is the name of the package, and
9162           compressed with <tt>gzip -9</tt> unless it is small.
9163         </p>
9164
9165         <p>
9166           If a package comes with large amounts of documentation which
9167           many users of the package will not require you should create
9168           a separate binary package to contain it, so that it does not
9169           take up disk space on the machines of users who do not need
9170           or want it installed.</p>
9171
9172         <p>
9173           It is often a good idea to put text information files
9174           (<file>README</file>s, changelogs, and so forth) that come with
9175           the source package in <file>/usr/share/doc/<var>package</var></file>
9176           in the binary package.  However, you don't need to install
9177           the instructions for building and installing the package, of
9178           course!</p>
9179
9180         <p>
9181           Packages must not require the existence of any files in
9182           <file>/usr/share/doc/</file> in order to function
9183           <footnote>
9184               The system administrator should be able to
9185               delete files in <file>/usr/share/doc/</file> without causing
9186               any programs to break.
9187           </footnote>.
9188           Any files that are referenced by programs but are also
9189           useful as stand alone documentation should be installed under
9190           <file>/usr/share/<var>package</var>/</file> with symbolic links from
9191           <file>/usr/share/doc/<var>package</var></file>.
9192         </p>
9193
9194         <p>
9195           <file>/usr/share/doc/<var>package</var></file> may be a symbolic
9196           link to another directory in <file>/usr/share/doc</file> only if
9197           the two packages both come from the same source and the
9198           first package Depends on the second.<footnote>
9199             <p>
9200               Please note that this does not override the section on
9201               changelog files below, so the file 
9202               <file>/usr/share/doc/<var>package</var>/changelog.Debian.gz</file>
9203               must refer to the changelog for the current version of
9204               <var>package</var> in question. In practice, this means
9205               that the sources of the target and the destination of the
9206               symlink must be the same (same source package and
9207               version). 
9208             </p>
9209           </footnote>
9210         </p>
9211
9212         <p>
9213           Former Debian releases placed all additional documentation
9214           in <file>/usr/doc/<var>package</var></file>.  This has been
9215           changed to <file>/usr/share/doc/<var>package</var></file>,
9216           and packages must not put documentation in the directory
9217           <file>/usr/doc/<var>package</var></file>. <footnote>
9218             At this phase of the transition, we no longer require a
9219             symbolic link in <file>/usr/doc/</file>. At a later point,
9220             policy shall change to make the symbolic links a bug.
9221           </footnote>
9222         </p>
9223       </sect>
9224
9225       <sect>
9226         <heading>Preferred documentation formats</heading>
9227
9228         <p>
9229           The unification of Debian documentation is being carried out
9230           via HTML.</p>
9231
9232         <p>
9233           If your package comes with extensive documentation in a
9234           markup format that can be converted to various other formats
9235           you should if possible ship HTML versions in a binary
9236           package, in the directory
9237           <file>/usr/share/doc/<var>appropriate-package</var></file> or
9238           its subdirectories.<footnote>
9239               The rationale: The important thing here is that HTML
9240               docs should be available in <em>some</em> package, not
9241               necessarily in the main binary package.
9242           </footnote>
9243         </p>
9244
9245         <p>
9246           Other formats such as PostScript may be provided at the
9247           package maintainer's discretion.
9248         </p>
9249       </sect>
9250
9251       <sect id="copyrightfile">
9252         <heading>Copyright information</heading>
9253
9254         <p>
9255           Every package must be accompanied by a verbatim copy of its
9256           copyright information and distribution license in the file
9257           <file>/usr/share/doc/<var>package</var>/copyright</file>. This
9258           file must neither be compressed nor be a symbolic link.
9259         </p>
9260
9261         <p>
9262           In addition, the copyright file must say where the upstream
9263           sources (if any) were obtained.  It should name the original
9264           authors of the package and the Debian maintainer(s) who were
9265           involved with its creation.
9266         </p>
9267
9268         <p>
9269           Packages in the <em>contrib</em> or <em>non-free</em> archive
9270           areas should state in the copyright file that the package is not
9271           part of the Debian GNU/Linux distribution and briefly explain
9272           why.
9273         </p>
9274
9275         <p>
9276           A copy of the file which will be installed in
9277           <file>/usr/share/doc/<var>package</var>/copyright</file> should
9278           be in <file>debian/copyright</file> in the source package.
9279         </p>
9280
9281         <p>
9282           <file>/usr/share/doc/<var>package</var></file> may be a symbolic
9283           link to another directory in <file>/usr/share/doc</file> only if
9284           the two packages both come from the same source and the
9285           first package Depends on the second.  These rules are
9286           important because copyrights must be extractable by
9287           mechanical means.
9288         </p>
9289
9290         <p>
9291           Packages distributed under the Apache license (version 2.0), the
9292           Artistic license, the GNU GPL (version 2 or 3), the GNU LGPL
9293           (versions 2, 2.1, or 3), and the GNU FDL (versions 1.2 or 1.3)
9294           should refer to the corresponding files
9295           under <file>/usr/share/common-licenses</file>,<footnote>
9296             <p>
9297               In particular,
9298               <file>/usr/share/common-licenses/Apache-2.0</file>,
9299               <file>/usr/share/common-licenses/Artistic</file>,
9300               <file>/usr/share/common-licenses/GPL-2</file>,
9301               <file>/usr/share/common-licenses/GPL-3</file>,
9302               <file>/usr/share/common-licenses/LGPL-2</file>,
9303               <file>/usr/share/common-licenses/LGPL-2.1</file>,
9304               <file>/usr/share/common-licenses/LGPL-3</file>,
9305               <file>/usr/share/common-licenses/GFDL-1.2</file>, and
9306               <file>/usr/share/common-licenses/GFDL-1.3</file>
9307               respectively.  The University of California BSD license is
9308               also included in <package>base-files</package> as
9309               <file>/usr/share/common-licenses/BSD</file>, but given the
9310               brevity of this license, its specificity to code whose
9311               copyright is held by the Regents of the University of
9312               California, and the frequency of minor wording changes, its
9313               text should be included in the copyright file rather than
9314               referencing this file.
9315             </p>
9316           </footnote> rather than quoting them in the copyright
9317           file. 
9318         </p>
9319
9320         <p>
9321           You should not use the copyright file as a general <file>README</file>
9322           file.  If your package has such a file it should be
9323           installed in <file>/usr/share/doc/<var>package</var>/README</file> or
9324           <file>README.Debian</file> or some other appropriate place.</p>
9325       </sect>
9326
9327       <sect>
9328         <heading>Examples</heading>
9329
9330         <p>
9331           Any examples (configurations, source files, whatever),
9332           should be installed in a directory
9333           <file>/usr/share/doc/<var>package</var>/examples</file>.  These
9334           files should not be referenced by any program: they're there
9335           for the benefit of the system administrator and users as
9336           documentation only.  Architecture-specific example files
9337           should be installed in a directory
9338           <file>/usr/lib/<var>package</var>/examples</file> with symbolic
9339           links to them from
9340           <file>/usr/share/doc/<var>package</var>/examples</file>, or the
9341           latter directory itself may be a symbolic link to the
9342           former.
9343         </p>
9344
9345         <p>
9346           If the purpose of a package is to provide examples, then the
9347           example files may be installed into
9348           <file>/usr/share/doc/<var>package</var></file>.
9349         </p>
9350       </sect>
9351
9352       <sect id="changelogs">
9353         <heading>Changelog files</heading>
9354
9355         <p>
9356           Packages that are not Debian-native must contain a
9357           compressed copy of the <file>debian/changelog</file> file from
9358           the Debian source tree in
9359           <file>/usr/share/doc/<var>package</var></file> with the name
9360           <file>changelog.Debian.gz</file>.
9361         </p>
9362
9363         <p>
9364           If an upstream changelog is available, it should be accessible as
9365           <file>/usr/share/doc/<var>package</var>/changelog.gz</file> in
9366           plain text.  If the upstream changelog is distributed in
9367           HTML, it should be made available in that form as
9368           <file>/usr/share/doc/<var>package</var>/changelog.html.gz</file>
9369           and a plain text <file>changelog.gz</file> should be generated
9370           from it using, for example, <tt>lynx -dump -nolist</tt>.  If
9371           the upstream changelog files do not already conform to this
9372           naming convention, then this may be achieved either by
9373           renaming the files, or by adding a symbolic link, at the
9374           maintainer's discretion.<footnote>
9375               Rationale: People should not have to look in places for
9376               upstream changelogs merely because they are given
9377               different names or are distributed in HTML format.
9378           </footnote>
9379         </p>
9380
9381         <p>
9382           All of these files should be installed compressed using
9383           <tt>gzip -9</tt>, as they will become large with time even
9384           if they start out small.
9385         </p>
9386
9387         <p>
9388           If the package has only one changelog which is used both as
9389           the Debian changelog and the upstream one because there is
9390           no separate upstream maintainer then that changelog should
9391           usually be installed as
9392           <file>/usr/share/doc/<var>package</var>/changelog.gz</file>; if
9393           there is a separate upstream maintainer, but no upstream
9394           changelog, then the Debian changelog should still be called
9395           <file>changelog.Debian.gz</file>.
9396         </p>
9397
9398         <p>
9399           For details about the format and contents of the Debian
9400           changelog file, please see <ref id="dpkgchangelog">.
9401         </p>
9402       </sect>
9403     </chapt>
9404
9405     <appendix id="pkg-scope">
9406       <heading>Introduction and scope of these appendices</heading>
9407
9408       <p>
9409         These appendices are taken essentially verbatim from the
9410         now-deprecated Packaging Manual, version 3.2.1.0.  They are
9411         the chapters which are likely to be of use to package
9412         maintainers and which have not already been included in the
9413         policy document itself. Most of these sections are very likely
9414         not relevant to policy; they should be treated as
9415         documentation for the packaging system. Please note that these
9416         appendices are included for convenience, and for historical
9417         reasons: they used to be part of policy package, and they have
9418         not yet been incorporated into dpkg documentation. However,
9419         they still have value, and hence they are presented here.
9420       </p>
9421
9422       <p>
9423         They have not yet been checked to ensure that they are
9424         compatible with the contents of policy, and if there are any
9425         contradictions, the version in the main policy document takes
9426         precedence.  The remaining chapters of the old Packaging
9427         Manual have also not been read in detail to ensure that there
9428         are not parts which have been left out.  Both of these will be
9429         done in due course.
9430       </p>
9431
9432       <p>
9433         Certain parts of the Packaging manual were integrated into the
9434         Policy Manual proper, and removed from the appendices. Links
9435         have been placed from the old locations to the new ones.
9436       </p>
9437
9438       <p>
9439         <prgn>dpkg</prgn> is a suite of programs for creating binary
9440         package files and installing and removing them on Unix
9441         systems.<footnote>
9442             <prgn>dpkg</prgn> is targeted primarily at Debian
9443             GNU/Linux, but may work on or be ported to other
9444             systems.
9445         </footnote>
9446       </p>
9447
9448       <p>
9449         The binary packages are designed for the management of
9450         installed executable programs (usually compiled binaries) and
9451         their associated data, though source code examples and
9452         documentation are provided as part of some packages.</p>
9453
9454       <p>
9455         This manual describes the technical aspects of creating Debian
9456         binary packages (<file>.deb</file> files).  It documents the
9457         behavior of the package management programs
9458         <prgn>dpkg</prgn>, <prgn>dselect</prgn> et al. and the way
9459         they interact with packages.</p>
9460
9461       <p>
9462         It also documents the interaction between
9463         <prgn>dselect</prgn>'s core and the access method scripts it
9464         uses to actually install the selected packages, and describes
9465         how to create a new access method.</p>
9466
9467       <p>
9468         This manual does not go into detail about the options and
9469         usage of the package building and installation tools.  It
9470         should therefore be read in conjunction with those programs'
9471         man pages.
9472       </p>
9473
9474       <p>
9475         The utility programs which are provided with <prgn>dpkg</prgn>
9476         for managing various system configuration and similar issues,
9477         such as <prgn>update-rc.d</prgn> and
9478         <prgn>install-info</prgn>, are not described in detail here -
9479         please see their man pages.
9480       </p>
9481
9482       <p>
9483         It is assumed that the reader is reasonably familiar with the
9484         <prgn>dpkg</prgn> System Administrators' manual.
9485         Unfortunately this manual does not yet exist.
9486       </p>
9487
9488       <p>
9489         The Debian version of the FSF's GNU hello program is provided
9490         as an example for people wishing to create Debian
9491         packages. The Debian <prgn>debmake</prgn> package is
9492         recommended as a very helpful tool in creating and maintaining
9493         Debian packages. However, while the tools and examples are
9494         helpful, they do not replace the need to read and follow the
9495         Policy and Programmer's Manual.</p>
9496     </appendix>
9497
9498     <appendix id="pkg-binarypkg">
9499       <heading>Binary packages (from old Packaging Manual)</heading>
9500
9501       <p>
9502         The binary package has two main sections.  The first part
9503         consists of various control information files and scripts used
9504         by <prgn>dpkg</prgn> when installing and removing.  See <ref
9505         id="pkg-controlarea">.
9506       </p>
9507
9508       <p>
9509         The second part is an archive containing the files and
9510         directories to be installed.
9511       </p>
9512
9513       <p>
9514         In the future binary packages may also contain other
9515         components, such as checksums and digital signatures. The
9516         format for the archive is described in full in the
9517         <file>deb(5)</file> man page.
9518       </p>
9519
9520
9521       <sect id="pkg-bincreating"><heading>Creating package files -
9522       <prgn>dpkg-deb</prgn>
9523         </heading>
9524
9525         <p>
9526           All manipulation of binary package files is done by
9527           <prgn>dpkg-deb</prgn>; it's the only program that has
9528           knowledge of the format.  (<prgn>dpkg-deb</prgn> may be
9529           invoked by calling <prgn>dpkg</prgn>, as <prgn>dpkg</prgn>
9530           will spot that the options requested are appropriate to
9531           <prgn>dpkg-deb</prgn> and invoke that instead with the same
9532           arguments.)
9533         </p>
9534
9535         <p>
9536           In order to create a binary package you must make a
9537           directory tree which contains all the files and directories
9538           you want to have in the file system data part of the package.
9539           In Debian-format source packages this directory is usually
9540           <file>debian/tmp</file>, relative to the top of the package's
9541           source tree.
9542         </p>
9543
9544         <p>
9545           They should have the locations (relative to the root of the
9546           directory tree you're constructing) ownerships and
9547           permissions which you want them to have on the system when
9548           they are installed.
9549         </p>
9550
9551         <p>
9552           With current versions of <prgn>dpkg</prgn> the uid/username
9553           and gid/groupname mappings for the users and groups being
9554           used should be the same on the system where the package is
9555           built and the one where it is installed.
9556         </p>
9557
9558         <p>
9559           You need to add one special directory to the root of the
9560           miniature file system tree you're creating:
9561           <prgn>DEBIAN</prgn>.  It should contain the control
9562           information files, notably the binary package control file
9563           (see <ref id="pkg-controlfile">).
9564         </p>
9565
9566         <p>
9567           The <prgn>DEBIAN</prgn> directory will not appear in the
9568           file system archive of the package, and so won't be installed
9569           by <prgn>dpkg</prgn> when the package is installed.
9570         </p>
9571
9572         <p>
9573           When you've prepared the package, you should invoke:
9574           <example>
9575   dpkg --build <var>directory</var>
9576           </example>
9577         </p>
9578
9579         <p>
9580           This will build the package in
9581           <file><var>directory</var>.deb</file>.  (<prgn>dpkg</prgn> knows
9582           that <tt>--build</tt> is a <prgn>dpkg-deb</prgn> option, so
9583           it invokes <prgn>dpkg-deb</prgn> with the same arguments to
9584           build the package.)
9585         </p>
9586
9587         <p>
9588           See the man page <manref name="dpkg-deb" section="8"> for details of how
9589           to examine the contents of this newly-created file.  You may find the
9590           output of following commands enlightening:
9591           <example>
9592   dpkg-deb --info <var>filename</var>.deb
9593   dpkg-deb --contents <var>filename</var>.deb
9594   dpkg --contents <var>filename</var>.deb
9595           </example>
9596           To view the copyright file for a package you could use this command:
9597           <example>
9598   dpkg --fsys-tarfile <var>filename</var>.deb | tar xOf - --wildcards \*/copyright | pager
9599           </example>
9600         </p>
9601       </sect>
9602
9603       <sect id="pkg-controlarea">
9604         <heading>Package control information files</heading>
9605
9606         <p>
9607           The control information portion of a binary package is a
9608           collection of files with names known to <prgn>dpkg</prgn>.
9609           It will treat the contents of these files specially - some
9610           of them contain information used by <prgn>dpkg</prgn> when
9611           installing or removing the package; others are scripts which
9612           the package maintainer wants <prgn>dpkg</prgn> to run.
9613         </p>
9614
9615         <p>
9616           It is possible to put other files in the package control
9617           area, but this is not generally a good idea (though they
9618           will largely be ignored).
9619         </p>
9620
9621         <p>
9622           Here is a brief list of the control info files supported by
9623           <prgn>dpkg</prgn> and a summary of what they're used for.
9624         </p>
9625
9626         <p>
9627           <taglist>
9628             <tag><tt>control</tt>
9629             <item>
9630               <p>
9631                 This is the key description file used by
9632                 <prgn>dpkg</prgn>.  It specifies the package's name
9633                 and version, gives its description for the user,
9634                 states its relationships with other packages, and so
9635                 forth.  See <ref id="sourcecontrolfiles"> and
9636                 <ref id="binarycontrolfiles">.
9637               </p>
9638
9639               <p>
9640                 It is usually generated automatically from information
9641                 in the source package by the
9642                 <prgn>dpkg-gencontrol</prgn> program, and with
9643                 assistance from <prgn>dpkg-shlibdeps</prgn>.
9644                 See <ref id="pkg-sourcetools">.
9645               </p>
9646             </item>
9647
9648             <tag><tt>postinst</tt>, <tt>preinst</tt>, <tt>postrm</tt>,
9649                  <tt>prerm</tt>
9650             </tag>
9651             <item>
9652               <p>
9653                 These are executable files (usually scripts) which
9654                 <prgn>dpkg</prgn> runs during installation, upgrade
9655                 and removal of packages.  They allow the package to
9656                 deal with matters which are particular to that package
9657                 or require more complicated processing than that
9658                 provided by <prgn>dpkg</prgn>.  Details of when and
9659                 how they are called are in <ref id="maintainerscripts">.
9660               </p>
9661
9662               <p>
9663                 It is very important to make these scripts idempotent.
9664                 See <ref id="idempotency">.
9665               </p>
9666
9667               <p>
9668                 The maintainer scripts are not guaranteed to run with a
9669                 controlling terminal and may not be able to interact with
9670                 the user.  See <ref id="controllingterminal">.
9671               </p>
9672             </item>
9673
9674             <tag><tt>conffiles</tt>
9675             </tag>
9676             <item>
9677                 This file contains a list of configuration files which
9678                 are to be handled automatically by <prgn>dpkg</prgn>
9679                 (see <ref id="pkg-conffiles">).  Note that not necessarily
9680                 every configuration file should be listed here.
9681             </item>
9682
9683             <tag><tt>shlibs</tt>
9684             </tag>
9685             <item>
9686                 This file contains a list of the shared libraries
9687                 supplied by the package, with dependency details for
9688                 each.  This is used by <prgn>dpkg-shlibdeps</prgn>
9689                 when it determines what dependencies are required in a
9690                 package control file. The <tt>shlibs</tt> file format
9691                 is described on <ref id="shlibs">.
9692             </item>
9693           </taglist>
9694         </p>
9695
9696       <sect id="pkg-controlfile">
9697         <heading>The main control information file: <tt>control</tt></heading>
9698
9699         <p>
9700           The most important control information file used by
9701           <prgn>dpkg</prgn> when it installs a package is
9702           <tt>control</tt>.  It contains all the package's "vital
9703           statistics".
9704         </p>
9705
9706         <p>
9707           The binary package control files of packages built from
9708           Debian sources are made by a special tool,
9709           <prgn>dpkg-gencontrol</prgn>, which reads
9710           <file>debian/control</file> and <file>debian/changelog</file> to
9711           find the information it needs.  See <ref id="pkg-sourcepkg"> for
9712           more details.
9713         </p>
9714
9715         <p>
9716           The fields in binary package control files are listed in
9717           <ref id="binarycontrolfiles">.
9718         </p>
9719
9720         <p>
9721           A description of the syntax of control files and the purpose
9722           of the fields is available in <ref id="controlfields">.
9723         </p>
9724       </sect>
9725
9726       <sect>
9727         <heading>Time Stamps</heading>
9728
9729         <p>
9730           See <ref id="timestamps">.
9731         </p>
9732       </sect>
9733     </appendix>
9734
9735     <appendix id="pkg-sourcepkg">
9736       <heading>Source packages (from old Packaging Manual) </heading>
9737
9738       <p>
9739         The Debian binary packages in the distribution are generated
9740         from Debian sources, which are in a special format to assist
9741         the easy and automatic building of binaries.
9742       </p>
9743
9744       <sect id="pkg-sourcetools">
9745         <heading>Tools for processing source packages</heading>
9746
9747         <p>
9748           Various tools are provided for manipulating source packages;
9749           they pack and unpack sources and help build of binary
9750           packages and help manage the distribution of new versions.
9751         </p>
9752
9753         <p>
9754           They are introduced and typical uses described here; see
9755           <manref name="dpkg-source" section="1"> for full
9756           documentation about their arguments and operation.
9757         </p>
9758
9759         <p>
9760           For examples of how to construct a Debian source package,
9761           and how to use those utilities that are used by Debian
9762           source packages, please see the <prgn>hello</prgn> example
9763           package.
9764         </p>
9765
9766         <sect1 id="pkg-dpkg-source">
9767           <heading>
9768             <prgn>dpkg-source</prgn> - packs and unpacks Debian source
9769             packages
9770           </heading>
9771
9772           <p>
9773             This program is frequently used by hand, and is also
9774             called from package-independent automated building scripts
9775             such as <prgn>dpkg-buildpackage</prgn>.
9776           </p>
9777
9778           <p>
9779             To unpack a package it is typically invoked with
9780             <example>
9781   dpkg-source -x <var>.../path/to/filename</var>.dsc
9782             </example>
9783           </p>
9784
9785            <p>
9786             with the <file><var>filename</var>.tar.gz</file> and
9787             <file><var>filename</var>.diff.gz</file> (if applicable) in
9788             the same directory.  It unpacks into
9789             <file><var>package</var>-<var>version</var></file>, and if
9790             applicable
9791             <file><var>package</var>-<var>version</var>.orig</file>, in
9792             the current directory.
9793           </p>
9794
9795           <p>
9796             To create a packed source archive it is typically invoked:
9797             <example>
9798   dpkg-source -b <var>package</var>-<var>version</var>
9799           </example>
9800           </p>
9801
9802           <p>
9803             This will create the <file>.dsc</file>, <file>.tar.gz</file> and
9804             <file>.diff.gz</file> (if appropriate) in the current
9805             directory.  <prgn>dpkg-source</prgn> does not clean the
9806             source tree first - this must be done separately if it is
9807             required.
9808           </p>
9809
9810           <p>
9811             See also <ref id="pkg-sourcearchives">.</p>
9812         </sect1>
9813
9814
9815         <sect1 id="pkg-dpkg-buildpackage">
9816           <heading>
9817             <prgn>dpkg-buildpackage</prgn> - overall package-building
9818             control script
9819           </heading>
9820
9821           <p>
9822             <prgn>dpkg-buildpackage</prgn> is a script which invokes
9823             <prgn>dpkg-source</prgn>, the <file>debian/rules</file>
9824             targets <tt>clean</tt>, <tt>build</tt> and
9825             <tt>binary</tt>, <prgn>dpkg-genchanges</prgn> and
9826             <prgn>gpg</prgn> (or <prgn>pgp</prgn>) to build a signed
9827             source and binary package upload.
9828           </p>
9829
9830           <p>
9831             It is usually invoked by hand from the top level of the
9832             built or unbuilt source directory.  It may be invoked with
9833             no arguments; useful arguments include:
9834             <taglist compact="compact">
9835               <tag><tt>-uc</tt>, <tt>-us</tt></tag>
9836               <item>
9837                 <p>
9838                   Do not sign the <tt>.changes</tt> file or the
9839                   source package <tt>.dsc</tt> file, respectively.</p>
9840               </item>
9841               <tag><tt>-p<var>sign-command</var></tt></tag>
9842               <item>
9843                 <p>
9844                   Invoke <var>sign-command</var> instead of finding
9845                   <tt>gpg</tt> or <tt>pgp</tt> on the <prgn>PATH</prgn>.
9846                   <var>sign-command</var> must behave just like
9847                   <prgn>gpg</prgn> or <tt>pgp</tt>.</p>
9848               </item>
9849               <tag><tt>-r<var>root-command</var></tt></tag>
9850               <item>
9851                 <p>
9852                   When root privilege is required, invoke the command
9853                   <var>root-command</var>.  <var>root-command</var>
9854                   should invoke its first argument as a command, from
9855                   the <prgn>PATH</prgn> if necessary, and pass its
9856                   second and subsequent arguments to the command it
9857                   calls.  If no <var>root-command</var> is supplied
9858                   then <var>dpkg-buildpackage</var> will take no
9859                   special action to gain root privilege, so that for
9860                   most packages it will have to be invoked as root to
9861                   start with.</p>
9862               </item>
9863               <tag><tt>-b</tt>, <tt>-B</tt></tag>
9864               <item>
9865                 <p>
9866                   Two types of binary-only build and upload - see
9867                   <manref name="dpkg-source" section="1">.
9868                 </p>
9869               </item>
9870             </taglist>
9871           </p>
9872         </sect1>
9873
9874         <sect1 id="pkg-dpkg-gencontrol">
9875           <heading>
9876             <prgn>dpkg-gencontrol</prgn> - generates binary package
9877             control files
9878           </heading>
9879
9880           <p>
9881             This program is usually called from <file>debian/rules</file>
9882             (see <ref id="pkg-sourcetree">) in the top level of the source
9883             tree.
9884           </p>
9885
9886           <p>
9887             This is usually done just before the files and directories in the
9888             temporary directory tree where the package is being built have their
9889             permissions and ownerships set and the package is constructed using
9890             <prgn>dpkg-deb/</prgn>
9891               <footnote>
9892                 This is so that the control file which is produced has
9893                 the right permissions
9894             </footnote>.
9895           </p>
9896
9897           <p>
9898             <prgn>dpkg-gencontrol</prgn> must be called after all the
9899             files which are to go into the package have been placed in
9900             the temporary build directory, so that its calculation of
9901             the installed size of a package is correct.
9902           </p>
9903
9904           <p>
9905             It is also necessary for <prgn>dpkg-gencontrol</prgn> to
9906             be run after <prgn>dpkg-shlibdeps</prgn> so that the
9907             variable substitutions created by
9908             <prgn>dpkg-shlibdeps</prgn> in <file>debian/substvars</file>
9909             are available.
9910           </p>
9911
9912           <p>
9913             For a package which generates only one binary package, and
9914             which builds it in <file>debian/tmp</file> relative to the top
9915             of the source package, it is usually sufficient to call
9916             <prgn>dpkg-gencontrol</prgn>.
9917           </p>
9918
9919           <p>
9920             Sources which build several binaries will typically need
9921             something like:
9922             <example>
9923   dpkg-gencontrol -Pdebian/tmp-<var>pkg</var> -p<var>package</var>
9924             </example> The <tt>-P</tt> tells
9925             <prgn>dpkg-gencontrol</prgn> that the package is being
9926             built in a non-default directory, and the <tt>-p</tt>
9927             tells it which package's control file should be generated.
9928           </p>
9929
9930           <p>
9931             <prgn>dpkg-gencontrol</prgn> also adds information to the
9932             list of files in <file>debian/files</file>, for the benefit of
9933             (for example) a future invocation of
9934             <prgn>dpkg-genchanges</prgn>.</p>
9935         </sect1>
9936
9937         <sect1 id="pkg-dpkg-shlibdeps">
9938           <heading>
9939             <prgn>dpkg-shlibdeps</prgn> - calculates shared library
9940             dependencies
9941           </heading>
9942
9943           <p>
9944             This program is usually called from <file>debian/rules</file>
9945             just before <prgn>dpkg-gencontrol</prgn> (see <ref
9946             id="pkg-sourcetree">), in the top level of the source tree.
9947           </p>
9948
9949           <p>
9950             Its arguments are executables and shared libraries
9951             <footnote>
9952               <p>
9953                 They may be specified either in the locations in the
9954                 source tree where they are created or in the locations
9955                 in the temporary build tree where they are installed
9956                 prior to binary package creation.
9957               </p>
9958             </footnote> for which shared library dependencies should
9959             be included in the binary package's control file.
9960           </p>
9961
9962           <p>
9963             If some of the found shared libraries should only
9964             warrant a <tt>Recommends</tt> or <tt>Suggests</tt>, or if
9965             some warrant a <tt>Pre-Depends</tt>, this can be achieved
9966             by using the <tt>-d<var>dependency-field</var></tt> option
9967             before those executable(s).  (Each <tt>-d</tt> option
9968             takes effect until the next <tt>-d</tt>.)
9969           </p>
9970
9971           <p>
9972             <prgn>dpkg-shlibdeps</prgn> does not directly cause the
9973             output control file to be modified.  Instead by default it
9974             adds to the <file>debian/substvars</file> file variable
9975             settings like <tt>shlibs:Depends</tt>.  These variable
9976             settings must be referenced in dependency fields in the
9977             appropriate per-binary-package sections of the source
9978             control file.
9979           </p>
9980
9981           <p>
9982             For example, a package that generates an essential part
9983             which requires dependencies, and optional parts that 
9984             which only require a recommendation, would separate those
9985             two sets of dependencies into two different fields.<footnote>
9986                 At the time of writing, an example for this was the
9987                 <package/xmms/ package, with Depends used for the xmms
9988                 executable, Recommends for the plug-ins and Suggests for
9989                 even more optional features provided by unzip.
9990             </footnote>
9991             It can say in its <file>debian/rules</file>:
9992             <example>
9993   dpkg-shlibdeps -dDepends <var>program anotherprogram ...</var> \
9994                  -dRecommends <var>optionalpart anotheroptionalpart</var>
9995             </example>
9996             and then in its main control file <file>debian/control</file>:
9997             <example>
9998   <var>...</var>
9999   Depends: ${shlibs:Depends}
10000   Recommends: ${shlibs:Recommends}
10001   <var>...</var>
10002             </example>
10003           </p>
10004
10005           <p>
10006             Sources which produce several binary packages with
10007             different shared library dependency requirements can use
10008             the <tt>-p<var>varnameprefix</var></tt> option to override
10009             the default <tt>shlibs:</tt> prefix (one invocation of
10010             <prgn>dpkg-shlibdeps</prgn> per setting of this option).
10011             They can thus produce several sets of dependency
10012             variables, each of the form
10013             <tt><var>varnameprefix</var>:<var>dependencyfield</var></tt>,
10014             which can be referred to in the appropriate parts of the
10015             binary package control files.
10016           </p>
10017         </sect1>
10018
10019
10020         <sect1 id="pkg-dpkg-distaddfile">
10021           <heading>
10022             <prgn>dpkg-distaddfile</prgn> - adds a file to
10023             <file>debian/files</file>
10024           </heading>
10025
10026           <p>
10027             Some packages' uploads need to include files other than
10028             the source and binary package files.
10029           </p>
10030
10031           <p>
10032             <prgn>dpkg-distaddfile</prgn> adds a file to the
10033             <file>debian/files</file> file so that it will be included in
10034             the <file>.changes</file> file when
10035             <prgn>dpkg-genchanges</prgn> is run.
10036           </p>
10037
10038           <p>
10039             It is usually invoked from the <tt>binary</tt> target of
10040             <file>debian/rules</file>:
10041             <example>
10042   dpkg-distaddfile <var>filename</var> <var>section</var> <var>priority</var>
10043             </example>
10044             The <var>filename</var> is relative to the directory where
10045             <prgn>dpkg-genchanges</prgn> will expect to find it - this
10046             is usually the directory above the top level of the source
10047             tree.  The <file>debian/rules</file> target should put the
10048             file there just before or just after calling
10049             <prgn>dpkg-distaddfile</prgn>.
10050           </p>
10051
10052           <p>
10053             The <var>section</var> and <var>priority</var> are passed
10054             unchanged into the resulting <file>.changes</file> file.
10055           </p>
10056         </sect1>
10057
10058
10059         <sect1 id="pkg-dpkg-genchanges">
10060           <heading>
10061             <prgn>dpkg-genchanges</prgn> - generates a <file>.changes</file>
10062             upload control file
10063           </heading>
10064
10065           <p>
10066             This program is usually called by package-independent
10067             automatic building scripts such as
10068             <prgn>dpkg-buildpackage</prgn>, but it may also be called
10069             by hand.
10070           </p>
10071
10072           <p>
10073             It is usually called in the top level of a built source
10074             tree, and when invoked with no arguments will print out a
10075             straightforward <file>.changes</file> file based on the
10076             information in the source package's changelog and control
10077             file and the binary and source packages which should have
10078             been built.
10079           </p>
10080         </sect1>
10081
10082
10083         <sect1 id="pkg-dpkg-parsechangelog">
10084           <heading>
10085             <prgn>dpkg-parsechangelog</prgn> - produces parsed
10086             representation of a changelog
10087           </heading>
10088
10089           <p>
10090             This program is used internally by
10091             <prgn>dpkg-source</prgn> et al.  It may also occasionally
10092             be useful in <file>debian/rules</file> and elsewhere.  It
10093             parses a changelog, <file>debian/changelog</file> by default,
10094             and prints a control-file format representation of the
10095             information in it to standard output.
10096           </p>
10097         </sect1>
10098
10099         <sect1 id="pkg-dpkg-architecture">
10100           <heading>
10101             <prgn>dpkg-architecture</prgn> - information about the build and
10102             host system
10103           </heading>
10104
10105           <p>
10106             This program can be used manually, but is also invoked by
10107             <tt>dpkg-buildpackage</tt> or <file>debian/rules</file> to set
10108             environment or make variables which specify the build and host
10109             architecture for the package building process.
10110           </p>
10111         </sect1>
10112       </sect>
10113
10114       <sect id="pkg-sourcetree">
10115         <heading>The Debianised source tree</heading>
10116
10117         <p>
10118           The source archive scheme described later is intended to
10119           allow a Debianised source tree with some associated control
10120           information to be reproduced and transported easily.  The
10121           Debianised source tree is a version of the original program
10122           with certain files added for the benefit of the
10123           Debianisation process, and with any other changes required
10124           made to the rest of the source code and installation
10125           scripts.
10126         </p>
10127
10128         <p>
10129           The extra files created for Debian are in the subdirectory
10130           <file>debian</file> of the top level of the Debianised source
10131           tree.  They are described below.
10132         </p>
10133
10134         <sect1 id="pkg-debianrules">
10135           <heading><file>debian/rules</file> - the main building script</heading>
10136
10137           <p>
10138             See <ref id="debianrules">.
10139           </p>
10140         </sect1>
10141
10142         <sect1 id="pkg-srcsubstvars">
10143           <heading><file>debian/substvars</file> and variable substitutions</heading>
10144
10145           <p>
10146             See <ref id="substvars">.
10147           </p>
10148
10149         </sect1>
10150
10151         <sect1>
10152           <heading><file>debian/files</file></heading>
10153
10154           <p>
10155             See <ref id="debianfiles">.
10156           </p>
10157         </sect1>
10158
10159         <sect1><heading><file>debian/tmp</file>
10160           </heading>
10161
10162           <p>
10163             This is the canonical temporary location for the
10164             construction of binary packages by the <tt>binary</tt>
10165             target.  The directory <file>tmp</file> serves as the root of
10166             the file system tree as it is being constructed (for
10167             example, by using the package's upstream makefiles install
10168             targets and redirecting the output there), and it also
10169             contains the <tt>DEBIAN</tt> subdirectory.  See <ref
10170             id="pkg-bincreating">.
10171           </p>
10172
10173           <p>
10174             If several binary packages are generated from the same
10175             source tree it is usual to use several
10176             <file>debian/tmp<var>something</var></file> directories, for
10177             example <file>tmp-a</file> or <file>tmp-doc</file>.
10178           </p>
10179
10180           <p>
10181             Whatever <file>tmp</file> directories are created and used by
10182             <tt>binary</tt> must of course be removed by the
10183             <tt>clean</tt> target.</p></sect1>
10184       </sect>
10185
10186
10187       <sect id="pkg-sourcearchives"><heading>Source packages as archives
10188         </heading>
10189
10190         <p>
10191           As it exists on the FTP site, a Debian source package
10192           consists of three related files.  You must have the right
10193           versions of all three to be able to use them.
10194         </p>
10195
10196         <p>
10197           <taglist>
10198             <tag>Debian source control file - <tt>.dsc</tt></tag>
10199             <item>
10200                 This file is a control file used by <prgn>dpkg-source</prgn>
10201                 to extract a source package.
10202                 See <ref id="debiansourcecontrolfiles">.
10203             </item>
10204
10205             <tag>
10206               Original source archive -
10207               <file>
10208                 <var>package</var>_<var>upstream-version</var>.orig.tar.gz
10209               </file>
10210             </tag>
10211
10212             <item>
10213               <p>
10214                 This is a compressed (with <tt>gzip -9</tt>)
10215                 <prgn>tar</prgn> file containing the source code from
10216                 the upstream authors of the program.
10217               </p>
10218             </item>
10219
10220             <tag>
10221               Debianisation diff -
10222               <file>
10223                 <var>package</var>_<var>upstream_version-revision</var>.diff.gz
10224               </file>
10225             </tag>
10226             <item>
10227
10228               <p>
10229                 This is a unified context diff (<tt>diff -u</tt>)
10230                 giving the changes which are required to turn the
10231                 original source into the Debian source.  These changes
10232                 may only include editing and creating plain files.
10233                 The permissions of files, the targets of symbolic
10234                 links and the characteristics of special files or
10235                 pipes may not be changed and no files may be removed
10236                 or renamed.
10237               </p>
10238
10239               <p>
10240                 All the directories in the diff must exist, except the
10241                 <file>debian</file> subdirectory of the top of the source
10242                 tree, which will be created by
10243                 <prgn>dpkg-source</prgn> if necessary when unpacking.
10244               </p>
10245
10246               <p>
10247                 The <prgn>dpkg-source</prgn> program will
10248                 automatically make the <file>debian/rules</file> file
10249                 executable (see below).</p></item>
10250           </taglist>
10251         </p>
10252
10253         <p>
10254           If there is no original source code - for example, if the
10255           package is specially prepared for Debian or the Debian
10256           maintainer is the same as the upstream maintainer - the
10257           format is slightly different: then there is no diff, and the
10258           tarfile is named
10259           <file><var>package</var>_<var>version</var>.tar.gz</file>,
10260           and preferably contains a directory named
10261           <file><var>package</var>-<var>version</var></file>.
10262         </p>
10263       </sect>
10264
10265       <sect>
10266         <heading>Unpacking a Debian source package without <prgn>dpkg-source</prgn></heading>
10267
10268         <p>
10269           <tt>dpkg-source -x</tt> is the recommended way to unpack a
10270           Debian source package.  However, if it is not available it
10271           is possible to unpack a Debian source archive as follows:
10272         <enumlist compact="compact">
10273           <item>
10274             <p>
10275               Untar the tarfile, which will create a <file>.orig</file>
10276               directory.</p>
10277           </item>
10278           <item>
10279             <p>Rename the <file>.orig</file> directory to
10280               <file><var>package</var>-<var>version</var></file>.</p>
10281           </item>
10282             <item>
10283             <p>
10284               Create the subdirectory <file>debian</file> at the top of
10285               the source tree.</p>
10286           </item>
10287           <item><p>Apply the diff using <tt>patch -p0</tt>.</p>
10288           </item>
10289           <item><p>Untar the tarfile again if you want a copy of the original
10290               source code alongside the Debianised version.</p>
10291           </item>
10292         </enumlist>
10293
10294         <p>
10295           It is not possible to generate a valid Debian source archive
10296           without using <prgn>dpkg-source</prgn>.  In particular,
10297           attempting to use <prgn>diff</prgn> directly to generate the
10298           <file>.diff.gz</file> file will not work.
10299         </p>
10300
10301         <sect1>
10302           <heading>Restrictions on objects in source packages</heading>
10303
10304           <p>
10305             The source package may not contain any hard links
10306             <footnote>
10307                 This is not currently detected when building source
10308                 packages, but only when extracting
10309                 them.
10310             </footnote>
10311             <footnote>
10312                 Hard links may be permitted at some point in the
10313                 future, but would require a fair amount of
10314                 work.
10315             </footnote>, device special files, sockets or setuid or
10316             setgid files.
10317             <footnote>
10318                 Setgid directories are allowed.
10319             </footnote>
10320           </p>
10321
10322           <p>
10323             The source packaging tools manage the changes between the
10324             original and Debianised source using <prgn>diff</prgn> and
10325             <prgn>patch</prgn>.  Turning the original source tree as
10326             included in the <file>.orig.tar.gz</file> into the debianised
10327             source must not involve any changes which cannot be
10328             handled by these tools.  Problematic changes which cause
10329             <prgn>dpkg-source</prgn> to halt with an error when
10330             building the source package are:
10331             <list compact="compact">
10332               <item><p>Adding or removing symbolic links, sockets or pipes.</p>
10333               </item>
10334               <item><p>Changing the targets of symbolic links.</p>
10335               </item>
10336               <item><p>Creating directories, other than <file>debian</file>.</p>
10337               </item>
10338               <item><p>Changes to the contents of binary files.</p></item>
10339             </list> Changes which cause <prgn>dpkg-source</prgn> to
10340             print a warning but continue anyway are:
10341             <list compact="compact">
10342               <item>
10343                 <p>
10344                   Removing files, directories or symlinks.
10345                   <footnote>
10346                       Renaming a file is not treated specially - it is
10347                       seen as the removal of the old file (which
10348                       generates a warning, but is otherwise ignored),
10349                       and the creation of the new one.
10350                   </footnote>
10351                 </p>
10352               </item>
10353               <item>
10354                 <p>
10355                   Changed text files which are missing the usual final
10356                   newline (either in the original or the modified
10357                   source tree).
10358                 </p>
10359               </item>
10360             </list>
10361             Changes which are not represented, but which are not detected by
10362             <prgn>dpkg-source</prgn>, are:
10363             <list compact="compact">
10364               <item><p>Changing the permissions of files (other than
10365                   <file>debian/rules</file>) and directories.</p></item>
10366             </list>
10367           </p>
10368
10369           <p>
10370             The <file>debian</file> directory and <file>debian/rules</file>
10371             are handled specially by <prgn>dpkg-source</prgn> - before
10372             applying the changes it will create the <file>debian</file>
10373             directory, and afterwards it will make
10374             <file>debian/rules</file> world-executable.
10375           </p>
10376         </sect1>
10377       </sect>
10378     </appendix>
10379
10380     <appendix id="pkg-controlfields">
10381       <heading>Control files and their fields (from old Packaging Manual)</heading>
10382
10383       <p>
10384         Many of the tools in the <prgn>dpkg</prgn> suite manipulate
10385         data in a common format, known as control files.  Binary and
10386         source packages have control data as do the <file>.changes</file>
10387         files which control the installation of uploaded files, and
10388         <prgn>dpkg</prgn>'s internal databases are in a similar
10389         format.
10390       </p>
10391
10392       <sect>
10393         <heading>Syntax of control files</heading>
10394
10395         <p>
10396           See <ref id="controlsyntax">.
10397         </p>
10398
10399         <p>
10400           It is important to note that there are several fields which
10401           are optional as far as <prgn>dpkg</prgn> and the related
10402           tools are concerned, but which must appear in every Debian
10403           package, or whose omission may cause problems.
10404         </p>
10405       </sect>
10406
10407       <sect>
10408         <heading>List of fields</heading>
10409
10410         <p>
10411           See <ref id="controlfieldslist">.
10412         </p>
10413
10414         <p>
10415           This section now contains only the fields that didn't belong
10416           to the Policy manual.
10417         </p>
10418
10419         <sect1 id="pkg-f-Filename">
10420           <heading><tt>Filename</tt> and <tt>MSDOS-Filename</tt></heading>
10421
10422           <p>
10423             These fields in <tt>Packages</tt> files give the
10424             filename(s) of (the parts of) a package in the
10425             distribution directories, relative to the root of the
10426             Debian hierarchy.  If the package has been split into
10427             several parts the parts are all listed in order, separated
10428             by spaces.
10429           </p>
10430         </sect1>
10431
10432         <sect1 id="pkg-f-Size">
10433           <heading><tt>Size</tt> and <tt>MD5sum</tt></heading>
10434
10435           <p>
10436             These fields in <file>Packages</file> files give the size (in
10437             bytes, expressed in decimal) and MD5 checksum of the
10438             file(s) which make(s) up a binary package in the
10439             distribution.  If the package is split into several parts
10440             the values for the parts are listed in order, separated by
10441             spaces.
10442           </p>
10443         </sect1>
10444
10445         <sect1 id="pkg-f-Status">
10446           <heading><tt>Status</tt></heading>
10447
10448           <p>
10449             This field in <prgn>dpkg</prgn>'s status file records
10450             whether the user wants a package installed, removed or
10451             left alone, whether it is broken (requiring
10452             re-installation) or not and what its current state on the
10453             system is.  Each of these pieces of information is a
10454             single word.
10455           </p>
10456         </sect1>
10457
10458         <sect1 id="pkg-f-Config-Version">
10459           <heading><tt>Config-Version</tt></heading>
10460
10461           <p>
10462             If a package is not installed or not configured, this
10463             field in <prgn>dpkg</prgn>'s status file records the last
10464             version of the package which was successfully
10465             configured.
10466           </p>
10467         </sect1>
10468
10469         <sect1 id="pkg-f-Conffiles">
10470           <heading><tt>Conffiles</tt></heading>
10471
10472           <p>
10473             This field in <prgn>dpkg</prgn>'s status file contains
10474             information about the automatically-managed configuration
10475             files held by a package.  This field should <em>not</em>
10476             appear anywhere in a package!
10477           </p>
10478         </sect1>
10479
10480         <sect1>
10481           <heading>Obsolete fields</heading>
10482
10483           <p>
10484             These are still recognized by <prgn>dpkg</prgn> but should
10485             not appear anywhere any more.
10486
10487             <taglist compact="compact">
10488
10489               <tag><tt>Revision</tt></tag>
10490               <tag><tt>Package-Revision</tt></tag>
10491               <tag><tt>Package_Revision</tt></tag>
10492               <item>
10493                   The Debian revision part of the package version was
10494                   at one point in a separate control file field.  This
10495                   field went through several names.
10496               </item>
10497
10498               <tag><tt>Recommended</tt></tag>
10499               <item>Old name for <tt>Recommends</tt>.</item>
10500
10501               <tag><tt>Optional</tt></tag>
10502               <item>Old name for <tt>Suggests</tt>.</item>
10503
10504               <tag><tt>Class</tt></tag>
10505               <item>Old name for <tt>Priority</tt>.</item>
10506
10507             </taglist>
10508           </p>
10509         </sect1>
10510       </sect>
10511
10512     </appendix>
10513
10514     <appendix id="pkg-conffiles">
10515       <heading>Configuration file handling (from old Packaging Manual)</heading>
10516
10517       <p>
10518         <prgn>dpkg</prgn> can do a certain amount of automatic
10519         handling of package configuration files.
10520       </p>
10521
10522       <p>
10523         Whether this mechanism is appropriate depends on a number of
10524         factors, but basically there are two approaches to any
10525         particular configuration file.
10526       </p>
10527
10528       <p>
10529         The easy method is to ship a best-effort configuration in the
10530         package, and use <prgn>dpkg</prgn>'s conffile mechanism to
10531         handle updates.  If the user is unlikely to want to edit the
10532         file, but you need them to be able to without losing their
10533         changes, and a new package with a changed version of the file
10534         is only released infrequently, this is a good approach.
10535       </p>
10536
10537       <p>
10538         The hard method is to build the configuration file from
10539         scratch in the <prgn>postinst</prgn> script, and to take the
10540         responsibility for fixing any mistakes made in earlier
10541         versions of the package automatically.  This will be
10542         appropriate if the file is likely to need to be different on
10543         each system.
10544       </p>
10545
10546       <sect><heading>Automatic handling of configuration files by
10547       <prgn>dpkg</prgn>
10548         </heading>
10549
10550         <p>
10551           A package may contain a control area file called
10552           <tt>conffiles</tt>.  This file should be a list of filenames
10553           of configuration files needing automatic handling, separated
10554           by newlines.  The filenames should be absolute pathnames,
10555           and the files referred to should actually exist in the
10556           package.
10557         </p>
10558
10559         <p>
10560           When a package is upgraded <prgn>dpkg</prgn> will process
10561           the configuration files during the configuration stage,
10562           shortly before it runs the package's <prgn>postinst</prgn>
10563           script,
10564         </p>
10565
10566         <p>
10567           For each file it checks to see whether the version of the
10568           file included in the package is the same as the one that was
10569           included in the last version of the package (the one that is
10570           being upgraded from); it also compares the version currently
10571           installed on the system with the one shipped with the last
10572           version.
10573         </p>
10574
10575         <p>
10576           If neither the user nor the package maintainer has changed
10577           the file, it is left alone.  If one or the other has changed
10578           their version, then the changed version is preferred - i.e.,
10579           if the user edits their file, but the package maintainer
10580           doesn't ship a different version, the user's changes will
10581           stay, silently, but if the maintainer ships a new version
10582           and the user hasn't edited it the new version will be
10583           installed (with an informative message).  If both have
10584           changed their version the user is prompted about the problem
10585           and must resolve the differences themselves.
10586         </p>
10587
10588         <p>
10589           The comparisons are done by calculating the MD5 message
10590           digests of the files, and storing the MD5 of the file as it
10591           was included in the most recent version of the package.
10592         </p>
10593
10594         <p>
10595           When a package is installed for the first time
10596           <prgn>dpkg</prgn> will install the file that comes with it,
10597           unless that would mean overwriting a file already on the
10598           file system.
10599         </p>
10600
10601         <p>
10602           However, note that <prgn>dpkg</prgn> will <em>not</em>
10603           replace a conffile that was removed by the user (or by a
10604           script).  This is necessary because with some programs a
10605           missing file produces an effect hard or impossible to
10606           achieve in another way, so that a missing file needs to be
10607           kept that way if the user did it.
10608         </p>
10609
10610         <p>
10611           Note that a package should <em>not</em> modify a
10612           <prgn>dpkg</prgn>-handled conffile in its maintainer
10613           scripts.  Doing this will lead to <prgn>dpkg</prgn> giving
10614           the user confusing and possibly dangerous options for
10615           conffile update when the package is upgraded.</p>
10616       </sect>
10617
10618       <sect><heading>Fully-featured maintainer script configuration
10619       handling
10620         </heading>
10621
10622         <p>
10623           For files which contain site-specific information such as
10624           the hostname and networking details and so forth, it is
10625           better to create the file in the package's
10626           <prgn>postinst</prgn> script.
10627         </p>
10628
10629         <p>
10630           This will typically involve examining the state of the rest
10631           of the system to determine values and other information, and
10632           may involve prompting the user for some information which
10633           can't be obtained some other way.
10634         </p>
10635
10636         <p>
10637           When using this method there are a couple of important
10638           issues which should be considered:
10639         </p>
10640
10641         <p>
10642           If you discover a bug in the program which generates the
10643           configuration file, or if the format of the file changes
10644           from one version to the next, you will have to arrange for
10645           the postinst script to do something sensible - usually this
10646           will mean editing the installed configuration file to remove
10647           the problem or change the syntax.  You will have to do this
10648           very carefully, since the user may have changed the file,
10649           perhaps to fix the very problem that your script is trying
10650           to deal with - you will have to detect these situations and
10651           deal with them correctly.
10652         </p>
10653
10654         <p>
10655           If you do go down this route it's probably a good idea to
10656           make the program that generates the configuration file(s) a
10657           separate program in <file>/usr/sbin</file>, by convention called
10658           <file><var>package</var>config</file> and then run that if
10659           appropriate from the post-installation script.  The
10660           <tt><var>package</var>config</tt> program should not
10661           unquestioningly overwrite an existing configuration - if its
10662           mode of operation is geared towards setting up a package for
10663           the first time (rather than any arbitrary reconfiguration
10664           later) you should have it check whether the configuration
10665           already exists, and require a <tt>--force</tt> flag to
10666           overwrite it.</p></sect>
10667     </appendix>
10668
10669     <appendix id="pkg-alternatives"><heading>Alternative versions of
10670         an interface - <prgn>update-alternatives</prgn> (from old
10671     Packaging Manual)
10672       </heading>
10673
10674       <p>
10675         When several packages all provide different versions of the
10676         same program or file it is useful to have the system select a
10677         default, but to allow the system administrator to change it
10678         and have their decisions respected.
10679       </p>
10680
10681       <p>
10682         For example, there are several versions of the <prgn>vi</prgn>
10683         editor, and there is no reason to prevent all of them from
10684         being installed at once, each under their own name
10685         (<prgn>nvi</prgn>, <prgn>vim</prgn> or whatever).
10686         Nevertheless it is desirable to have the name <tt>vi</tt>
10687         refer to something, at least by default.
10688       </p>
10689
10690       <p>
10691         If all the packages involved cooperate, this can be done with
10692         <prgn>update-alternatives</prgn>.
10693       </p>
10694
10695       <p>
10696         Each package provides its own version under its own name, and
10697         calls <prgn>update-alternatives</prgn> in its postinst to
10698         register its version (and again in its prerm to deregister
10699         it).
10700       </p>
10701
10702       <p>
10703         See the man page <manref name="update-alternatives"
10704         section="8"> for details.
10705       </p>
10706
10707       <p>
10708         If <prgn>update-alternatives</prgn> does not seem appropriate
10709         you may wish to consider using diversions instead.</p>
10710     </appendix>
10711
10712     <appendix id="pkg-diversions"><heading>Diversions - overriding a
10713     package's version of a file (from old Packaging Manual)
10714       </heading>
10715
10716       <p>
10717         It is possible to have <prgn>dpkg</prgn> not overwrite a file
10718         when it reinstalls the package it belongs to, and to have it
10719         put the file from the package somewhere else instead.
10720       </p>
10721
10722       <p>
10723         This can be used locally to override a package's version of a
10724         file, or by one package to override another's version (or
10725         provide a wrapper for it).
10726       </p>
10727
10728       <p>
10729         Before deciding to use a diversion, read <ref
10730         id="pkg-alternatives"> to see if you really want a diversion
10731         rather than several alternative versions of a program.
10732       </p>
10733
10734       <p>
10735         There is a diversion list, which is read by <prgn>dpkg</prgn>,
10736         and updated by a special program <prgn>dpkg-divert</prgn>.
10737         Please see <manref name="dpkg-divert" section="8"> for full
10738         details of its operation.
10739       </p>
10740
10741       <p>
10742         When a package wishes to divert a file from another, it should
10743         call <prgn>dpkg-divert</prgn> in its preinst to add the
10744         diversion and rename the existing file.  For example,
10745         supposing that a <prgn>smailwrapper</prgn> package wishes to
10746         install a wrapper around <file>/usr/sbin/smail</file>:
10747         <example>
10748    dpkg-divert --package smailwrapper --add --rename \
10749       --divert /usr/sbin/smail.real /usr/sbin/smail
10750         </example> The <tt>--package smailwrapper</tt> ensures that
10751         <prgn>smailwrapper</prgn>'s copy of <file>/usr/sbin/smail</file>
10752         can bypass the diversion and get installed as the true version.
10753         It's safe to add the diversion unconditionally on upgrades since
10754         it will be left unchanged if it already exists, but
10755         <prgn>dpkg-divert</prgn> will display a message.  To suppress that
10756         message, make the command conditional on the version from which
10757         the package is being upgraded:
10758         <example>
10759    if [ upgrade != "$1" ] || dpkg --compare-versions "$2" lt 1.0-2; then
10760       dpkg-divert --package smailwrapper --add --rename \
10761          --divert /usr/sbin/smail.real /usr/sbin/smail
10762    fi
10763         </example> where <tt>1.0-2</tt> is the version at which the
10764         diversion was first added to the package.  Running the command
10765         during abort-upgrade is pointless but harmless.
10766       </p>
10767
10768       <p>
10769         The postrm has to do the reverse:
10770         <example>
10771   if [ remove = "$1" -o abort-install = "$1" -o disappear = "$1" ]; then
10772      dpkg-divert --package smailwrapper --remove --rename \
10773         --divert /usr/sbin/smail.real /usr/sbin/smail
10774   fi
10775         </example> If the diversion was added at a particular version, the
10776         postrm should also handle the failure case of upgrading from an
10777         older version (unless the older version is so old that direct
10778         upgrades are no longer supported):
10779         <example>
10780   if [ abort-upgrade = "$1" ] && dpkg --compare-versions "$2" lt 1.0-2; then
10781      dpkg-divert --package smailwrapper --remove --rename \
10782         --divert /usr/sbin/smail.real /usr/sbin/smail
10783   fi
10784         </example> where <tt>1.02-2</tt> is the version at which the
10785         diversion was first added to the package.  The postrm should not
10786         remove the diversion on upgrades both because there's no reason to
10787         remove the diversion only to immediately re-add it and since the
10788         postrm of the old package is run after unpacking so the removal of
10789         the diversion will fail.
10790       </p>
10791
10792       <p>
10793         Do not attempt to divert a file which is vitally important for
10794         the system's operation - when using <prgn>dpkg-divert</prgn>
10795         there is a time, after it has been diverted but before
10796         <prgn>dpkg</prgn> has installed the new version, when the file
10797         does not exist.</p>
10798     </appendix>
10799
10800   </book>
10801 </debiandoc>
10802 <!-- Local variables: -->
10803 <!-- indent-tabs-mode: t -->
10804 <!-- End: -->
10805 <!-- vim:set ai et sts=2 sw=2 tw=76: -->