]> git.donarmstrong.com Git - debian/debian-policy.git/blob - policy.sgml
Merge branch 'master' into bug479080-rra
[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           This manual is free software; you may redistribute it and/or
29           modify it under the terms of the GNU General Public License
30           as published by the Free Software Foundation; either version
31           2, or (at your option) any later version.
32         </p>
33
34         <p>
35           This is distributed in the hope that it will be useful, but
36           <em>without any warranty</em>; without even the implied
37           warranty of merchantability or fitness for a particular
38           purpose.  See the GNU General Public License for more
39           details.
40         </p>
41
42         <p>
43           A copy of the GNU General Public License is available as
44           <file>/usr/share/common-licenses/GPL</file> in the Debian GNU/Linux
45           distribution or on the World Wide Web at
46           <url id="http://www.gnu.org/copyleft/gpl.html"
47                name="the GNU General Public Licence">. You can also
48           obtain it by writing to the Free Software Foundation, Inc.,
49           51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
50         </p>
51       </copyright>
52     </titlepag>
53
54     <toc detail="sect1">
55
56     <chapt id="scope">
57       <heading>About this manual</heading>
58       <sect>
59         <heading>Scope</heading>
60         <p>
61           This manual describes the policy requirements for the Debian
62           GNU/Linux distribution. This includes the structure and
63           contents of the Debian archive and several design issues of the
64           operating system, as well as technical requirements that
65           each package must satisfy to be included in the
66           distribution.
67         </p>
68
69         <p>
70           This manual also describes Debian policy as it relates to
71           creating Debian packages. It is not a tutorial on how to build
72           packages, nor is it exhaustive where it comes to describing
73           the behavior of the packaging system. Instead, this manual
74           attempts to define the interface to the package management
75           system that the developers have to be conversant with.<footnote>
76               Informally, the criteria used for inclusion is that the
77               material meet one of the following requirements:
78               <taglist compact="compact">
79                 <tag>Standard interfaces</tag>
80                 <item>
81                     The material presented represents an interface to
82                     the packaging system that is mandated for use, and
83                     is used by, a significant number of packages, and
84                     therefore should not be changed without peer
85                     review. Package maintainers can then rely on this
86                     interfaces not changing, and the package
87                     management software authors need to ensure
88                     compatibility with these interface
89                     definitions. (Control file and changelog file
90                     formats are examples.)
91                 </item>
92                 <tag>Chosen Convention</tag>
93                 <item>
94                     If there are a number of technically viable choices
95                     that can be made, but one needs to select one of
96                     these options for inter-operability. The version
97                     number format is one example.
98                 </item>
99               </taglist>
100               Please note that these are not mutually exclusive;
101               selected conventions often become parts of standard
102               interfaces.
103           </footnote>
104         </p>
105
106         <p>
107           The footnotes present in this manual are
108           merely informative, and are not part of Debian policy itself.
109         </p>
110
111         <p>
112           The appendices to this manual are not necessarily normative,
113           either. Please see <ref id="pkg-scope"> for more information.
114         </p>
115
116         <p>
117           In the normative part of this manual,
118           the words <em>must</em>, <em>should</em> and
119           <em>may</em>, and the adjectives <em>required</em>,
120           <em>recommended</em> and <em>optional</em>, are used to
121           distinguish the significance of the various guidelines in
122           this policy document. Packages that do not conform to the
123           guidelines denoted by <em>must</em> (or <em>required</em>)
124           will generally not be considered acceptable for the Debian
125           distribution. Non-conformance with guidelines denoted by
126           <em>should</em> (or <em>recommended</em>) will generally be
127           considered a bug, but will not necessarily render a package
128           unsuitable for distribution. Guidelines denoted by
129           <em>may</em> (or <em>optional</em>) are truly optional and
130           adherence is left to the maintainer's discretion.
131         </p>
132
133         <p>
134           These classifications are roughly equivalent to the bug
135           severities <em>serious</em> (for <em>must</em> or
136           <em>required</em> directive violations), <em>minor</em>,
137           <em>normal</em> or <em>important</em>
138           (for <em>should</em> or <em>recommended</em> directive
139           violations) and <em>wishlist</em> (for <em>optional</em>
140           items).
141           <footnote>
142                 Compare RFC 2119.  Note, however, that these words are
143                 used in a different way in this document.
144           </footnote>
145         </p>
146
147         <p>
148           Much of the information presented in this manual will be
149           useful even when building a package which is to be
150           distributed in some other way or is intended for local use
151           only.
152         </p>
153       </sect>
154
155       <sect>
156         <heading>New versions of this document</heading>
157
158         <p>
159           This manual is distributed via the Debian package
160           <package><url name="debian-policy"
161               id="http://packages.debian.org/debian-policy"></package> 
162           (<httpsite>packages.debian.org</httpsite> 
163           <httppath>/debian-policy</httppath>).
164         </p>
165
166         <p>
167           The current version of this document is also available from
168           the Debian web mirrors at
169           <tt><url name="/doc/debian-policy/"
170                 id="http://www.debian.org/doc/debian-policy/"></tt>.
171           (
172           <httpsite>www.debian.org</httpsite>
173           <httppath>/doc/debian-policy/</httppath>)
174           Also available from the same directory are several other
175           formats: <file>policy.html.tar.gz</file>
176           (<httppath>/doc/debian-policy/policy.html.tar.gz</httppath>),
177           <file>policy.pdf.gz</file> 
178           (<httppath>/doc/debian-policy/policy.pdf.gz</httppath>)
179           and <file>policy.ps.gz</file>
180           (<httppath>/doc/debian-policy/policy.ps.gz</httppath>).
181         </p>
182
183         <p>
184           The <package>debian-policy</package> package also includes the file
185           <file>upgrading-checklist.txt.gz</file> which indicates policy
186           changes between versions of this document.
187         </p>
188       </sect>
189
190       <sect id="authors">
191         <heading>Authors and Maintainers</heading>
192
193         <p>
194           Originally called "Debian GNU/Linux Policy Manual", this
195           manual was initially written in 1996 by Ian Jackson.
196           It was revised on November 27th, 1996 by David A. Morris.
197           Christian Schwarz added new sections on March 15th, 1997,
198           and reworked/restructured it in April-July 1997.
199           Christoph Lameter contributed the "Web Standard".
200           Julian Gilbey largely restructured it in 2001.
201         </p>
202
203         <p>
204           Since September 1998, the responsibility for the contents of
205           this document lies on the <url name="debian-policy mailing list"
206           id="mailto:debian-policy@lists.debian.org">. Proposals
207           are discussed there and inserted into policy after a certain
208           consensus is established.
209           <!-- insert shameless policy-process plug here eventually -->
210           The actual editing is done by a group of maintainers that have
211           no editorial powers. These are the current maintainers:
212
213           <enumlist>
214             <item>Julian Gilbey</item>
215             <item>Branden Robinson</item>
216             <item>Josip Rodin</item>
217             <item>Manoj Srivastava</item>
218           </enumlist>
219         </p>
220
221         <p>
222           While the authors of this document have tried hard to avoid
223           typos and other errors, these do still occur. If you discover
224           an error in this manual or if you want to give any
225           comments, suggestions, or criticisms please send an email to
226           the Debian Policy List,
227           <email>debian-policy@lists.debian.org</email>, or submit a
228           bug report against the <tt>debian-policy</tt> package.
229         </p>
230
231         <p>
232           Please do not try to reach the individual authors or maintainers
233           of the Policy Manual regarding changes to the Policy.
234         </p>
235       </sect>
236
237       <sect id="related">
238         <heading>Related documents</heading>
239
240         <p>
241           There are several other documents other than this Policy Manual
242           that are necessary to fully understand some Debian policies and
243           procedures.
244         </p>
245
246         <p>
247           The external "sub-policy" documents are referred to in:
248           <list compact="compact">
249             <item><ref id="fhs"></item>
250             <item><ref id="virtual_pkg"></item>
251             <item><ref id="menus"></item>
252             <item><ref id="mime"></item>
253             <item><ref id="perl"></item>
254             <item><ref id="maintscriptprompt"></item>
255             <item><ref id="emacs"></item>
256           </list>
257         </p>
258
259         <p>
260           In addition to those, which carry the weight of policy, there
261           is the Debian Developer's Reference. This document describes
262           procedures and resources for Debian developers, but it is
263           <em>not</em> normative; rather, it includes things that don't
264           belong in the Policy, such as best practices for developers.
265         </p>
266
267         <p>
268           The Developer's Reference is available in the
269           <package>developers-reference</package> package.
270           It's also available from the Debian web mirrors at
271           <tt><url name="/doc/developers-reference/"
272                 id="http://www.debian.org/doc/developers-reference/"></tt>.
273         </p>
274       </sect>
275
276     </chapt>
277
278
279     <chapt id="archive">
280       <heading>The Debian Archive</heading>
281
282       <p>
283         The Debian GNU/Linux system is maintained and distributed as a
284         collection of <em>packages</em>. Since there are so many of
285         them (currently well over 15000), they are split into
286         <em>sections</em> and given <em>priorities</em> to simplify
287         the handling of them.
288       </p>
289
290       <p>
291         The effort of the Debian project is to build a free operating
292         system, but not every package we want to make accessible is
293         <em>free</em> in our sense (see the Debian Free Software
294         Guidelines, below), or may be imported/exported without
295         restrictions. Thus, the archive is split into the distribution
296         areas or categories based on their licenses and other restrictions.
297       </p>
298
299       <p>
300         The aims of this are:
301
302         <list compact="compact">
303           <item>to allow us to make as much software available as we can</item>
304           <item>to allow us to encourage everyone to write free software,
305                 and</item>
306           <item>to allow us to make it easy for people to produce
307                 CD-ROMs of our system without violating any licenses,
308                 import/export restrictions, or any other laws.</item>
309         </list>
310       </p>
311
312       <p>
313         The <em>main</em> category  forms the
314         <em>Debian GNU/Linux distribution</em>.
315       </p>
316
317       <p>
318         Packages in the other distribution areas (<tt>contrib</tt>,
319         <tt>non-free</tt>) are not considered to be part of the Debian
320         distribution, although we support their use and provide
321         infrastructure for them (such as our bug-tracking system and
322         mailing lists). This Debian Policy Manual applies to these
323         packages as well.
324       </p>
325
326       <sect id="dfsg">
327         <heading>The Debian Free Software Guidelines</heading>
328         <p>
329           The Debian Free Software Guidelines (DFSG) form our
330           definition of "free software".  These are:
331             <taglist>
332               <tag>Free Redistribution
333               </tag>
334               <item>
335                   The license of a Debian component may not restrict any
336                   party from selling or giving away the software as a
337                   component of an aggregate software distribution
338                   containing programs from several different
339                   sources. The license may not require a royalty or
340                   other fee for such sale.
341               </item>
342               <tag>Source Code
343               </tag>
344               <item>
345                   The program must include source code, and must allow
346                   distribution in source code as well as compiled form.
347               </item>
348               <tag>Derived Works
349               </tag>
350               <item>
351                   The license must allow modifications and derived
352                   works, and must allow them to be distributed under the
353                   same terms as the license of the original software.
354               </item>
355               <tag>Integrity of The Author's Source Code
356               </tag>
357               <item>
358                   The license may restrict source-code from being
359                   distributed in modified form <em>only</em> if the
360                   license allows the distribution of "patch files"
361                   with the source code for the purpose of modifying the
362                   program at build time. The license must explicitly
363                   permit distribution of software built from modified
364                   source code. The license may require derived works to
365                   carry a different name or version number from the
366                   original software.  (This is a compromise. The Debian
367                   Project encourages all authors to not restrict any
368                   files, source or binary, from being modified.)
369               </item>
370               <tag>No Discrimination Against Persons or Groups
371               </tag>
372               <item>
373                   The license must not discriminate against any person
374                   or group of persons.
375               </item>
376               <tag>No Discrimination Against Fields of Endeavor
377               </tag>
378               <item>
379                   The license must not restrict anyone from making use
380                   of the program in a specific field of endeavor. For
381                   example, it may not restrict the program from being
382                   used in a business, or from being used for genetic
383                   research.
384               </item>
385               <tag>Distribution of License
386               </tag>
387               <item>
388                   The rights attached to the program must apply to all
389                   to whom the program is redistributed without the need
390                   for execution of an additional license by those
391                   parties.
392               </item>
393               <tag>License Must Not Be Specific to Debian
394               </tag>
395               <item>
396                   The rights attached to the program must not depend on
397                   the program's being part of a Debian system. If the
398                   program is extracted from Debian and used or
399                   distributed without Debian but otherwise within the
400                   terms of the program's license, all parties to whom
401                   the program is redistributed must have the same
402                   rights as those that are granted in conjunction with
403                   the Debian system.
404               </item>
405               <tag>License Must Not Contaminate Other Software
406               </tag>
407               <item>
408                   The license must not place restrictions on other
409                   software that is distributed along with the licensed
410                   software. For example, the license must not insist
411                   that all other programs distributed on the same medium
412                   must be free software.
413               </item>
414               <tag>Example Licenses
415               </tag>
416               <item>
417                   The "GPL," "BSD," and "Artistic" licenses are examples of
418                   licenses that we consider <em>free</em>.
419               </item>
420             </taglist>
421         </p>
422       </sect>
423
424       <sect id="sections">
425         <heading>Categories</heading>
426
427         <sect1 id="main">
428           <heading>The main category</heading>
429
430           <p>
431             Every package in <em>main</em> must comply with the DFSG
432             (Debian Free Software Guidelines).
433           </p>
434
435           <p>
436             In addition, the packages in <em>main</em>
437             <list compact="compact">
438               <item>
439                   must not require a package outside of <em>main</em>
440                   for compilation or execution (thus, the package must
441                   not declare a "Depends", "Recommends", or
442                   "Build-Depends" relationship on a non-<em>main</em>
443                   package),
444               </item>
445               <item>
446                   must not be so buggy that we refuse to support them,
447                   and
448               </item>
449               <item>
450                   must meet all policy requirements presented in this
451                   manual.
452               </item>
453             </list>
454           </p>
455
456         </sect1>
457
458         <sect1 id="contrib">
459           <heading>The contrib category</heading>
460
461           <p>
462             Every package in <em>contrib</em> must comply with the DFSG.
463           </p>
464
465           <p>
466             In addition, the packages in <em>contrib</em>
467             <list compact="compact">
468               <item>
469                   must not be so buggy that we refuse to support them,
470                   and
471               </item>
472               <item>
473                   must meet all policy requirements presented in this
474                   manual.
475               </item>
476             </list>
477           </p>
478
479
480           <p>
481             Examples of packages which would be included in
482             <em>contrib</em> are:
483             <list compact="compact">
484               <item>
485                   free packages which require <em>contrib</em>,
486                   <em>non-free</em> packages or packages which are not
487                   in our archive at all for compilation or execution,
488                   and
489               </item>
490               <item>
491                   wrapper packages or other sorts of free accessories for
492                   non-free programs.
493               </item>
494             </list>
495           </p>
496         </sect1>
497
498         <sect1 id="non-free">
499           <heading>The non-free category</heading>
500
501           <p>
502             Packages must be placed in <em>non-free</em> if they are
503             not compliant with the DFSG or are encumbered by patents
504             or other legal issues that make their distribution
505             problematic.
506           </p>
507
508           <p>
509             In addition, the packages in <em>non-free</em>
510             <list compact="compact">
511               <item>
512                   must not be so buggy that we refuse to support them,
513                   and
514               </item>
515               <item>
516                   must meet all policy requirements presented in this
517                   manual that it is possible for them to meet.
518                   <footnote>
519                       It is possible that there are policy
520                       requirements which the package is unable to
521                       meet, for example, if the source is
522                       unavailable.  These situations will need to be
523                       handled on a case-by-case basis.
524                   </footnote>
525               </item>
526             </list>
527           </p>
528         </sect1>
529
530       </sect>
531
532       <sect id="pkgcopyright">
533         <heading>Copyright considerations</heading>
534
535         <p>
536           Every package must be accompanied by a verbatim copy of
537           its copyright and distribution license in the file
538           <file>/usr/share/doc/<var>package</var>/copyright</file>
539           (see <ref id="copyrightfile"> for further details).
540         </p>
541
542         <p>
543           We reserve the right to restrict files from being included
544           anywhere in our archives if
545           <list compact="compact">
546             <item>
547                   their use or distribution would break a law,
548             </item>
549             <item>
550                   there is an ethical conflict in their distribution or
551                   use,
552             </item>
553             <item>
554                   we would have to sign a license for them, or
555             </item>
556             <item>
557                   their distribution would conflict with other project
558                   policies.
559             </item>
560           </list>
561         </p>
562
563         <p>
564           Programs whose authors encourage the user to make
565           donations are fine for the main distribution, provided
566           that the authors do not claim that not donating is
567           immoral, unethical, illegal or something similar; in such
568           a case they must go in <em>non-free</em>.
569         </p>
570
571         <p>
572           Packages whose copyright permission notices (or patent
573           problems) do not even allow redistribution of binaries
574           only, and where no special permission has been obtained,
575           must not be placed on the Debian FTP site and its mirrors
576           at all.
577         </p>
578
579         <p>
580           Note that under international copyright law (this applies
581           in the United States, too), <em>no</em> distribution or
582           modification of a work is allowed without an explicit
583           notice saying so.  Therefore a program without a copyright
584           notice <em>is</em> copyrighted and you may not do anything
585           to it without risking being sued! Likewise if a program
586           has a copyright notice but no statement saying what is
587           permitted then nothing is permitted.
588         </p>
589
590         <p>
591           Many authors are unaware of the problems that restrictive
592           copyrights (or lack of copyright notices) can cause for
593           the users of their supposedly-free software.  It is often
594           worthwhile contacting such authors diplomatically to ask
595           them to modify their license terms. However, this can be a
596           politically difficult thing to do and you should ask for
597           advice on the <tt>debian-legal</tt> mailing list first, as
598           explained below.
599         </p>
600
601         <p>
602           When in doubt about a copyright, send mail to
603           <email>debian-legal@lists.debian.org</email>.  Be prepared
604           to provide us with the copyright statement.  Software
605           covered by the GPL, public domain software and BSD-like
606           copyrights are safe; be wary of the phrases "commercial
607           use prohibited" and "distribution restricted".
608         </p>
609       </sect>
610
611       <sect id="subsections">
612         <heading>Sections</heading>
613
614         <p>
615           The packages in the categories <em>main</em>,
616           <em>contrib</em> and <em>non-free</em> are grouped further
617           into <em>sections</em> to simplify handling.
618         </p>
619
620         <p>
621           The category and section for each package should be
622           specified in the package's <tt>Section</tt> control record
623           (see <ref id="f-Section">).  However, the maintainer of the
624           Debian archive may override this selection to ensure the
625           consistency of the Debian distribution.  The
626           <tt>Section</tt> field should be of the form:
627           <list compact="compact">
628             <item>
629                   <em>section</em> if the package is in the
630                   <em>main</em> category,
631             </item>
632             <item>
633                   <em>segment/section</em> if the package is in
634                   the <em>contrib</em> or <em>non-free</em>
635                   distribution areas.
636             </item>
637           </list>
638         </p>
639
640         <p>
641           The Debian archive maintainers provide the authoritative
642           list of sections.  At present, they are:
643           <em>admin</em>, <em>comm</em>,
644           <em>devel</em>, <em>doc</em>,
645           <em>editors</em>, <em>electronics</em>, <em>embedded</em>,
646           <em>games</em>, <em>gnome</em>, <em>graphics</em>,
647           <em>hamradio</em>, <em>interpreters</em>, <em>kde</em>,
648           <em>libs</em>, <em>libdevel</em>, <em>mail</em>,
649           <em>math</em>, <em>misc</em>, <em>net</em>, <em>news</em>,
650           <em>oldlibs</em>,
651           <em>otherosfs</em>, <em>perl</em>, <em>python</em>,
652           <em>science</em>, <em>shells</em>,
653           <em>sound</em>, <em>tex</em>, <em>text</em>,
654           <em>utils</em>, <em>web</em>, <em>x11</em>.
655         </p>
656       </sect>
657
658       <sect id="priorities">
659         <heading>Priorities</heading>
660
661         <p>
662           Each package should have a <em>priority</em> value, which is
663           included in the package's <em>control record</em>
664           (see <ref id="f-Priority">).
665           This information is used by the Debian package management tools to
666           separate high-priority packages from less-important packages.
667         </p>
668
669         <p>
670           The following <em>priority levels</em> are recognized by the
671           Debian package management tools.
672           <taglist>
673             <tag><tt>required</tt></tag>
674             <item>
675                 Packages which are necessary for the proper
676                 functioning of the system (usually, this means that
677                 dpkg functionality depends on these packages).
678                 Removing a <tt>required</tt> package may cause your
679                 system to become totally broken and you may not even
680                 be able to use <prgn>dpkg</prgn> to put things back,
681                 so only do so if you know what you are doing.  Systems
682                 with only the <tt>required</tt> packages are probably
683                 unusable, but they do have enough functionality to
684                 allow the sysadmin to boot and install more software.
685             </item>
686             <tag><tt>important</tt></tag>
687             <item>
688                 Important programs, including those which one would
689                 expect to find on any Unix-like system.  If the
690                 expectation is that an experienced Unix person who
691                 found it missing would say "What on earth is going on,
692                 where is <prgn>foo</prgn>?", it must be an
693                 <tt>important</tt> package.<footnote>
694                     This is an important criterion because we are
695                     trying to produce, amongst other things, a free
696                     Unix.
697                 </footnote>
698                 Other packages without which the system will not run
699                 well or be usable must also have priority
700                 <tt>important</tt>.  This does
701                 <em>not</em> include Emacs, the X Window System, TeX
702                 or any other large applications.  The
703                 <tt>important</tt> packages are just a bare minimum of
704                 commonly-expected and necessary tools.
705             </item>
706             <tag><tt>standard</tt></tag>
707             <item>
708                 These packages provide a reasonably small but not too
709                 limited character-mode system.  This is what will be
710                 installed by default if the user doesn't select anything
711                 else.  It doesn't include many large applications.
712             </item>
713             <tag><tt>optional</tt></tag>
714             <item>
715                 (In a sense everything that isn't required is
716                 optional, but that's not what is meant here.) This is
717                 all the software that you might reasonably want to
718                 install if you didn't know what it was and don't have
719                 specialized requirements. This is a much larger system
720                 and includes the X Window System, a full TeX
721                 distribution, and many applications. Note that
722                 optional packages should not conflict with each other.
723             </item>
724             <tag><tt>extra</tt></tag>
725             <item>
726                 This contains all packages that conflict with others
727                 with required, important, standard or optional
728                 priorities, or are only likely to be useful if you
729                 already know what they are or have specialized
730                 requirements.
731             </item>
732           </taglist>
733         </p>
734
735         <p>
736           Packages must not depend on packages with lower priority
737           values (excluding build-time dependencies).  In order to
738           ensure this, the priorities of one or more packages may need
739           to be adjusted.
740         </p>
741       </sect>
742
743     </chapt>
744
745
746     <chapt id="binary">
747       <heading>Binary packages</heading>
748
749       <p>
750         The Debian GNU/Linux distribution is based on the Debian
751         package management system, called <prgn>dpkg</prgn>. Thus,
752         all packages in the Debian distribution must be provided
753         in the <tt>.deb</tt> file format.
754       </p>
755
756       <sect>
757         <heading>The package name</heading>
758
759         <p>
760           Every package must have a name that's unique within the Debian
761           archive.
762         </p>
763
764         <p>
765           The package name is included in the control field
766           <tt>Package</tt>, the format of which is described
767           in <ref id="f-Package">.
768           The package name is also included as a part of the file name
769           of the <tt>.deb</tt> file.
770         </p>
771       </sect>
772
773       <sect id="versions">
774         <heading>The version of a package</heading>
775
776         <p>
777           Every package has a version number recorded in its
778           <tt>Version</tt> control file field, described in
779           <ref id="f-Version">.
780         </p>
781
782         <p>
783           The package management system imposes an ordering on version
784           numbers, so that it can tell whether packages are being up- or
785           downgraded and so that package system front end applications
786           can tell whether a package it finds available is newer than
787           the one installed on the system.  The version number format
788           has the most significant parts (as far as comparison is
789           concerned) at the beginning.
790         </p>
791
792         <p>
793           If an upstream package has problematic version numbers they
794           should be converted to a sane form for use in the
795           <tt>Version</tt> field.
796         </p>
797
798         <sect1>
799           <heading>Version numbers based on dates</heading>
800
801           <p>
802             In general, Debian packages should use the same version
803             numbers as the upstream sources.
804           </p>
805
806           <p>
807             However, in some cases where the upstream version number is
808             based on a date (e.g., a development "snapshot" release) the
809             package management system cannot handle these version
810             numbers without epochs. For example, dpkg will consider
811             "96May01" to be greater than "96Dec24".
812           </p>
813
814           <p>
815             To prevent having to use epochs for every new upstream
816             version, the date based portion of the version number
817             should be changed to the following format in such cases:
818             "19960501", "19961224". It is up to the maintainer whether
819             they want to bother the upstream maintainer to change
820             the version numbers upstream, too.
821           </p>
822
823           <p>
824             Note that other version formats based on dates which are
825             parsed correctly by the package management system should
826             <em>not</em> be changed.
827           </p>
828
829           <p>
830             Native Debian packages (i.e., packages which have been
831             written especially for Debian) whose version numbers include
832             dates should always use the "YYYYMMDD" format.
833           </p>
834         </sect1>
835
836       </sect>
837
838       <sect>
839         <heading>The maintainer of a package</heading>
840
841         <p>
842           Every package must have a Debian maintainer (the
843           maintainer may be one person or a group of people
844           reachable from a common email address, such as a mailing
845           list).  The maintainer is responsible for ensuring that
846           the package is placed in the appropriate distributions.
847         </p>
848
849         <p>
850           The maintainer must be specified in the
851           <tt>Maintainer</tt> control field with their correct name
852           and a working email address.  If one person maintains
853           several packages, they should try to avoid having
854           different forms of their name and email address in
855           the <tt>Maintainer</tt> fields of those packages.
856         </p>
857
858         <p>
859           The format of the <tt>Maintainer</tt> control field is
860           described in <ref id="f-Maintainer">.
861         </p>
862
863         <p>
864           If the maintainer of a package quits from the Debian
865           project, "Debian QA Group"
866           <email>packages@qa.debian.org</email> takes over the
867           maintainer-ship of the package until someone else
868           volunteers for that task. These packages are called
869           <em>orphaned packages</em>.<footnote>
870                 The detailed procedure for doing this gracefully can
871                 be found in the Debian Developer's Reference,
872                 see <ref id="related">.
873           </footnote>
874         </p>
875       </sect>
876
877       <sect id="descriptions">
878         <heading>The description of a package</heading>
879
880         <p>
881           Every Debian package must have an extended description
882           stored in the appropriate field of the control record.
883           The technical information about the format of the
884           <tt>Description</tt> field is in <ref id="f-Description">.
885         </p>
886
887         <p>
888           The description should describe the package (the program) to a
889           user (system administrator) who has never met it before so that
890           they have enough information to decide whether they want to
891           install it. This description should not just be copied verbatim
892           from the program's documentation.
893         </p>
894
895         <p>
896           Put important information first, both in the synopsis and
897           extended description.  Sometimes only the first part of the
898           synopsis or of the description will be displayed.  You can
899           assume that there will usually be a way to see the whole
900           extended description.
901         </p>
902
903         <p>
904           The description should also give information about the
905           significant dependencies and conflicts between this package
906           and others, so that the user knows why these dependencies and
907           conflicts have been declared.
908         </p>
909
910         <p>
911           Instructions for configuring or using the package should
912           not be included (that is what installation scripts,
913           manual pages, info files, etc., are for).  Copyright
914           statements and other administrivia should not be included
915           either (that is what the copyright file is for).
916         </p>
917
918         <sect1 id="synopsis"><heading>The single line synopsis</heading>
919
920           <p>
921             The single line synopsis should be kept brief - certainly
922             under 80 characters.
923           </p>
924
925           <p>
926             Do not include the package name in the synopsis line.  The
927             display software knows how to display this already, and you
928             do not need to state it.  Remember that in many situations
929             the user may only see the synopsis line - make it as
930             informative as you can.
931           </p>
932
933         </sect1>
934
935         <sect1 id="extendeddesc"><heading>The extended description</heading>
936
937           <p>
938             Do not try to continue the single line synopsis into the
939             extended description.  This will not work correctly when
940             the full description is displayed, and makes no sense
941             where only the summary (the single line synopsis) is
942             available.
943           </p>
944
945           <p>
946             The extended description should describe what the package
947             does and how it relates to the rest of the system (in terms
948             of, for example, which subsystem it is which part of).
949           </p>
950
951           <p>
952             The description field needs to make sense to anyone, even
953             people who have no idea about any of the things the
954             package deals with.<footnote>
955                 The blurb that comes with a program in its
956                 announcements and/or <prgn>README</prgn> files is
957                 rarely suitable for use in a description.  It is
958                 usually aimed at people who are already in the
959                 community where the package is used.
960             </footnote>
961           </p>
962
963         </sect1>
964
965       </sect>
966
967       <sect>
968         <heading>Dependencies</heading>
969
970         <p>
971           Every package must specify the dependency information
972           about other packages that are required for the first to
973           work correctly.
974         </p>
975
976         <p>
977           For example, a dependency entry must be provided for any
978           shared libraries required by a dynamically-linked executable
979           binary in a package.
980         </p>
981
982         <p>
983           Packages are not required to declare any dependencies they
984           have on other packages which are marked <tt>Essential</tt>
985           (see below), and should not do so unless they depend on a
986           particular version of that package.<footnote>
987             <p>
988               Essential is needed in part to avoid unresolvable dependency
989               loops on upgrade.  If packages add unnecessary dependencies
990               on packages in this set, the chances that there
991               <strong>will</strong> be an unresolvable dependency loop
992               caused by forcing these Essential packages to be configured
993               first before they need to be is greatly increased.  It also
994               increases the chances that frontends will be unable to
995               <strong>calculate</strong> an upgrade path, even if one
996               exists.
997             </p>
998             <p>
999               Also, functionality is rarely ever removed from the
1000               Essential set, but <em>packages</em> have been removed from
1001               the Essential set when the functionality moved to a
1002               different package. So depending on these packages <em>just
1003               in case</em> they stop being essential does way more harm
1004               than good.
1005             </p>
1006           </footnote>
1007         </p>
1008
1009         <p>
1010           Sometimes, a package requires another package to be installed
1011           <em>and</em> configured before it can be installed. In this
1012           case, you must specify a <tt>Pre-Depends</tt> entry for
1013           the package.
1014         </p>
1015
1016         <p>
1017           You should not specify a <tt>Pre-Depends</tt> entry for a
1018           package before this has been discussed on the
1019           <tt>debian-devel</tt> mailing list and a consensus about
1020           doing that has been reached.
1021         </p>
1022
1023         <p>
1024           The format of the package interrelationship control fields is
1025           described in <ref id="relationships">.
1026         </p>
1027       </sect>
1028
1029       <sect id="virtual_pkg">
1030         <heading>Virtual packages</heading>
1031
1032         <p>
1033           Sometimes, there are several packages which offer
1034           more-or-less the same functionality. In this case, it's
1035           useful to define a <em>virtual package</em> whose name
1036           describes that common functionality.  (The virtual
1037           packages only exist logically, not physically; that's why
1038           they are called <em>virtual</em>.) The packages with this
1039           particular function will then <em>provide</em> the virtual
1040           package. Thus, any other package requiring that function
1041           can simply depend on the virtual package without having to
1042           specify all possible packages individually.
1043         </p>
1044
1045         <p>
1046           All packages should use virtual package names where
1047           appropriate, and arrange to create new ones if necessary.
1048           They should not use virtual package names (except privately,
1049           amongst a cooperating group of packages) unless they have
1050           been agreed upon and appear in the list of virtual package
1051           names. (See also <ref id="virtual">)
1052         </p>
1053
1054         <p>
1055           The latest version of the authoritative list of virtual
1056           package names can be found in the <tt>debian-policy</tt> package.
1057           It is also available from the Debian web mirrors at
1058           <tt><url name="/doc/packaging-manuals/virtual-package-names-list.txt"
1059                 id="http://www.debian.org/doc/packaging-manuals/virtual-package-names-list.txt"></tt>.
1060         </p>
1061
1062         <p>
1063           The procedure for updating the list is described in the preface
1064           to the list.
1065         </p>
1066
1067       </sect>
1068
1069       <sect>
1070         <heading>Base system</heading>
1071
1072         <p>
1073           The <tt>base system</tt> is a minimum subset of the Debian
1074           GNU/Linux system that is installed before everything else
1075           on a new system. Only very few packages are allowed to form
1076           part of the base system, in order to keep the required disk
1077           usage very small.
1078         </p>
1079
1080         <p>
1081           The base system consists of all those packages with priority
1082           <tt>required</tt> or <tt>important</tt>. Many of them will
1083           be tagged <tt>essential</tt> (see below).
1084         </p>
1085       </sect>
1086
1087       <sect>
1088         <heading>Essential packages</heading>
1089
1090         <p>
1091           Essential is defined as the minimal set of functionality that
1092           must be available and usable on the system at all times, even
1093           when packages are in an unconfigured (but unpacked) state.
1094           Packages are tagged <tt>essential</tt> for a system using the
1095           <tt>Essential</tt> control file field.  The format of the
1096           <tt>Essential</tt> control field is described in <ref
1097           id="f-Essential">.
1098         </p>
1099
1100         <p>
1101           Since these packages cannot be easily removed (one has to
1102           specify an extra <em>force option</em> to
1103           <prgn>dpkg</prgn> to do so), this flag must not be used
1104           unless absolutely necessary.  A shared library package
1105           must not be tagged <tt>essential</tt>; dependencies will
1106           prevent its premature removal, and we need to be able to
1107           remove it when it has been superseded.
1108         </p>
1109
1110         <p>
1111           Since dpkg will not prevent upgrading of other packages
1112           while an <tt>essential</tt> package is in an unconfigured
1113             state, all <tt>essential</tt> packages must supply all of
1114             their core functionality even when unconfigured. If the
1115             package cannot satisfy this requirement it must not be
1116             tagged as essential, and any packages depending on this
1117             package must instead have explicit dependency fields as
1118             appropriate.
1119         </p>
1120
1121         <p>
1122           Maintainers should take great care in adding any programs,
1123           interfaces, or functionality to <tt>essential</tt> packages.
1124           Packages may assume that functionality provided by
1125           <tt>essential</tt> packages is always available without
1126           declaring explicit dependencies, which means that removing
1127           functionality from the Essential set is very difficult and is
1128           almost never done.  Any capability added to an
1129           <tt>essential</tt> package therefore creates an obligation to
1130           support that capability as part of the Essential set in
1131           perpetuity.
1132         </p>
1133
1134         <p>
1135           You must not tag any packages <tt>essential</tt> before
1136           this has been discussed on the <tt>debian-devel</tt>
1137           mailing list and a consensus about doing that has been
1138           reached.
1139         </p>
1140       </sect>
1141
1142       <sect id="maintscripts">
1143         <heading>Maintainer Scripts</heading>
1144
1145         <p>
1146           The package installation scripts should avoid producing
1147           output which is unnecessary for the user to see and
1148           should rely on <prgn>dpkg</prgn> to stave off boredom on
1149           the part of a user installing many packages.  This means,
1150           amongst other things, using the <tt>--quiet</tt> option on
1151           <prgn>install-info</prgn>.
1152         </p>
1153
1154         <p>
1155           Errors which occur during the execution of an installation
1156           script must be checked and the installation must not
1157           continue after an error.
1158         </p>
1159
1160         <p>
1161           Note that in general <ref id="scripts"> applies to package
1162           maintainer scripts, too.
1163         </p>
1164
1165         <p>
1166           You should not use <prgn>dpkg-divert</prgn> on a file
1167           belonging to another package without consulting the
1168           maintainer of that package first.
1169         </p>
1170
1171         <p>
1172           All packages which supply an instance of a common command
1173           name (or, in general, filename) should generally use
1174           <prgn>update-alternatives</prgn>, so that they may be
1175           installed together.  If <prgn>update-alternatives</prgn>
1176           is not used, then each package must use
1177           <tt>Conflicts</tt> to ensure that other packages are
1178           de-installed.  (In this case, it may be appropriate to
1179           specify a conflict against earlier versions of something
1180           that previously did not use
1181           <prgn>update-alternatives</prgn>; this is an exception to
1182           the usual rule that versioned conflicts should be
1183           avoided.)
1184         </p>
1185
1186         <sect1 id="maintscriptprompt">
1187           <heading>Prompting in maintainer scripts</heading>
1188           <p>
1189             Package maintainer scripts may prompt the user if
1190             necessary. Prompting should be done by communicating
1191             through a program, such as <prgn>debconf</prgn>, which
1192             conforms to the Debian Configuration management
1193             specification, version 2 or higher.  Prompting the user by
1194             other means, such as by hand<footnote>
1195                 From the Jargon file: by hand 2. By extension,
1196                 writing code which does something in an explicit or
1197                 low-level way for which a presupplied library
1198                 (<em>debconf, in this instance</em>) routine ought
1199                 to have been available.
1200             </footnote>, is now deprecated.
1201           </p>
1202
1203           <p>
1204             The Debian Configuration management specification is included
1205             in the <file>debconf_specification</file> files in the
1206             <package>debian-policy</package> package.
1207             It is also available from the Debian web mirrors at
1208             <tt><url name="/doc/packaging-manuals/debconf_specification.html"
1209                 id="http://www.debian.org/doc/packaging-manuals/debconf_specification.html"></tt>.
1210           </p>
1211
1212           <p>
1213             Packages which use the Debian Configuration management
1214             specification may contain an additional
1215             <prgn>config</prgn> script and a <tt>templates</tt>
1216             file in their control archive<footnote>
1217                 The control.tar.gz inside the .deb.
1218                 See <manref name="deb" section="5">.
1219             </footnote>.
1220             The <prgn>config</prgn> script might be run before the
1221             <prgn>preinst</prgn> script, and before the package is unpacked
1222             or any of its dependencies or pre-dependencies are satisfied.
1223             Therefore it must work using only the tools present in
1224             <em>essential</em> packages.<footnote>
1225                   <package>Debconf</package> or another tool that
1226                   implements the Debian Configuration management
1227                   specification will also be installed, and any
1228                   versioned dependencies on it will be satisfied
1229                   before preconfiguration begins.
1230             </footnote>
1231           </p>
1232
1233           <p>
1234             Packages which use the Debian Configuration management
1235             specification must allow for translation of their messages
1236             by using a gettext-based system such as the one provided by
1237             the <package>po-debconf</package> package.
1238           </p>
1239
1240           <p>
1241             Packages should try to minimize the amount of prompting
1242             they need to do, and they should ensure that the user
1243             will only ever be asked each question once.  This means
1244             that packages should try to use appropriate shared
1245             configuration files (such as <file>/etc/papersize</file> and
1246             <file>/etc/news/server</file>), and shared
1247             <package>debconf</package> variables rather than each
1248             prompting for their own list of required pieces of
1249             information.
1250           </p>
1251
1252           <p>
1253             It also means that an upgrade should not ask the same
1254             questions again, unless the user has used
1255             <tt>dpkg --purge</tt> to remove the package's configuration.
1256             The answers to configuration questions should be stored in an
1257             appropriate place in <file>/etc</file> so that the user can
1258             modify them, and how this has been done should be
1259             documented.
1260           </p>
1261
1262           <p>
1263             If a package has a vitally important piece of
1264             information to pass to the user (such as "don't run me
1265             as I am, you must edit the following configuration files
1266             first or you risk your system emitting badly-formatted
1267             messages"), it should display this in the
1268             <prgn>config</prgn> or <prgn>postinst</prgn> script and
1269             prompt the user to hit return to acknowledge the
1270             message.  Copyright messages do not count as vitally
1271             important (they belong in
1272             <file>/usr/share/doc/<var>package</var>/copyright</file>);
1273             neither do instructions on how to use a program (these
1274             should be in on-line documentation, where all the users
1275             can see them).
1276           </p>
1277
1278           <p>
1279             Any necessary prompting should almost always be confined
1280             to the <prgn>config</prgn> or <prgn>postinst</prgn>
1281             script. If it is done in the <prgn>postinst</prgn>, it
1282             should be protected with a conditional so that
1283             unnecessary prompting doesn't happen if a package's
1284             installation fails and the <prgn>postinst</prgn> is
1285             called with <tt>abort-upgrade</tt>,
1286             <tt>abort-remove</tt> or <tt>abort-deconfigure</tt>.
1287           </p>
1288         </sect1>
1289
1290       </sect>
1291
1292     </chapt>
1293
1294
1295     <chapt id="source">
1296       <heading>Source packages</heading>
1297
1298       <sect id="standardsversion">
1299         <heading>Standards conformance</heading>
1300
1301         <p>
1302           Source packages should specify the most recent version number
1303           of this policy document with which your package complied
1304           when it was last updated.
1305         </p>
1306
1307         <p>
1308           This information may be used to file bug reports
1309           automatically if your package becomes too much out of date.
1310         </p>
1311
1312         <p>
1313           The version is specified in the <tt>Standards-Version</tt>
1314           control field.
1315           The format of the <tt>Standards-Version</tt> field is
1316           described in <ref id="f-Standards-Version">.
1317         </p>
1318
1319         <p>
1320           You should regularly, and especially if your package has
1321           become out of date, check for the newest Policy Manual
1322           available and update your package, if necessary. When your
1323           package complies with the new standards you should update the
1324           <tt>Standards-Version</tt> source package field and
1325           release it.<footnote>
1326                 See the file <file>upgrading-checklist</file> for
1327                 information about policy which has changed between
1328                 different versions of this document.
1329           </footnote>
1330         </p>
1331
1332       </sect>
1333
1334       <sect id="pkg-relations">
1335         <heading>Package relationships</heading>
1336
1337         <p>
1338           Source packages should specify which binary packages they
1339           require to be installed or not to be installed in order to
1340           build correctly.  For example, if building a package
1341           requires a certain compiler, then the compiler should be
1342           specified as a build-time dependency.
1343         </p>
1344
1345         <p>
1346           It is not necessary to explicitly specify build-time
1347           relationships on a minimal set of packages that are always
1348           needed to compile, link and put in a Debian package a
1349           standard "Hello World!" program written in C or C++.  The
1350           required packages are called <em>build-essential</em>, and
1351           an informational list can be found in
1352           <file>/usr/share/doc/build-essential/list</file> (which is
1353           contained in the <tt>build-essential</tt>
1354           package).<footnote>
1355             Rationale:
1356                 <list compact="compact">
1357                   <item>
1358                       This allows maintaining the list separately
1359                       from the policy documents (the list does not
1360                       need the kind of control that the policy
1361                       documents do).
1362                   </item>
1363                   <item>
1364                       Having a separate package allows one to install
1365                       the build-essential packages on a machine, as
1366                       well as allowing other packages such as tasks to
1367                       require installation of the build-essential
1368                       packages using the depends relation.
1369                   </item>
1370                   <item>
1371                       The separate package allows bug reports against
1372                       the list to be categorized separately from
1373                       the policy management process in the BTS.
1374                   </item>
1375                 </list>
1376           </footnote>
1377         </p>
1378
1379         <p>
1380           When specifying the set of build-time dependencies, one
1381           should list only those packages explicitly required by the
1382           build.  It is not necessary to list packages which are
1383           required merely because some other package in the list of
1384           build-time dependencies depends on them.<footnote>
1385                 The reason for this is that dependencies change, and
1386                 you should list all those packages, and <em>only</em>
1387                 those packages that <em>you</em> need directly.  What
1388                 others need is their business.  For example, if you
1389                 only link against <file>libimlib</file>, you will need to
1390                 build-depend on <package>libimlib2-dev</package> but
1391                 not against any <tt>libjpeg*</tt> packages, even
1392                 though <tt>libimlib2-dev</tt> currently depends on
1393                 them: installation of <package>libimlib2-dev</package>
1394                 will automatically ensure that all of its run-time
1395                 dependencies are satisfied.
1396           </footnote>
1397         </p>
1398
1399         <p>
1400           If build-time dependencies are specified, it must be
1401           possible to build the package and produce working binaries
1402           on a system with only essential and build-essential
1403           packages installed and also those required to satisfy the
1404           build-time relationships (including any implied
1405           relationships).  In particular, this means that version
1406           clauses should be used rigorously in build-time
1407           relationships so that one cannot produce bad or
1408           inconsistently configured packages when the relationships
1409           are properly satisfied.
1410         </p>
1411
1412         <p>
1413           <ref id="relationships"> explains the technical details.
1414         </p>
1415       </sect>
1416
1417       <sect>
1418         <heading>Changes to the upstream sources</heading>
1419
1420         <p>
1421           If changes to the source code are made that are not
1422           specific to the needs of the Debian system, they should be
1423           sent to the upstream authors in whatever form they prefer
1424           so as to be included in the upstream version of the
1425           package.
1426         </p>
1427
1428         <p>
1429           If you need to configure the package differently for
1430           Debian or for Linux, and the upstream source doesn't
1431           provide a way to do so, you should add such configuration
1432           facilities (for example, a new <prgn>autoconf</prgn> test
1433           or <tt>#define</tt>) and send the patch to the upstream
1434           authors, with the default set to the way they originally
1435           had it.  You can then easily override the default in your
1436           <file>debian/rules</file> or wherever is appropriate.
1437         </p>
1438
1439         <p>
1440           You should make sure that the <prgn>configure</prgn> utility
1441           detects the correct architecture specification string
1442           (refer to <ref id="arch-spec"> for details).
1443         </p>
1444
1445         <p>
1446           If you need to edit a <prgn>Makefile</prgn> where GNU-style
1447           <prgn>configure</prgn> scripts are used, you should edit the
1448           <file>.in</file> files rather than editing the
1449           <prgn>Makefile</prgn> directly.  This allows the user to
1450           reconfigure the package if necessary.  You should
1451           <em>not</em> configure the package and edit the generated
1452           <prgn>Makefile</prgn>!  This makes it impossible for someone
1453           else to later reconfigure the package without losing the
1454           changes you made.
1455         </p>
1456
1457       </sect>
1458
1459       <sect id="dpkgchangelog">
1460         <heading>Debian changelog: <file>debian/changelog</file></heading>
1461
1462         <p>
1463           Changes in the Debian version of the package should be
1464           briefly explained in the Debian changelog file
1465           <file>debian/changelog</file>.<footnote>
1466             <p>
1467               Mistakes in changelogs are usually best rectified by
1468               making a new changelog entry rather than "rewriting
1469               history" by editing old changelog entries.
1470             </p>
1471           </footnote>
1472           This includes modifications
1473           made in the Debian package compared to the upstream one
1474           as well as other changes and updates to the package.
1475           <footnote>
1476               Although there is nothing stopping an author who is also
1477               the Debian maintainer from using this changelog for all
1478               their changes, it will have to be renamed if the Debian
1479               and upstream maintainers become different people. In such
1480               a case, however, it might be better to maintain the package
1481               as a non-native package.
1482           </footnote>
1483         </p>
1484
1485         <p>
1486           The format of the <file>debian/changelog</file> allows the
1487           package building tools to discover which version of the package
1488           is being built and find out other release-specific information.
1489         </p>
1490
1491         <p>
1492           That format is a series of entries like this:
1493
1494 <example compact="compact">
1495 <var>package</var> (<var>version</var>) <var>distribution(s)</var>; urgency=<var>urgency</var>
1496             <var>
1497               [optional blank line(s), stripped]
1498             </var>
1499   * <var>change details</var>
1500     <var>more change details</var>
1501             <var>
1502               [blank line(s), included in output of dpkg-parsechangelog]
1503             </var>
1504   * <var>even more change details</var>
1505             <var>
1506               [optional blank line(s), stripped]
1507             </var>
1508  -- <var>maintainer name</var> &lt;<var>email address</var>&gt;<var>[two spaces]</var>  <var>date</var>
1509 </example>
1510         </p>
1511
1512         <p>
1513           <var>package</var> and <var>version</var> are the source
1514           package name and version number.
1515         </p>
1516
1517         <p>
1518           <var>distribution(s)</var> lists the distributions where
1519           this version should be installed when it is uploaded - it
1520           is copied to the <tt>Distribution</tt> field in the
1521           <file>.changes</file> file.  See <ref id="f-Distribution">.
1522         </p>
1523
1524         <p>
1525           <var>urgency</var> is the value for the <tt>Urgency</tt>
1526           field in the <file>.changes</file> file for the upload
1527           (see <ref id="f-Urgency">). It is not possible to specify
1528           an urgency containing commas; commas are used to separate
1529           <tt><var>keyword</var>=<var>value</var></tt> settings in the
1530           <prgn>dpkg</prgn> changelog format (though there is
1531           currently only one useful <var>keyword</var>,
1532           <tt>urgency</tt>).
1533         </p>
1534
1535         <p>
1536           The change details may in fact be any series of lines
1537           starting with at least two spaces, but conventionally each
1538           change starts with an asterisk and a separating space and
1539           continuation lines are indented so as to bring them in
1540           line with the start of the text above.  Blank lines may be
1541           used here to separate groups of changes, if desired.
1542         </p>
1543
1544         <p>
1545           If this upload resolves bugs recorded in the Bug Tracking
1546           System (BTS), they may be automatically closed on the
1547           inclusion of this package into the Debian archive by
1548           including the string: <tt>closes: Bug#<var>nnnnn</var></tt>
1549           in the change details.<footnote>
1550               To be precise, the string should match the following
1551               Perl regular expression:
1552               <example>
1553 /closes:\s*(?:bug)?\#?\s?\d+(?:,\s*(?:bug)?\#?\s?\d+)*/i
1554               </example>
1555               Then all of the bug numbers listed will be closed by the
1556               archive maintenance script (<prgn>katie</prgn>) using the
1557               <var>version</var> of the changelog entry.
1558           </footnote>
1559           This information is conveyed via the <tt>Closes</tt> field
1560           in the <tt>.changes</tt> file (see <ref id="f-Closes">).
1561         </p>
1562
1563         <p>
1564           The maintainer name and email address used in the changelog
1565           should be the details of the person uploading <em>this</em>
1566           version.  They are <em>not</em> necessarily those of the
1567           usual package maintainer.  The information here will be
1568           copied to the <tt>Changed-By</tt> field in the
1569           <tt>.changes</tt> file (see <ref id="f-Changed-By">),
1570           and then later used to send an acknowledgement when the
1571           upload has been installed.
1572         </p>
1573
1574         <p>
1575           The <var>date</var> must be in RFC822 format<footnote>
1576               This is generated by <tt>date -R</tt>.
1577           </footnote>; it must include the time zone specified
1578           numerically, with the time zone name or abbreviation
1579           optionally present as a comment in parentheses.
1580         </p>
1581
1582         <p>
1583           The first "title" line with the package name must start
1584           at the left hand margin.  The "trailer" line with the
1585           maintainer and date details must be preceded by exactly
1586           one space.  The maintainer details and the date must be
1587           separated by exactly two spaces.
1588         </p>
1589
1590         <p>
1591           For more information on placement of the changelog files
1592           within binary packages, please see <ref id="changelogs">.
1593         </p>
1594       </sect>
1595
1596       <sect id="dpkgcopyright">
1597         <heading>Copyright: <file>debian/copyright</file></heading>
1598         <p>
1599           Every package must be accompanied by a verbatim copy of
1600           its copyright and distribution license in the file
1601           <file>/usr/share/doc/<var>package</var>/copyright</file>
1602           (see <ref id="copyrightfile"> for further details). Also see
1603           <ref id="pkgcopyright"> for further considerations relayed
1604           to copyrights for packages.
1605         </p>
1606       </sect>
1607       <sect>
1608         <heading>Error trapping in makefiles</heading>
1609
1610         <p>
1611           When <prgn>make</prgn> invokes a command in a makefile
1612           (including your package's upstream makefiles and
1613           <file>debian/rules</file>), it does so using <prgn>sh</prgn>.  This
1614           means that <prgn>sh</prgn>'s usual bad error handling
1615           properties apply: if you include a miniature script as one
1616           of the commands in your makefile you'll find that if you
1617           don't do anything about it then errors are not detected
1618           and <prgn>make</prgn> will blithely continue after
1619           problems.
1620         </p>
1621
1622         <p>
1623           Every time you put more than one shell command (this
1624           includes using a loop) in a makefile command you
1625           must make sure that errors are trapped.  For
1626           simple compound commands, such as changing directory and
1627           then running a program, using <tt>&amp;&amp;</tt> rather
1628           than semicolon as a command separator is sufficient.  For
1629           more complex commands including most loops and
1630           conditionals you should include a separate <tt>set -e</tt>
1631           command at the start of every makefile command that's
1632           actually one of these miniature shell scripts.
1633         </p>
1634       </sect>
1635
1636       <sect id="timestamps">
1637         <heading>Time Stamps</heading>
1638         <p>
1639           Maintainers should preserve the modification times of the
1640           upstream source files in a package, as far as is reasonably
1641           possible.<footnote>
1642               The rationale is that there is some information conveyed
1643               by knowing the age of the file, for example, you could
1644               recognize that some documentation is very old by looking
1645               at the modification time, so it would be nice if the
1646               modification time of the upstream source would be
1647               preserved.
1648           </footnote>
1649         </p>
1650       </sect>
1651
1652       <sect id="restrictions">
1653         <heading>Restrictions on objects in source packages</heading>
1654
1655         <p>
1656           The source package may not contain any hard links<footnote>
1657             <p>
1658               This is not currently detected when building source
1659               packages, but only when extracting
1660               them.
1661             </p>
1662             <p>
1663               Hard links may be permitted at some point in the
1664               future, but would require a fair amount of
1665               work.
1666             </p>
1667           </footnote>, device special files, sockets or setuid or
1668           setgid files.<footnote>
1669               Setgid directories are allowed.
1670           </footnote>
1671         </p>
1672       </sect>
1673
1674       <sect id="debianrules">
1675         <heading>Main building script: <file>debian/rules</file></heading>
1676
1677         <p>
1678           This file must be an executable makefile, and contains the
1679           package-specific recipes for compiling the package and
1680           building binary package(s) from the source.
1681         </p>
1682
1683         <p>
1684           It must start with the line <tt>#!/usr/bin/make -f</tt>,
1685           so that it can be invoked by saying its name rather than
1686           invoking <prgn>make</prgn> explicitly.
1687         </p>
1688
1689         <p>
1690           Since an interactive <file>debian/rules</file> script makes it
1691           impossible to auto-compile that package and also makes it
1692           hard for other people to reproduce the same binary
1693           package, all <em>required targets</em> MUST be
1694           non-interactive. At a minimum, required targets are the
1695           ones called by <prgn>dpkg-buildpackage</prgn>, namely,
1696           <em>clean</em>, <em>binary</em>, <em>binary-arch</em>,
1697           <em>binary-indep</em>, and <em>build</em>. It also follows
1698           that any target that these targets depend on must also be
1699           non-interactive.
1700         </p>
1701
1702         <p>
1703           The targets are as follows (required unless stated otherwise):
1704           <taglist>
1705             <tag><tt>build</tt></tag>
1706             <item>
1707               <p>
1708                 The <tt>build</tt> target should perform all the
1709                 configuration and compilation of the package.
1710                 If a package has an interactive pre-build
1711                 configuration routine, the Debianized source package
1712                 must either be built after this has taken place (so
1713                 that the binary package can be built without rerunning
1714                 the configuration) or the configuration routine
1715                 modified to become non-interactive.  (The latter is
1716                 preferable if there are architecture-specific features
1717                 detected by the configuration routine.)
1718               </p>
1719
1720               <p>
1721                 For some packages, notably ones where the same
1722                 source tree is compiled in different ways to produce
1723                 two binary packages, the <tt>build</tt> target
1724                 does not make much sense.  For these packages it is
1725                 good enough to provide two (or more) targets
1726                 (<tt>build-a</tt> and <tt>build-b</tt> or whatever)
1727                 for each of the ways of building the package, and a
1728                 <tt>build</tt> target that does nothing.  The
1729                 <tt>binary</tt> target will have to build the
1730                 package in each of the possible ways and make the
1731                 binary package out of each.
1732               </p>
1733
1734               <p>
1735                 The <tt>build</tt> target must not do anything
1736                 that might require root privilege.
1737               </p>
1738
1739               <p>
1740                 The <tt>build</tt> target may need to run the
1741                 <tt>clean</tt> target first - see below.
1742               </p>
1743
1744               <p>
1745                 When a package has a configuration and build routine
1746                 which takes a long time, or when the makefiles are
1747                 poorly designed, or when <tt>build</tt> needs to
1748                 run <tt>clean</tt> first, it is a good idea to
1749                 <tt>touch build</tt> when the build process is
1750                 complete.  This will ensure that if <tt>debian/rules
1751                 build</tt> is run again it will not rebuild the whole
1752                 program.<footnote>
1753                     Another common way to do this is for <tt>build</tt>
1754                     to depend on <prgn>build-stamp</prgn> and to do
1755                     nothing else, and for the <prgn>build-stamp</prgn>
1756                     target to do the building and to <tt>touch
1757                     build-stamp</tt> on completion.  This is
1758                     especially useful if the build routine creates a
1759                     file or directory called <tt>build</tt>; in such a
1760                     case, <tt>build</tt> will need to be listed as
1761                     a phony target (i.e., as a dependency of the
1762                     <tt>.PHONY</tt> target).  See the documentation of
1763                     <prgn>make</prgn> for more information on phony
1764                     targets.
1765                 </footnote>
1766               </p>
1767             </item>
1768
1769             <tag><tt>build-arch</tt> (optional),
1770                  <tt>build-indep</tt> (optional)
1771             </tag>
1772             <item>
1773               <p>
1774                 A package may also provide both of the targets
1775                 <tt>build-arch</tt> and <tt>build-indep</tt>.
1776                 The <tt>build-arch</tt> target, if provided, should
1777                 perform all the configuration and compilation required
1778                 for producing all architecture-dependant binary packages
1779                 (those packages for which the body of the
1780                 <tt>Architecture</tt> field in <tt>debian/control</tt>
1781                 is not <tt>all</tt>).
1782                 Similarly, the <tt>build-indep</tt> target, if
1783                 provided, should perform all the configuration and
1784                 compilation required for producing all
1785                 architecture-independent binary packages
1786                 (those packages for which the body of the
1787                 <tt>Architecture</tt> field in <tt>debian/control</tt>
1788                 is <tt>all</tt>).
1789                 The <tt>build</tt> target should depend on those of the
1790                 targets <tt>build-arch</tt> and <tt>build-indep</tt> that
1791                 are provided in the rules file.
1792               </p>
1793
1794               <p>
1795                 If one or both of the targets <tt>build-arch</tt> and
1796                 <tt>build-indep</tt> are not provided, then invoking
1797                 <file>debian/rules</file> with one of the not-provided
1798                 targets as arguments should produce a exit status code
1799                 of 2.  Usually this is provided automatically by make
1800                 if the target is missing.
1801               </p>
1802
1803               <p>
1804                 The <tt>build-arch</tt> and <tt>build-indep</tt> targets
1805                 must not do anything that might require root privilege.
1806               </p>
1807             </item>
1808
1809             <tag><tt>binary</tt>, <tt>binary-arch</tt>,
1810               <tt>binary-indep</tt>
1811             </tag>
1812             <item>
1813               <p>
1814                 The <tt>binary</tt> target must be all that is
1815                 necessary for the user to build the binary package(s)
1816                 produced from this source package.  It is
1817                 split into two parts: <prgn>binary-arch</prgn> builds
1818                 the binary packages which are specific to a particular
1819                 architecture, and <tt>binary-indep</tt> builds
1820                 those which are not.
1821               </p>
1822               <p>
1823                 <tt>binary</tt> may be (and commonly is) a target with
1824                 no commands which simply depends on
1825                 <tt>binary-arch</tt> and <tt>binary-indep</tt>.
1826               </p>
1827               <p>
1828                 Both <tt>binary-*</tt> targets should depend on the
1829                 <tt>build</tt> target, or on the appropriate
1830                 <tt>build-arch</tt> or <tt>build-indep</tt> target, if
1831                 provided, so that the package is built if it has not
1832                 been already.  It should then create the relevant
1833                 binary package(s), using <prgn>dpkg-gencontrol</prgn> to
1834                 make their control files and <prgn>dpkg-deb</prgn> to
1835                 build them and place them in the parent of the top
1836                 level directory.
1837               </p>
1838
1839               <p>
1840                 Both the <tt>binary-arch</tt> and
1841                 <tt>binary-indep</tt> targets <em>must</em> exist.
1842                 If one of them has nothing to do (which will always be
1843                 the case if the source generates only a single binary
1844                 package, whether architecture-dependent or not), it
1845                 must still exist and must always succeed.
1846               </p>
1847
1848               <p>
1849                 The <tt>binary</tt> targets must be invoked as
1850                 root.<footnote>
1851                     The <prgn>fakeroot</prgn> package often allows one
1852                     to build a package correctly even without being
1853                     root.
1854                 </footnote>
1855               </p>
1856             </item>
1857
1858             <tag><tt>clean</tt></tag>
1859             <item>
1860               <p>
1861                 This must undo any effects that the <tt>build</tt>
1862                 and <tt>binary</tt> targets may have had, except
1863                 that it should leave alone any output files created in
1864                 the parent directory by a run of a <tt>binary</tt>
1865                 target.
1866               </p>
1867
1868               <p>
1869                 If a <tt>build</tt> file is touched at the end of
1870                 the <tt>build</tt> target, as suggested above, it
1871                 should be removed as the first action that
1872                 <tt>clean</tt> performs, so that running
1873                 <tt>build</tt> again after an interrupted
1874                 <tt>clean</tt> doesn't think that everything is
1875                 already done.
1876               </p>
1877
1878               <p>
1879                 The <tt>clean</tt> target may need to be
1880                 invoked as root if <tt>binary</tt> has been
1881                 invoked since the last <tt>clean</tt>, or if
1882                 <tt>build</tt> has been invoked as root (since
1883                 <tt>build</tt> may create directories, for
1884                 example).
1885               </p>
1886             </item>
1887
1888             <tag><tt>get-orig-source</tt> (optional)</tag>
1889             <item>
1890               <p>
1891                 This target fetches the most recent version of the
1892                 original source package from a canonical archive site
1893                 (via FTP or WWW, for example), does any necessary
1894                 rearrangement to turn it into the original source
1895                 tar file format described below, and leaves it in the
1896                 current directory.
1897               </p>
1898
1899               <p>
1900                 This target may be invoked in any directory, and
1901                 should take care to clean up any temporary files it
1902                 may have left.
1903               </p>
1904
1905               <p>
1906                 This target is optional, but providing it if
1907                 possible is a good idea.
1908               </p>
1909             </item>
1910
1911             <tag><tt>patch</tt> (optional)</tag>
1912             <item>
1913               <p>
1914                 This target performs whatever additional actions are
1915                 required to make the source ready for editing (unpacking
1916                 additional upstream archives, applying patches, etc.).
1917                 It is recommended to be implemented for any package where
1918                 <tt>dpkg-source -x</tt> does not result in source ready
1919                 for additional modification.  See
1920                 <ref id="readmesource">.
1921               </p>
1922             </item>
1923           </taglist>
1924
1925         <p>
1926           The <tt>build</tt>, <tt>binary</tt> and
1927           <tt>clean</tt> targets must be invoked with the current
1928           directory being the package's top-level directory.
1929         </p>
1930
1931
1932         <p>
1933           Additional targets may exist in <file>debian/rules</file>,
1934           either as published or undocumented interfaces or for the
1935           package's internal use.
1936         </p>
1937
1938         <p>
1939           The architectures we build on and build for are determined
1940           by <prgn>make</prgn> variables using the utility
1941           <qref id="pkg-dpkg-architecture"><prgn>dpkg-architecture</prgn></qref>.
1942           You can determine the
1943           Debian architecture and the GNU style architecture
1944           specification string for the build machine (the machine type
1945           we are building on) as well as for the host machine (the
1946           machine type we are building for).  Here is a list of
1947           supported <prgn>make</prgn> variables:
1948           <list compact="compact">
1949             <item>
1950                 <tt>DEB_*_ARCH</tt> (the Debian architecture)
1951             </item>
1952             <item>
1953                 <tt>DEB_*_GNU_TYPE</tt> (the GNU style architecture
1954                 specification string)
1955             </item>
1956             <item>
1957                 <tt>DEB_*_GNU_CPU</tt> (the CPU part of
1958                 <tt>DEB_*_GNU_TYPE</tt>)
1959             </item>
1960             <item>
1961                 <tt>DEB_*_GNU_SYSTEM</tt> (the System part of
1962                 <tt>DEB_*_GNU_TYPE</tt>)
1963           </list>
1964           where <tt>*</tt> is either <tt>BUILD</tt> for specification of
1965           the build machine or <tt>HOST</tt> for specification of the
1966           host machine.
1967         </p>
1968
1969         <p>
1970           Backward compatibility can be provided in the rules file
1971           by setting the needed variables to suitable default
1972           values; please refer to the documentation of
1973           <prgn>dpkg-architecture</prgn> for details.
1974         </p>
1975
1976         <p>
1977           It is important to understand that the <tt>DEB_*_ARCH</tt>
1978           string only determines which Debian architecture we are
1979           building on or for. It should not be used to get the CPU
1980           or system information; the GNU style variables should be
1981           used for that.
1982         </p>
1983
1984         <sect1 id="debianrules-options">
1985           <heading><file>debian/rules</file> and
1986             <tt>DEB_BUILD_OPTIONS</tt></heading>
1987
1988           <p>
1989             Supporting the standardized environment variable
1990             <tt>DEB_BUILD_OPTIONS</tt> is recommended.  This variable can
1991             contain several flags to change how a package is compiled and
1992             built.  Each flag must be in the form <var>flag</var> or
1993             <var>flag</var>=<var>options</var>.  If multiple flags are
1994             given, they must be separated by whitespace.<footnote>
1995               Some packages support any delimiter, but whitespace is the
1996               easiest to parse inside a makefile and avoids ambiguity with
1997               flag values that contain commas.
1998             </footnote>
1999             <var>flag</var> must start with a lowercase letter
2000             (<tt>a-z</tt>) and consist only of lowercase letters,
2001             numbers (<tt>0-9</tt>), and the characters
2002             <tt>-</tt> and <tt>_</tt> (hyphen and underscore).
2003             <var>options</var> must not contain whitespace.  The same
2004             tag should not be given multiple times with conflicting
2005             values.  Package maintainers may assume that
2006             <tt>DEB_BUILD_OPTIONS</tt> will not contain conflicting tags.
2007           </p>
2008
2009           <p>
2010             The meaning of the following tags has been standardized:
2011             <taglist>
2012               <tag>noopt</tag>
2013               <item>
2014                   The presence of this tag means that the package should
2015                   be compiled with a minimum of optimization.  For C
2016                   programs, it is best to add <tt>-O0</tt> to
2017                   <tt>CFLAGS</tt> (although this is usually the default).
2018                   Some programs might fail to build or run at this level
2019                   of optimization; it may be necessary to use
2020                   <tt>-O1</tt>, for example.
2021               </item>
2022               <tag>nostrip</tag>
2023               <item>
2024                   This tag means that the debugging symbols should not be
2025                   stripped from the binary during installation, so that
2026                   debugging information may be included in the package.
2027               </item>
2028               <tag>parallel=n</tag>
2029               <item>
2030                   This tag means that the package should be built using up
2031                   to <tt>n</tt> parallel processes if the package build
2032                   system supports this.<footnote>
2033                       Packages built with <tt>make</tt> can often implement
2034                       this by passing the <tt>-j</tt><var>n</var> option to
2035                       <tt>make</tt>.
2036                   </footnote>
2037                   If the package build system does not support parallel
2038                   builds, this string must be ignored.  If the package
2039                   build system only supports a lower level of concurrency
2040                   than <var>n</var>, the package should be built using as
2041                   many parallel processes as the package build system
2042                   supports.  It is up to the package maintainer to decide
2043                   whether the package build times are long enough and the
2044                   package build system is robust enough to make supporting
2045                   parallel builds worthwhile.
2046                </item>
2047             </taglist>
2048           </p>
2049
2050           <p>
2051             Unknown flags must be ignored by <file>debian/rules</file>.
2052           </p>
2053
2054           <p>
2055             The following makefile snippet is an example of how one may
2056             implement the build options; you will probably have to
2057             massage this example in order to make it work for your
2058             package.
2059             <example compact="compact">
2060 CFLAGS = -Wall -g
2061 INSTALL = install
2062 INSTALL_FILE    = $(INSTALL) -p    -o root -g root  -m  644
2063 INSTALL_PROGRAM = $(INSTALL) -p    -o root -g root  -m  755
2064 INSTALL_SCRIPT  = $(INSTALL) -p    -o root -g root  -m  755
2065 INSTALL_DIR     = $(INSTALL) -p -d -o root -g root  -m  755
2066
2067 ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
2068     CFLAGS += -O0
2069 else
2070     CFLAGS += -O2
2071 endif
2072 ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
2073     INSTALL_PROGRAM += -s
2074 endif
2075 ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
2076     NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
2077     MAKEFLAGS += -j$(NUMJOBS)
2078 endif
2079             </example>
2080           </p>
2081         </sect1>
2082       </sect>
2083
2084 <!-- FIXME: section pkg-srcsubstvars is the same as substvars -->
2085       <sect id="substvars">
2086         <heading>Variable substitutions: <file>debian/substvars</file></heading>
2087
2088         <p>
2089           When <prgn>dpkg-gencontrol</prgn>,
2090           <prgn>dpkg-genchanges</prgn> and <prgn>dpkg-source</prgn>
2091           generate control files they perform variable substitutions
2092           on their output just before writing it.  Variable
2093           substitutions have the form <tt>${<var>variable</var>}</tt>.
2094           The optional file <file>debian/substvars</file> contains
2095           variable substitutions to be used; variables can also be set
2096           directly from <file>debian/rules</file> using the <tt>-V</tt>
2097           option to the source packaging commands, and certain
2098           predefined variables are also available.
2099         </p>
2100
2101         <p>
2102           The <file>debian/substvars</file> file is usually generated and
2103           modified dynamically by <file>debian/rules</file> targets, in
2104           which case it must be removed by the <tt>clean</tt> target.
2105         </p>
2106
2107         <p>
2108           See <manref name="deb-substvars" section="5"> for full
2109           details about source variable substitutions, including the
2110           format of <file>debian/substvars</file>.</p>
2111       </sect>
2112
2113       <sect id="debianwatch">
2114         <heading>Optional upstream source location: <file>debian/watch</file></heading>
2115
2116         <p>
2117           This is an optional, recommended control file for the
2118           <tt>uscan</tt> utility which defines how to automatically
2119           scan ftp or http sites for newly available updates of the
2120           package. This is used by <url id="
2121           http://dehs.alioth.debian.org/"> and other Debian QA tools
2122           to help with quality control and maintenance of the
2123           distribution as a whole.
2124         </p>
2125
2126       </sect>
2127
2128       <sect id="debianfiles">
2129         <heading>Generated files list: <file>debian/files</file></heading>
2130
2131         <p>
2132           This file is not a permanent part of the source tree; it
2133           is used while building packages to record which files are
2134           being generated.  <prgn>dpkg-genchanges</prgn> uses it
2135           when it generates a <file>.changes</file> file.
2136         </p>
2137
2138         <p>
2139           It should not exist in a shipped source package, and so it
2140           (and any backup files or temporary files such as
2141           <file>files.new</file><footnote>
2142               <file>files.new</file> is used as a temporary file by
2143               <prgn>dpkg-gencontrol</prgn> and
2144               <prgn>dpkg-distaddfile</prgn> - they write a new
2145               version of <tt>files</tt> here before renaming it,
2146               to avoid leaving a corrupted copy if an error
2147               occurs.
2148           </footnote>) should be removed by the
2149           <tt>clean</tt> target.  It may also be wise to
2150           ensure a fresh start by emptying or removing it at the
2151           start of the <tt>binary</tt> target.
2152         </p>
2153
2154         <p>
2155           When <prgn>dpkg-gencontrol</prgn> is run for a binary
2156           package, it adds an entry to <file>debian/files</file> for the
2157           <file>.deb</file> file that will be created when <tt>dpkg-deb
2158           --build</tt> is run for that binary package.  So for most
2159           packages all that needs to be done with this file is to
2160           delete it in the <tt>clean</tt> target.
2161         </p>
2162
2163         <p>
2164           If a package upload includes files besides the source
2165           package and any binary packages whose control files were
2166           made with <prgn>dpkg-gencontrol</prgn> then they should be
2167           placed in the parent of the package's top-level directory
2168           and <prgn>dpkg-distaddfile</prgn> should be called to add
2169           the file to the list in <file>debian/files</file>.</p>
2170       </sect>
2171
2172       <sect id="embeddedfiles">
2173         <heading>Convenience copies of code</heading>
2174
2175         <p>
2176           Some software packages include in their distribution convenience
2177           copies of code from other software packages, generally so that
2178           users compiling from source don't have to download multiple
2179           packages.  Debian packages should not make use of these
2180           convenience copies unless the included package is explicitly
2181           intended to be used in this way.<footnote>
2182             For example, parts of the GNU build system work like this.
2183           </footnote>
2184           If the included code is already in the Debian archive in the
2185           form of a library, the Debian packaging should ensure that
2186           binary packages reference the libraries already in Debian and
2187           the convenience copy is not used.  If the included code is not
2188           already in Debian, it should be packaged separately as a
2189           prerequisite if possible.
2190           <footnote>
2191             Having multiple copies of the same code in Debian is
2192             inefficient, often creates either static linking or shared
2193             library conflicts, and, most importantly, increases the
2194             difficulty of handling security vulnerabilities in the
2195             duplicated code.
2196           </footnote>
2197         </p>
2198       </sect>
2199
2200       <sect id="readmesource">
2201         <heading>Source package handling:
2202           <file>debian/README.source</file></heading>
2203
2204         <p>
2205           If running <prgn>dpkg-source -x</prgn> on a source package
2206           doesn't produce the source of the package, ready for editing,
2207           and allow one to make changes and run
2208           <prgn>dpkg-buildpackage</prgn> to produce a modified package
2209           without taking any additional steps, creating a
2210           <file>debian/README.source</file> documentation file is
2211           recommended.  This file should explain how to do all of the
2212           following:
2213             <enumlist>
2214               <item>Generate the fully patched source, in a form ready for
2215               editing, that would be built to create Debian
2216               packages.  Doing this with a <tt>patch</tt> target in
2217               <file>debian/rules</file> is recommended; see
2218               <ref id="debianrules">.</item>
2219               <item>Modify the source and save those modifications so that
2220               they will be applied when building the package.</item>
2221               <item>Remove source modifications that are currently being
2222               applied when building the package.</item>
2223               <item>Optionally, document what steps are necessary to
2224               upgrade the Debian source package to a new upstream version,
2225               if applicable.</item>
2226             </enumlist>
2227           This explanation should include specific commands and mention
2228           any additional required Debian packages.  It should not assume
2229           familiarity with any specific Debian packaging system or patch
2230           management tools.
2231         </p>
2232
2233         <p>
2234           This explanation may refer to a documentation file installed by
2235           one of the package's build dependencies provided that the
2236           referenced documentation clearly explains these tasks and is not
2237           a general reference manual.
2238         </p>
2239
2240         <p>
2241           <file>debian/README.source</file> may also include any other
2242           information that would be helpful to someone modifying the
2243           source package.  Even if the package doesn't fit the above
2244           description, maintainers are encouraged to document in a
2245           <file>debian/README.source</file> file any source package with a
2246           particularly complex or unintuitive source layout or build
2247           system (for example, a package that builds the same source
2248           multiple times to generate different binary packages).
2249         </p>
2250       </sect>
2251     </chapt>
2252
2253
2254     <chapt id="controlfields">
2255       <heading>Control files and their fields</heading>
2256
2257       <p>
2258         The package management system manipulates data represented in
2259         a common format, known as <em>control data</em>, stored in
2260         <em>control files</em>.
2261         Control files are used for source packages, binary packages and
2262         the <file>.changes</file> files which control the installation
2263         of uploaded files<footnote>
2264             <prgn>dpkg</prgn>'s internal databases are in a similar
2265             format.
2266         </footnote>.
2267       </p>
2268
2269       <sect id="controlsyntax">
2270         <heading>Syntax of control files</heading>
2271
2272         <p>
2273           A control file consists of one or more paragraphs of
2274           fields<footnote>
2275                 The paragraphs are also sometimes referred to as stanzas.
2276           </footnote>.
2277           The paragraphs are separated by blank lines.  Some control
2278           files allow only one paragraph; others allow several, in
2279           which case each paragraph usually refers to a different
2280           package.  (For example, in source packages, the first
2281           paragraph refers to the source package, and later paragraphs
2282           refer to binary packages generated from the source.)
2283         </p>
2284
2285         <p>
2286           Each paragraph consists of a series of data fields; each
2287           field consists of the field name, followed by a colon and
2288           then the data/value associated with that field.  It ends at
2289           the end of the (logical) line.  Horizontal whitespace
2290           (spaces and tabs) may occur immediately before or after the
2291           value and is ignored there; it is conventional to put a
2292           single space after the colon.  For example, a field might
2293           be:
2294           <example compact="compact">
2295 Package: libc6
2296           </example>
2297           the field name is <tt>Package</tt> and the field value
2298           <tt>libc6</tt>.
2299         </p>
2300
2301         <p>
2302           Many fields' values may span several lines; in this case
2303           each continuation line must start with a space or a tab.
2304           Any trailing spaces or tabs at the end of individual
2305           lines of a field value are ignored. 
2306         </p>
2307
2308         <p>
2309           In fields where it is specified that lines may not wrap,
2310           only a single line of data is allowed and whitespace is not
2311           significant in a field body. Whitespace must not appear
2312           inside names (of packages, architectures, files or anything
2313           else) or version numbers, or between the characters of
2314           multi-character version relationships.
2315         </p>
2316
2317         <p>
2318           Field names are not case-sensitive, but it is usual to
2319           capitalize the field names using mixed case as shown below.
2320         </p>
2321
2322         <p>
2323           Blank lines, or lines consisting only of spaces and tabs,
2324           are not allowed within field values or between fields - that
2325           would mean a new paragraph.
2326         </p>
2327
2328       </sect>
2329
2330       <sect id="sourcecontrolfiles">
2331         <heading>Source package control files -- <file>debian/control</file></heading>
2332
2333         <p>
2334           The <file>debian/control</file> file contains the most vital
2335           (and version-independent) information about the source package
2336           and about the binary packages it creates.
2337         </p>
2338
2339         <p>
2340           The first paragraph of the control file contains information about
2341           the source package in general. The subsequent sets each describe a
2342           binary package that the source tree builds.
2343         </p>
2344
2345         <p>
2346           The fields in the general paragraph (the first one, for the source
2347           package) are:
2348
2349           <list compact="compact">
2350             <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2351             <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2352             <item><qref id="f-Uploaders"><tt>Uploaders</tt></qref></item>
2353             <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2354             <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2355             <item><qref id="sourcebinarydeps"><tt>Build-Depends</tt> et al</qref></item>
2356             <item><qref id="f-Standards-Version"><tt>Standards-Version</tt></qref> (recommended)</item>
2357             <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2358           </list>
2359         </p>
2360
2361         <p>
2362           The fields in the binary package paragraphs are:
2363
2364           <list compact="compact">
2365             <item><qref id="f-Package"><tt>Package</tt></qref> (mandatory)</item>
2366             <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2367             <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2368             <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2369             <item><qref id="f-Essential"><tt>Essential</tt></qref></item>
2370             <item><qref id="binarydeps"><tt>Depends</tt> et al</qref></item>
2371             <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2372             <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2373           </list>
2374         </p>
2375
2376         <p>
2377           The syntax and semantics of the fields are described below.
2378         </p>
2379
2380 <!-- stuff -->
2381
2382         <p>
2383           These fields are used by <prgn>dpkg-gencontrol</prgn> to
2384           generate control files for binary packages (see below), by
2385           <prgn>dpkg-genchanges</prgn> to generate the
2386           <tt>.changes</tt> file to accompany the upload, and by
2387           <prgn>dpkg-source</prgn> when it creates the
2388           <file>.dsc</file> source control file as part of a source
2389           archive. Many fields are permitted to span multiple lines in
2390           <file>debian/control</file> but not in any other control
2391           file. These tools are responsible for removing the line
2392           breaks from such fields when using fields from
2393           <file>debian/control</file> to generate other control files.
2394         </p>
2395
2396         <p>
2397           The fields here may contain variable references - their
2398           values will be substituted by <prgn>dpkg-gencontrol</prgn>,
2399           <prgn>dpkg-genchanges</prgn> or <prgn>dpkg-source</prgn>
2400           when they generate output control files.
2401           See <ref id="substvars"> for details.
2402         </p>
2403
2404       </sect>
2405
2406       <sect id="binarycontrolfiles">
2407         <heading>Binary package control files -- <file>DEBIAN/control</file></heading>
2408
2409         <p>
2410           The <file>DEBIAN/control</file> file contains the most vital
2411           (and version-dependent) information about a binary package.
2412         </p>
2413
2414         <p>
2415           The fields in this file are:
2416
2417           <list compact="compact">
2418             <item><qref id="f-Package"><tt>Package</tt></qref> (mandatory)</item>
2419             <item><qref id="f-Source"><tt>Source</tt></qref></item>
2420             <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2421             <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2422             <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2423             <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2424             <item><qref id="f-Essential"><tt>Essential</tt></qref></item>
2425             <item><qref id="binarydeps"><tt>Depends</tt> et al</qref></item>
2426             <item><qref id="f-Installed-Size"><tt>Installed-Size</tt></qref></item>
2427             <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2428             <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2429             <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2430           </list>
2431         </p>
2432       </sect>
2433
2434       <sect id="debiansourcecontrolfiles">
2435         <heading>Debian source control files -- <tt>.dsc</tt></heading>
2436
2437         <p>
2438           This file contains a series of fields, identified and
2439           separated just like the fields in the control file of
2440           a binary package.  The fields are listed below; their
2441           syntax is described above, in <ref id="pkg-controlfields">.
2442
2443         <list compact="compact">
2444           <item><qref id="f-Format"><tt>Format</tt></qref> (mandatory)</item>
2445           <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2446           <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2447           <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2448           <item><qref id="f-Uploaders"><tt>Uploaders</tt></qref></item>
2449           <item><qref id="f-Binary"><tt>Binary</tt></qref></item>
2450           <item><qref id="f-Architecture"><tt>Architecture</tt></qref></item>
2451           <item><qref id="sourcebinarydeps"><tt>Build-Depends</tt> et al</qref></item>
2452           <item><qref id="f-Standards-Version"><tt>Standards-Version</tt></qref> (recommended)</item>
2453           <item><qref id="f-Files"><tt>Files</tt></qref> (mandatory)</item>
2454           <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2455         </list>
2456         </p>
2457
2458         <p>
2459           The source package control file is generated by
2460           <prgn>dpkg-source</prgn> when it builds the source
2461           archive, from other files in the source package,
2462           described above.  When unpacking, it is checked against
2463           the files and directories in the other parts of the
2464           source package.
2465         </p>
2466
2467       </sect>
2468
2469       <sect id="debianchangesfiles">
2470         <heading>Debian changes files -- <file>.changes</file></heading>
2471
2472         <p>
2473           The .changes files are used by the Debian archive maintenance
2474           software to process updates to packages. They contain one
2475           paragraph which contains information from the
2476           <tt>debian/control</tt> file and other data about the
2477           source package gathered via <tt>debian/changelog</tt>
2478           and <tt>debian/rules</tt>.
2479         </p>
2480
2481         <p>
2482           The fields in this file are:
2483
2484           <list compact="compact">
2485             <item><qref id="f-Format"><tt>Format</tt></qref> (mandatory)</item>
2486             <item><qref id="f-Date"><tt>Date</tt></qref> (mandatory)</item>
2487             <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2488             <item><qref id="f-Binary"><tt>Binary</tt></qref> (mandatory)</item>
2489             <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2490             <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2491             <item><qref id="f-Distribution"><tt>Distribution</tt></qref> (mandatory)</item>
2492             <item><qref id="f-Urgency"><tt>Urgency</tt></qref> (recommended)</item>
2493             <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2494             <item><qref id="f-Changed-By"><tt>Changed-By</tt></qref></item>
2495             <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2496             <item><qref id="f-Closes"><tt>Closes</tt></qref></item>
2497             <item><qref id="f-Changes"><tt>Changes</tt></qref> (mandatory)</item>
2498             <item><qref id="f-Files"><tt>Files</tt></qref> (mandatory)</item>
2499           </list>
2500         </p>
2501       </sect>
2502
2503       <sect id="controlfieldslist">
2504         <heading>List of fields</heading>
2505
2506         <sect1 id="f-Source">
2507           <heading><tt>Source</tt></heading>
2508
2509           <p>
2510             This field identifies the source package name.
2511           </p>
2512
2513           <p>
2514             In <file>debian/control</file> or a <file>.dsc</file> file,
2515             this field must contain only the name of the source package.
2516           </p>
2517
2518           <p>
2519             In a binary package control file or a <file>.changes</file>
2520             file, the source package name may be followed by a version
2521             number in parentheses<footnote>
2522                 It is customary to leave a space after the package name
2523                 if a version number is specified.
2524             </footnote>.
2525             This version number may be omitted (and is, by
2526             <prgn>dpkg-gencontrol</prgn>) if it has the same value as
2527             the <tt>Version</tt> field of the binary package in
2528             question.  The field itself may be omitted from a binary
2529             package control file when the source package has the same
2530             name and version as the binary package.
2531           </p>
2532         </sect1>
2533
2534         <sect1 id="f-Maintainer">
2535           <heading><tt>Maintainer</tt></heading>
2536
2537           <p>
2538             The package maintainer's name and email address.  The name
2539             should come first, then the email address inside angle
2540             brackets <tt>&lt;&gt</tt> (in RFC822 format).
2541           </p>
2542
2543           <p>
2544             If the maintainer's name contains a full stop then the
2545             whole field will not work directly as an email address due
2546             to a misfeature in the syntax specified in RFC822; a
2547             program using this field as an address must check for this
2548             and correct the problem if necessary (for example by
2549             putting the name in round brackets and moving it to the
2550             end, and bringing the email address forward).
2551           </p>
2552         </sect1>
2553
2554         <sect1 id="f-Uploaders">
2555           <heading><tt>Uploaders</tt></heading>
2556
2557           <p>
2558             List of the names and email addresses of co-maintainers of
2559             the package, if any. If the package has other maintainers
2560             beside the one named in the 
2561             <qref id="f-Maintainer">Maintainer field</qref>, their
2562             names and email addresses should be listed here. The
2563             format is the same as that of the Maintainer tag, and
2564             multiple entries should be comma separated. Currently,
2565             this field is restricted to a single line of data.  This
2566             is an optional field.
2567           </p>
2568           <p>
2569             Any parser that interprets the Uploaders field in
2570             <file>debian/control</file> must permit it to span multiple
2571             lines.  Line breaks in an Uploaders field that spans multiple
2572             lines are not significant and the semantics of the field are
2573             the same as if the line breaks had not been present.
2574           </p>
2575         </sect1>
2576
2577         <sect1 id="f-Changed-By">
2578           <heading><tt>Changed-By</tt></heading>
2579
2580           <p>
2581             The name and email address of the person who changed the
2582             said package. Usually the name of the maintainer.
2583             All the rules for the Maintainer field apply here, too.
2584           </p>
2585         </sect1>
2586
2587         <sect1 id="f-Section">
2588           <heading><tt>Section</tt></heading>
2589
2590           <p>
2591             This field specifies an application area into which the package
2592             has been classified. See <ref id="subsections">.
2593           </p>
2594
2595           <p>
2596             When it appears in the <file>debian/control</file> file,
2597             it gives the value for the subfield of the same name in
2598             the <tt>Files</tt> field of the <file>.changes</file> file.
2599             It also gives the default for the same field in the binary
2600             packages.
2601           </p>
2602         </sect1>
2603
2604         <sect1 id="f-Priority">
2605           <heading><tt>Priority</tt></heading>
2606
2607           <p>
2608             This field represents how important that it is that the user
2609             have the package installed. See <ref id="priorities">.
2610           </p>
2611
2612           <p>
2613             When it appears in the <file>debian/control</file> file,
2614             it gives the value for the subfield of the same name in
2615             the <tt>Files</tt> field of the <file>.changes</file> file.
2616             It also gives the default for the same field in the binary
2617             packages.
2618           </p>
2619         </sect1>
2620
2621         <sect1 id="f-Package">
2622           <heading><tt>Package</tt></heading>
2623
2624           <p>
2625             The name of the binary package.
2626           </p>
2627
2628           <p>
2629             Package names must consist only of lower case letters
2630             (<tt>a-z</tt>), digits (<tt>0-9</tt>), plus (<tt>+</tt>)
2631             and minus (<tt>-</tt>) signs, and periods (<tt>.</tt>).
2632             They must be at least two characters long and must start
2633             with an alphanumeric character.
2634           </p>
2635         </sect1>
2636
2637         <sect1 id="f-Architecture">
2638           <heading><tt>Architecture</tt></heading>
2639
2640           <p>
2641             Depending on context and the control file used, the
2642             <tt>Architecture</tt> field can include the following sets of
2643             values:
2644             <list>
2645                 <item>A unique single word identifying a Debian machine
2646                       architecture, see <ref id="arch-spec">.
2647                 <item><tt>all</tt>, which indicates an
2648                       architecture-independent package.
2649                 <item><tt>any</tt>, which indicates a package available
2650                       for building on any architecture.
2651                 <item><tt>source</tt>, which indicates a source package.
2652             </list>
2653           </p>
2654
2655           <p>
2656             In the main <file>debian/control</file> file in the source
2657             package, or in the source package control file
2658             <file>.dsc</file>, one may specify a list of architectures
2659             separated by spaces, or the special values <tt>any</tt> or
2660             <tt>all</tt>.
2661           </p>
2662
2663           <p>
2664             Specifying <tt>any</tt> indicates that the source package
2665             isn't dependent on any particular architecture and should
2666             compile fine on any one. The produced binary package(s)
2667             will be specific to whatever the current build architecture
2668             is.<footnote>
2669                 This is the most often used setting, and is recommended
2670                 for new packages that aren't <tt>Architecture: all</tt>.
2671             </footnote>
2672           </p>
2673
2674           <p>
2675             Specifying a list of architectures indicates that the source
2676             will build an architecture-dependent package, and will only
2677             work correctly on the listed architectures.<footnote>
2678                 This is a setting used for a minority of cases where the
2679                 program is not portable. Generally, it should not be used
2680                 for new packages.
2681             </footnote>
2682           </p>
2683
2684           <p>
2685             In a <file>.changes</file> file, the <tt>Architecture</tt>
2686             field lists the architecture(s) of the package(s)
2687             currently being uploaded.  This will be a list; if the
2688             source for the package is also being uploaded, the special
2689             entry <tt>source</tt> is also present.
2690           </p>
2691
2692           <p>
2693             See <ref id="debianrules"> for information how to get the
2694             architecture for the build process.
2695           </p>
2696         </sect1>
2697
2698         <sect1 id="f-Essential">
2699           <heading><tt>Essential</tt></heading>
2700
2701           <p>
2702             This is a boolean field which may occur only in the
2703             control file of a binary package or in a per-package fields
2704             paragraph of a main source control data file.
2705           </p>
2706
2707           <p>
2708             If set to <tt>yes</tt> then the package management system
2709             will refuse to remove the package (upgrading and replacing
2710             it is still possible). The other possible value is <tt>no</tt>,
2711             which is the same as not having the field at all.
2712           </p>
2713         </sect1>
2714
2715         <sect1>
2716           <heading>Package interrelationship fields:
2717             <tt>Depends</tt>, <tt>Pre-Depends</tt>,
2718             <tt>Recommends</tt>, <tt>Suggests</tt>,
2719             <tt>Breaks</tt>, <tt>Conflicts</tt>,
2720             <tt>Provides</tt>, <tt>Replaces</tt>, <tt>Enhances</tt>
2721           </heading>
2722
2723           <p>
2724             These fields describe the package's relationships with
2725             other packages.  Their syntax and semantics are described
2726             in <ref id="relationships">.</p>
2727         </sect1>
2728
2729         <sect1 id="f-Standards-Version">
2730           <heading><tt>Standards-Version</tt></heading>
2731
2732           <p>
2733             The most recent version of the standards (the policy
2734             manual and associated texts) with which the package
2735             complies.
2736           </p>
2737
2738           <p>
2739             The version number has four components: major and minor
2740             version number and major and minor patch level.  When the
2741             standards change in a way that requires every package to
2742             change the major number will be changed.  Significant
2743             changes that will require work in many packages will be
2744             signaled by a change to the minor number.  The major patch
2745             level will be changed for any change to the meaning of the
2746             standards, however small; the minor patch level will be
2747             changed when only cosmetic, typographical or other edits
2748             are made which neither change the meaning of the document
2749             nor affect the contents of packages.
2750           </p>
2751
2752           <p>
2753             Thus only the first three components of the policy version
2754             are significant in the <em>Standards-Version</em> control
2755             field, and so either these three components or the all
2756             four components may be specified.<footnote>
2757                 In the past, people specified the full version number
2758                 in the Standards-Version field, for example "2.3.0.0".
2759                 Since minor patch-level changes don't introduce new
2760                 policy, it was thought it would be better to relax
2761                 policy and only require the first 3 components to be
2762                 specified, in this example "2.3.0".  All four
2763                 components may still be used if someone wishes to do so.
2764             </footnote>
2765           </p>
2766
2767         </sect1>
2768
2769         <sect1 id="f-Version">
2770           <heading><tt>Version</tt></heading>
2771
2772           <p>
2773             The version number of a package. The format is:
2774             [<var>epoch</var><tt>:</tt>]<var>upstream_version</var>[<tt>-</tt><var>debian_revision</var>]
2775           </p>
2776
2777           <p>
2778             The three components here are:
2779             <taglist>
2780               <tag><var>epoch</var></tag>
2781               <item>
2782                 <p>
2783                   This is a single (generally small) unsigned integer.  It
2784                   may be omitted, in which case zero is assumed.  If it is
2785                   omitted then the <var>upstream_version</var> may not
2786                   contain any colons.
2787                 </p>
2788
2789                 <p>
2790                   It is provided to allow mistakes in the version numbers
2791                   of older versions of a package, and also a package's
2792                   previous version numbering schemes, to be left behind.
2793                 </p>
2794               </item>
2795
2796               <tag><var>upstream_version</var></tag>
2797               <item>
2798                 <p>
2799                   This is the main part of the version number.  It is
2800                   usually the version number of the original ("upstream")
2801                   package from which the <file>.deb</file> file has been made,
2802                   if this is applicable.  Usually this will be in the same
2803                   format as that specified by the upstream author(s);
2804                   however, it may need to be reformatted to fit into the
2805                   package management system's format and comparison
2806                   scheme.
2807                 </p>
2808
2809                 <p>
2810                   The comparison behavior of the package management system
2811                   with respect to the <var>upstream_version</var> is
2812                   described below.  The <var>upstream_version</var>
2813                   portion of the version number is mandatory.
2814                 </p>
2815
2816                 <p>
2817                   The <var>upstream_version</var> may contain only
2818                   alphanumerics<footnote>
2819                         Alphanumerics are <tt>A-Za-z0-9</tt> only.
2820                   </footnote>
2821                   and the characters <tt>.</tt> <tt>+</tt> <tt>-</tt>
2822                   <tt>:</tt> <tt>~</tt> (full stop, plus, hyphen, colon,
2823                   tilde) and should start with a digit.  If there is no
2824                   <var>debian_revision</var> then hyphens are not allowed;
2825                   if there is no <var>epoch</var> then colons are not
2826                   allowed.
2827                 </p>
2828               </item>
2829
2830               <tag><var>debian_revision</var></tag>
2831               <item>
2832                 <p>
2833                   This part of the version number specifies the version of
2834                   the Debian package based on the upstream version.  It
2835                   may contain only alphanumerics and the characters
2836                   <tt>+</tt> <tt>.</tt> <tt>~</tt> (plus, full stop,
2837                   tilde) and is compared in the same way as the
2838                   <var>upstream_version</var> is.
2839                 </p>
2840
2841                 <p>
2842                   It is optional; if it isn't present then the
2843                   <var>upstream_version</var> may not contain a hyphen.
2844                   This format represents the case where a piece of
2845                   software was written specifically to be turned into a
2846                   Debian package, and so there is only one "debianisation"
2847                   of it and therefore no revision indication is required.
2848                 </p>
2849
2850                 <p>
2851                   It is conventional to restart the
2852                   <var>debian_revision</var> at <tt>1</tt> each time the
2853                   <var>upstream_version</var> is increased.
2854                 </p>
2855
2856                 <p>
2857                   The package management system will break the version
2858                   number apart at the last hyphen in the string (if there
2859                   is one) to determine the <var>upstream_version</var> and
2860                   <var>debian_revision</var>.  The absence of a
2861                   <var>debian_revision</var> is equivalent to a
2862                   <var>debian_revision</var> of <tt>0</tt>.
2863                 </p>
2864               </item>
2865             </taglist>
2866           </p>
2867
2868           <p>
2869             When comparing two version numbers, first the <var>epoch</var>
2870             of each are compared, then the <var>upstream_version</var> if
2871             <var>epoch</var> is equal, and then <var>debian_revision</var>
2872             if <var>upstream_version</var> is also equal.
2873             <var>epoch</var> is compared numerically.  The
2874             <var>upstream_version</var> and <var>debian_revision</var>
2875             parts are compared by the package management system using the
2876             following algorithm:
2877           </p>
2878
2879           <p>
2880             The strings are compared from left to right.
2881           </p>
2882
2883           <p>
2884             First the initial part of each string consisting entirely of
2885             non-digit characters is determined.  These two parts (one of
2886             which may be empty) are compared lexically.  If a difference
2887             is found it is returned.  The lexical comparison is a
2888             comparison of ASCII values modified so that all the letters
2889             sort earlier than all the non-letters and so that a tilde
2890             sorts before anything, even the end of a part.  For example,
2891             the following parts are in sorted order from earliest to
2892             latest: <tt>~~</tt>, <tt>~~a</tt>, <tt>~</tt>, the empty part,
2893             <tt>a</tt>.<footnote>
2894               One common use of <tt>~</tt> is for upstream pre-releases.
2895               For example, <tt>1.0~beta1~svn1245</tt> sorts earlier than
2896               <tt>1.0~beta1</tt>, which sorts earlier than <tt>1.0</tt>.
2897             </footnote>
2898           </p>
2899
2900           <p>
2901             Then the initial part of the remainder of each string which
2902             consists entirely of digit characters is determined.  The
2903             numerical values of these two parts are compared, and any
2904             difference found is returned as the result of the comparison.
2905             For these purposes an empty string (which can only occur at
2906             the end of one or both version strings being compared) counts
2907             as zero.
2908           </p>
2909
2910           <p>
2911             These two steps (comparing and removing initial non-digit
2912             strings and initial digit strings) are repeated until a
2913             difference is found or both strings are exhausted.
2914           </p>
2915
2916           <p>
2917             Note that the purpose of epochs is to allow us to leave behind
2918             mistakes in version numbering, and to cope with situations
2919             where the version numbering scheme changes.  It is
2920             <em>not</em> intended to cope with version numbers containing
2921             strings of letters which the package management system cannot
2922             interpret (such as <tt>ALPHA</tt> or <tt>pre-</tt>), or with
2923             silly orderings (the author of this manual has heard of a
2924             package whose versions went <tt>1.1</tt>, <tt>1.2</tt>,
2925             <tt>1.3</tt>, <tt>1</tt>, <tt>2.1</tt>, <tt>2.2</tt>,
2926             <tt>2</tt> and so forth).
2927           </p>
2928         </sect1>
2929
2930         <sect1 id="f-Description">
2931           <heading><tt>Description</tt></heading>
2932
2933           <p>
2934             In a source or binary control file, the <tt>Description</tt>
2935             field contains a description of the binary package, consisting
2936             of two parts, the synopsis or the short description, and the
2937             long description. The field's format is as follows:
2938           </p>
2939
2940           <p>
2941 <example>
2942         Description: &lt;single line synopsis&gt;
2943          &lt;extended description over several lines&gt;
2944 </example>
2945           </p>
2946
2947           <p>
2948             The lines in the extended description can have these formats:
2949           </p>
2950
2951           <p><list>
2952
2953             <item>
2954               Those starting with a single space are part of a paragraph.
2955               Successive lines of this form will be word-wrapped when
2956               displayed. The leading space will usually be stripped off.
2957             </item>
2958
2959             <item>
2960               Those starting with two or more spaces. These will be
2961               displayed verbatim. If the display cannot be panned
2962               horizontally, the displaying program will line wrap them "hard"
2963               (i.e., without taking account of word breaks). If it can they
2964               will be allowed to trail off to the right. None, one or two
2965               initial spaces may be deleted, but the number of spaces
2966               deleted from each line will be the same (so that you can have
2967               indenting work correctly, for example).
2968             </item>
2969
2970             <item>
2971               Those containing a single space followed by a single full stop
2972               character. These are rendered as blank lines. This is the
2973               <em>only</em> way to get a blank line<footnote>
2974                 Completely empty lines will not be rendered as blank lines.
2975                 Instead, they will cause the parser to think you're starting
2976                 a whole new record in the control file, and will therefore
2977                 likely abort with an error.
2978               </footnote>.
2979             </item>
2980
2981             <item>
2982               Those containing a space, a full stop and some more characters.
2983               These are for future expansion. Do not use them.
2984             </item>
2985
2986           </list></p>
2987
2988           <p>
2989             Do not use tab characters.  Their effect is not predictable.
2990           </p>
2991
2992           <p>
2993             See <ref id="descriptions"> for further information on this.
2994           </p>
2995
2996           <p>
2997             In a <file>.changes</file> file, the <tt>Description</tt> field
2998             contains a summary of the descriptions for the packages being
2999             uploaded.
3000           </p>
3001
3002           <p>
3003             The part of the field before the first newline is empty;
3004             thereafter each line has the name of a binary package and
3005             the summary description line from that binary package.
3006             Each line is indented by one space.
3007           </p>
3008
3009         </sect1>
3010
3011         <sect1 id="f-Distribution">
3012           <heading><tt>Distribution</tt></heading>
3013
3014           <p>
3015             In a <file>.changes</file> file or parsed changelog output
3016             this contains the (space-separated) name(s) of the
3017             distribution(s) where this version of the package should
3018             be installed.  Valid distributions are determined by the
3019             archive maintainers.<footnote>
3020                 Current distribution names are:
3021                 <taglist compact="compact">
3022                   <tag><em>stable</em></tag>
3023                   <item>
3024                       This is the current "released" version of Debian
3025                       GNU/Linux.  Once the distribution is
3026                       <em>stable</em> only security fixes and other
3027                       major bug fixes are allowed. When changes are
3028                       made to this distribution, the release number is
3029                       increased (for example: 2.2r1 becomes 2.2r2 then
3030                       2.2r3, etc).
3031                   </item>
3032
3033                   <tag><em>unstable</em></tag>
3034                   <item>
3035                       This distribution value refers to the
3036                       <em>developmental</em> part of the Debian
3037                       distribution tree. New packages, new upstream
3038                       versions of packages and bug fixes go into the
3039                       <em>unstable</em> directory tree. Download from
3040                       this distribution at your own risk.
3041                   </item>
3042
3043                   <tag><em>testing</em></tag>
3044                   <item>
3045                       This distribution value refers to the
3046                       <em>testing</em> part of the Debian distribution
3047                       tree.  It receives its packages from the
3048                       unstable distribution after a short time lag to
3049                       ensure that there are no major issues with the
3050                       unstable packages.  It is less prone to breakage
3051                       than unstable, but still risky.  It is not
3052                       possible to upload packages directly to
3053                       <em>testing</em>.
3054                   </item>
3055
3056                   <tag><em>frozen</em></tag>
3057                   <item>
3058                       From time to time, the <em>testing</em>
3059                       distribution enters a state of "code-freeze" in
3060                       anticipation of release as a <em>stable</em>
3061                       version. During this period of testing only
3062                       fixes for existing or newly-discovered bugs will
3063                       be allowed.  The exact details of this stage are
3064                       determined by the Release Manager.
3065                   </item>
3066
3067                   <tag><em>experimental</em></tag>
3068                   <item>
3069                       The packages with this distribution value are
3070                       deemed by their maintainers to be high
3071                       risk. Oftentimes they represent early beta or
3072                       developmental packages from various sources that
3073                       the maintainers want people to try, but are not
3074                       ready to be a part of the other parts of the
3075                       Debian distribution tree. Download at your own
3076                       risk.
3077                   </item>
3078                 </taglist>
3079
3080                 <p>
3081                   You should list <em>all</em> distributions that the
3082                   package should be installed into.
3083                 </p>
3084
3085                 <p>
3086                   More information is available in the Debian Developer's
3087                   Reference, section "The Debian archive".
3088                 </p>
3089             </footnote>
3090           </p>
3091         </sect1>
3092
3093         <sect1 id="f-Date">
3094           <heading><tt>Date</tt></heading>
3095
3096           <p>
3097             This field includes the date the package was built or last edited.
3098           </p>
3099
3100           <p>
3101             The value of this field is usually extracted from the
3102             <file>debian/changelog</file> file - see
3103             <ref id="dpkgchangelog">).
3104           </p>
3105         </sect1>
3106
3107         <sect1 id="f-Format">
3108           <heading><tt>Format</tt></heading>
3109
3110           <p>
3111             This field specifies a format revision for the file.
3112             The most current format described in the Policy Manual
3113             is version <strong>1.5</strong>.  The syntax of the
3114             format value is the same as that of a package version
3115             number except that no epoch or Debian revision is allowed
3116             - see <ref id="f-Version">.
3117           </p>
3118         </sect1>
3119
3120         <sect1 id="f-Urgency">
3121           <heading><tt>Urgency</tt></heading>
3122
3123           <p>
3124             This is a description of how important it is to upgrade to
3125             this version from previous ones.  It consists of a single
3126             keyword taking one of the values <tt>low</tt>,
3127             <tt>medium</tt>, <tt>high</tt>, <tt>emergency</tt>, or
3128             <tt>critical</tt><footnote>
3129               Other urgency values are supported with configuration
3130               changes in the archive software but are not used in Debian.
3131               The urgency affects how quickly a package will be considered
3132               for inclusion into the <tt>testing</tt> distribution and
3133               gives an indication of the importance of any fixes included
3134               in the upload.  <tt>Emergency</tt> and <tt>critical</tt> are
3135               treated as synonymous.
3136             </footnote> (not case-sensitive) followed by an optional
3137             commentary (separated by a space) which is usually in
3138             parentheses.  For example:
3139
3140             <example>
3141   Urgency: low (HIGH for users of diversions)
3142             </example>
3143
3144           </p>
3145
3146           <p>
3147             The value of this field is usually extracted from the
3148             <file>debian/changelog</file> file - see
3149             <ref id="dpkgchangelog">.
3150           </p>
3151         </sect1>
3152
3153         <sect1 id="f-Changes">
3154           <heading><tt>Changes</tt></heading>
3155
3156           <p>
3157             This field contains the human-readable changes data, describing
3158             the differences between the last version and the current one.
3159           </p>
3160
3161           <p>
3162             There should be nothing in this field before the first
3163             newline; all the subsequent lines must be indented by at
3164             least one space; blank lines must be represented by a line
3165             consisting only of a space and a full stop.
3166           </p>
3167
3168           <p>
3169             The value of this field is usually extracted from the
3170             <file>debian/changelog</file> file - see
3171             <ref id="dpkgchangelog">).
3172           </p>
3173
3174           <p>
3175             Each version's change information should be preceded by a
3176             "title" line giving at least the version, distribution(s)
3177             and urgency, in a human-readable way.
3178           </p>
3179
3180           <p>
3181             If data from several versions is being returned the entry
3182             for the most recent version should be returned first, and
3183             entries should be separated by the representation of a
3184             blank line (the "title" line may also be followed by the
3185             representation of blank line).
3186           </p>
3187         </sect1>
3188
3189         <sect1 id="f-Binary">
3190           <heading><tt>Binary</tt></heading>
3191
3192           <p>
3193             This field is a list of binary packages.
3194           </p>
3195
3196           <p>
3197             When it appears in the <file>.dsc</file> file it is the list
3198             of binary packages which a source package can produce.  It
3199             does not necessarily produce all of these binary packages
3200             for every architecture.  The source control file doesn't
3201             contain details of which architectures are appropriate for
3202             which of the binary packages.
3203           </p>
3204
3205           <p>
3206             When it appears in a <file>.changes</file> file it lists the
3207             names of the binary packages actually being uploaded.
3208           </p>
3209
3210           <p>
3211             The syntax is a list of binary packages separated by
3212             commas<footnote>
3213                 A space after each comma is conventional.
3214             </footnote>. Currently the packages must be separated using
3215             only spaces in the <file>.changes</file> file.
3216           </p>
3217         </sect1>
3218
3219         <sect1 id="f-Installed-Size">
3220           <heading><tt>Installed-Size</tt></heading>
3221
3222           <p>
3223             This field appears in the control files of binary
3224             packages, and in the <file>Packages</file> files.  It gives
3225             the total amount of disk space required to install the
3226             named package.
3227           </p>
3228
3229           <p>
3230             The disk space is represented in kilobytes as a simple
3231             decimal number.
3232           </p>
3233         </sect1>
3234
3235         <sect1 id="f-Files">
3236           <heading><tt>Files</tt></heading>
3237
3238           <p>
3239             This field contains a list of files with information about
3240             each one.  The exact information and syntax varies with
3241             the context.  In all cases the part of the field
3242             contents on the same line as the field name is empty.  The
3243             remainder of the field is one line per file, each line
3244             being indented by one space and containing a number of
3245             sub-fields separated by spaces.
3246           </p>
3247
3248           <p>
3249             In the <file>.dsc</file> file, each line contains the MD5
3250             checksum, size and filename of the tar file and (if applicable)
3251             diff file which make up the remainder of the source
3252             package<footnote>
3253                 That is, the parts which are not the <tt>.dsc</tt>.
3254             </footnote>.
3255             The exact forms of the filenames are described
3256             in <ref id="pkg-sourcearchives">.
3257           </p>
3258
3259           <p>
3260             In the <file>.changes</file> file this contains one line per
3261             file being uploaded.  Each line contains the MD5 checksum,
3262             size, section and priority and the filename.
3263             The <qref id="f-Section">section</qref>
3264             and <qref id="f-Priority">priority</qref>
3265             are the values of the corresponding fields in
3266             the main source control file.  If no section or priority is
3267             specified then <tt>-</tt> should be used, though section
3268             and priority values must be specified for new packages to
3269             be installed properly.
3270           </p>
3271
3272           <p>
3273             The special value <tt>byhand</tt> for the section in a
3274             <tt>.changes</tt> file indicates that the file in question
3275             is not an ordinary package file and must by installed by
3276             hand by the distribution maintainers.  If the section is
3277             <tt>byhand</tt> the priority should be <tt>-</tt>.
3278           </p>
3279
3280           <p>
3281             If a new Debian revision of a package is being shipped and
3282             no new original source archive is being distributed the
3283             <tt>.dsc</tt> must still contain the <tt>Files</tt> field
3284             entry for the original source archive
3285             <file><var>package</var>-<var>upstream-version</var>.orig.tar.gz</file>,
3286             but the <file>.changes</file> file should leave it out.  In
3287             this case the original source archive on the distribution
3288             site must match exactly, byte-for-byte, the original
3289             source archive which was used to generate the
3290             <file>.dsc</file> file and diff which are being uploaded.</p>
3291         </sect1>
3292
3293         <sect1 id="f-Closes">
3294           <heading><tt>Closes</tt></heading>
3295
3296           <p>
3297             A space-separated list of bug report numbers that the upload
3298             governed by the .changes file closes.
3299           </p>
3300         </sect1>
3301
3302         <sect1 id="f-Homepage">
3303           <heading><tt>Homepage</tt></heading>
3304
3305           <p>
3306             The URL of the web site for this package, preferably (when
3307             applicable) the site from which the original source can be
3308             obtained and any additional upstream documentation or
3309             information may be found.  The content of this field is a
3310             simple URL without any surrounding characters such as
3311             <tt>&lt;&gt;</tt>.
3312           </p>
3313         </sect1>
3314
3315       </sect>
3316
3317       <sect>
3318         <heading>User-defined fields</heading>
3319
3320         <p>
3321           Additional user-defined fields may be added to the
3322           source package control file.  Such fields will be
3323           ignored, and not copied to (for example) binary or
3324           source package control files or upload control files.
3325         </p>
3326
3327         <p>
3328           If you wish to add additional unsupported fields to
3329           these output files you should use the mechanism
3330           described here.
3331         </p>
3332
3333         <p>
3334           Fields in the main source control information file with
3335           names starting <tt>X</tt>, followed by one or more of
3336           the letters <tt>BCS</tt> and a hyphen <tt>-</tt>, will
3337           be copied to the output files.  Only the part of the
3338           field name after the hyphen will be used in the output
3339           file.  Where the letter <tt>B</tt> is used the field
3340           will appear in binary package control files, where the
3341           letter <tt>S</tt> is used in source package control
3342           files and where <tt>C</tt> is used in upload control
3343           (<tt>.changes</tt>) files.
3344         </p>
3345
3346         <p>
3347           For example, if the main source information control file
3348           contains the field
3349           <example>
3350   XBS-Comment: I stand between the candle and the star.
3351           </example>
3352           then the binary and source package control files will contain the
3353           field
3354           <example>
3355   Comment: I stand between the candle and the star.
3356           </example>
3357         </p>
3358
3359       </sect>
3360
3361     </chapt>
3362
3363
3364     <chapt id="maintainerscripts">
3365       <heading>Package maintainer scripts and installation procedure</heading>
3366
3367       <sect>
3368         <heading>Introduction to package maintainer scripts</heading>
3369
3370         <p>
3371           It is possible to supply scripts as part of a package which
3372           the package management system will run for you when your
3373           package is installed, upgraded or removed.
3374         </p>
3375
3376         <p>
3377           These scripts are the files <prgn>preinst</prgn>,
3378           <prgn>postinst</prgn>, <prgn>prerm</prgn> and
3379           <prgn>postrm</prgn> in the control area of the package.
3380           They must be proper executable files; if they are scripts
3381           (which is recommended), they must start with the usual
3382           <tt>#!</tt> convention.  They should be readable and
3383           executable by anyone, and must not be world-writable.
3384         </p>
3385
3386         <p>
3387           The package management system looks at the exit status from
3388           these scripts.  It is important that they exit with a
3389           non-zero status if there is an error, so that the package
3390           management system can stop its processing.  For shell
3391           scripts this means that you <em>almost always</em> need to
3392           use <tt>set -e</tt> (this is usually true when writing shell
3393           scripts, in fact).  It is also important, of course, that
3394           they don't exit with a non-zero status if everything went
3395           well.
3396         </p>
3397
3398         <p>
3399           Additionally, packages interacting with users using
3400           <tt>debconf</tt> in the <prgn>postinst</prgn> script should
3401           install a <prgn>config</prgn> script  in the control area,
3402           see <ref id="maintscriptprompt"> for details.
3403         </p>
3404
3405         <p>
3406           When a package is upgraded a combination of the scripts from
3407           the old and new packages is called during the upgrade
3408           procedure.  If your scripts are going to be at all
3409           complicated you need to be aware of this, and may need to
3410           check the arguments to your scripts.
3411         </p>
3412
3413         <p>
3414           Broadly speaking the <prgn>preinst</prgn> is called before
3415           (a particular version of) a package is installed, and the
3416           <prgn>postinst</prgn> afterwards; the <prgn>prerm</prgn>
3417           before (a version of) a package is removed and the
3418           <prgn>postrm</prgn> afterwards.
3419         </p>
3420
3421         <p>
3422           Programs called from maintainer scripts should not normally
3423           have a path prepended to them. Before installation is
3424           started, the package management system checks to see if the
3425           programs <prgn>ldconfig</prgn>,
3426           <prgn>start-stop-daemon</prgn>, <prgn>install-info</prgn>,
3427           and <prgn>update-rc.d</prgn> can be found via the
3428           <tt>PATH</tt> environment variable. Those programs, and any
3429           other program that one would expect to be in the
3430           <tt>PATH</tt>, should thus be invoked without an absolute
3431           pathname. Maintainer scripts should also not reset the
3432           <tt>PATH</tt>, though they might choose to modify it by
3433           prepending or appending package-specific directories. These
3434           considerations really apply to all shell scripts.</p>
3435       </sect>
3436
3437       <sect id="idempotency">
3438         <heading>Maintainer scripts idempotency</heading>
3439
3440         <p>
3441           It is necessary for the error recovery procedures that the
3442           scripts be idempotent.  This means that if it is run
3443           successfully, and then it is called again, it doesn't bomb
3444           out or cause any harm, but just ensures that everything is
3445           the way it ought to be.  If the first call failed, or
3446           aborted half way through for some reason, the second call
3447           should merely do the things that were left undone the first
3448           time, if any, and exit with a success status if everything
3449           is OK.<footnote>
3450               This is so that if an error occurs, the user interrupts
3451               <prgn>dpkg</prgn> or some other unforeseen circumstance
3452               happens you don't leave the user with a badly-broken
3453               package when <prgn>dpkg</prgn> attempts to repeat the
3454               action.
3455           </footnote>
3456         </p>
3457       </sect>
3458
3459       <sect id="controllingterminal">
3460         <heading>Controlling terminal for maintainer scripts</heading>
3461
3462         <p>
3463           The maintainer scripts are guaranteed to run with a
3464           controlling terminal and can interact with the user.
3465           Because these scripts may be executed with standard output
3466           redirected into a pipe for logging purposes, Perl scripts
3467           should set unbuffered output by setting <tt>$|=1</tt> so
3468           that the output is printed immediately rather than being
3469           buffered.
3470         </p>
3471       </sect>
3472       <sect id="exitstatus">
3473         <heading>Exit status</heading>
3474
3475         <p>
3476           Each script must return a zero exit status for
3477           success, or a nonzero one for failure, since the package
3478           management system looks for the exit status of these scripts
3479           and determines what action to take next based on that datum.
3480         </p>
3481       </sect>
3482
3483       <sect id="mscriptsinstact"><heading>Summary of ways maintainer
3484           scripts are called
3485         </heading>
3486
3487         <p>
3488           <list compact="compact">
3489             <item>
3490               <var>new-preinst</var> <tt>install</tt>
3491             </item>
3492             <item>
3493               <var>new-preinst</var> <tt>install</tt> <var>old-version</var>
3494             </item>
3495             <item>
3496                 <var>new-preinst</var> <tt>upgrade</tt> <var>old-version</var>
3497             </item>
3498             <item>
3499                 <var>old-preinst</var> <tt>abort-upgrade</tt>
3500                 <var>new-version</var>
3501             </item>
3502           </list>
3503
3504         <p>
3505           <list compact="compact">
3506             <item>
3507                 <var>postinst</var> <tt>configure</tt>
3508                 <var>most-recently-configured-version</var>
3509             </item>
3510             <item>
3511                 <var>old-postinst</var> <tt>abort-upgrade</tt>
3512                 <var>new-version</var>
3513             </item>
3514             <item>
3515                 <var>conflictor's-postinst</var> <tt>abort-remove</tt>
3516                 <tt>in-favour</tt> <var>package</var>
3517                 <var>new-version</var>
3518             </item>
3519             <item>
3520                 <var>postinst</var> <tt>abort-remove</tt>
3521             </item>
3522             <item>
3523                 <var>deconfigured's-postinst</var>
3524                 <tt>abort-deconfigure</tt> <tt>in-favour</tt>
3525                 <var>failed-install-package</var> <var>version</var>
3526                 [<tt>removing</tt> <var>conflicting-package</var>
3527                 <var>version</var>]
3528             </item>
3529           </list>
3530
3531         <p>
3532           <list compact="compact">
3533             <item>
3534                 <var>prerm</var> <tt>remove</tt>
3535             </item>
3536             <item>
3537                 <var>old-prerm</var> <tt>upgrade</tt>
3538                 <var>new-version</var>
3539             </item>
3540             <item>
3541                 <var>new-prerm</var> <tt>failed-upgrade</tt>
3542                 <var>old-version</var>
3543             </item>
3544             <item>
3545                 <var>conflictor's-prerm</var> <tt>remove</tt>
3546                 <tt>in-favour</tt> <var>package</var>
3547                 <var>new-version</var>
3548             </item>
3549             <item>
3550                 <var>deconfigured's-prerm</var> <tt>deconfigure</tt>
3551                 <tt>in-favour</tt> <var>package-being-installed</var>
3552                 <var>version</var> [<tt>removing</tt>
3553                 <var>conflicting-package</var>
3554                 <var>version</var>]
3555             </item>
3556           </list>
3557
3558         <p>
3559           <list compact="compact">
3560             <item>
3561                 <var>postrm</var> <tt>remove</tt>
3562             </item>
3563             <item>
3564                 <var>postrm</var> <tt>purge</tt>
3565             </item>
3566             <item>
3567                 <var>old-postrm</var> <tt>upgrade</tt>
3568                 <var>new-version</var>
3569             </item>
3570             <item>
3571                 <var>new-postrm</var> <tt>failed-upgrade</tt>
3572                 <var>old-version</var>
3573             </item>
3574             <item>
3575                 <var>new-postrm</var> <tt>abort-install</tt>
3576             </item>
3577             <item>
3578                 <var>new-postrm</var> <tt>abort-install</tt>
3579                 <var>old-version</var>
3580             </item>
3581             <item>
3582                 <var>new-postrm</var> <tt>abort-upgrade</tt>
3583                 <var>old-version</var>
3584             </item>
3585             <item>
3586                 <var>disappearer's-postrm</var> <tt>disappear</tt>
3587                 <var>overwriter</var>
3588                 <var>overwriter-version</var>
3589             </item>
3590           </list>
3591         </p>
3592
3593
3594       <sect id="unpackphase">
3595         <heading>Details of unpack phase of installation or upgrade</heading>
3596
3597         <p>
3598           The procedure on installation/upgrade/overwrite/disappear
3599           (i.e., when running <tt>dpkg --unpack</tt>, or the unpack
3600           stage of <tt>dpkg --install</tt>) is as follows.  In each
3601           case, if a major error occurs (unless listed below) the
3602           actions are, in general, run backwards - this means that the
3603           maintainer scripts are run with different arguments in
3604           reverse order.  These are the "error unwind" calls listed
3605           below.
3606
3607           <enumlist>
3608             <item>
3609                 <enumlist>
3610                   <item>
3611                       If a version of the package is already installed, call
3612                       <example compact="compact">
3613 <var>old-prerm</var> upgrade <var>new-version</var>
3614                       </example>
3615                   </item>
3616                   <item>
3617                       If the script runs but exits with a non-zero
3618                       exit status, <prgn>dpkg</prgn> will attempt:
3619                       <example compact="compact">
3620 <var>new-prerm</var> failed-upgrade <var>old-version</var>
3621                       </example>
3622                       If this works, the upgrade continues. If this
3623                       does not work, the error unwind:
3624                       <example compact="compact">
3625 <var>old-postinst</var> abort-upgrade <var>new-version</var>
3626                       </example>
3627                       If this works, then the old-version is
3628                       "Installed", if not, the old version is in a
3629                       "Failed-Config" state.
3630                   </item>
3631                 </enumlist>
3632             </item>
3633
3634             <item>
3635                 If a "conflicting" package is being removed at the same time,
3636                 or if any package will be broken (due to <tt>Breaks</tt>):
3637                 <enumlist>
3638                   <item>
3639                       If <tt>--auto-deconfigure</tt> is
3640                       specified, call, for each package to be deconfigured
3641                       due to <tt>Breaks</tt>:
3642                       <example compact="compact">
3643 <var>deconfigured's-prerm</var> deconfigure \
3644   in-favour <var>package-being-installed</var> <var>version</var>
3645                       </example>
3646                       Error unwind:
3647                       <example compact="compact">
3648 <var>deconfigured's-postinst</var> abort-deconfigure \
3649   in-favour <var>package-being-installed-but-failed</var> <var>version</var>
3650                       </example>
3651                       The deconfigured packages are marked as
3652                       requiring configuration, so that if
3653                       <tt>--install</tt> is used they will be
3654                       configured again if possible.
3655                   </item>
3656                   <item>
3657                       If any packages depended on a conflicting
3658                       package being removed and <tt>--auto-deconfigure</tt> is
3659                       specified, call, for each such package:
3660                       <example compact="compact">
3661 <var>deconfigured's-prerm</var> deconfigure \
3662   in-favour <var>package-being-installed</var> <var>version</var> \
3663     removing <var>conflicting-package</var> <var>version</var>
3664                       </example>
3665                       Error unwind:
3666                       <example compact="compact">
3667 <var>deconfigured's-postinst</var> abort-deconfigure \
3668   in-favour <var>package-being-installed-but-failed</var> <var>version</var> \
3669     removing <var>conflicting-package</var> <var>version</var>
3670                       </example>
3671                       The deconfigured packages are marked as
3672                       requiring configuration, so that if
3673                       <tt>--install</tt> is used they will be
3674                       configured again if possible.
3675                   </item>
3676                   <item>
3677                       To prepare for removal of each conflicting package, call:
3678                       <example compact="compact">
3679 <var>conflictor's-prerm</var> remove \
3680   in-favour <var>package</var> <var>new-version</var>
3681                       </example>
3682                       Error unwind:
3683                       <example compact="compact">
3684 <var>conflictor's-postinst</var> abort-remove \
3685   in-favour <var>package</var> <var>new-version</var>
3686                       </example>
3687                   </item>
3688                 </enumlist>
3689             </item>
3690
3691             <item>
3692                 <enumlist>
3693                   <item>
3694                       If the package is being upgraded, call:
3695                       <example compact="compact">
3696 <var>new-preinst</var> upgrade <var>old-version</var>
3697                       </example>
3698                       If this fails, we call:
3699                       <example>
3700 <var>new-postrm</var> abort-upgrade <var>old-version</var>
3701                       </example>
3702                       <enumlist>
3703                         <item>
3704                           <p>
3705                             If that works, then
3706                             <example>
3707 <var>old-postinst</var> abort-upgrade <var>new-version</var>
3708                             </example>
3709                             is called. If this works, then the old version
3710                             is in an "Installed" state, or else it is left
3711                             in an "Unpacked" state.
3712                           </p>
3713                         </item>
3714                         <item>
3715                           <p>
3716                             If it fails, then the old version is left
3717                             in an "Half-Installed" state.
3718                           </p>
3719                         </item>
3720                       </enumlist>
3721                       
3722                   </item>
3723                   <item>
3724                       Otherwise, if the package had some configuration
3725                       files from a previous version installed (i.e., it
3726                       is in the "configuration files only" state):
3727                       <example compact="compact">
3728 <var>new-preinst</var> install <var>old-version</var>
3729                       </example>
3730                       Error unwind:
3731                       <example>
3732 <var>new-postrm</var> abort-install <var>old-version</var>
3733                       </example>
3734                       If this fails, the package is left in a
3735                       "Half-Installed" state, which requires a
3736                       reinstall. If it works, the packages is left in
3737                       a "Config Files" state.
3738                   </item>
3739                   <item>
3740                       Otherwise (i.e., the package was completely purged):
3741                       <example compact="compact">
3742 <var>new-preinst</var> install
3743                       </example>
3744                       Error unwind:
3745                       <example compact="compact">
3746 <var>new-postrm</var> abort-install
3747                       </example>
3748                       If the error-unwind fails, the package is in a
3749                       "Half Installed" phase, and requires a
3750                       reinstall. If the error unwind works, the
3751                       package is in a not installed state.
3752                   </item>
3753                 </enumlist>
3754             </item>
3755
3756             <item>
3757               <p>
3758                 The new package's files are unpacked, overwriting any
3759                 that may be on the system already, for example any
3760                 from the old version of the same package or from
3761                 another package.  Backups of the old files are kept
3762                 temporarily, and if anything goes wrong the package
3763                 management system will attempt to put them back as
3764                 part of the error unwind.
3765               </p>
3766
3767               <p>
3768                 It is an error for a package to contain files which
3769                 are on the system in another package, unless
3770                 <tt>Replaces</tt> is used (see <ref id="replaces">).
3771                 <!--
3772                 The following paragraph is not currently the case:
3773                 Currently the <tt>- - force-overwrite</tt> flag is
3774                 enabled, downgrading it to a warning, but this may not
3775                 always be the case.
3776                 -->
3777               </p>
3778
3779               <p>
3780                 It is a more serious error for a package to contain a
3781                 plain file or other kind of non-directory where another
3782                 package has a directory (again, unless
3783                 <tt>Replaces</tt> is used).  This error can be
3784                 overridden if desired using
3785                 <tt>--force-overwrite-dir</tt>, but this is not
3786                 advisable.
3787               </p>
3788
3789               <p>
3790                 Packages which overwrite each other's files produce
3791                 behavior which, though deterministic, is hard for the
3792                 system administrator to understand.  It can easily
3793                 lead to "missing" programs if, for example, a package
3794                 is installed which overwrites a file from another
3795                 package, and is then removed again.<footnote>
3796                     Part of the problem is due to what is arguably a
3797                     bug in <prgn>dpkg</prgn>.
3798                 </footnote>
3799               </p>
3800
3801               <p>
3802                 A directory will never be replaced by a symbolic link
3803                 to a directory or vice versa; instead, the existing
3804                 state (symlink or not) will be left alone and
3805                 <prgn>dpkg</prgn> will follow the symlink if there is
3806                 one.
3807               </p>
3808             </item>
3809
3810             <item>
3811               <p>
3812                 <enumlist>
3813                   <item>
3814                       If the package is being upgraded, call
3815                       <example compact="compact">
3816 <var>old-postrm</var> upgrade <var>new-version</var>
3817                       </example>
3818                   </item>
3819                   <item>
3820                       If this fails, <prgn>dpkg</prgn> will attempt:
3821                       <example compact="compact">
3822 <var>new-postrm</var> failed-upgrade <var>old-version</var>
3823                       </example>
3824                       If this works, installation continues. If not, 
3825                       Error unwind:
3826                       <example compact="compact">
3827 <var>old-preinst</var> abort-upgrade <var>new-version</var>
3828                       </example>
3829                       If this fails, the old version is left in an
3830                       "Half Installed" state. If it works, dpkg now
3831                       calls:
3832                       <example compact="compact">
3833 <var>new-postrm</var> abort-upgrade <var>old-version</var>
3834                       </example>
3835                       If this fails, the old version is left in an
3836                       "Half Installed" state. If it works, dpkg now
3837                       calls:
3838                       <example compact="compact">
3839 <var>old-postinst</var> abort-upgrade <var>new-version</var>
3840                       </example>
3841                       If this fails, the old version is in an
3842                       "Unpacked" state.
3843                   </item>
3844                 </enumlist>
3845               </p>
3846
3847               <p>
3848                 This is the point of no return - if
3849                 <prgn>dpkg</prgn> gets this far, it won't back off
3850                 past this point if an error occurs.  This will
3851                 leave the package in a fairly bad state, which
3852                 will require a successful re-installation to clear
3853                 up, but it's when <prgn>dpkg</prgn> starts doing
3854                 things that are irreversible.
3855               </p>
3856             </item>
3857
3858             <item>
3859                 Any files which were in the old version of the package
3860                 but not in the new are removed.
3861             </item>
3862
3863             <item>
3864                 The new file list replaces the old.
3865             </item>
3866
3867             <item>
3868                 The new maintainer scripts replace the old.
3869             </item>
3870
3871             <item>
3872                 Any packages all of whose files have been overwritten
3873                 during the installation, and which aren't required for
3874                 dependencies, are considered to have been removed.
3875                 For each such package
3876                 <enumlist>
3877                   <item>
3878                       <prgn>dpkg</prgn> calls:
3879                       <example compact="compact">
3880 <var>disappearer's-postrm</var> disappear \
3881   <var>overwriter</var> <var>overwriter-version</var>
3882                       </example>
3883                   </item>
3884                   <item>
3885                       The package's maintainer scripts are removed.
3886                   </item>
3887                   <item>
3888                       It is noted in the status database as being in a
3889                       sane state, namely not installed (any conffiles
3890                       it may have are ignored, rather than being
3891                       removed by <prgn>dpkg</prgn>).  Note that
3892                       disappearing packages do not have their prerm
3893                       called, because <prgn>dpkg</prgn> doesn't know
3894                       in advance that the package is going to
3895                       vanish.
3896                   </item>
3897                 </enumlist>
3898             </item>
3899
3900             <item>
3901                 Any files in the package we're unpacking that are also
3902                 listed in the file lists of other packages are removed
3903                 from those lists.  (This will lobotomize the file list
3904                 of the "conflicting" package if there is one.)
3905             </item>
3906
3907             <item>
3908                 The backup files made during installation, above, are
3909                 deleted.
3910             </item>
3911
3912             <item>
3913               <p>
3914                 The new package's status is now sane, and recorded as
3915                 "unpacked".
3916               </p>
3917
3918               <p>
3919                 Here is another point of no return - if the
3920                 conflicting package's removal fails we do not unwind
3921                 the rest of the installation; the conflicting package
3922                 is left in a half-removed limbo.
3923               </p>
3924             </item>
3925
3926             <item>
3927                 If there was a conflicting package we go and do the
3928                 removal actions (described below), starting with the
3929                 removal of the conflicting package's files (any that
3930                 are also in the package being installed have already
3931                 been removed from the conflicting package's file list,
3932                 and so do not get removed now).
3933             </item>
3934           </enumlist>
3935         </p>
3936       </sect>
3937
3938       <sect id="configdetails"><heading>Details of configuration</heading>
3939
3940         <p>
3941           When we configure a package (this happens with <tt>dpkg
3942             --install</tt> and <tt>dpkg --configure</tt>), we first
3943           update any <tt>conffile</tt>s and then call:
3944           <example compact="compact">
3945 <var>postinst</var> configure <var>most-recently-configured-version</var>
3946           </example>
3947         </p>
3948
3949         <p>
3950           No attempt is made to unwind after errors during
3951           configuration. If the configuration fails, the package is in
3952           a "Failed Config" state, and an error message is generated.
3953         </p>
3954
3955         <p>
3956           If there is no most recently configured version
3957           <prgn>dpkg</prgn> will pass a null argument.
3958           <footnote>
3959             <p>
3960               Historical note: Truly ancient (pre-1997) versions of
3961               <prgn>dpkg</prgn> passed <tt>&lt;unknown&gt;</tt>
3962               (including the angle brackets) in this case.  Even older
3963               ones did not pass a second argument at all, under any
3964               circumstance.  Note that upgrades using such an old dpkg
3965               version are unlikely to work for other reasons, even if
3966               this old argument behavior is handled by your postinst script.
3967             </p>
3968           </footnote>     
3969         </p>
3970       </sect>
3971
3972       <sect id="removedetails"><heading>Details of removal and/or
3973       configuration purging</heading>
3974
3975         <p>
3976           <enumlist>
3977             <item>
3978               <p>
3979                 <example compact="compact">
3980 <var>prerm</var> remove
3981                 </example>
3982               </p>
3983               <p>
3984                 If prerm fails during replacement due to conflict
3985                 <example>
3986 <var>conflictor's-postinst</var> abort-remove \
3987   in-favour <var>package</var> <var>new-version</var>
3988                 </example>
3989                 Or else we call:
3990                 <example>
3991 <var>postinst</var> abort-remove
3992                 </example>
3993               </p>
3994               <p>
3995                 If this fails, the package is in a "Failed-Config"
3996                 state, or else it remains "Installed".
3997               </p>
3998             </item>
3999             <item>
4000                 The package's files are removed (except <tt>conffile</tt>s).
4001             </item>
4002             <item>
4003                 <example compact="compact">
4004 <var>postrm</var> remove
4005                 </example>
4006
4007               <p>
4008                 If it fails, there's no error unwind, and the package is in
4009                 an "Half-Installed" state.
4010               </p>
4011             </item>
4012             <item>
4013               <p>
4014                 All the maintainer scripts except the <prgn>postrm</prgn>
4015                 are removed.
4016               </p>
4017
4018               <p>
4019                 If we aren't purging the package we stop here.  Note
4020                 that packages which have no <prgn>postrm</prgn> and no
4021                 <tt>conffile</tt>s are automatically purged when
4022                 removed, as there is no difference except for the
4023                 <prgn>dpkg</prgn> status.
4024               </p>
4025             </item>
4026             <item>
4027                 The <tt>conffile</tt>s and any backup files
4028                 (<tt>~</tt>-files, <tt>#*#</tt> files,
4029                 <tt>%</tt>-files, <tt>.dpkg-{old,new,tmp}</tt>, etc.)
4030                 are removed.
4031             </item>
4032             <item>
4033               <p>
4034                 <example compact="compact">
4035 <var>postrm</var> purge
4036                 </example>
4037               </p>
4038               <p>
4039                 If this fails, the package remains in a "Config-Files"
4040                 state.
4041               </p>
4042             </item>
4043             <item>
4044                 The package's file list is removed.
4045             </item>
4046           </enumlist>
4047
4048         </p>
4049       </sect>
4050     </chapt>
4051
4052
4053     <chapt id="relationships">
4054       <heading>Declaring relationships between packages</heading>
4055
4056       <sect id="depsyntax">
4057         <heading>Syntax of relationship fields</heading>
4058
4059         <p>
4060           These fields all have a uniform syntax.  They are a list of
4061           package names separated by commas.
4062         </p>
4063
4064         <p>
4065           In the <tt>Depends</tt>, <tt>Recommends</tt>,
4066           <tt>Suggests</tt>, <tt>Pre-Depends</tt>,
4067           <tt>Build-Depends</tt> and <tt>Build-Depends-Indep</tt>
4068           control file fields of the package, which declare
4069           dependencies on other packages, the package names listed may
4070           also include lists of alternative package names, separated
4071           by vertical bar (pipe) symbols <tt>|</tt>.  In such a case,
4072           if any one of the alternative packages is installed, that
4073           part of the dependency is considered to be satisfied.
4074         </p>
4075
4076         <p>
4077           All of the fields except for <tt>Provides</tt> may restrict
4078           their applicability to particular versions of each named
4079           package.  This is done in parentheses after each individual
4080           package name; the parentheses should contain a relation from
4081           the list below followed by a version number, in the format
4082           described in <ref id="f-Version">.
4083         </p>
4084
4085         <p>
4086           The relations allowed are <tt>&lt;&lt;</tt>, <tt>&lt;=</tt>,
4087           <tt>=</tt>, <tt>&gt;=</tt> and <tt>&gt;&gt;</tt> for
4088           strictly earlier, earlier or equal, exactly equal, later or
4089           equal and strictly later, respectively.  The deprecated
4090           forms <tt>&lt;</tt> and <tt>&gt;</tt> were used to mean
4091           earlier/later or equal, rather than strictly earlier/later,
4092           so they should not appear in new packages (though
4093           <prgn>dpkg</prgn> still supports them).
4094         </p>
4095
4096         <p>
4097           Whitespace may appear at any point in the version
4098           specification subject to the rules in <ref
4099           id="controlsyntax">, and must appear where it's necessary to
4100           disambiguate; it is not otherwise significant.  All of the
4101           relationship fields may span multiple lines.  For
4102           consistency and in case of future changes to
4103           <prgn>dpkg</prgn> it is recommended that a single space be
4104           used after a version relationship and before a version
4105           number; it is also conventional to put a single space after
4106           each comma, on either side of each vertical bar, and before
4107           each open parenthesis.  When wrapping a relationship field, it
4108           is conventional to do so after a comma and before the space
4109           following that comma.
4110         </p>
4111
4112         <p>
4113           For example, a list of dependencies might appear as:
4114           <example compact="compact">
4115 Package: mutt
4116 Version: 1.3.17-1
4117 Depends: libc6 (>= 2.2.1), exim | mail-transport-agent
4118           </example>
4119         </p>
4120
4121         <p>
4122           All fields that specify build-time relationships
4123           (<tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
4124           <tt>Build-Conflicts</tt> and <tt>Build-Conflicts-Indep</tt>)
4125           may be restricted to a certain set of architectures.  This
4126           is indicated in brackets after each individual package name and
4127           the optional version specification.  The brackets enclose a
4128           list of Debian architecture names separated by whitespace.
4129           Exclamation marks may be prepended to each of the names.
4130           (It is not permitted for some names to be prepended with
4131           exclamation marks while others aren't.) If the current Debian
4132           host architecture is not in this list and there are no
4133           exclamation marks in the list, or it is in the list with a
4134           prepended exclamation mark, the package name and the
4135           associated version specification are ignored completely for
4136           the purposes of defining the relationships.
4137         </p>
4138
4139         <p>
4140           For example:
4141           <example compact="compact">
4142 Source: glibc
4143 Build-Depends-Indep: texinfo
4144 Build-Depends: kernel-headers-2.2.10 [!hurd-i386],
4145   hurd-dev [hurd-i386], gnumach-dev [hurd-i386]
4146           </example>
4147         </p>
4148
4149         <p>
4150           Note that the binary package relationship fields such as
4151           <tt>Depends</tt> appear in one of the binary package
4152           sections of the control file, whereas the build-time
4153           relationships such as <tt>Build-Depends</tt> appear in the
4154           source package section of the control file (which is the
4155           first section).
4156         </p>
4157       </sect>
4158
4159       <sect id="binarydeps">
4160         <heading>Binary Dependencies - <tt>Depends</tt>,
4161           <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4162           <tt>Pre-Depends</tt>
4163         </heading>
4164
4165         <p>
4166           Packages can declare in their control file that they have
4167           certain relationships to other packages - for example, that
4168           they may not be installed at the same time as certain other
4169           packages, and/or that they depend on the presence of others.
4170         </p>
4171
4172         <p>
4173           This is done using the <tt>Depends</tt>, <tt>Pre-Depends</tt>,
4174           <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4175           <tt>Breaks</tt> and <tt>Conflicts</tt> control file fields.
4176         </p>
4177
4178         <p>
4179           These seven fields are used to declare a dependency
4180           relationship by one package on another.  Except for
4181           <tt>Enhances</tt> and <tt>Breaks</tt>, they appear in the
4182           depending (binary) package's control file.
4183           (<tt>Enhances</tt> appears in the recommending package's
4184           control file, and <tt>Breaks</tt> appears in the version of
4185           depended-on package which causes the named package to
4186           break).
4187         </p>
4188
4189         <p>
4190           A <tt>Depends</tt> field takes effect <em>only</em> when a
4191           package is to be configured.  It does not prevent a package
4192           being on the system in an unconfigured state while its
4193           dependencies are unsatisfied, and it is possible to replace
4194           a package whose dependencies are satisfied and which is
4195           properly installed with a different version whose
4196           dependencies are not and cannot be satisfied; when this is
4197           done the depending package will be left unconfigured (since
4198           attempts to configure it will give errors) and will not
4199           function properly.  If it is necessary, a
4200           <tt>Pre-Depends</tt> field can be used, which has a partial
4201           effect even when a package is being unpacked, as explained
4202           in detail below.  (The other three dependency fields,
4203           <tt>Recommends</tt>, <tt>Suggests</tt> and
4204           <tt>Enhances</tt>, are only used by the various front-ends
4205           to <prgn>dpkg</prgn> such as <prgn>apt-get</prgn>,
4206           <prgn>aptitude</prgn>, and <prgn>dselect</prgn>.)
4207         </p>
4208
4209         <p>
4210           For this reason packages in an installation run are usually
4211           all unpacked first and all configured later; this gives
4212           later versions of packages with dependencies on later
4213           versions of other packages the opportunity to have their
4214           dependencies satisfied.
4215         </p>
4216
4217         <p>
4218           In case of circular dependencies, since installation or
4219           removal order honoring the dependency order can't be
4220           established, dependency loops are broken at some point
4221           (based on rules below), and some packages may not be able to
4222           rely on their dependencies being present when being
4223           installed or removed, depending on which side of the break
4224           of the circular dependency loop they happen to be on.  If one
4225           of the packages in the loop has no postinst script, then the
4226           cycle will be broken at that package, so as to ensure that
4227           all postinst scripts run with the dependencies properly
4228           configured if this is possible. Otherwise the breaking point
4229           is arbitrary.
4230         </p>
4231
4232         <p>
4233           The <tt>Depends</tt> field thus allows package maintainers
4234           to impose an order in which packages should be configured.
4235         </p>
4236
4237         <p>
4238           The meaning of the five dependency fields is as follows:
4239           <taglist>
4240             <tag><tt>Depends</tt></tag>
4241             <item>
4242               <p>
4243                 This declares an absolute dependency.  A package will
4244                 not be configured unless all of the packages listed in
4245                 its <tt>Depends</tt> field have been correctly
4246                 configured.
4247               </p>
4248
4249               <p>
4250                 The <tt>Depends</tt> field should be used if the
4251                 depended-on package is required for the depending
4252                 package to provide a significant amount of
4253                 functionality.
4254               </p>
4255
4256               <p>
4257                 The <tt>Depends</tt> field should also be used if the
4258                 <prgn>postinst</prgn>, <prgn>prerm</prgn> or
4259                 <prgn>postrm</prgn> scripts require the package to be
4260                 present in order to run.  Note, however, that the
4261                 <prgn>postrm</prgn> cannot rely on any non-essential
4262                 packages to be present during the <tt>purge</tt>
4263                 phase.
4264             </item>
4265
4266             <tag><tt>Recommends</tt></tag>
4267             <item>
4268               <p>
4269                 This declares a strong, but not absolute, dependency.
4270               </p>
4271
4272               <p>
4273                 The <tt>Recommends</tt> field should list packages
4274                 that would be found together with this one in all but
4275                 unusual installations.
4276               </p>
4277             </item>
4278
4279             <tag><tt>Suggests</tt></tag>
4280             <item>
4281                 This is used to declare that one package may be more
4282                 useful with one or more others.  Using this field
4283                 tells the packaging system and the user that the
4284                 listed packages are related to this one and can
4285                 perhaps enhance its usefulness, but that installing
4286                 this one without them is perfectly reasonable.
4287             </item>
4288
4289             <tag><tt>Enhances</tt></tag>
4290             <item>
4291                 This field is similar to Suggests but works in the
4292                 opposite direction. It is used to declare that a
4293                 package can enhance the functionality of another
4294                 package.
4295             </item>
4296
4297             <tag><tt>Pre-Depends</tt></tag>
4298             <item>
4299               <p>
4300                 This field is like <tt>Depends</tt>, except that it
4301                 also forces <prgn>dpkg</prgn> to complete installation
4302                 of the packages named before even starting the
4303                 installation of the package which declares the
4304                 pre-dependency, as follows:
4305               </p>
4306
4307               <p>
4308                 When a package declaring a pre-dependency is about to
4309                 be <em>unpacked</em> the pre-dependency can be
4310                 satisfied if the depended-on package is either fully
4311                 configured, <em>or even if</em> the depended-on
4312                 package(s) are only unpacked or half-configured,
4313                 provided that they have been configured correctly at
4314                 some point in the past (and not removed or partially
4315                 removed since).  In this case, both the
4316                 previously-configured and currently unpacked or
4317                 half-configured versions must satisfy any version
4318                 clause in the <tt>Pre-Depends</tt> field.
4319               </p>
4320
4321               <p>
4322                 When the package declaring a pre-dependency is about
4323                 to be <em>configured</em>, the pre-dependency will be
4324                 treated as a normal <tt>Depends</tt>, that is, it will
4325                 be considered satisfied only if the depended-on
4326                 package has been correctly configured.
4327               </p>
4328
4329               <p>
4330                 <tt>Pre-Depends</tt> should be used sparingly,
4331                 preferably only by packages whose premature upgrade or
4332                 installation would hamper the ability of the system to
4333                 continue with any upgrade that might be in progress.
4334               </p>
4335
4336               <p>
4337                 <tt>Pre-Depends</tt> are also required if the
4338                 <prgn>preinst</prgn> script depends on the named
4339                 package.  It is best to avoid this situation if
4340                 possible.
4341               </p>
4342             </item>
4343           </taglist>
4344         </p>
4345
4346         <p>
4347           When selecting which level of dependency to use you should
4348           consider how important the depended-on package is to the
4349           functionality of the one declaring the dependency.  Some
4350           packages are composed of components of varying degrees of
4351           importance.  Such a package should list using
4352           <tt>Depends</tt> the package(s) which are required by the
4353           more important components.  The other components'
4354           requirements may be mentioned as Suggestions or
4355           Recommendations, as appropriate to the components' relative
4356           importance.
4357         </p>
4358       </sect>
4359
4360       <sect id="breaks">
4361         <heading>Packages which break other packages - <tt>Breaks</tt></heading>
4362
4363         <p>
4364           Using <tt>Breaks</tt> may cause problems for upgrades from older
4365           versions of Debian and should not be used until the stable
4366           release of Debian supports <tt>Breaks</tt>.
4367         </p>
4368
4369         <p>
4370           When one binary package declares that it breaks another,
4371           <prgn>dpkg</prgn> will refuse to allow the package which
4372           declares <tt>Breaks</tt> be installed unless the broken
4373           package is deconfigured first, and it will refuse to
4374           allow the broken package to be reconfigured.
4375         </p>
4376
4377         <p>
4378           A package will not be regarded as causing breakage merely
4379           because its configuration files are still installed; it must
4380           be at least half-installed.
4381         </p>
4382
4383         <p>
4384           A special exception is made for packages which declare that
4385           they break their own package name or a virtual package which
4386           they provide (see below): this does not count as a real
4387           breakage.
4388         </p>
4389
4390         <p>
4391           Normally a <tt>Breaks</tt> entry will have an "earlier than"
4392           version clause; such a <tt>Breaks</tt> is introduced in the
4393           version of an (implicit or explicit) dependency which
4394           violates an assumption or reveals a bug in earlier versions
4395           of the broken package.  This use of <tt>Breaks</tt> will
4396           inform higher-level package management tools that broken
4397           package must be upgraded before the new one.
4398         </p>
4399
4400         <p>
4401           If the breaking package also overwrites some files from the
4402           older package, it should use <tt>Replaces</tt> (not
4403           <tt>Conflicts</tt>) to ensure this goes smoothly.
4404         </p>
4405       </sect>
4406
4407       <sect id="conflicts">
4408         <heading>Conflicting binary packages - <tt>Conflicts</tt></heading>
4409
4410         <p>
4411           When one binary package declares a conflict with another
4412           using a <tt>Conflicts</tt> field, <prgn>dpkg</prgn> will
4413           refuse to allow them to be installed on the system at the
4414           same time.
4415         </p>
4416
4417         <p>
4418           If one package is to be installed, the other must be removed
4419           first - if the package being installed is marked as
4420           replacing (see <ref id="replaces">) the one on the system,
4421           or the one on the system is marked as deselected, or both
4422           packages are marked <tt>Essential</tt>, then
4423           <prgn>dpkg</prgn> will automatically remove the package
4424           which is causing the conflict, otherwise it will halt the
4425           installation of the new package with an error.  This
4426           mechanism is specifically designed to produce an error when
4427           the installed package is <tt>Essential</tt>, but the new
4428           package is not.
4429         </p>
4430
4431         <p>
4432           A package will not cause a conflict merely because its
4433           configuration files are still installed; it must be at least
4434           half-installed.
4435         </p>
4436
4437         <p>
4438           A special exception is made for packages which declare a
4439           conflict with their own package name, or with a virtual
4440           package which they provide (see below): this does not
4441           prevent their installation, and allows a package to conflict
4442           with others providing a replacement for it.  You use this
4443           feature when you want the package in question to be the only
4444           package providing some feature.
4445         </p>
4446
4447         <p>
4448           A <tt>Conflicts</tt> entry should almost never have an
4449           "earlier than" version clause.  This would prevent
4450           <prgn>dpkg</prgn> from upgrading or installing the package
4451           which declared such a conflict until the upgrade or removal
4452           of the conflicted-with package had been completed.  Instead,
4453           <tt>Breaks</tt> may be used (once <tt>Breaks</tt> is supported
4454           by the stable release of Debian).
4455         </p>
4456       </sect>
4457
4458       <sect id="virtual"><heading>Virtual packages - <tt>Provides</tt>
4459         </heading>
4460
4461         <p>
4462           As well as the names of actual ("concrete") packages, the
4463           package relationship fields <tt>Depends</tt>,
4464           <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4465           <tt>Pre-Depends</tt>, <tt>Breaks</tt>, <tt>Conflicts</tt>,
4466           <tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
4467           <tt>Build-Conflicts</tt> and <tt>Build-Conflicts-Indep</tt>
4468           may mention "virtual packages".
4469         </p>
4470
4471         <p>
4472           A <em>virtual package</em> is one which appears in the
4473           <tt>Provides</tt> control file field of another package.
4474           The effect is as if the package(s) which provide a
4475           particular virtual package name had been listed by name
4476           everywhere the virtual package name appears. (See also <ref
4477             id="virtual_pkg">)
4478         </p>
4479
4480         <p>
4481           If there are both concrete and virtual packages of the same
4482           name, then the dependency may be satisfied (or the conflict
4483           caused) by either the concrete package with the name in
4484           question or any other concrete package which provides the
4485           virtual package with the name in question.  This is so that,
4486           for example, supposing we have
4487           <example compact="compact">
4488 Package: foo
4489 Depends: bar
4490           </example> and someone else releases an enhanced version of
4491           the <tt>bar</tt> package they can say:
4492           <example compact="compact">
4493 Package: bar-plus
4494 Provides: bar
4495           </example>
4496           and the <tt>bar-plus</tt> package will now also satisfy the
4497           dependency for the <tt>foo</tt> package.
4498         </p>
4499
4500         <p>
4501           If a relationship field has a version number attached
4502           then only real packages will be considered to see whether
4503           the relationship is satisfied (or the prohibition violated,
4504           for a conflict or breakage) - it is assumed that a real
4505           package which provides the virtual package is not of the
4506           "right" version.  So, a <tt>Provides</tt> field may not
4507           contain version numbers, and the version number of the
4508           concrete package which provides a particular virtual package
4509           will not be looked at when considering a dependency on or
4510           conflict with the virtual package name.
4511         </p>
4512
4513         <p>
4514           It is likely that the ability will be added in a future
4515           release of <prgn>dpkg</prgn> to specify a version number for
4516           each virtual package it provides.  This feature is not yet
4517           present, however, and is expected to be used only
4518           infrequently.
4519         </p>
4520
4521         <p>
4522           If you want to specify which of a set of real packages
4523           should be the default to satisfy a particular dependency on
4524           a virtual package, you should list the real package as an
4525           alternative before the virtual one.
4526         </p>
4527       </sect>
4528
4529
4530       <sect id="replaces"><heading>Overwriting files and replacing
4531           packages - <tt>Replaces</tt></heading>
4532
4533         <p>
4534           Packages can declare in their control file that they should
4535           overwrite files in certain other packages, or completely
4536           replace other packages. The <tt>Replaces</tt> control file
4537           field has these two distinct purposes.
4538         </p>
4539
4540         <sect1><heading>Overwriting files in other packages</heading>
4541
4542           <p>
4543             Firstly, as mentioned before, it is usually an error for a
4544             package to contain files which are on the system in
4545             another package.
4546           </p>
4547
4548           <p>
4549             However, if the overwriting package declares that it
4550             <tt>Replaces</tt> the one containing the file being
4551             overwritten, then <prgn>dpkg</prgn> will replace the file
4552             from the old package with that from the new.  The file
4553             will no longer be listed as "owned" by the old package.
4554           </p>
4555
4556           <p>
4557             If a package is completely replaced in this way, so that
4558             <prgn>dpkg</prgn> does not know of any files it still
4559             contains, it is considered to have "disappeared".  It will
4560             be marked as not wanted on the system (selected for
4561             removal) and not installed.  Any <tt>conffile</tt>s
4562             details noted for the package will be ignored, as they
4563             will have been taken over by the overwriting package.  The
4564             package's <prgn>postrm</prgn> script will be run with a
4565             special argument to allow the package to do any final
4566             cleanup required.  See <ref id="mscriptsinstact">.
4567             <footnote>
4568               <p>
4569                 Replaces is a one way relationship -- you have to              
4570                 install the replacing package after the replaced
4571                 package.
4572               </p>
4573             </footnote>
4574           </p>
4575
4576           <p>
4577             For this usage of <tt>Replaces</tt>, virtual packages (see
4578             <ref id="virtual">) are not considered when looking at a
4579             <tt>Replaces</tt> field - the packages declared as being
4580             replaced must be mentioned by their real names.
4581           </p>
4582
4583           <p>
4584             Furthermore, this usage of <tt>Replaces</tt> only takes
4585             effect when both packages are at least partially on the
4586             system at once, so that it can only happen if they do not
4587             conflict or if the conflict has been overridden.
4588           </p>
4589
4590         </sect1>
4591
4592         <sect1><heading>Replacing whole packages, forcing their
4593             removal</heading>
4594
4595           <p>
4596             Secondly, <tt>Replaces</tt> allows the packaging system to
4597             resolve which package should be removed when there is a
4598             conflict - see <ref id="conflicts">.  This usage only
4599             takes effect when the two packages <em>do</em> conflict,
4600             so that the two usages of this field do not interfere with
4601             each other.
4602           </p>
4603
4604           <p>
4605             In this situation, the package declared as being replaced
4606             can be a virtual package, so for example, all mail
4607             transport agents (MTAs) would have the following fields in
4608             their control files:
4609             <example compact="compact">
4610 Provides: mail-transport-agent
4611 Conflicts: mail-transport-agent
4612 Replaces: mail-transport-agent
4613             </example>
4614             ensuring that only one MTA can be installed at any one
4615             time.
4616         </sect1>
4617       </sect>
4618
4619       <sect id="sourcebinarydeps">
4620         <heading>Relationships between source and binary packages -
4621           <tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
4622           <tt>Build-Conflicts</tt>, <tt>Build-Conflicts-Indep</tt>
4623         </heading>
4624
4625         <p>
4626           Source packages that require certain binary packages to be
4627           installed or absent at the time of building the package
4628           can declare relationships to those binary packages.
4629         </p>
4630
4631         <p>
4632           This is done using the <tt>Build-Depends</tt>,
4633           <tt>Build-Depends-Indep</tt>, <tt>Build-Conflicts</tt> and
4634           <tt>Build-Conflicts-Indep</tt> control file fields.
4635         </p>
4636
4637         <p>
4638           Build-dependencies on "build-essential" binary packages can be
4639           omitted. Please see <ref id="pkg-relations"> for more information.
4640         </p>
4641
4642         <p>
4643           The dependencies and conflicts they define must be satisfied
4644           (as defined earlier for binary packages) in order to invoke
4645           the targets in <tt>debian/rules</tt>, as follows:<footnote>
4646             <p>
4647               If you make "build-arch" or "binary-arch", you need
4648               Build-Depends.  If you make "build-indep" or
4649               "binary-indep", you need Build-Depends and
4650               Build-Depends-Indep.  If you make "build" or "binary",
4651               you need both.
4652             </p>
4653             <p>
4654               There is no Build-Depends-Arch; this role is essentially
4655               met with Build-Depends.  Anyone building the
4656               <tt>build-indep</tt> and binary-indep<tt></tt> targets
4657               is basically assumed to be building the whole package
4658               anyway and so installs all build dependencies.  The
4659               autobuilders use <tt>dpkg-buildpackage -B</tt>, which
4660               calls <tt>build</tt> (not <tt>build-arch</tt>, since it
4661               does not yet know how to check for its existence) and
4662               <tt>binary-arch</tt>.
4663             </p>
4664             <p>
4665               The purpose of the original split, I recall, was so that
4666               the autobuilders wouldn't need to install extra packages
4667               needed only for the binary-indep targets.  But without a
4668               build-arch/build-indep split, this didn't work, since
4669               most of the work is done in the build target, not in the
4670               binary target.
4671             </p>
4672           </footnote>
4673
4674           <taglist>
4675             <tag><tt>Build-Depends</tt>, <tt>Build-Conflicts</tt></tag>
4676             <item>
4677                 The <tt>Build-Depends</tt> and
4678                 <tt>Build-Conflicts</tt> fields must be satisfied when
4679                 any of the following targets is invoked:
4680                 <tt>build</tt>, <tt>clean</tt>, <tt>binary</tt>,
4681                 <tt>binary-arch</tt>, <tt>build-arch</tt>,
4682                 <tt>build-indep</tt> and <tt>binary-indep</tt>.
4683             </item>
4684             <tag><tt>Build-Depends-Indep</tt>,
4685               <tt>Build-Conflicts-Indep</tt></tag>
4686             <item>
4687                 The <tt>Build-Depends-Indep</tt> and
4688                 <tt>Build-Conflicts-Indep</tt> fields must be
4689                 satisfied when any of the following targets is
4690                 invoked: <tt>build</tt>, <tt>build-indep</tt>,
4691                 <tt>binary</tt> and <tt>binary-indep</tt>.
4692             </item>
4693           </taglist>
4694         </p>
4695
4696       </sect>
4697
4698     </chapt>
4699
4700
4701     <chapt id="sharedlibs"><heading>Shared libraries</heading>
4702
4703       <p>
4704         Packages containing shared libraries must be constructed with
4705         a little care to make sure that the shared library is always
4706         available.  This is especially important for packages whose
4707         shared libraries are vitally important, such as the C library
4708         (currently <tt>libc6</tt>).
4709       </p>
4710
4711       <p>
4712         Packages involving shared libraries should be split up into
4713         several binary packages. This section mostly deals with how
4714         this separation is to be accomplished; rules for files within
4715         the shared library packages are in <ref id="libraries"> instead.
4716       </p>
4717
4718       <sect id="sharedlibs-runtime">
4719         <heading>Run-time shared libraries</heading>
4720
4721       <p>
4722         The run-time shared library needs to be placed in a package
4723         whose name changes whenever the shared object version
4724         changes.<footnote>
4725             <p>
4726               Since it is common place to install several versions of a
4727               package that just provides shared libraries, it is a
4728               good idea that the library package should not
4729               contain any extraneous non-versioned files, unless they
4730               happen to be in versioned directories.</p>
4731           </footnote>
4732           The most common mechanism is to place it in a package
4733         called
4734         <package><var>libraryname</var><var>soversion</var></package>,
4735         where <file><var>soversion</var></file> is the version number
4736         in the soname of the shared library<footnote>
4737               The soname is the shared object name: it's the thing
4738               that has to match exactly between building an executable
4739               and running it for the dynamic linker to be able run the
4740               program.  For example, if the soname of the library is
4741               <file>libfoo.so.6</file>, the library package would be
4742               called <file>libfoo6</file>.
4743           </footnote>.
4744         Alternatively, if it would be confusing to directly append
4745         <var>soversion</var> to <var>libraryname</var> (e.g. because
4746         <var>libraryname</var> itself ends in a number), you may use
4747         <package><var>libraryname</var>-<var>soversion</var></package> and
4748         <package><var>libraryname</var>-<var>soversion</var>-dev</package>
4749         instead.
4750       </p>
4751
4752       <p>
4753         If you have several shared libraries built from the same
4754         source tree you may lump them all together into a single
4755         shared library package, provided that you change all of
4756         their sonames at once (so that you don't get filename
4757         clashes if you try to install different versions of the
4758         combined shared libraries package).
4759       </p>
4760
4761       <p>
4762         The package should install the shared libraries under
4763         their normal names.  For example, the <package>libgdbm3</package>
4764         package should install <file>libgdbm.so.3.0.0</file> as
4765         <file>/usr/lib/libgdbm.so.3.0.0</file>.  The files should not be
4766         renamed or re-linked by any <prgn>prerm</prgn> or
4767         <prgn>postrm</prgn> scripts; <prgn>dpkg</prgn> will take care
4768         of renaming things safely without affecting running programs,
4769         and attempts to interfere with this are likely to lead to
4770         problems.
4771       </p>
4772
4773       <p>
4774         Shared libraries should not be installed executable, since
4775         the dynamic linker does not require this and trying to
4776         execute a shared library usually results in a core dump.
4777       </p>
4778
4779       <p>
4780         The run-time library package should include the symbolic link that
4781         <prgn>ldconfig</prgn> would create for the shared libraries.
4782         For example, the <package>libgdbm3</package> package should include
4783         a symbolic link from <file>/usr/lib/libgdbm.so.3</file> to
4784         <file>libgdbm.so.3.0.0</file>.  This is needed so that the dynamic
4785         linker (for example <prgn>ld.so</prgn> or
4786         <prgn>ld-linux.so.*</prgn>) can find the library between the
4787         time that <prgn>dpkg</prgn> installs it and the time that
4788         <prgn>ldconfig</prgn> is run in the <prgn>postinst</prgn>
4789         script.<footnote>
4790             The package management system requires the library to be
4791             placed before the symbolic link pointing to it in the
4792             <file>.deb</file> file.  This is so that when
4793             <prgn>dpkg</prgn> comes to install the symlink
4794             (overwriting the previous symlink pointing at an older
4795             version of the library), the new shared library is already
4796             in place.  In the past, this was achieved by creating the
4797             library in the temporary packaging directory before
4798             creating the symlink.  Unfortunately, this was not always
4799             effective, since the building of the tar file in the
4800             <file>.deb</file> depended on the behavior of the underlying
4801             file system.  Some file systems (such as reiserfs) reorder
4802             the files so that the order of creation is forgotten.
4803             Since version 1.7.0, <prgn>dpkg</prgn>
4804             reorders the files itself as necessary when building a
4805             package.  Thus it is no longer important to concern
4806             oneself with the order of file creation.
4807         </footnote>
4808       </p>
4809
4810         <sect1 id="ldconfig">
4811           <heading><tt>ldconfig</tt></heading>
4812
4813         <p>
4814           Any package installing shared libraries in one of the default
4815           library directories of the dynamic linker (which are currently
4816           <file>/usr/lib</file> and <file>/lib</file>) or a directory that is
4817           listed in <file>/etc/ld.so.conf</file><footnote>
4818             These are currently
4819             <list compact="compact">
4820               <item>/usr/local/lib</item>
4821               <item>/usr/lib/libc5-compat</item>
4822               <item>/lib/libc5-compat</item>
4823             </list>
4824           </footnote>
4825           must use <prgn>ldconfig</prgn> to update the shared library
4826           system.
4827         </p>
4828
4829         <p>
4830             The package maintainer scripts must only call
4831             <prgn>ldconfig</prgn> under these circumstances:
4832             <list compact="compact">
4833               <item>When the <prgn>postinst</prgn> script is run with a
4834                   first argument of <tt>configure</tt>, the script must call
4835                   <prgn>ldconfig</prgn>, and may optionally invoke
4836                   <prgn>ldconfig</prgn> at other times.
4837               </item>
4838               <item>When the <prgn>postrm</prgn> script is run with a
4839                   first argument of <tt>remove</tt>, the script should call
4840                   <prgn>ldconfig</prgn>.
4841               </item>
4842             </list>
4843          <footnote>
4844             <p>
4845               During install or upgrade, the preinst is called before
4846               the new files are installed, so calling "ldconfig" is
4847               pointless.  The preinst of an existing package can also be
4848               called if an upgrade fails.  However, this happens during
4849               the critical time when a shared libs may exist on-disk
4850               under a temporary name.  Thus, it is dangerous and
4851               forbidden by current policy to call "ldconfig" at this
4852               time.
4853             </p>
4854
4855             <p>
4856               When a package is installed or upgraded, "postinst
4857               configure" runs after the new files are safely on-disk.
4858               Since it is perfectly safe to invoke ldconfig
4859               unconditionally in a postinst, it is OK for a package to
4860               simply put ldconfig in its postinst without checking the
4861               argument.  The postinst can also be called to recover from
4862               a failed upgrade.  This happens before any new files are
4863               unpacked, so there is no reason to call "ldconfig" at this
4864               point.
4865             </p>
4866
4867             <p>
4868               For a package that is being removed, prerm is
4869               called with all the files intact, so calling ldconfig is
4870               useless.  The other calls to "prerm" happen in the case of
4871               upgrade at a time when all the files of the old package
4872               are on-disk, so again calling "ldconfig" is pointless.
4873             </p>
4874
4875             <p>
4876               postrm, on the other hand, is called with the "remove"
4877               argument just after the files are removed, so this is
4878               the proper time to call "ldconfig" to notify the system
4879               of the fact that the shared libraries from the package
4880               are removed.  The postrm can be called at several other
4881               times.  At the time of "postrm purge", "postrm
4882               abort-install", or "postrm abort-upgrade", calling
4883               "ldconfig" is useless because the shared lib files are
4884               not on-disk.  However, when "postrm" is invoked with
4885               arguments "upgrade", "failed-upgrade", or "disappear", a
4886               shared lib may exist on-disk under a temporary filename.
4887             </p>
4888           </footnote>
4889         </p>
4890         </sect1>
4891
4892       </sect>
4893
4894       <sect id="sharedlibs-support-files">
4895         <heading>Shared library support files</heading>
4896
4897         <p>
4898           If your package contains files whose names do not change with
4899           each change in the library shared object version, you must not
4900           put them in the shared library package.  Otherwise, several
4901           versions of the shared library cannot be installed at the same
4902           time without filename clashes, making upgrades and transitions
4903           unnecessarily difficult.
4904         </p>
4905
4906         <p>
4907           It is recommended that supporting files and run-time support
4908           programs that do not need to be invoked manually by users, but
4909           are nevertheless required for the package to function, be placed
4910           (if they are binary) in a subdirectory of <file>/usr/lib</file>,
4911           preferably under <file>/usr/lib/</file><var>package-name</var>.
4912           If the program or file is architecture independent, the
4913           recommendation is for it to be placed in a subdirectory of
4914           <file>/usr/share</file> instead, preferably under
4915           <file>/usr/share/</file><var>package-name</var>.  Following the
4916           <var>package-name</var> naming convention ensures that the file
4917           names change when the shared object version changes.
4918         </p>
4919
4920         <p>
4921           Run-time support programs that use the shared library but are
4922           not required for the library to function or files used by the
4923           shared library that can be used by any version of the shared
4924           library package should instead be put in a separate package.
4925           This package might typically be named
4926           <package><var>libraryname</var>-tools</package>; note the
4927           absence of the <var>soversion</var> in the package name.
4928         </p>
4929
4930         <p>
4931           Files and support programs only useful when compiling software
4932           against the library should be included in the development
4933           package for the library.<footnote>
4934             For example, a <file><var>package-name</var>-config</file>
4935             script or <package>pkg-config</package> configuration files.
4936           </footnote>
4937         </p>
4938       </sect>
4939
4940       <sect id="sharedlibs-static">
4941         <heading>Static libraries</heading>
4942
4943       <p>
4944         The static library (<file><var>libraryname.a</var></file>)
4945         is usually provided in addition to the shared version.
4946         It is placed into the development package (see below).
4947       </p>
4948
4949       <p>
4950         In some cases, it is acceptable for a library to be
4951         available in static form only; these cases include:
4952         <list>
4953           <item>libraries for languages whose shared library support
4954                 is immature or unstable</item>
4955           <item>libraries whose interfaces are in flux or under
4956                 development (commonly the case when the library's
4957                 major version number is zero, or where the ABI breaks
4958                 across patchlevels)</item>
4959           <item>libraries which are explicitly intended to be
4960                 available only in static form by their upstream
4961                 author(s)</item>
4962         </list>
4963       </p>
4964
4965       <sect id="sharedlibs-dev">
4966         <heading>Development files</heading>
4967
4968       <p>
4969         The development files associated to a shared library need to be
4970         placed in a package called
4971         <package><var>libraryname</var><var>soversion</var>-dev</package>,
4972         or if you prefer only to support one development version at a
4973         time, <package><var>libraryname</var>-dev</package>.
4974       </p>
4975
4976       <p>
4977         In case several development versions of a library exist, you may
4978         need to use <prgn>dpkg</prgn>'s Conflicts mechanism (see
4979         <ref id="conflicts">) to ensure that the user only installs one
4980         development version at a time (as different development versions are
4981         likely to have the same header files in them, which would cause a
4982         filename clash if both were installed).
4983       </p>
4984
4985       <p>
4986         The development package should contain a symlink for the associated
4987         shared library without a version number. For example, the
4988         <package>libgdbm-dev</package> package should include a symlink
4989         from <file>/usr/lib/libgdbm.so</file> to
4990         <file>libgdbm.so.3.0.0</file>.  This symlink is needed by the linker
4991         (<prgn>ld</prgn>) when compiling packages, as it will only look for
4992         <file>libgdbm.so</file> when compiling dynamically.
4993       </p>
4994       </sect>
4995
4996       <sect id="sharedlibs-intradeps">
4997         <heading>Dependencies between the packages of the same library</heading>
4998
4999         <p>
5000           Typically the development version should have an exact
5001           version dependency on the runtime library, to make sure that
5002           compilation and linking happens correctly.  The
5003           <tt>${binary:Version}</tt> substitution variable can be
5004           useful for this purpose.
5005           <footnote>
5006             Previously, <tt>${Source-Version}</tt> was used, but its name
5007             was confusing and it has been deprecated since dpkg 1.13.19.
5008           </footnote>
5009         </p>
5010       </sect>
5011
5012       <sect id="sharedlibs-shlibdeps">
5013         <heading>Dependencies between the library and other packages -
5014         the <tt>shlibs</tt> system</heading>
5015
5016         <p>
5017           If a package contains a binary or library which links to a
5018           shared library, we must ensure that when the package is
5019           installed on the system, all of the libraries needed are
5020           also installed.  This requirement led to the creation of the
5021           <tt>shlibs</tt> system, which is very simple in its design:
5022           any package which <em>provides</em> a shared library also
5023           provides information on the package dependencies required to
5024           ensure the presence of this library, and any package which
5025           <em>uses</em> a shared library uses this information to
5026           determine the dependencies it requires.  The files which
5027           contain the mapping from shared libraries to the necessary
5028           dependency information are called <file>shlibs</file> files.
5029         </p>
5030
5031         <p>
5032           Thus, when a package is built which contains any shared
5033           libraries, it must provide a <file>shlibs</file> file for other
5034           packages to use, and when a package is built which contains
5035           any shared libraries or compiled binaries, it must run
5036           <qref id="pkg-dpkg-shlibdeps"><prgn>dpkg-shlibdeps</prgn></qref>
5037           on these to determine the libraries used and hence the
5038           dependencies needed by this package.<footnote>
5039             <p>
5040               In the past, the shared libraries linked to were
5041               determined by calling <prgn>ldd</prgn>, but now
5042               <prgn>objdump</prgn> is used to do this.  The only
5043               change this makes to package building is that
5044               <prgn>dpkg-shlibdeps</prgn> must also be run on shared
5045               libraries, whereas in the past this was unnecessary.
5046               The rest of this footnote explains the advantage that
5047               this method gives.
5048             </p>
5049
5050             <p>
5051               We say that a binary <tt>foo</tt> <em>directly</em> uses
5052               a library <tt>libbar</tt> if it is explicitly linked
5053               with that library (that is, it uses the flag
5054               <tt>-lbar</tt> during the linking stage).  Other
5055               libraries that are needed by <tt>libbar</tt> are linked
5056               <em>indirectly</em> to <tt>foo</tt>, and the dynamic
5057               linker will load them automatically when it loads
5058               <tt>libbar</tt>.  A package should depend on
5059               the libraries it directly uses, and the dependencies for
5060               those libraries should automatically pull in the other
5061               libraries.
5062             </p>
5063
5064             <p>
5065               Unfortunately, the <prgn>ldd</prgn> program shows both
5066               the directly and indirectly used libraries, meaning that
5067               the dependencies determined included both direct and
5068               indirect dependencies.  The use of <prgn>objdump</prgn>
5069               avoids this problem by determining only the directly
5070               used libraries.
5071             </p>
5072
5073             <p>
5074               A good example of where this helps is the following.  We
5075               could update <tt>libimlib</tt> with a new version that
5076               supports a new graphics format called dgf (but retaining
5077               the same major version number).  If we used the old
5078               <prgn>ldd</prgn> method, every package that uses
5079               <tt>libimlib</tt> would need to be recompiled so it
5080               would also depend on <tt>libdgf</tt> or it wouldn't run
5081               due to missing symbols.  However with the new system,
5082               packages using <tt>libimlib</tt> can rely on
5083               <tt>libimlib</tt> itself having the dependency on
5084               <tt>libdgf</tt> and so they would not need rebuilding.
5085             </p>
5086           </footnote>
5087         </p>
5088
5089         <p>
5090           In the following sections, we will first describe where the
5091           various <tt>shlibs</tt> files are to be found, then how to
5092           use <prgn>dpkg-shlibdeps</prgn>, and finally the <tt>shlibs</tt>
5093           file format and how to create them if your package contains a
5094           shared library.
5095         </p>
5096
5097       <sect1>
5098         <heading>The <tt>shlibs</tt> files present on the system</heading>
5099
5100         <p>
5101           There are several places where <tt>shlibs</tt> files are
5102           found.  The following list gives them in the order in which
5103           they are read by
5104           <qref id="pkg-dpkg-shlibdeps"><prgn>dpkg-shlibdeps</prgn></qref>.
5105           (The first one which gives the required information is used.)
5106         </p>
5107
5108         <p>
5109           <list>
5110             <item>
5111               <p><file>debian/shlibs.local</file></p>
5112
5113               <p>
5114                 This lists overrides for this package.  Its use is
5115                 described below (see <ref id="shlibslocal">).
5116               </p>
5117             </item>
5118
5119             <item>
5120               <p><file>/etc/dpkg/shlibs.override</file></p>
5121
5122               <p>
5123                 This lists global overrides.  This list is normally
5124                 empty.  It is maintained by the local system
5125                 administrator.
5126               </p>
5127             </item>
5128
5129             <item>
5130               <p><file>DEBIAN/shlibs</file> files in the "build directory"</p>
5131
5132               <p>
5133                 When packages are being built, any
5134                 <file>debian/shlibs</file> files are copied into the
5135                 control file area of the temporary build directory and
5136                 given the name <file>shlibs</file>.  These files give
5137                 details of any shared libraries included in the
5138                 package.<footnote>
5139                     An example may help here.  Let us say that the
5140                     source package <tt>foo</tt> generates two binary
5141                     packages, <tt>libfoo2</tt> and
5142                     <tt>foo-runtime</tt>.  When building the binary
5143                     packages, the two packages are created in the
5144                     directories <file>debian/libfoo2</file> and
5145                     <file>debian/foo-runtime</file> respectively.
5146                     (<file>debian/tmp</file> could be used instead of one
5147                     of these.)  Since <tt>libfoo2</tt> provides the
5148                     <tt>libfoo</tt> shared library, it will require a
5149                     <tt>shlibs</tt> file, which will be installed in
5150                     <file>debian/libfoo2/DEBIAN/shlibs</file>, eventually
5151                     to become
5152                     <file>/var/lib/dpkg/info/libfoo2.shlibs</file>.  Then
5153                     when <prgn>dpkg-shlibdeps</prgn> is run on the
5154                     executable
5155                     <file>debian/foo-runtime/usr/bin/foo-prog</file>, it
5156                     will examine the
5157                     <file>debian/libfoo2/DEBIAN/shlibs</file> file to
5158                     determine whether <tt>foo-prog</tt>'s library
5159                     dependencies are satisfied by any of the libraries
5160                     provided by <tt>libfoo2</tt>.  For this reason,
5161                     <prgn>dpkg-shlibdeps</prgn> must only be run once
5162                     all of the individual binary packages'
5163                     <tt>shlibs</tt> files have been installed into the
5164                     build directory.
5165                 </footnote>
5166               </p>
5167             </item>
5168
5169             <item>
5170               <p><file>/var/lib/dpkg/info/*.shlibs</file></p>
5171
5172               <p>
5173                 These are the <file>shlibs</file> files corresponding to
5174                 all of the packages installed on the system, and are
5175                 maintained by the relevant package maintainers.
5176               </p>
5177             </item>
5178
5179             <item>
5180               <p><file>/etc/dpkg/shlibs.default</file></p>
5181
5182               <p>
5183                 This file lists any shared libraries whose packages
5184                 have failed to provide correct <file>shlibs</file> files.
5185                 It was used when the <file>shlibs</file> setup was first
5186                 introduced, but it is now normally empty.  It is
5187                 maintained by the <tt>dpkg</tt> maintainer.
5188               </p>
5189             </item>
5190           </list>
5191         </p>
5192       </sect1>
5193
5194       <sect1>
5195         <heading>How to use <prgn>dpkg-shlibdeps</prgn> and the
5196             <file>shlibs</file> files</heading>
5197
5198         <p>
5199           Put a call to
5200           <qref id="pkg-dpkg-shlibdeps"><prgn>dpkg-shlibdeps</prgn></qref>
5201           into your <file>debian/rules</file> file.  If your package
5202           contains only compiled binaries and libraries (but no scripts),
5203           you can use a command such as:
5204           <example compact="compact">
5205 dpkg-shlibdeps debian/tmp/usr/bin/* debian/tmp/usr/sbin/* \
5206   debian/tmp/usr/lib/*
5207           </example>
5208           Otherwise, you will need to explicitly list the compiled
5209           binaries and libraries.<footnote>
5210               If you are using <tt>debhelper</tt>, the
5211               <prgn>dh_shlibdeps</prgn> program will do this work for
5212               you.  It will also correctly handle multi-binary
5213               packages.
5214           </footnote>
5215         </p>
5216
5217         <p>
5218           This command puts the dependency information into the
5219           <file>debian/substvars</file> file, which is then used by
5220           <prgn>dpkg-gencontrol</prgn>.  You will need to place a
5221           <tt>${shlibs:Depends}</tt> variable in the <tt>Depends</tt>
5222           field in the control file for this to work.
5223         </p>
5224
5225         <p>
5226           If <prgn>dpkg-shlibdeps</prgn> doesn't complain, you're
5227           done.  If it does complain you might need to create your own
5228           <file>debian/shlibs.local</file> file, as explained below (see
5229           <ref id="shlibslocal">).
5230         </p>
5231
5232         <p>
5233           If you have multiple binary packages, you will need to call
5234           <prgn>dpkg-shlibdeps</prgn> on each one which contains
5235           compiled libraries or binaries.  In such a case, you will
5236           need to use the <tt>-T</tt> option to the <tt>dpkg</tt>
5237           utilities to specify a different <file>substvars</file> file.
5238         </p>
5239
5240         <p>
5241           If you are creating a udeb for use in the Debian Installer, you
5242           will need to specify that <prgn>dpkg-shlibdeps</prgn> should use
5243           the dependency line of type <tt>udeb</tt> by adding
5244           <tt>-tudeb</tt> as option<footnote>
5245               <prgn>dh_shlibdeps</prgn> from the <tt>debhelper</tt> suite
5246               will automatically add this option if it knows it is
5247               processing a udeb.
5248           </footnote>. If there is no dependency line of type <tt>udeb</tt>
5249           in the <file>shlibs</file> file, <prgn>dpkg-shlibdeps</prgn> will
5250           fall back to the regular dependency line.
5251         </p>
5252
5253         <p>
5254           For more details on dpkg-shlibdeps, please see
5255           <ref id="pkg-dpkg-shlibdeps"> and
5256           <manref name="dpkg-shlibdeps" section="1">.
5257         </p>
5258       </sect1>
5259
5260       <sect1 id="shlibs">
5261         <heading>The <file>shlibs</file> File Format</heading>
5262
5263         <p>
5264           Each <file>shlibs</file> file has the same format.  Lines
5265           beginning with <tt>#</tt> are considered to be comments and
5266           are ignored.  Each line is of the form:
5267           <example compact="compact">
5268 [<var>type</var>: ]<var>library-name</var> <var>soname-version</var> <var>dependencies ...</var>
5269           </example>
5270         </p>
5271
5272         <p>
5273           We will explain this by reference to the example of the
5274           <tt>zlib1g</tt> package, which (at the time of writing)
5275           installs the shared library <file>/usr/lib/libz.so.1.1.3</file>.
5276         </p>
5277
5278         <p>
5279           <var>type</var> is an optional element that indicates the type
5280           of package for which the line is valid. The only type currently
5281           in use is <tt>udeb</tt>. The colon and space after the type are
5282           required.
5283         </p>
5284
5285         <p>
5286           <var>library-name</var> is the name of the shared library,
5287           in this case <tt>libz</tt>.  (This must match the name part
5288           of the soname, see below.)
5289         </p>
5290
5291         <p>
5292           <var>soname-version</var> is the version part of the soname of
5293           the library.  The soname is the thing that must exactly match
5294           for the library to be recognized by the dynamic linker, and is
5295           usually of the form
5296           <tt><var>name</var>.so.<var>major-version</var></tt>, in our
5297           example, <tt>libz.so.1</tt>.<footnote>
5298               This can be determined using the command
5299               <example compact="compact">
5300 objdump -p /usr/lib/libz.so.1.1.3 | grep SONAME
5301               </example>
5302           </footnote>
5303           The version part is the part which comes after
5304           <tt>.so.</tt>, so in our case, it is <tt>1</tt>.
5305         </p>
5306
5307         <p>
5308           <var>dependencies</var> has the same syntax as a dependency
5309           field in a binary package control file.  It should give
5310           details of which packages are required to satisfy a binary
5311           built against the version of the library contained in the
5312           package.  See <ref id="depsyntax"> for details.
5313         </p>
5314
5315         <p>
5316           In our example, if the first version of the <tt>zlib1g</tt>
5317           package which contained a minor number of at least
5318           <tt>1.3</tt> was <var>1:1.1.3-1</var>, then the
5319           <tt>shlibs</tt> entry for this library could say:
5320           <example compact="compact">
5321 libz 1 zlib1g (>= 1:1.1.3)
5322           </example>
5323           The version-specific dependency is to avoid warnings from
5324           the dynamic linker about using older shared libraries with
5325           newer binaries.
5326         </p>
5327
5328         <p>
5329           As zlib1g also provides a udeb containing the shared library,
5330           there would also be a second line:
5331           <example compact="compact">
5332 udeb: libz 1 zlib1g-udeb (>= 1:1.1.3)
5333           </example>
5334         </p>
5335       </sect1>
5336
5337       <sect1>
5338         <heading>Providing a <file>shlibs</file> file</heading>
5339
5340         <p>
5341           If your package provides a shared library, you need to create
5342           a <file>shlibs</file> file following the format described above.
5343           It is usual to call this file <file>debian/shlibs</file> (but if
5344           you have multiple binary packages, you might want to call it
5345           <file>debian/shlibs.<var>package</var></file> instead).  Then
5346           let <file>debian/rules</file> install it in the control area:
5347           <example compact="compact">
5348 install -m644 debian/shlibs debian/tmp/DEBIAN
5349           </example>
5350           or, in the case of a multi-binary package:
5351           <example compact="compact">
5352 install -m644 debian/shlibs.<var>package</var> debian/<var>package</var>/DEBIAN/shlibs
5353           </example>
5354           An alternative way of doing this is to create the
5355           <file>shlibs</file> file in the control area directly from
5356           <file>debian/rules</file> without using a <file>debian/shlibs</file>
5357           file at all,<footnote>
5358               This is what <prgn>dh_makeshlibs</prgn> in the
5359               <tt>debhelper</tt> suite does. If your package also has a udeb
5360               that provides a shared library, <prgn>dh_makeshlibs</prgn> can
5361               automatically generate the <tt>udeb:</tt> lines if you specify
5362               the name of the udeb with the <tt>--add-udeb</tt> option.
5363           </footnote>
5364           since the <file>debian/shlibs</file> file itself is ignored by
5365           <prgn>dpkg-shlibdeps</prgn>.
5366         </p>
5367
5368         <p>
5369           As <prgn>dpkg-shlibdeps</prgn> reads the
5370           <file>DEBIAN/shlibs</file> files in all of the binary packages
5371           being built from this source package, all of the
5372           <file>DEBIAN/shlibs</file> files should be installed before
5373           <prgn>dpkg-shlibdeps</prgn> is called on any of the binary
5374           packages.
5375         </p>
5376       </sect1>
5377
5378       <sect1 id="shlibslocal">
5379         <heading>Writing the <file>debian/shlibs.local</file> file</heading>
5380
5381         <p>
5382           This file is intended only as a <em>temporary</em> fix if
5383           your binaries or libraries depend on a library whose package
5384           does not yet provide a correct <file>shlibs</file> file.
5385         </p>
5386
5387         <p>
5388           We will assume that you are trying to package a binary
5389           <tt>foo</tt>.  When you try running
5390           <prgn>dpkg-shlibdeps</prgn> you get the following error
5391           message (<tt>-O</tt> displays the dependency information on
5392           <tt>stdout</tt> instead of writing it to
5393           <tt>debian/substvars</tt>, and the lines have been wrapped
5394           for ease of reading):
5395           <example compact="compact">
5396 $ dpkg-shlibdeps -O debian/tmp/usr/bin/foo
5397 dpkg-shlibdeps: warning: unable to find dependency
5398   information for shared library libbar (soname 1,
5399   path /usr/lib/libbar.so.1, dependency field Depends)
5400 shlibs:Depends=libc6 (>= 2.2.2-2)
5401           </example>
5402           You can then run <prgn>ldd</prgn> on the binary to find the
5403           full location of the library concerned:
5404           <example compact="compact">
5405 $ ldd foo
5406 libbar.so.1 => /usr/lib/libbar.so.1 (0x4001e000)
5407 libc.so.6 => /lib/libc.so.6 (0x40032000)
5408 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
5409           </example>
5410           So the <prgn>foo</prgn> binary depends on the
5411           <prgn>libbar</prgn> shared library, but no package seems to
5412           provide a <file>*.shlibs</file> file handling
5413           <file>libbar.so.1</file> in <file>/var/lib/dpkg/info/</file>.  Let's
5414           determine the package responsible:
5415           <example compact="compact">
5416 $ dpkg -S /usr/lib/libbar.so.1
5417 bar1: /usr/lib/libbar.so.1
5418 $ dpkg -s bar1 | grep Version
5419 Version: 1.0-1
5420           </example>
5421           This tells us that the <tt>bar1</tt> package, version 1.0-1,
5422           is the one we are using.  Now we can file a bug against the
5423           <tt>bar1</tt> package and create our own
5424           <file>debian/shlibs.local</file> to locally fix the problem.
5425           Including the following line into your
5426           <file>debian/shlibs.local</file> file:
5427           <example compact="compact">
5428 libbar 1 bar1 (>= 1.0-1)
5429           </example>
5430           should allow the package build to work.
5431         </p>
5432
5433         <p>
5434           As soon as the maintainer of <tt>bar1</tt> provides a
5435           correct <file>shlibs</file> file, you should remove this line
5436           from your <file>debian/shlibs.local</file> file.  (You should
5437           probably also then have a versioned <tt>Build-Depends</tt>
5438           on <tt>bar1</tt> to help ensure that others do not have the
5439           same problem building your package.)
5440         </p>
5441       </sect1>
5442
5443       </sect>
5444
5445     </chapt>
5446
5447
5448     <chapt id="opersys"><heading>The Operating System</heading>
5449
5450       <sect>
5451         <heading>File system hierarchy</heading>
5452
5453
5454         <sect1 id="fhs">
5455           <heading>File system Structure</heading>
5456
5457           <p>
5458             The location of all installed files and directories must
5459             comply with the File system Hierarchy Standard (FHS),
5460             version 2.3, with the exceptions noted below, and except
5461             where doing so would violate other terms of Debian
5462             Policy.  The following exceptions to the FHS apply:
5463
5464             <enumlist>
5465               <item>
5466                 <p>
5467                   Legacy XFree86 servers are permitted to retain the
5468                   configuration file location 
5469                   <file>/etc/X11/XF86Config-4</file>.
5470                 </p>
5471               </item>
5472               <item>
5473                 <p>
5474                   The optional rules related to user specific
5475                   configuration files for applications are stored in
5476                   the user's home directory are relaxed.  It is
5477                   recommended that such files start with the
5478                   '<tt>.</tt>' character (a "dot file"), and if an
5479                   application needs to create more than one dot file
5480                   then the preferred placement is in a subdirectory
5481                   with a name starting with a '.' character, (a "dot
5482                   directory"). In this case it is recommended the
5483                   configuration files not start with the '.'
5484                   character.
5485                 </p>
5486               </item>
5487               <item>
5488                 <p>
5489                   The requirement for amd64 to use <file>/lib64</file>
5490                   for 64 bit binaries is removed.
5491                 </p>
5492               </item>
5493               <item>
5494                 <p>
5495                   The requirement that
5496                   <file>/usr/local/share/man</file> be "synonymous"
5497                   with <file>/usr/local/man</file> is relaxed to a
5498                   recommendation</p>
5499               </item>
5500               <item>
5501                 <p>
5502                   The requirement that windowmanagers with a single
5503                   configuration file call it <file>system.*wmrc</file>
5504                   is removed, as is the restriction that the window
5505                   manager subdirectory be named identically to the
5506                   window manager name itself.
5507                 </p>
5508               </item>
5509               <item>
5510                 <p>
5511                   The requirement that boot manager configuration
5512                   files live in <file>/etc</file>, or at least are
5513                   symlinked there, is relaxed to a recommendation.
5514                 </p>
5515               </item>
5516             </enumlist>
5517
5518           </p>
5519           <p>
5520             The version of this document referred here can be
5521             found in the <tt>debian-policy</tt> package or on <url
5522             id="http://www.debian.org/doc/packaging-manuals/fhs/"
5523               name="FHS (Debian copy)"> alongside this manual (or, if
5524             you have the <package>debian-policy</package> installed,
5525             you can try <url
5526               id="file:///usr/share/doc/debian-policy/fhs/" name="FHS
5527               (local copy)">). The
5528             latest version, which may be a more recent version, may
5529             be found on
5530             <url id="http://www.pathname.com/fhs/" name="FHS (upstream)">.
5531             Specific questions about following the standard may be
5532             asked on the <tt>debian-devel</tt> mailing list, or
5533             referred to the FHS mailing list (see the
5534             <url id="http://www.pathname.com/fhs/" name="FHS web site"> for
5535             more information).
5536           </p>
5537         </sect1>
5538
5539         <sect1>
5540           <heading>Site-specific programs</heading>
5541
5542           <p>
5543             As mandated by the FHS, packages must not place any
5544             files in <file>/usr/local</file>, either by putting them in
5545             the file system archive to be unpacked by <prgn>dpkg</prgn>
5546             or by manipulating them in their maintainer scripts.
5547           </p>
5548
5549           <p>
5550             However, the package may create empty directories below
5551             <file>/usr/local</file> so that the system administrator knows
5552             where to place site-specific files.  These are not
5553             directories <em>in</em> <file>/usr/local</file>, but are
5554             children of directories in <file>/usr/local</file>.  These
5555             directories (<file>/usr/local/*/dir/</file>)
5556             should be removed on package removal if they are
5557             empty.
5558           </p>
5559
5560           <p>
5561             Note, that this applies only to directories <em>below</em>
5562             <file>/usr/local</file>, not <em>in</em> <file>/usr/local</file>.
5563             Packages must not create sub-directories in the directory
5564             <file>/usr/local</file> itself, except those listed in FHS,
5565             section 4.5.  However, you may create directories below
5566             them as you wish. You must not remove any of the
5567             directories listed in 4.5, even if you created them.
5568           </p>
5569
5570           <p>
5571             Since <file>/usr/local</file> can be mounted read-only from a
5572             remote server, these directories must be created and
5573             removed by the <prgn>postinst</prgn> and <prgn>prerm</prgn>
5574             maintainer scripts and not be included in the
5575             <file>.deb</file> archive.  These scripts must not fail if
5576             either of these operations fail.
5577           </p>
5578
5579           <p>
5580             For example, the <tt>emacsen-common</tt> package could
5581             contain something like
5582             <example compact="compact">
5583 if [ ! -e /usr/local/share/emacs ]
5584 then
5585   if mkdir /usr/local/share/emacs 2>/dev/null
5586   then
5587     chown root:staff /usr/local/share/emacs
5588     chmod 2775 /usr/local/share/emacs
5589   fi
5590 fi
5591             </example>
5592             in its <prgn>postinst</prgn> script, and
5593             <example compact="compact">
5594 rmdir /usr/local/share/emacs/site-lisp 2>/dev/null || true
5595 rmdir /usr/local/share/emacs 2>/dev/null || true
5596             </example>
5597             in the <prgn>prerm</prgn> script.  (Note that this form is
5598             used to ensure that if the script is interrupted, the
5599             directory <file>/usr/local/share/emacs</file> will still be
5600             removed.)
5601           </p>
5602
5603           <p>
5604             If you do create a directory in <file>/usr/local</file> for
5605             local additions to a package, you should ensure that
5606             settings in <file>/usr/local</file> take precedence over the
5607             equivalents in <file>/usr</file>.
5608           </p>
5609
5610           <p>
5611             However, because <file>/usr/local</file> and its contents are
5612             for exclusive use of the local administrator, a package
5613             must not rely on the presence or absence of files or
5614             directories in <file>/usr/local</file> for normal operation.
5615           </p>
5616
5617           <p>
5618             The <file>/usr/local</file> directory itself and all the
5619             subdirectories created by the package should (by default) have
5620             permissions 2775 (group-writable and set-group-id) and be
5621             owned by <tt>root:staff</tt>.
5622           </p>
5623         </sect1>
5624
5625         <sect1>
5626           <heading>The system-wide mail directory</heading>
5627           <p>
5628             The system-wide mail directory is <file>/var/mail</file>. This
5629             directory is part of the base system and should not owned
5630             by any particular mail agents.  The use of the old
5631             location <file>/var/spool/mail</file> is deprecated, even
5632             though the spool may still be physically located there.
5633             To maintain partial upgrade compatibility for systems
5634             which have <file>/var/spool/mail</file> as their physical mail
5635             spool, packages using <file>/var/mail</file> must depend on
5636             either <package>libc6</package> (&gt;= 2.1.3-13), or on
5637             <package>base-files</package> (&gt;= 2.2.0), or on later
5638             versions of either one of these packages.
5639           </p>
5640         </sect1>
5641       </sect>
5642
5643       <sect>
5644         <heading>Users and groups</heading>
5645
5646         <sect1>
5647           <heading>Introduction</heading>
5648           <p>
5649             The Debian system can be configured to use either plain or
5650             shadow passwords.
5651           </p>
5652
5653           <p>
5654             Some user ids (UIDs) and group ids (GIDs) are reserved
5655             globally for use by certain packages.  Because some
5656             packages need to include files which are owned by these
5657             users or groups, or need the ids compiled into binaries,
5658             these ids must be used on any Debian system only for the
5659             purpose for which they are allocated. This is a serious
5660             restriction, and we should avoid getting in the way of
5661             local administration policies. In particular, many sites
5662             allocate users and/or local system groups starting at 100.
5663           </p>
5664
5665           <p>
5666             Apart from this we should have dynamically allocated ids,
5667             which should by default be arranged in some sensible
5668             order, but the behavior should be configurable.
5669           </p>
5670
5671           <p>
5672             Packages other than <tt>base-passwd</tt> must not modify
5673             <file>/etc/passwd</file>, <file>/etc/shadow</file>,
5674             <file>/etc/group</file> or <file>/etc/gshadow</file>.
5675           </p>
5676         </sect1>
5677
5678         <sect1>
5679           <heading>UID and GID classes</heading>
5680           <p>
5681             The UID and GID numbers are divided into classes as
5682             follows:
5683             <taglist>
5684               <tag>0-99:</tag>
5685               <item>
5686                 <p>
5687                   Globally allocated by the Debian project, the same
5688                   on every Debian system.  These ids will appear in
5689                   the <file>passwd</file> and <file>group</file> files of all
5690                   Debian systems, new ids in this range being added
5691                   automatically as the <tt>base-passwd</tt> package is
5692                   updated.
5693                 </p>
5694
5695                 <p>
5696                   Packages which need a single statically allocated
5697                   uid or gid should use one of these; their
5698                   maintainers should ask the <tt>base-passwd</tt>
5699                   maintainer for ids.
5700                 </p>
5701               </item>
5702
5703               <tag>100-999:</tag>
5704               <item>
5705                 <p>
5706                   Dynamically allocated system users and groups.
5707                   Packages which need a user or group, but can have
5708                   this user or group allocated dynamically and
5709                   differently on each system, should use <tt>adduser
5710                   --system</tt> to create the group and/or user.
5711                   <prgn>adduser</prgn> will check for the existence of
5712                   the user or group, and if necessary choose an unused
5713                   id based on the ranges specified in
5714                   <file>adduser.conf</file>.
5715                 </p>
5716               </item>
5717
5718               <tag>1000-29999:</tag>
5719               <item>
5720                 <p>
5721                   Dynamically allocated user accounts.  By default
5722                   <prgn>adduser</prgn> will choose UIDs and GIDs for
5723                   user accounts in this range, though
5724                   <file>adduser.conf</file> may be used to modify this
5725                   behavior.
5726                 </p>
5727               </item>
5728
5729               <tag>30000-59999:</tag>
5730               <item>
5731                 <p>Reserved.</p>
5732               </item>
5733
5734               <tag>60000-64999:</tag>
5735               <item>
5736                 <p>
5737                   Globally allocated by the Debian project, but only
5738                   created on demand. The ids are allocated centrally
5739                   and statically, but the actual accounts are only
5740                   created on users' systems on demand.
5741                 </p>
5742
5743                 <p>
5744                   These ids are for packages which are obscure or
5745                   which require many statically-allocated ids.  These
5746                   packages should check for and create the accounts in
5747                   <file>/etc/passwd</file> or <file>/etc/group</file> (using
5748                   <prgn>adduser</prgn> if it has this facility) if
5749                   necessary.  Packages which are likely to require
5750                   further allocations should have a "hole" left after
5751                   them in the allocation, to give them room to
5752                   grow.
5753                 </p>
5754               </item>
5755
5756               <tag>65000-65533:</tag>
5757               <item>
5758                 <p>Reserved.</p>
5759               </item>
5760
5761               <tag>65534:</tag>
5762               <item>
5763                 <p>
5764                   User <tt>nobody</tt>. The corresponding gid refers
5765                   to the group <tt>nogroup</tt>.
5766                 </p>
5767               </item>
5768
5769               <tag>65535:</tag>
5770               <item>
5771                 <p>
5772                   <tt>(uid_t)(-1) == (gid_t)(-1)</tt> <em>must
5773                   not</em> be used, because it is the error return
5774                   sentinel value.
5775                 </p>
5776               </item>
5777             </taglist>
5778           </p>
5779         </sect1>
5780       </sect>
5781
5782       <sect id="sysvinit">
5783         <heading>System run levels and <file>init.d</file> scripts</heading>
5784
5785         <sect1 id="/etc/init.d">
5786           <heading>Introduction</heading>
5787
5788           <p>
5789             The <file>/etc/init.d</file> directory contains the scripts
5790             executed by <prgn>init</prgn> at boot time and when the
5791             init state (or "runlevel") is changed (see <manref
5792             name="init" section="8">).
5793           </p>
5794
5795           <p>
5796             There are at least two different, yet functionally
5797             equivalent, ways of handling these scripts.  For the sake
5798             of simplicity, this document describes only the symbolic
5799             link method. However, it must not be assumed by maintainer
5800             scripts that this method is being used, and any automated
5801             manipulation of the various runlevel behaviors by
5802             maintainer scripts must be performed using
5803             <prgn>update-rc.d</prgn> as described below and not by
5804             manually installing or removing symlinks.  For information
5805             on the implementation details of the other method,
5806             implemented in the <tt>file-rc</tt> package, please refer
5807             to the documentation of that package.
5808           </p>
5809
5810           <p>
5811             These scripts are referenced by symbolic links in the
5812             <file>/etc/rc<var>n</var>.d</file> directories.  When changing
5813             runlevels, <prgn>init</prgn> looks in the directory
5814             <file>/etc/rc<var>n</var>.d</file> for the scripts it should
5815             execute, where <tt><var>n</var></tt> is the runlevel that
5816             is being changed to, or <tt>S</tt> for the boot-up
5817             scripts.
5818           </p>
5819
5820           <p>
5821             The names of the links all have the form
5822             <file>S<var>mm</var><var>script</var></file> or
5823             <file>K<var>mm</var><var>script</var></file> where
5824             <var>mm</var> is a two-digit number and <var>script</var>
5825             is the name of the script (this should be the same as the
5826             name of the actual script in <file>/etc/init.d</file>).
5827           </p>
5828
5829           <p>
5830             When <prgn>init</prgn> changes runlevel first the targets
5831             of the links whose names start with a <tt>K</tt> are
5832             executed, each with the single argument <tt>stop</tt>,
5833             followed by the scripts prefixed with an <tt>S</tt>, each
5834             with the single argument <tt>start</tt>.  (The links are
5835             those in the <file>/etc/rc<var>n</var>.d</file> directory
5836             corresponding to the new runlevel.)  The <tt>K</tt> links
5837             are responsible for killing services and the <tt>S</tt>
5838             link for starting services upon entering the runlevel.
5839           </p>
5840
5841           <p>
5842             For example, if we are changing from runlevel 2 to
5843             runlevel 3, init will first execute all of the <tt>K</tt>
5844             prefixed scripts it finds in <file>/etc/rc3.d</file>, and then
5845             all of the <tt>S</tt> prefixed scripts in that directory.
5846             The links starting with <tt>K</tt> will cause the
5847             referred-to file to be executed with an argument of
5848             <tt>stop</tt>, and the <tt>S</tt> links with an argument
5849             of <tt>start</tt>.
5850           </p>
5851
5852           <p>
5853             The two-digit number <var>mm</var> is used to determine
5854             the order in which to run the scripts: low-numbered links
5855             have their scripts run first.  For example, the
5856             <tt>K20</tt> scripts will be executed before the
5857             <tt>K30</tt> scripts.  This is used when a certain service
5858             must be started before another.  For example, the name
5859             server <prgn>bind</prgn> might need to be started before
5860             the news server <prgn>inn</prgn> so that <prgn>inn</prgn>
5861             can set up its access lists.  In this case, the script
5862             that starts <prgn>bind</prgn> would have a lower number
5863             than the script that starts <prgn>inn</prgn> so that it
5864             runs first:
5865             <example compact="compact">
5866 /etc/rc2.d/S17bind
5867 /etc/rc2.d/S70inn
5868             </example>
5869           </p>
5870
5871           <p>
5872             The two runlevels 0 (halt) and 6 (reboot) are slightly
5873             different.  In these runlevels, the links with an
5874             <tt>S</tt> prefix are still called after those with a
5875             <tt>K</tt> prefix, but they too are called with the single
5876             argument <tt>stop</tt>.
5877           </p>
5878
5879           <p>
5880             Also, if the script name ends in <tt>.sh</tt>, the script
5881             will be sourced in runlevel <tt>S</tt> rather than being
5882             run in a forked subprocess, but will be explicitly run by
5883             <prgn>sh</prgn> in all other runlevels.
5884           </p>
5885         </sect1>
5886
5887         <sect1>
5888           <heading>Writing the scripts</heading>
5889
5890           <p>
5891             Packages that include daemons for system services should
5892             place scripts in <file>/etc/init.d</file> to start or stop
5893             services at boot time or during a change of runlevel.
5894             These scripts should be named
5895             <file>/etc/init.d/<var>package</var></file>, and they should
5896             accept one argument, saying what to do:
5897
5898             <taglist>
5899               <tag><tt>start</tt></tag>
5900               <item>start the service,</item>
5901
5902               <tag><tt>stop</tt></tag>
5903               <item>stop the service,</item>
5904
5905               <tag><tt>restart</tt></tag>
5906               <item>stop and restart the service if it's already running,
5907                   otherwise start the service</item>
5908
5909               <tag><tt>reload</tt></tag>
5910               <item><p>cause the configuration of the service to be
5911                   reloaded without actually stopping and restarting
5912                   the service,</item>
5913
5914               <tag><tt>force-reload</tt></tag>
5915               <item>cause the configuration to be reloaded if the
5916                   service supports this, otherwise restart the
5917                   service.</item>
5918             </taglist>
5919
5920             The <tt>start</tt>, <tt>stop</tt>, <tt>restart</tt>, and
5921             <tt>force-reload</tt> options should be supported by all
5922             scripts in <file>/etc/init.d</file>, the <tt>reload</tt>
5923             option is optional.
5924           </p>
5925
5926           <p>
5927             The <file>init.d</file> scripts must ensure that they will
5928             behave sensibly (i.e., returning success and not starting
5929             multiple copies of a service) if invoked with <tt>start</tt>
5930             when the service is already running, or with <tt>stop</tt>
5931             when it isn't, and that they don't kill unfortunately-named
5932             user processes.  The best way to achieve this is usually to
5933             use <prgn>start-stop-daemon</prgn> with the <tt>--oknodo</tt>
5934             option.
5935           </p>
5936
5937           <p>
5938             If a service reloads its configuration automatically (as
5939             in the case of <prgn>cron</prgn>, for example), the
5940             <tt>reload</tt> option of the <file>init.d</file> script
5941             should behave as if the configuration has been reloaded
5942             successfully.
5943           </p>
5944
5945           <p>
5946             The <file>/etc/init.d</file> scripts must be treated as
5947             configuration files, either (if they are present in the
5948             package, that is, in the .deb file) by marking them as
5949             <tt>conffile</tt>s, or, (if they do not exist in the .deb)
5950             by managing them correctly in the maintainer scripts (see
5951             <ref id="config-files">).  This is important since we want
5952             to give the local system administrator the chance to adapt
5953             the scripts to the local system, e.g., to disable a
5954             service without de-installing the package, or to specify
5955             some special command line options when starting a service,
5956             while making sure their changes aren't lost during the next
5957             package upgrade.
5958           </p>
5959
5960           <p>
5961             These scripts should not fail obscurely when the
5962             configuration files remain but the package has been
5963             removed, as configuration files remain on the system after
5964             the package has been removed.  Only when <prgn>dpkg</prgn>
5965             is executed with the <tt>--purge</tt> option will
5966             configuration files be removed.  In particular, as the
5967             <file>/etc/init.d/<var>package</var></file> script itself is
5968             usually a <tt>conffile</tt>, it will remain on the system
5969             if the package is removed but not purged.  Therefore, you
5970             should include a <tt>test</tt> statement at the top of the
5971             script, like this:
5972             <example compact="compact">
5973 test -f <var>program-executed-later-in-script</var> || exit 0
5974             </example>
5975           </p>
5976
5977           <p>
5978             Often there are some variables in the <file>init.d</file>
5979             scripts whose values control the behavior of the scripts,
5980             and which a system administrator is likely to want to
5981             change.  As the scripts themselves are frequently
5982             <tt>conffile</tt>s, modifying them requires that the
5983             administrator merge in their changes each time the package
5984             is upgraded and the <tt>conffile</tt> changes.  To ease
5985             the burden on the system administrator, such configurable
5986             values should not be placed directly in the script.
5987             Instead, they should be placed in a file in
5988             <file>/etc/default</file>, which typically will have the same
5989             base name as the <file>init.d</file> script.  This extra file
5990             should be sourced by the script when the script runs.  It
5991             must contain only variable settings and comments in SUSv3
5992             <prgn>sh</prgn> format.  It may either be a
5993             <tt>conffile</tt> or a configuration file maintained by
5994             the package maintainer scripts.  See <ref id="config-files">
5995             for more details.
5996           </p>
5997
5998           <p>
5999             To ensure that vital configurable values are always
6000             available, the <file>init.d</file> script should set default
6001             values for each of the shell variables it uses, either
6002             before sourcing the <file>/etc/default/</file> file or
6003             afterwards using something like the <tt>:
6004             ${VAR:=default}</tt> syntax.  Also, the <file>init.d</file>
6005             script must behave sensibly and not fail if the
6006             <file>/etc/default</file> file is deleted.
6007           </p>
6008         </sect1>
6009
6010         <sect1>
6011           <heading>Interfacing with the initscript system</heading>
6012
6013           <p>
6014             Maintainers should use the abstraction layer provided by
6015             the <prgn>update-rc.d</prgn> and <prgn>invoke-rc.d</prgn>
6016             programs to deal with initscripts in their packages'
6017             scripts such as <prgn>postinst</prgn>, <prgn>prerm</prgn>
6018             and <prgn>postrm</prgn>.
6019           </p>
6020
6021           <p>
6022             Directly managing the /etc/rc?.d links and directly
6023             invoking the <file>/etc/init.d/</file> initscripts should
6024             be done only by packages providing the initscript
6025             subsystem (such as <prgn>sysv-rc</prgn> and
6026             <prgn>file-rc</prgn>).
6027           </p>
6028
6029           <sect2>
6030             <heading>Managing the links</heading>
6031
6032             <p>
6033               The program <prgn>update-rc.d</prgn> is provided for
6034               package maintainers to arrange for the proper creation and
6035               removal of <file>/etc/rc<var>n</var>.d</file> symbolic links,
6036               or their functional equivalent if another method is being
6037               used.  This may be used by maintainers in their packages'
6038               <prgn>postinst</prgn> and <prgn>postrm</prgn> scripts.
6039             </p>
6040
6041             <p>
6042               You must not include any <file>/etc/rc<var>n</var>.d</file>
6043               symbolic links in the actual archive or manually create or
6044               remove the symbolic links in maintainer scripts; you must
6045               use the <prgn>update-rc.d</prgn> program instead.  (The
6046               former will fail if an alternative method of maintaining
6047               runlevel information is being used.)  You must not include
6048               the <file>/etc/rc<var>n</var>.d</file> directories themselves
6049               in the archive either.  (Only the <tt>sysvinit</tt>
6050               package may do so.)
6051             </p>
6052
6053             <p>
6054               By default <prgn>update-rc.d</prgn> will start services in
6055               each of the multi-user state runlevels (2, 3, 4, and 5)
6056               and stop them in the halt runlevel (0), the single-user
6057               runlevel (1) and the reboot runlevel (6).  The system
6058               administrator will have the opportunity to customize
6059               runlevels by simply adding, moving, or removing the
6060               symbolic links in <file>/etc/rc<var>n</var>.d</file> if
6061               symbolic links are being used, or by modifying
6062               <file>/etc/runlevel.conf</file> if the <tt>file-rc</tt> method
6063               is being used.
6064             </p>
6065
6066             <p>
6067               To get the default behavior for your package, put in your
6068               <prgn>postinst</prgn> script
6069               <example compact="compact">
6070                 update-rc.d <var>package</var> defaults
6071               </example>
6072               and in your <prgn>postrm</prgn>
6073               <example compact="compact">
6074                 if [ "$1" = purge ]; then
6075                 update-rc.d <var>package</var> remove
6076                 fi
6077               </example>. Note that if your package changes runlevels
6078               or priority, you may have to remove and recreate the links,
6079               since otherwise the old links may persist. Refer to the
6080               documentation of <prgn>update-rc.d</prgn>.
6081             </p>
6082
6083             <p>
6084               This will use a default sequence number of 20.  If it does
6085               not matter when or in which order the <file>init.d</file>
6086               script is run, use this default.  If it does, then you
6087               should talk to the maintainer of the <prgn>sysvinit</prgn>
6088               package or post to <tt>debian-devel</tt>, and they will
6089               help you choose a number.
6090             </p>
6091
6092             <p>
6093               For more information about using <tt>update-rc.d</tt>,
6094               please consult its man page <manref name="update-rc.d"
6095                 section="8">.
6096             </p>
6097           </sect2>
6098
6099           <sect2>
6100             <heading>Running initscripts</heading>
6101             <p>
6102               The program <prgn>invoke-rc.d</prgn> is provided to make
6103               it easier for package maintainers to properly invoke an
6104               initscript, obeying runlevel and other locally-defined
6105               constraints that might limit a package's right to start,
6106               stop and otherwise manage services. This program may be
6107               used by maintainers in their packages' scripts.
6108             </p>
6109
6110             <p>
6111               The package maintainer scripts must use
6112               <prgn>invoke-rc.d</prgn> to invoke the
6113               <file>/etc/init.d/*</file> initscripts, instead of
6114               calling them directly.
6115             </p>
6116
6117             <p>
6118               By default, <prgn>invoke-rc.d</prgn> will pass any
6119               action requests (start, stop, reload, restart...) to the
6120               <file>/etc/init.d</file> script, filtering out requests
6121               to start or restart a service out of its intended
6122               runlevels.
6123             </p>
6124
6125             <p>
6126               Most packages will simply need to change:
6127               <example compact="compact">/etc/init.d/&lt;package&gt;
6128               &lt;action&gt;</example> in their <prgn>postinst</prgn>
6129               and <prgn>prerm</prgn> scripts to:
6130               <example compact="compact">
6131         if which invoke-rc.d >/dev/null 2>&1; then
6132                 invoke-rc.d <var>package</var> &lt;action&gt;
6133         else
6134                 /etc/init.d/<var>package</var> &lt;action&gt;
6135         fi
6136               </example>
6137             </p>
6138
6139             <p>
6140               A package should register its initscript services using
6141               <prgn>update-rc.d</prgn> before it tries to invoke them
6142               using <prgn>invoke-rc.d</prgn>. Invocation of
6143               unregistered services may fail.
6144             </p>
6145
6146             <p>
6147               For more information about using
6148               <prgn>invoke-rc.d</prgn>, please consult its man page
6149               <manref name="invoke-rc.d" section="8">.
6150             </p>
6151           </sect2>
6152         </sect1>
6153
6154         <sect1>
6155           <heading>Boot-time initialization</heading>
6156
6157           <p>
6158             There used to be another directory, <file>/etc/rc.boot</file>,
6159             which contained scripts which were run once per machine
6160             boot. This has been deprecated in favour of links from
6161             <file>/etc/rcS.d</file> to files in <file>/etc/init.d</file> as
6162             described in <ref id="/etc/init.d">.  Packages must not
6163             place files in <file>/etc/rc.boot</file>.
6164           </p>
6165         </sect1>
6166
6167         <sect1>
6168           <heading>Example</heading>
6169
6170           <p>
6171             An example on which you can base your
6172             <file>/etc/init.d</file> scripts is found in
6173             <file>/etc/init.d/skeleton</file>.
6174           </p>
6175
6176         </sect1>
6177       </sect>
6178
6179       <sect>
6180         <heading>Console messages from <file>init.d</file> scripts</heading>
6181
6182         <p>
6183           This section describes the formats to be used for messages
6184           written to standard output by the <file>/etc/init.d</file>
6185           scripts.  The intent is to improve the consistency of
6186           Debian's startup and shutdown look and feel.  For this
6187           reason, please look very carefully at the details.  We want
6188           the messages to have the same format in terms of wording,
6189           spaces, punctuation and case of letters.
6190         </p>
6191
6192         <p>
6193           Here is a list of overall rules that should be used for
6194           messages generated by <file>/etc/init.d</file> scripts.  
6195         </p>
6196
6197         <p>
6198           <list>
6199             <item>
6200                 The message should fit in one line (fewer than 80
6201                 characters), start with a capital letter and end with
6202                 a period (<tt>.</tt>) and line feed (<tt>"\n"</tt>).
6203             </item>
6204
6205             <item>
6206               If the script is performing some time consuming task in
6207               the background (not merely starting or stopping a
6208               program, for instance), an ellipsis (three dots:
6209               <tt>...</tt>) should be output to the screen, with no
6210               leading or tailing whitespace or line feeds.
6211             </item>
6212
6213             <item>
6214               The messages should appear as if the computer is telling
6215               the user what it is doing (politely :-), but should not
6216                 mention "it" directly.  For example, instead of:
6217                 <example compact="compact">
6218 I'm starting network daemons: nfsd mountd.
6219                 </example>
6220                 the message should say
6221                 <example compact="compact">
6222 Starting network daemons: nfsd mountd.
6223                 </example>
6224             </item>
6225           </list>
6226         </p>
6227
6228         <p>
6229           <tt>init.d</tt> script should use the following  standard
6230           message formats for the situations enumerated below.
6231         </p>
6232
6233         <p>
6234           <list>
6235             <item>
6236               <p>When daemons are started</p>
6237
6238               <p>
6239                 If the script starts one or more daemons, the output
6240                 should look like this (a single line, no leading
6241                 spaces):
6242                 <example compact="compact">
6243 Starting <var>description</var>: <var>daemon-1</var> ... <var>daemon-n</var>.
6244                 </example>
6245                 The <var>description</var> should describe the
6246                 subsystem the daemon or set of daemons are part of,
6247                 while <var>daemon-1</var> up to <var>daemon-n</var>
6248                 denote each daemon's name (typically the file name of
6249                 the program).
6250               </p>
6251
6252               <p>
6253                 For example, the output of <file>/etc/init.d/lpd</file>
6254                 would look like:
6255                 <example compact="compact">
6256 Starting printer spooler: lpd.
6257                 </example>
6258               </p>
6259
6260               <p>
6261                 This can be achieved by saying
6262                 <example compact="compact">
6263 echo -n "Starting printer spooler: lpd"
6264 start-stop-daemon --start --quiet --exec /usr/sbin/lpd
6265 echo "."
6266                 </example>
6267                 in the script. If there are more than one daemon to
6268                 start, the output should look like this:
6269                 <example compact="compact">
6270 echo -n "Starting remote file system services:"
6271 echo -n " nfsd"; start-stop-daemon --start --quiet nfsd
6272 echo -n " mountd"; start-stop-daemon --start --quiet mountd
6273 echo -n " ugidd"; start-stop-daemon --start --quiet ugidd
6274 echo "."
6275                 </example>
6276                 This makes it possible for the user to see what is
6277                 happening and when the final daemon has been started.
6278                 Care should be taken in the placement of white spaces:
6279                 in the example above the system administrators can
6280                 easily comment out a line if they don't want to start
6281                 a specific daemon, while the displayed message still
6282                 looks good.
6283               </p>
6284             </item>
6285
6286             <item>
6287               <p>When a system parameter is being set</p>
6288
6289               <p>
6290                 If you have to set up different system parameters
6291                 during the system boot, you should use this format:
6292                 <example compact="compact">
6293 Setting <var>parameter</var> to "<var>value</var>".
6294                 </example>
6295               </p>
6296
6297               <p>
6298                 You can use a statement such as the following to get
6299                 the quotes right:
6300                 <example compact="compact">
6301 echo "Setting DNS domainname to \"$domainname\"."
6302                 </example>
6303               </p>
6304
6305               <p>
6306                 Note that the same symbol (<tt>"</tt>) is used for the left
6307                 and right quotation marks.  A grave accent (<tt>`</tt>) is
6308                 not a quote character; neither is an apostrophe
6309                 (<tt>'</tt>).
6310               </p>
6311             </item>
6312
6313             <item>
6314               <p>When a daemon is stopped or restarted</p>
6315
6316               <p>
6317                 When you stop or restart a daemon, you should issue a
6318                 message identical to the startup message, except that
6319                 <tt>Starting</tt> is replaced with <tt>Stopping</tt>
6320                 or <tt>Restarting</tt> respectively.
6321               </p>
6322
6323               <p>
6324                 For example, stopping the printer daemon will look like
6325                 this:
6326                 <example compact="compact">
6327 Stopping printer spooler: lpd.
6328                 </example>
6329               </p>
6330             </item>
6331
6332             <item>
6333               <p>When something is executed</p>
6334
6335               <p>
6336                 There are several examples where you have to run a
6337                 program at system startup or shutdown to perform a
6338                 specific task, for example, setting the system's clock
6339                 using <prgn>netdate</prgn> or killing all processes
6340                 when the system shuts down.  Your message should look
6341                 like this:
6342                 <example compact="compact">
6343 Doing something very useful...done.
6344                 </example>
6345                 You should print the <tt>done.</tt> immediately after
6346                 the job has been completed, so that the user is
6347                 informed why they have to wait.  You can get this
6348                 behavior by saying
6349                 <example compact="compact">
6350 echo -n "Doing something very useful..."
6351 do_something
6352 echo "done."
6353                 </example>
6354                 in your script.
6355               </p>
6356             </item>
6357
6358             <item>
6359               <p>When the configuration is reloaded</p>
6360
6361               <p>
6362                 When a daemon is forced to reload its configuration
6363                 files you should use the following format:
6364                 <example compact="compact">
6365 Reloading <var>description</var> configuration...done.
6366                 </example>
6367                 where <var>description</var> is the same as in the
6368                 daemon starting message.
6369               </p>
6370             </item>
6371           </list>
6372         </p>
6373       </sect>
6374
6375       <sect>
6376         <heading>Cron jobs</heading>
6377
6378         <p>
6379           Packages must not modify the configuration file
6380           <file>/etc/crontab</file>, and they must not modify the files in
6381           <file>/var/spool/cron/crontabs</file>.</p>
6382
6383         <p>
6384           If a package wants to install a job that has to be executed
6385           via cron, it should place a file with the name of the
6386           package in one or more of the following directories:
6387           <example compact="compact">
6388 /etc/cron.hourly
6389 /etc/cron.daily
6390 /etc/cron.weekly
6391 /etc/cron.monthly
6392           </example>
6393           As these directory names imply, the files within them are
6394           executed on an hourly, daily, weekly, or monthly basis,
6395           respectively. The exact times are listed in
6396           <file>/etc/crontab</file>.</p>
6397
6398         <p>
6399           All files installed in any of these directories must be
6400           scripts (e.g., shell scripts or Perl scripts) so that they
6401           can easily be modified by the local system administrator.
6402           In addition, they must be treated as configuration files.
6403         </p>
6404
6405         <p>
6406           If a certain job has to be executed at some other frequency or
6407           at a specific time, the package should install a file
6408           <file>/etc/cron.d/<var>package</var></file>. This file uses the
6409           same syntax as <file>/etc/crontab</file> and is processed by
6410           <prgn>cron</prgn> automatically. The file must also be
6411           treated as a configuration file. (Note that entries in the
6412           <file>/etc/cron.d</file> directory are not handled by
6413           <prgn>anacron</prgn>. Thus, you should only use this
6414           directory for jobs which may be skipped if the system is not
6415           running.)</p>
6416
6417         <p>
6418           The scripts or crontab entries in these directories should
6419           check if all necessary programs are installed before they
6420           try to execute them. Otherwise, problems will arise when a
6421           package was removed but not purged since configuration files
6422           are kept on the system in this situation.</p>
6423       </sect>
6424
6425       <sect id="menus">
6426         <heading>Menus</heading>
6427
6428         <p>
6429           The Debian <tt>menu</tt> package provides a standard
6430           interface between packages providing applications and
6431           <em>menu programs</em> (either X window managers or
6432           text-based menu programs such as <prgn>pdmenu</prgn>).
6433         </p>
6434
6435         <p>
6436           All packages that provide applications that need not be
6437           passed any special command line arguments for normal
6438           operation should register a menu entry for those
6439           applications, so that users of the <tt>menu</tt> package
6440           will automatically get menu entries in their window
6441           managers, as well in shells like <tt>pdmenu</tt>.
6442         </p>
6443
6444         <p>
6445           Menu entries should follow the current menu policy.
6446         </p>
6447
6448         <p>
6449           The menu policy can be found in the <tt>menu-policy</tt>
6450           files in the <tt>debian-policy</tt> package.
6451           It is also available from the Debian web mirrors at
6452           <tt><url name="/doc/packaging-manuals/menu-policy/"
6453                 id="http://www.debian.org/doc/packaging-manuals/menu-policy/"></tt>.
6454         </p>
6455
6456         <p>
6457           Please also refer to the <em>Debian Menu System</em>
6458           documentation that comes with the <package>menu</package>
6459           package for information about how to register your
6460           applications.
6461         </p>
6462       </sect>
6463
6464       <sect id="mime">
6465         <heading>Multimedia handlers</heading>
6466
6467         <p>
6468           MIME (Multipurpose Internet Mail Extensions, RFCs 2045-2049)
6469           is a mechanism for encoding files and data streams and
6470           providing meta-information about them, in particular their
6471           type (e.g.  audio or video) and format (e.g. PNG, HTML,
6472           MP3).
6473         </p>
6474
6475         <p>
6476           Registration of MIME type handlers allows programs like mail
6477           user agents and web browsers to invoke these handlers to
6478           view, edit or display MIME types they don't support directly.
6479         </p>
6480
6481         <p>
6482           Packages which provide the ability to view/show/play,
6483           compose, edit or print MIME types should register themselves
6484           as such following the current MIME support policy.
6485         </p>
6486
6487         <p>
6488           The MIME support policy can be found in the <tt>mime-policy</tt>
6489           files in the <tt>debian-policy</tt> package.
6490           It is also available from the Debian web mirrors at
6491           <tt><url name="/doc/packaging-manuals/mime-policy/"
6492                 id="http://www.debian.org/doc/packaging-manuals/mime-policy/"></tt>.
6493         </p>
6494
6495       </sect>
6496
6497       <sect>
6498         <heading>Keyboard configuration</heading>
6499
6500         <p>
6501           To achieve a consistent keyboard configuration so that all
6502           applications interpret a keyboard event the same way, all
6503           programs in the Debian distribution must be configured to
6504           comply with the following guidelines.
6505         </p>
6506
6507         <p>
6508           The following keys must have the specified interpretations:
6509
6510           <taglist>
6511             <tag><tt>&lt;--</tt></tag>
6512             <item>delete the character to the left of the cursor</item>
6513
6514             <tag><tt>Delete</tt></tag>
6515             <item>delete the character to the right of the cursor</item>
6516
6517             <tag><tt>Control+H</tt></tag>
6518             <item>emacs: the help prefix</item>
6519           </taglist>
6520
6521           The interpretation of any keyboard events should be
6522           independent of the terminal that is used, be it a virtual
6523           console, an X terminal emulator, an rlogin/telnet session,
6524           etc.
6525         </p>
6526
6527         <p>
6528           The following list explains how the different programs
6529           should be set up to achieve this:
6530         </p>
6531
6532         <p>
6533           <list>
6534             <item>
6535                 <tt>&lt;--</tt> generates <tt>KB_BackSpace</tt> in X.
6536             </item>
6537
6538             <item>
6539                 <tt>Delete</tt> generates <tt>KB_Delete</tt> in X.
6540             </item>
6541
6542             <item>
6543                 X translations are set up to make
6544                 <tt>KB_Backspace</tt> generate ASCII DEL, and to make
6545                 <tt>KB_Delete</tt> generate <tt>ESC [ 3 ~</tt> (this
6546                 is the vt220 escape code for the "delete character"
6547                 key).  This must be done by loading the X resources
6548                 using <prgn>xrdb</prgn> on all local X displays, not
6549                 using the application defaults, so that the
6550                 translation resources used correspond to the
6551                 <prgn>xmodmap</prgn> settings.
6552             </item>
6553
6554             <item>
6555                 The Linux console is configured to make
6556                 <tt>&lt;--</tt> generate DEL, and <tt>Delete</tt>
6557                 generate <tt>ESC [ 3 ~</tt>.
6558             </item>
6559
6560             <item>
6561                 X applications are configured so that <tt>&lt;</tt>
6562                 deletes left, and <tt>Delete</tt> deletes right.  Motif
6563                 applications already work like this.
6564             </item>
6565
6566             <item>
6567                 Terminals should have <tt>stty erase ^?</tt> .
6568             </item>
6569
6570             <item>
6571                 The <tt>xterm</tt> terminfo entry should have <tt>ESC
6572                 [ 3 ~</tt> for <tt>kdch1</tt>, just as for
6573                 <tt>TERM=linux</tt> and <tt>TERM=vt220</tt>.
6574             </item>
6575
6576             <item>
6577                 Emacs is programmed to map <tt>KB_Backspace</tt> or
6578                 the <tt>stty erase</tt> character to
6579                 <tt>delete-backward-char</tt>, and <tt>KB_Delete</tt>
6580                 or <tt>kdch1</tt> to <tt>delete-forward-char</tt>, and
6581                 <tt>^H</tt> to <tt>help</tt> as always.
6582             </item>
6583
6584             <item>
6585                 Other applications use the <tt>stty erase</tt>
6586                 character and <tt>kdch1</tt> for the two delete keys,
6587                 with ASCII DEL being "delete previous character" and
6588                 <tt>kdch1</tt> being "delete character under
6589                 cursor".
6590             </item>
6591
6592           </list>
6593         </p>
6594
6595         <p>
6596           This will solve the problem except for the following
6597           cases:
6598         </p>
6599
6600         <p>
6601           <list>
6602             <item>
6603                 Some terminals have a <tt>&lt;--</tt> key that cannot
6604                 be made to produce anything except <tt>^H</tt>.  On
6605                 these terminals Emacs help will be unavailable on
6606                 <tt>^H</tt> (assuming that the <tt>stty erase</tt>
6607                 character takes precedence in Emacs, and has been set
6608                 correctly).  <tt>M-x help</tt> or <tt>F1</tt> (if
6609                 available) can be used instead.
6610             </item>
6611
6612             <item>
6613                 Some operating systems use <tt>^H</tt> for <tt>stty
6614                 erase</tt>.  However, modern telnet versions and all
6615                 rlogin versions propagate <tt>stty</tt> settings, and
6616                 almost all UNIX versions honour <tt>stty erase</tt>.
6617                 Where the <tt>stty</tt> settings are not propagated
6618                 correctly, things can be made to work by using
6619                 <tt>stty</tt> manually.
6620             </item>
6621
6622             <item>
6623                 Some systems (including previous Debian versions) use
6624                 <prgn>xmodmap</prgn> to arrange for both
6625                 <tt>&lt;--</tt> and <tt>Delete</tt> to generate
6626                 <tt>KB_Delete</tt>.  We can change the behavior of
6627                 their X clients using the same X resources that we use
6628                 to do it for our own clients, or configure our clients
6629                 using their resources when things are the other way
6630                 around.  On displays configured like this
6631                 <tt>Delete</tt> will not work, but <tt>&lt;--</tt>
6632                 will.
6633             </item>
6634
6635             <item>
6636                 Some operating systems have different <tt>kdch1</tt>
6637                 settings in their <tt>terminfo</tt> database for
6638                 <tt>xterm</tt> and others.  On these systems the
6639                 <tt>Delete</tt> key will not work correctly when you
6640                 log in from a system conforming to our policy, but
6641                 <tt>&lt;--</tt> will.
6642             </item>
6643           </list>
6644         </p>
6645       </sect>
6646
6647       <sect>
6648         <heading>Environment variables</heading>
6649
6650         <p>
6651           A program must not depend on environment variables to get
6652           reasonable defaults.  (That's because these environment
6653           variables would have to be set in a system-wide
6654           configuration file like <file>/etc/profile</file>, which is not
6655           supported by all shells.)
6656         </p>
6657
6658         <p>
6659           If a program usually depends on environment variables for its
6660           configuration, the program should be changed to fall back to
6661           a reasonable default configuration if these environment
6662           variables are not present. If this cannot be done easily
6663           (e.g., if the source code of a non-free program is not
6664           available), the program must be replaced by a small
6665           "wrapper" shell script which sets the environment variables
6666           if they are not already defined, and calls the original program.
6667         </p>
6668
6669         <p>
6670           Here is an example of a wrapper script for this purpose:
6671
6672           <example compact="compact">
6673 #!/bin/sh
6674 BAR=${BAR:-/var/lib/fubar}
6675 export BAR
6676 exec /usr/lib/foo/foo "$@"
6677           </example>
6678         </p>
6679
6680         <p>
6681           Furthermore, as <file>/etc/profile</file> is a configuration
6682           file of the <prgn>base-files</prgn> package, other packages must
6683           not put any environment variables or other commands into that
6684           file.
6685         </p>
6686       </sect>
6687
6688       <sect id="doc-base">
6689         <heading>Registering Documents using doc-base</heading>
6690
6691         <p>
6692           The <package>doc-base</package> package implements a
6693           flexible mechanism for handling and presenting
6694           documentation. The recommended practice is for every Debian
6695           package that provides online documentation (other than just
6696           manual pages) to register these documents with
6697           <package>doc-base</package> by installing a
6698           <package>doc-base</package> control file via the
6699           <prgn/install-docs/ script at installation time and
6700           de-register the manuals again when the package is removed.
6701         </p> 
6702         <p>
6703           Please refer to the documentation that comes with the
6704           <package>doc-base</package>  package for information and
6705           details. 
6706         </p>
6707       </sect>
6708
6709     </chapt>
6710
6711
6712     <chapt id="files">
6713       <heading>Files</heading>
6714
6715       <sect>
6716         <heading>Binaries</heading>
6717
6718         <p>
6719           Two different packages must not install programs with
6720           different functionality but with the same filenames.  (The
6721           case of two programs having the same functionality but
6722           different implementations is handled via "alternatives" or
6723           the "Conflicts" mechanism.  See <ref id="maintscripts"> and
6724           <ref id="conflicts"> respectively.)  If this case happens,
6725           one of the programs must be renamed.  The maintainers should
6726           report this to the <tt>debian-devel</tt> mailing list and
6727           try to find a consensus about which program will have to be
6728           renamed.  If a consensus cannot be reached, <em>both</em>
6729           programs must be renamed.
6730         </p>
6731
6732         <p>
6733          By default, when a package is being built, any binaries
6734          created should include debugging information, as well as
6735          being compiled with optimization.  You should also turn on
6736          as many reasonable compilation warnings as possible; this
6737          makes life easier for porters, who can then look at build
6738          logs for possible problems.  For the C programming language,
6739          this means the following compilation parameters should be
6740          used:
6741           <example compact="compact">
6742 CC = gcc
6743 CFLAGS = -O2 -g -Wall # sane warning options vary between programs
6744 LDFLAGS = # none
6745 INSTALL = install -s # (or use strip on the files in debian/tmp)
6746           </example>
6747         </p>
6748
6749         <p>
6750           Note that by default all installed binaries should be stripped,
6751           either by using the <tt>-s</tt> flag to
6752           <prgn>install</prgn>, or by calling <prgn>strip</prgn> on
6753           the binaries after they have been copied into
6754           <file>debian/tmp</file> but before the tree is made into a
6755           package.
6756         </p>
6757
6758         <p>
6759           Although binaries in the build tree should be compiled with
6760           debugging information by default, it can often be difficult to
6761           debug programs if they are also subjected to compiler
6762           optimization.  For this reason, it is recommended to support the
6763           standardized environment variable <tt>DEB_BUILD_OPTIONS</tt>
6764           (see <ref id="debianrules-options">).  This variable can contain
6765           several flags to change how a package is compiled and built.
6766         </p>
6767
6768         <p>
6769           It is up to the package maintainer to decide what
6770           compilation options are best for the package.  Certain
6771           binaries (such as computationally-intensive programs) will
6772           function better with certain flags (<tt>-O3</tt>, for
6773           example); feel free to use them.  Please use good judgment
6774           here.  Don't use flags for the sake of it; only use them
6775           if there is good reason to do so.  Feel free to override
6776           the upstream author's ideas about which compilation
6777           options are best: they are often inappropriate for our
6778           environment.
6779         </p>
6780       </sect>
6781
6782
6783       <sect id="libraries">
6784         <heading>Libraries</heading>
6785
6786         <p>
6787           If the package is <strong>architecture: any</strong>, then
6788           the shared library compilation and linking flags must have
6789           <tt>-fPIC</tt>, or the package shall not build on some of
6790           the supported architectures<footnote>
6791             <p>
6792               If you are using GCC, <tt>-fPIC</tt> produces code with
6793               relocatable position independent code, which is required for
6794               most architectures to create a shared library, with i386 and
6795               perhaps some others where non position independent code is
6796               permitted in a shared library.
6797             </p>
6798             <p>
6799               Position independent code may have a performance penalty,
6800               especially on <tt>i386</tt>. However, in most cases the
6801               speed penalty must be measured against the memory wasted on
6802               the few architectures where non position independent code is
6803               even possible.
6804             </p>
6805           </footnote>. Any exception to this rule must be discussed on
6806           the mailing list <em>debian-devel@lists.debian.org</em>, and
6807           a rough consensus obtained.  The reasons for not compiling
6808           with <tt>-fPIC</tt> flag must be recorded in the file
6809           <tt>README.Debian</tt>, and care must be taken to either
6810           restrict the architecture or arrange for <tt>-fPIC</tt> to
6811           be used on architectures where it is required.<footnote>
6812             <p>
6813               Some of the reasons why this might be required is if the
6814               library contains hand crafted assembly code that is not
6815               relocatable, the speed penalty is excessive for compute
6816               intensive libs, and similar reasons.
6817             </p>
6818           </footnote>
6819         </p>
6820         <p>
6821           As to the static libraries, the common case is not to have
6822           relocatable code, since there is no benefit, unless in specific
6823           cases; therefore the static version must not be compiled
6824           with the <tt>-fPIC</tt> flag. Any exception to this rule
6825           should be discussed on the mailing list
6826           <em>debian-devel@lists.debian.org</em>,  and the reasons for
6827           compiling with the <tt>-fPIC</tt> flag must be recorded in
6828           the file <tt>README.Debian</tt>. <footnote>
6829             <p>
6830               Some of the reasons for linking static libraries with
6831               the <tt>-fPIC</tt> flag are if, for example, one needs a
6832               Perl API for a library that is under rapid development,
6833               and has an unstable API, so shared libraries are
6834               pointless at this phase of the library's development. In
6835               that case, since Perl needs a library with relocatable
6836               code, it may make sense to create a static library with
6837               relocatable code. Another reason cited is if you are
6838               distilling various libraries into a common shared
6839               library, like <tt>mklibs</tt> does in the Debian
6840               installer project.
6841             </p>
6842           </footnote>
6843         </p>
6844         <p>
6845           In other words, if both a shared and a static library is
6846           being built, each source unit (<tt>*.c</tt>, for example,
6847           for C files) will need to be compiled twice, for the normal
6848           case. 
6849         </p>
6850         <p>
6851           You must specify the gcc option <tt>-D_REENTRANT</tt>
6852           when building a library (either static or shared) to make
6853           the library compatible with LinuxThreads.
6854         </p>
6855
6856         <p>
6857           Although not enforced by the build tools, shared libraries
6858           must be linked against all libraries that they use symbols from
6859           in the same way that binaries are.  This ensures the correct
6860           functioning of the <qref id="sharedlibs-shlibdeps">shlibs</qref>
6861           system and guarantees that all libraries can be safely opened
6862           with <tt>dlopen()</tt>.  Packagers may wish to use the gcc
6863           option <tt>-Wl,-z,defs</tt> when building a shared library.
6864           Since this option enforces symbol resolution at build time,
6865           a missing library reference will be caught early as a fatal
6866           build error.
6867         </p>
6868
6869         <p>
6870           All installed shared libraries should be stripped with
6871           <example compact="compact">
6872 strip --strip-unneeded <var>your-lib</var>
6873           </example>
6874           (The option <tt>--strip-unneeded</tt> makes
6875           <prgn>strip</prgn> remove only the symbols which aren't
6876           needed for relocation processing.)  Shared libraries can
6877           function perfectly well when stripped, since the symbols for
6878           dynamic linking are in a separate part of the ELF object
6879           file.<footnote>
6880               You might also want to use the options
6881               <tt>--remove-section=.comment</tt> and
6882               <tt>--remove-section=.note</tt> on both shared libraries
6883               and executables, and <tt>--strip-debug</tt> on static
6884               libraries.
6885           </footnote>
6886         </p>
6887
6888         <p>
6889           Note that under some circumstances it may be useful to
6890           install a shared library unstripped, for example when
6891           building a separate package to support debugging.
6892         </p>
6893
6894         <p>
6895           Shared object files (often <file>.so</file> files) that are not
6896           public libraries, that is, they are not meant to be linked
6897           to by third party executables (binaries of other packages),
6898           should be installed in subdirectories of the
6899           <file>/usr/lib</file> directory.  Such files are exempt from the
6900           rules that govern ordinary shared libraries, except that
6901           they must not be installed executable and should be
6902           stripped.<footnote>
6903               A common example are the so-called "plug-ins",
6904               internal shared objects that are dynamically loaded by
6905               programs using <manref name="dlopen" section="3">.
6906           </footnote>
6907         </p>
6908
6909         <p>
6910           Packages containing shared libraries that may be linked to
6911           by other packages' binaries, but which for some
6912           <em>compelling</em> reason can not be installed in
6913           <file>/usr/lib</file> directory, may install the shared library
6914           files in subdirectories of the <file>/usr/lib</file> directory,
6915           in which case they should arrange to add that directory in
6916           <file>/etc/ld.so.conf</file> in the package's post-installation
6917           script, and remove it in the package's post-removal script.
6918         </p>
6919
6920         <p>
6921           An ever increasing number of packages are using
6922           <prgn>libtool</prgn> to do their linking.  The latest GNU
6923           libtools (>= 1.3a) can take advantage of the metadata in the
6924           installed <prgn>libtool</prgn> archive files (<file>*.la</file>
6925           files).  The main advantage of <prgn>libtool</prgn>'s
6926           <file>.la</file> files is that it allows <prgn>libtool</prgn> to
6927           store and subsequently access metadata with respect to the
6928           libraries it builds.  <prgn>libtool</prgn> will search for
6929           those files, which contain a lot of useful information about
6930           a library (such as library dependency information for static
6931           linking).  Also, they're <em>essential</em> for programs
6932           using <tt>libltdl</tt>.<footnote>
6933               Although <prgn>libtool</prgn> is fully capable of
6934               linking against shared libraries which don't have
6935               <tt>.la</tt> files, as it is a mere shell script it can
6936               add considerably to the build time of a
6937               <prgn>libtool</prgn>-using package if that shell script
6938               has to derive all this information from first principles
6939               for each library every time it is linked.  With the
6940               advent of <prgn>libtool</prgn> version 1.4 (and to a
6941               lesser extent <prgn>libtool</prgn> version 1.3), the
6942               <file>.la</file> files also store information about
6943               inter-library dependencies which cannot necessarily be
6944               derived after the <file>.la</file> file is deleted.
6945           </footnote>
6946         </p>
6947
6948         <p>
6949           Packages that use <prgn>libtool</prgn> to create shared
6950           libraries should include the <file>.la</file> files in the
6951           <tt>-dev</tt> package, unless the package relies on
6952           <tt>libtool</tt>'s <tt>libltdl</tt> library, in which case
6953           the <tt>.la</tt> files must go in the run-time library
6954           package.
6955         </p>
6956
6957         <p>
6958           You must make sure that you use only released versions of
6959           shared libraries to build your packages; otherwise other
6960           users will not be able to run your binaries
6961           properly. Producing source packages that depend on
6962           unreleased compilers is also usually a bad
6963           idea.
6964         </p>
6965       </sect>
6966
6967
6968       <sect>
6969         <heading>Shared libraries</heading>
6970         <p>
6971           This section has moved to <ref id="sharedlibs">.
6972         </p>
6973       </sect>
6974
6975
6976       <sect id="scripts">
6977         <heading>Scripts</heading>
6978
6979         <p>
6980           All command scripts, including the package maintainer
6981           scripts inside the package and used by <prgn>dpkg</prgn>,
6982           should have a <tt>#!</tt> line naming the shell to be used
6983           to interpret them.
6984         </p>
6985
6986         <p>
6987           In the case of Perl scripts this should be
6988           <tt>#!/usr/bin/perl</tt>.
6989         </p>
6990
6991         <p>
6992           When scripts are installed into a directory in the system
6993           PATH, the script name should not include an extension such
6994           as <tt>.sh</tt> or <tt>.pl</tt> that denotes the scripting
6995           language currently used to implement it.
6996         </p>
6997         <p>
6998           Shell scripts (<prgn>sh</prgn> and <prgn>bash</prgn>)
6999           should almost certainly start with <tt>set -e</tt> so that
7000           errors are detected.  Every script should use
7001           <tt>set -e</tt> or check the exit status of <em>every</em>
7002           command.
7003         </p>
7004
7005         <p>
7006           Scripts may assume that <file>/bin/sh</file> implements the
7007           SUSv3 Shell Command Language<footnote>
7008             Single UNIX Specification, version 3, which is also IEEE
7009             1003.1-2004 (POSIX), and is available on the World Wide Web
7010             from <url id="http://www.unix.org/version3/online.html"
7011                       name="The Open Group"> after free
7012             registration.</footnote>
7013           plus the following additional features not mandated by
7014           SUSv3:<footnote>
7015             These features are in widespread use in the Linux community
7016             and are implemented in all of bash, dash, and ksh, the most
7017             common shells users may wish to use as <file>/bin/sh</file>.
7018           </footnote>
7019           <list>
7020             <item><tt>echo -n</tt>, if implemented as a shell built-in,
7021               must not generate a newline.</item>
7022             <item><tt>test</tt>, if implemented as a shell built-in, must
7023               support <tt>-a</tt> and <tt>-o</tt> as binary logical
7024               operators.</item>
7025             <item><tt>local</tt> to create a scoped variable must be
7026               supported; however, <tt>local</tt> may or may not preserve
7027               the variable value from an outer scope and may or may not
7028               support arguments more complex than simple variables.  Only
7029               uses such as:
7030 <example compact>
7031 fname () {
7032     local a
7033     a=''
7034     # ... use a ...
7035 }
7036 </example>
7037               must be supported.
7038             </item>
7039           </list>
7040           If a shell script requires non-SUSv3 features from the shell
7041           interpreter other than those listed above, the appropriate shell
7042           must be specified in the first line of the script (e.g.,
7043           <tt>#!/bin/bash</tt>) and the package must depend on the package
7044           providing the shell (unless the shell package is marked
7045           "Essential", as in the case of <prgn>bash</prgn>).
7046         </p>
7047
7048         <p>
7049           You may wish to restrict your script to SUSv3 features plus the
7050           above set when possible so that it may use <file>/bin/sh</file>
7051           as its interpreter. If your script works with <prgn>dash</prgn>
7052           (originally called <prgn>ash</prgn>), it probably complies with
7053           the above requirements, but if you are in doubt, use
7054           <file>/bin/bash</file>.
7055         </p>
7056
7057         <p>
7058           Perl scripts should check for errors when making any
7059           system calls, including <tt>open</tt>, <tt>print</tt>,
7060           <tt>close</tt>, <tt>rename</tt> and <tt>system</tt>.
7061         </p>
7062
7063         <p>
7064           <prgn>csh</prgn> and <prgn>tcsh</prgn> should be avoided as
7065           scripting languages.  See <em>Csh Programming Considered
7066           Harmful</em>, one of the <tt>comp.unix.*</tt> FAQs, which
7067           can be found at <url id="http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/">.
7068           If an upstream package comes with <prgn>csh</prgn> scripts
7069           then you must make sure that they start with
7070           <tt>#!/bin/csh</tt> and make your package depend on the
7071           <prgn>c-shell</prgn> virtual package.
7072         </p>
7073
7074         <p>
7075           Any scripts which create files in world-writeable
7076           directories (e.g., in <file>/tmp</file>) must use a
7077           mechanism which will fail atomically if a file with the same
7078           name already exists.
7079         </p>
7080
7081         <p>
7082           The Debian base system provides the <prgn>tempfile</prgn>
7083           and <prgn>mktemp</prgn> utilities for use by scripts for
7084           this purpose.
7085         </p>
7086       </sect>
7087
7088
7089       <sect>
7090         <heading>Symbolic links</heading>
7091
7092         <p>
7093           In general, symbolic links within a top-level directory
7094           should be relative, and symbolic links pointing from one
7095           top-level directory into another should be absolute. (A
7096           top-level directory is a sub-directory of the root
7097           directory <file>/</file>.)
7098         </p>
7099
7100         <p>
7101           In addition, symbolic links should be specified as short as
7102           possible, i.e., link targets like <file>foo/../bar</file> are
7103           deprecated.
7104         </p>
7105
7106         <p>
7107           Note that when creating a relative link using
7108           <prgn>ln</prgn> it is not necessary for the target of the
7109           link to exist relative to the working directory you're
7110           running <prgn>ln</prgn> from, nor is it necessary to change
7111           directory to the directory where the link is to be made.
7112           Simply include the string that should appear as the target
7113           of the link (this will be a pathname relative to the
7114           directory in which the link resides) as the first argument
7115           to <prgn>ln</prgn>.
7116         </p>
7117
7118         <p>
7119           For example, in your <prgn>Makefile</prgn> or
7120           <file>debian/rules</file>, you can do things like:
7121           <example compact="compact">
7122 ln -fs gcc $(prefix)/bin/cc
7123 ln -fs gcc debian/tmp/usr/bin/cc
7124 ln -fs ../sbin/sendmail $(prefix)/bin/runq
7125 ln -fs ../sbin/sendmail debian/tmp/usr/bin/runq
7126           </example>
7127         </p>
7128
7129         <p>
7130           A symbolic link pointing to a compressed file should always
7131           have the same file extension as the referenced file. (For
7132           example, if a file <file>foo.gz</file> is referenced by a
7133           symbolic link, the filename of the link has to end with
7134           "<file>.gz</file>" too, as in <file>bar.gz</file>.)
7135         </p>
7136       </sect>
7137
7138       <sect>
7139         <heading>Device files</heading>
7140
7141         <p>
7142           Packages must not include device files in the package file
7143           tree.
7144         </p>
7145
7146         <p>
7147           If a package needs any special device files that are not
7148           included in the base system, it must call
7149           <prgn>MAKEDEV</prgn> in the <prgn>postinst</prgn> script,
7150           after notifying the user<footnote>
7151               This notification could be done via a (low-priority)
7152               debconf message, or an echo (printf) statement.
7153           </footnote>.
7154         </p>
7155
7156         <p>
7157           Packages must not remove any device files in the
7158           <prgn>postrm</prgn> or any other script. This is left to the
7159           system administrator.
7160         </p>
7161
7162         <p>
7163           Debian uses the serial devices
7164           <file>/dev/ttyS*</file>. Programs using the old
7165           <file>/dev/cu*</file> devices should be changed to use
7166           <file>/dev/ttyS*</file>.
7167         </p>
7168       </sect>
7169
7170       <sect id="config-files">
7171         <heading>Configuration files</heading>
7172
7173         <sect1>
7174           <heading>Definitions</heading>
7175
7176           <p>
7177             <taglist>
7178               <tag>configuration file</tag>
7179               <item>
7180                   A file that affects the operation of a program, or
7181                   provides site- or host-specific information, or
7182                   otherwise customizes the behavior of a program.
7183                   Typically, configuration files are intended to be
7184                   modified by the system administrator (if needed or
7185                   desired) to conform to local policy or to provide
7186                   more useful site-specific behavior.
7187               </item>
7188
7189               <tag><tt>conffile</tt></tag>
7190               <item>
7191                   A file listed in a package's <tt>conffiles</tt>
7192                   file, and is treated specially by <prgn>dpkg</prgn>
7193                   (see <ref id="configdetails">).
7194               </item>
7195             </taglist>
7196           </p>
7197
7198           <p>
7199             The distinction between these two is important; they are
7200             not interchangeable concepts. Almost all
7201             <tt>conffile</tt>s are configuration files, but many
7202             configuration files are not <tt>conffiles</tt>.
7203           </p>
7204
7205           <p>
7206             As noted elsewhere, <file>/etc/init.d</file> scripts,
7207             <file>/etc/default</file> files, scripts installed in
7208             <file>/etc/cron.{hourly,daily,weekly,monthly}</file>, and cron
7209             configuration installed in <file>/etc/cron.d</file> must be
7210             treated as configuration files.  In general, any script that
7211             embeds configuration information is de-facto a configuration
7212             file and should be treated as such.
7213           </p>
7214         </sect1>
7215
7216         <sect1>
7217           <heading>Location</heading>
7218
7219           <p>
7220             Any configuration files created or used by your package
7221             must reside in <file>/etc</file>. If there are several,
7222             consider creating a subdirectory of <file>/etc</file>
7223             named after your package.
7224           </p>
7225
7226           <p>
7227             If your package creates or uses configuration files
7228             outside of <file>/etc</file>, and it is not feasible to modify
7229             the package to use <file>/etc</file> directly, put the files
7230             in <file>/etc</file> and create symbolic links to those files
7231             from the location that the package requires.
7232           </p>
7233         </sect1>
7234
7235         <sect1>
7236           <heading>Behavior</heading>
7237
7238           <p>
7239             Configuration file handling must conform to the following
7240             behavior:
7241             <list compact="compact">
7242               <item>
7243                   local changes must be preserved during a package
7244                   upgrade, and
7245               </item>
7246               <item>
7247                   configuration files must be preserved when the
7248                   package is removed, and only deleted when the
7249                   package is purged.
7250               </item>
7251             </list>
7252           </p>
7253
7254           <p>
7255             The easy way to achieve this behavior is to make the
7256             configuration file a <tt>conffile</tt>. This is
7257             appropriate only if it is possible to distribute a default
7258             version that will work for most installations, although
7259             some system administrators may choose to modify it. This
7260             implies that the default version will be part of the
7261             package distribution, and must not be modified by the
7262             maintainer scripts during installation (or at any other
7263             time).
7264           </p>
7265
7266           <p>
7267             In order to ensure that local changes are preserved
7268             correctly, no package may contain or make hard links to
7269             conffiles.<footnote>
7270                 Rationale: There are two problems with hard links.
7271                 The first is that some editors break the link while
7272                 editing one of the files, so that the two files may
7273                 unwittingly become unlinked and different.  The second
7274                 is that <prgn>dpkg</prgn> might break the hard link
7275                 while upgrading <tt>conffile</tt>s.
7276             </footnote>
7277           </p>
7278
7279           <p>
7280             The other way to do it is via the maintainer scripts.  In
7281             this case, the configuration file must not be listed as a
7282             <tt>conffile</tt> and must not be part of the package
7283             distribution. If the existence of a file is required for
7284             the package to be sensibly configured it is the
7285             responsibility of the package maintainer to provide
7286             maintainer scripts which correctly create, update and
7287             maintain the file and remove it on purge.  (See <ref
7288             id="maintainerscripts"> for more information.)  These
7289             scripts must be idempotent (i.e., must work correctly if
7290             <prgn>dpkg</prgn> needs to re-run them due to errors
7291             during installation or removal), must cope with all the
7292             variety of ways <prgn>dpkg</prgn> can call maintainer
7293             scripts, must not overwrite or otherwise mangle the user's
7294             configuration without asking, must not ask unnecessary
7295             questions (particularly during upgrades), and must
7296             otherwise be good citizens.
7297           </p>
7298
7299           <p>
7300             The scripts are not required to configure every possible
7301             option for the package, but only those necessary to get
7302             the package running on a given system. Ideally the
7303             sysadmin should not have to do any configuration other
7304             than that done (semi-)automatically by the
7305             <prgn>postinst</prgn> script.
7306           </p>
7307
7308           <p>
7309             A common practice is to create a script called
7310             <file><var>package</var>-configure</file> and have the
7311             package's <prgn>postinst</prgn> call it if and only if the
7312             configuration file does not already exist.  In certain
7313             cases it is useful for there to be an example or template
7314             file which the maintainer scripts use.  Such files should
7315             be in <file>/usr/share/<var>package</var></file> or
7316             <file>/usr/lib/<var>package</var></file> (depending on whether
7317             they are architecture-independent or not).  There should
7318             be symbolic links to them from
7319             <file>/usr/share/doc/<var>package</var>/examples</file> if
7320             they are examples, and should be perfectly ordinary
7321             <prgn>dpkg</prgn>-handled files (<em>not</em>
7322             configuration files).
7323           </p>
7324
7325           <p>
7326             These two styles of configuration file handling must
7327             not be mixed, for that way lies madness:
7328             <prgn>dpkg</prgn> will ask about overwriting the file
7329             every time the package is upgraded.
7330           </p>
7331         </sect1>
7332
7333         <sect1>
7334           <heading>Sharing configuration files</heading>
7335
7336           <p>
7337             Packages which specify the same file as a
7338             <tt>conffile</tt> must be tagged as <em>conflicting</em>
7339             with each other.  (This is an instance of the general rule
7340             about not sharing files.  Note that neither alternatives
7341             nor diversions are likely to be appropriate in this case;
7342             in particular, <prgn>dpkg</prgn> does not handle diverted
7343             <tt>conffile</tt>s well.)
7344           </p>
7345
7346           <p>
7347             The maintainer scripts must not alter a <tt>conffile</tt>
7348             of <em>any</em> package, including the one the scripts
7349             belong to.
7350           </p>
7351
7352           <p>
7353             If two or more packages use the same configuration file
7354             and it is reasonable for both to be installed at the same
7355             time, one of these packages must be defined as
7356             <em>owner</em> of the configuration file, i.e., it will be
7357             the package which handles that file as a configuration
7358             file.  Other packages that use the configuration file must
7359             depend on the owning package if they require the
7360             configuration file to operate. If the other package will
7361             use the configuration file if present, but is capable of
7362             operating without it, no dependency need be declared.
7363           </p>
7364
7365           <p>
7366             If it is desirable for two or more related packages to
7367             share a configuration file <em>and</em> for all of the
7368             related packages to be able to modify that configuration
7369             file, then the following should be done:
7370             <enumlist compact="compact">
7371               <item>
7372                   One of the related packages (the "owning" package)
7373                   will manage the configuration file with maintainer
7374                   scripts as described in the previous section.
7375               </item>
7376               <item>
7377                   The owning package should also provide a program
7378                   that the other packages may use to modify the
7379                   configuration file.
7380               </item>
7381               <item>
7382                   The related packages must use the provided program
7383                   to make any desired modifications to the
7384                   configuration file.  They should either depend on
7385                   the core package to guarantee that the configuration
7386                   modifier program is available or accept gracefully
7387                   that they cannot modify the configuration file if it
7388                   is not.  (This is in addition to the fact that the
7389                   configuration file may not even be present in the
7390                   latter scenario.)
7391               </item>
7392             </enumlist>
7393           </p>
7394
7395           <p>
7396             Sometimes it's appropriate to create a new package which
7397             provides the basic infrastructure for the other packages
7398             and which manages the shared configuration files.  (The
7399             <tt>sgml-base</tt> package is a good example.)
7400           </p>
7401         </sect1>
7402
7403         <sect1>
7404           <heading>User configuration files ("dotfiles")</heading>
7405
7406           <p>
7407             The files in <file>/etc/skel</file> will automatically be
7408             copied into new user accounts by <prgn>adduser</prgn>.
7409             No other program should reference the files in
7410             <file>/etc/skel</file>.
7411           </p>
7412
7413           <p>
7414             Therefore, if a program needs a dotfile to exist in
7415             advance in <file>$HOME</file> to work sensibly, that dotfile
7416             should be installed in <file>/etc/skel</file> and treated as a
7417             configuration file.
7418           </p>
7419
7420           <p>
7421             However, programs that require dotfiles in order to
7422             operate sensibly are a bad thing, unless they do create
7423             the dotfiles themselves automatically.
7424           </p>
7425
7426           <p>
7427             Furthermore, programs should be configured by the Debian
7428             default installation to behave as closely to the upstream
7429             default behavior as possible.
7430           </p>
7431
7432           <p>
7433             Therefore, if a program in a Debian package needs to be
7434             configured in some way in order to operate sensibly, that
7435             should be done using a site-wide configuration file placed
7436             in <file>/etc</file>.  Only if the program doesn't support a
7437             site-wide default configuration and the package maintainer
7438             doesn't have time to add it may a default per-user file be
7439             placed in <file>/etc/skel</file>.
7440           </p>
7441
7442           <p>
7443             <file>/etc/skel</file> should be as empty as we can make it.
7444             This is particularly true because there is no easy (or
7445             necessarily desirable) mechanism for ensuring that the
7446             appropriate dotfiles are copied into the accounts of
7447             existing users when a package is installed.
7448           </p>
7449         </sect1>
7450       </sect>
7451
7452       <sect>
7453         <heading>Log files</heading>
7454         <p>
7455           Log files should usually be named
7456           <file>/var/log/<var>package</var>.log</file>.  If you have many
7457           log files, or need a separate directory for permission
7458           reasons (<file>/var/log</file> is writable only by
7459           <file>root</file>), you should usually create a directory named
7460           <file>/var/log/<var>package</var></file> and place your log
7461           files there.
7462         </p>
7463
7464         <p>
7465           Log files must be rotated occasionally so that they don't
7466           grow indefinitely; the best way to do this is to drop a log
7467           rotation configuration file into the directory
7468           <file>/etc/logrotate.d</file> and use the facilities provided by
7469           logrotate.<footnote>
7470             <p>
7471               The traditional approach to log files has been to set up
7472               <em>ad hoc</em> log rotation schemes using simple shell
7473               scripts and cron.  While this approach is highly
7474               customizable, it requires quite a lot of sysadmin work.
7475               Even though the original Debian system helped a little
7476               by automatically installing a system which can be used
7477               as a template, this was deemed not enough.
7478             </p>
7479
7480             <p>
7481               The use of <prgn>logrotate</prgn>, a program developed
7482               by Red Hat, is better, as it centralizes log management.
7483               It has both a configuration file
7484               (<file>/etc/logrotate.conf</file>) and a directory where
7485               packages can drop their individual log rotation
7486               configurations (<file>/etc/logrotate.d</file>).
7487             </p>
7488           </footnote>
7489           Here is a good example for a logrotate config
7490           file (for more information see <manref name="logrotate"
7491             section="8">):
7492           <example compact="compact">
7493 /var/log/foo/*.log {
7494 rotate 12
7495 weekly
7496 compress
7497 postrotate
7498 /etc/init.d/foo force-reload
7499 endscript
7500 }
7501           </example>
7502           This rotates all files under <file>/var/log/foo</file>, saves 12
7503           compressed generations, and forces the daemon to reload its
7504           configuration information after the log rotation.
7505         </p>
7506
7507         <p>
7508           Log files should be removed when the package is
7509           purged (but not when it is only removed).  This should be
7510           done by the <prgn>postrm</prgn> script when it is called
7511           with the argument <tt>purge</tt> (see <ref
7512           id="removedetails">).
7513         </p>
7514       </sect>
7515
7516       <sect>
7517         <heading>Permissions and owners</heading>
7518
7519         <p>
7520           The rules in this section are guidelines for general use.
7521           If necessary you may deviate from the details below.
7522           However, if you do so you must make sure that what is done
7523           is secure and you should try to be as consistent as possible
7524           with the rest of the system.  You should probably also
7525           discuss it on <prgn>debian-devel</prgn> first.
7526         </p>
7527
7528         <p>
7529           Files should be owned by <tt>root:root</tt>, and made
7530           writable only by the owner and universally readable (and
7531           executable, if appropriate), that is mode 644 or 755.
7532         </p>
7533
7534         <p>
7535           Directories should be mode 755 or (for group-writability)
7536           mode 2775.  The ownership of the directory should be
7537           consistent with its mode: if a directory is mode 2775, it
7538           should be owned by the group that needs write access to
7539           it.<footnote>
7540             <p>
7541               When a package is upgraded, and the owner or permissions
7542               of a file included in the package has changed, dpkg
7543               arranges for the ownership and permissions to be
7544               correctly set upon installation. However, this does not
7545               extend to directories; the permissions and ownership of
7546               directories already on the system does not change on
7547               install or upgrade of packages.  This makes sense, since
7548               otherwise common directories like <tt>/usr</tt> would
7549               always be in flux.  To correctly change permissions of a
7550               directory the package owns, explicit action is required,
7551               usually in the <tt>postinst</tt> script. Care must be
7552               taken to handle downgrades as well, in that case.
7553             </p>
7554           </footnote>
7555         </p>
7556
7557
7558         <p>
7559           Setuid and setgid executables should be mode 4755 or 2755
7560           respectively, and owned by the appropriate user or group.
7561           They should not be made unreadable (modes like 4711 or
7562           2711 or even 4111); doing so achieves no extra security,
7563           because anyone can find the binary in the freely available
7564           Debian package; it is merely inconvenient.  For the same
7565           reason you should not restrict read or execute permissions
7566           on non-set-id executables.
7567         </p>
7568
7569         <p>
7570           Some setuid programs need to be restricted to particular
7571           sets of users, using file permissions.  In this case they
7572           should be owned by the uid to which they are set-id, and by
7573           the group which should be allowed to execute them.  They
7574           should have mode 4754; again there is no point in making
7575           them unreadable to those users who must not be allowed to
7576           execute them.
7577         </p>
7578
7579         <p>
7580           It is possible to arrange that the system administrator can
7581           reconfigure the package to correspond to their local
7582           security policy by changing the permissions on a binary:
7583           they can do this by using <prgn>dpkg-statoverride</prgn>, as
7584           described below.<footnote>
7585               Ordinary files installed by <prgn>dpkg</prgn> (as
7586               opposed to <tt>conffile</tt>s and other similar objects)
7587               normally have their permissions reset to the distributed
7588               permissions when the package is reinstalled.  However,
7589               the use of <prgn>dpkg-statoverride</prgn> overrides this
7590               default behavior.  If you use this method, you should
7591               remember to describe <prgn>dpkg-statoverride</prgn> in
7592               the package documentation; being a relatively new
7593               addition to Debian, it is probably not yet well-known.
7594           </footnote>
7595           Another method you should consider is to create a group for
7596           people allowed to use the program(s) and make any setuid
7597           executables executable only by that group.
7598         </p>
7599
7600         <p>
7601           If you need to create a new user or group for your package
7602           there are two possibilities.  Firstly, you may need to
7603           make some files in the binary package be owned by this
7604           user or group, or you may need to compile the user or
7605           group id (rather than just the name) into the binary
7606           (though this latter should be avoided if possible, as in
7607           this case you need a statically allocated id).</p>
7608
7609         <p>
7610           If you need a statically allocated id, you must ask for a
7611           user or group id from the <tt>base-passwd</tt> maintainer,
7612           and must not release the package until you have been
7613           allocated one.  Once you have been allocated one you must
7614           either make the package depend on a version of the
7615           <tt>base-passwd</tt> package with the id present in
7616           <file>/etc/passwd</file> or <file>/etc/group</file>, or arrange for
7617           your package to create the user or group itself with the
7618           correct id (using <tt>adduser</tt>) in its
7619           <prgn>preinst</prgn> or <prgn>postinst</prgn>.  (Doing it in
7620           the <prgn>postinst</prgn> is to be preferred if it is
7621           possible, otherwise a pre-dependency will be needed on the
7622           <tt>adduser</tt> package.)
7623         </p>
7624
7625         <p>
7626           On the other hand, the program might be able to determine
7627           the uid or gid from the user or group name at runtime, so
7628           that a dynamically allocated id can be used.  In this case
7629           you should choose an appropriate user or group name,
7630           discussing this on <prgn>debian-devel</prgn> and checking
7631           with the <package/base-passwd/ maintainer that it is unique and that
7632           they do not wish you to use a statically allocated id
7633           instead.  When this has been checked you must arrange for
7634           your package to create the user or group if necessary using
7635           <prgn>adduser</prgn> in the <prgn>preinst</prgn> or
7636           <prgn>postinst</prgn> script (again, the latter is to be
7637           preferred if it is possible).
7638         </p>
7639
7640         <p>
7641           Note that changing the numeric value of an id associated
7642           with a name is very difficult, and involves searching the
7643           file system for all appropriate files.  You need to think
7644           carefully whether a static or dynamic id is required, since
7645           changing your mind later will cause problems.
7646         </p>
7647
7648         <sect1><heading>The use of <prgn>dpkg-statoverride</prgn></heading>
7649           <p>
7650             This section is not intended as policy, but as a
7651             description of the use of <prgn>dpkg-statoverride</prgn>.
7652           </p>
7653
7654           <p>
7655             If a system administrator wishes to have a file (or
7656             directory or other such thing) installed with owner and
7657             permissions different from those in the distributed Debian
7658             package, they can use the <prgn>dpkg-statoverride</prgn>
7659             program to instruct <prgn>dpkg</prgn> to use the different
7660             settings every time the file is installed.  Thus the
7661             package maintainer should distribute the files with their
7662             normal permissions, and leave it for the system
7663             administrator to make any desired changes.  For example, a
7664             daemon which is normally required to be setuid root, but
7665             in certain situations could be used without being setuid,
7666             should be installed setuid in the <tt>.deb</tt>.  Then the
7667             local system administrator can change this if they wish.
7668             If there are two standard ways of doing it, the package
7669             maintainer can use <tt>debconf</tt> to find out the
7670             preference, and call <prgn>dpkg-statoverride</prgn> in the
7671             maintainer script if necessary to accommodate the system
7672             administrator's choice. Care must be taken during
7673             upgrades to not override an existing setting.
7674           </p>
7675
7676           <p>
7677             Given the above, <prgn>dpkg-statoverride</prgn> is
7678             essentially a tool for system administrators and would not
7679             normally be needed in the maintainer scripts.  There is
7680             one type of situation, though, where calls to
7681             <prgn>dpkg-statoverride</prgn> would be needed in the
7682             maintainer scripts, and that involves packages which use
7683             dynamically allocated user or group ids.  In such a
7684             situation, something like the following idiom can be very
7685             helpful in the package's <prgn>postinst</prgn>, where
7686             <tt>sysuser</tt> is a dynamically allocated id:
7687             <example>
7688 for i in /usr/bin/foo /usr/sbin/bar
7689 do
7690   # only do something when no setting exists
7691   if ! dpkg-statoverride --list $i >/dev/null 2>&1
7692   then
7693     #include: debconf processing, question about foo and bar
7694     if [ "$RET" = "true" ] ; then
7695       dpkg-statoverride --update --add sysuser root 4755 $i
7696     fi
7697   fi
7698 done
7699             </example>
7700             The corresponding <tt>dpkg-statoverride --remove</tt>
7701             calls can then be made unconditionally when the package is
7702             purged.
7703           </p>
7704         </sect1>
7705       </sect>
7706     </chapt>
7707
7708
7709     <chapt id="customized-programs">
7710       <heading>Customized programs</heading>
7711
7712       <sect id="arch-spec">
7713         <heading>Architecture specification strings</heading>
7714
7715         <p>
7716           If a program needs to specify an <em>architecture specification
7717             string</em> in some place, it should select one of the
7718           strings provided by <tt>dpkg-architecture -L</tt>. The
7719           strings are in the format
7720           <tt><var>os</var>-<var>arch</var></tt>, though the OS part
7721           is sometimes elided, as when the OS is Linux.<footnote>
7722             <p>Currently, the strings are:
7723               i386 ia64 alpha amd64 armeb arm hppa m32r m68k mips
7724               mipsel powerpc ppc64 s390 s390x sh3 sh3eb sh4 sh4eb
7725               sparc darwin-i386 darwin-ia64 darwin-alpha darwin-amd64
7726               darwin-armeb darwin-arm darwin-hppa darwin-m32r
7727               darwin-m68k darwin-mips darwin-mipsel darwin-powerpc
7728               darwin-ppc64 darwin-s390 darwin-s390x darwin-sh3
7729               darwin-sh3eb darwin-sh4 darwin-sh4eb darwin-sparc
7730               freebsd-i386 freebsd-ia64 freebsd-alpha freebsd-amd64
7731               freebsd-armeb freebsd-arm freebsd-hppa freebsd-m32r
7732               freebsd-m68k freebsd-mips freebsd-mipsel freebsd-powerpc
7733               freebsd-ppc64 freebsd-s390 freebsd-s390x freebsd-sh3
7734               freebsd-sh3eb freebsd-sh4 freebsd-sh4eb freebsd-sparc
7735               kfreebsd-i386 kfreebsd-ia64 kfreebsd-alpha
7736               kfreebsd-amd64 kfreebsd-armeb kfreebsd-arm kfreebsd-hppa
7737               kfreebsd-m32r kfreebsd-m68k kfreebsd-mips
7738               kfreebsd-mipsel kfreebsd-powerpc kfreebsd-ppc64
7739               kfreebsd-s390 kfreebsd-s390x kfreebsd-sh3 kfreebsd-sh3eb
7740               kfreebsd-sh4 kfreebsd-sh4eb kfreebsd-sparc knetbsd-i386
7741               knetbsd-ia64 knetbsd-alpha knetbsd-amd64 knetbsd-armeb
7742               knetbsd-arm knetbsd-hppa knetbsd-m32r knetbsd-m68k
7743               knetbsd-mips knetbsd-mipsel knetbsd-powerpc
7744               knetbsd-ppc64 knetbsd-s390 knetbsd-s390x knetbsd-sh3
7745               knetbsd-sh3eb knetbsd-sh4 knetbsd-sh4eb knetbsd-sparc
7746               netbsd-i386 netbsd-ia64 netbsd-alpha netbsd-amd64
7747               netbsd-armeb netbsd-arm netbsd-hppa netbsd-m32r
7748               netbsd-m68k netbsd-mips netbsd-mipsel netbsd-powerpc
7749               netbsd-ppc64 netbsd-s390 netbsd-s390x netbsd-sh3
7750               netbsd-sh3eb netbsd-sh4 netbsd-sh4eb netbsd-sparc
7751               openbsd-i386 openbsd-ia64 openbsd-alpha openbsd-amd64
7752               openbsd-armeb openbsd-arm openbsd-hppa openbsd-m32r
7753               openbsd-m68k openbsd-mips openbsd-mipsel openbsd-powerpc
7754               openbsd-ppc64 openbsd-s390 openbsd-s390x openbsd-sh3
7755               openbsd-sh3eb openbsd-sh4 openbsd-sh4eb openbsd-sparc
7756               hurd-i386 hurd-ia64 hurd-alpha hurd-amd64 hurd-armeb
7757               hurd-arm hurd-hppa hurd-m32r hurd-m68k hurd-mips
7758               hurd-mipsel hurd-powerpc hurd-ppc64 hurd-s390 hurd-s390x
7759               hurd-sh3 hurd-sh3eb hurd-sh4 hurd-sh4eb hurd-sparc
7760             </p>
7761           </footnote>
7762         </p>
7763
7764         <p>
7765           Note that we don't want to use
7766           <tt><var>arch</var>-debian-linux</tt> to apply to the rule
7767           <tt><var>architecture</var>-<var>vendor</var>-<var>os</var></tt>
7768           since this would make our programs incompatible with other
7769           Linux distributions.  We also don't use something like
7770           <tt><var>arch</var>-unknown-linux</tt>, since the
7771           <tt>unknown</tt> does not look very good.
7772         </p>
7773       </sect>
7774
7775       <sect>
7776         <heading>Daemons</heading>
7777
7778         <p>
7779           The configuration files <file>/etc/services</file>,
7780           <file>/etc/protocols</file>, and <file>/etc/rpc</file> are managed
7781           by the <prgn>netbase</prgn> package and must not be modified
7782           by other packages.
7783         </p>
7784
7785         <p>
7786           If a package requires a new entry in one of these files, the
7787           maintainer should get in contact with the
7788           <prgn>netbase</prgn> maintainer, who will add the entries
7789           and release a new version of the <prgn>netbase</prgn>
7790           package.
7791         </p>
7792
7793         <p>
7794           The configuration file <file>/etc/inetd.conf</file> must not be
7795           modified by the package's scripts except via the
7796           <prgn>update-inetd</prgn> script or the
7797           <file>DebianNet.pm</file> Perl module.  See their documentation
7798           for details on how to add entries.
7799         </p>
7800
7801         <p>
7802           If a package wants to install an example entry into
7803           <file>/etc/inetd.conf</file>, the entry must be preceded with
7804           exactly one hash character (<tt>#</tt>). Such lines are
7805           treated as "commented out by user" by the
7806           <prgn>update-inetd</prgn> script and are not changed or
7807           activated during package updates.
7808         </p>
7809       </sect>
7810
7811       <sect>
7812         <heading>Using pseudo-ttys and modifying wtmp, utmp and
7813         lastlog</heading>
7814
7815         <p>
7816           Some programs need to create pseudo-ttys. This should be done
7817           using Unix98 ptys if the C library supports it. The resulting
7818           program must not be installed setuid root, unless that
7819           is required for other functionality.
7820         </p>
7821
7822         <p>
7823           The files <file>/var/run/utmp</file>, <file>/var/log/wtmp</file> and
7824           <file>/var/log/lastlog</file> must be installed writable by
7825           group <tt>utmp</tt>.  Programs which need to modify those
7826           files must be installed setgid <tt>utmp</tt>.
7827         </p>
7828       </sect>
7829
7830       <sect>
7831         <heading>Editors and pagers</heading>
7832
7833         <p>
7834           Some programs have the ability to launch an editor or pager
7835           program to edit or display a text document.  Since there are
7836           lots of different editors and pagers available in the Debian
7837           distribution, the system administrator and each user should
7838           have the possibility to choose their preferred editor and
7839           pager.
7840         </p>
7841
7842         <p>
7843           In addition, every program should choose a good default
7844           editor/pager if none is selected by the user or system
7845           administrator.
7846         </p>
7847
7848         <p>
7849           Thus, every program that launches an editor or pager must
7850           use the EDITOR or PAGER environment variable to determine
7851           the editor or pager the user wishes to use.  If these
7852           variables are not set, the programs <file>/usr/bin/editor</file>
7853           and <file>/usr/bin/pager</file> should be used, respectively.
7854         </p>
7855
7856         <p>
7857           These two files are managed through the <prgn>dpkg</prgn>
7858           "alternatives" mechanism.  Thus every package providing an
7859           editor or pager must call the
7860           <prgn>update-alternatives</prgn> script to register these
7861           programs.
7862         </p>
7863
7864         <p>
7865           If it is very hard to adapt a program to make use of the
7866           EDITOR or PAGER variables, that program may be configured to
7867           use <file>/usr/bin/sensible-editor</file> and
7868           <file>/usr/bin/sensible-pager</file> as the editor or pager
7869           program respectively.  These are two scripts provided in the
7870           Debian base system that check the EDITOR and PAGER variables
7871           and launch the appropriate program, and fall back to
7872           <file>/usr/bin/editor</file> and <file>/usr/bin/pager</file> if the
7873           variable is not set.
7874         </p>
7875
7876         <p>
7877           A program may also use the VISUAL environment variable to
7878           determine the user's choice of editor.  If it exists, it
7879           should take precedence over EDITOR.  This is in fact what
7880           <file>/usr/bin/sensible-editor</file> does.
7881         </p>
7882
7883         <p>
7884           It is not required for a package to depend on
7885           <tt>editor</tt> and <tt>pager</tt>, nor is it required for a
7886           package to provide such virtual packages.<footnote>
7887               The Debian base system already provides an editor and a
7888               pager program.
7889           </footnote>
7890         </p>
7891       </sect>
7892
7893       <sect id="web-appl">
7894         <heading>Web servers and applications</heading>
7895
7896         <p>
7897           This section describes the locations and URLs that should
7898           be used by all web servers and web applications in the
7899           Debian system.
7900         </p>
7901
7902         <p>
7903           <enumlist>
7904             <item>
7905                 Cgi-bin executable files are installed in the
7906                 directory
7907                 <example compact="compact">
7908 /usr/lib/cgi-bin/<var>cgi-bin-name</var>
7909                 </example>
7910                 and should be referred to as
7911                 <example compact="compact">
7912 http://localhost/cgi-bin/<var>cgi-bin-name</var>
7913                 </example>
7914
7915             </item>
7916
7917             <item>
7918               <p>Access to HTML documents</p>
7919
7920               <p>
7921                 HTML documents for a package are stored in
7922                 <file>/usr/share/doc/<var>package</var></file>
7923                 and can be referred to as
7924                 <example compact="compact">
7925 http://localhost/doc/<var>package</var>/<var>filename</var>
7926                 </example>
7927               </p>
7928
7929               <p>
7930                 The web server should restrict access to the document
7931                 tree so that only clients on the same host can read
7932                 the documents. If the web server does not support such
7933                 access controls, then it should not provide access at
7934                 all, or ask about providing access during installation.
7935               </p>
7936             </item>
7937
7938             <item>
7939               <p>Access to images</p>
7940               <p>
7941                 It is recommended that images for a package be stored
7942                 in <tt>/usr/share/images/<var>package</var></tt> and
7943                 may be referred to through an alias <tt>/images/</tt>
7944                 as
7945                 <example>
7946                   http://localhost/images/&lt;package&gt;/&lt;filename&gt;     
7947                 </example>
7948                 
7949               </p>
7950             </item>
7951
7952             <item>
7953               <p>Web Document Root</p>
7954
7955               <p>
7956                 Web Applications should try to avoid storing files in
7957                 the Web Document Root.  Instead they should use the
7958                 /usr/share/doc/<var>package</var> directory for
7959                 documents and register the Web Application via the
7960                 <package>doc-base</package> package.  If access to the
7961                 web document root is unavoidable then use
7962                 <example compact="compact">
7963 /var/www
7964                 </example>
7965                 as the Document Root.  This might be just a symbolic
7966                 link to the location where the system administrator
7967                 has put the real document root.
7968               </p>
7969             </item>
7970             <item><p>Providing httpd and/or httpd-cgi</p>
7971               <p>
7972                 All web servers should provide the virtual package
7973                 <tt>httpd</tt>. If a web server has CGI support it should
7974                 provide <tt>httpd-cgi</tt> additionally.
7975               </p>
7976               <p>
7977                 All web applications which do not contain CGI scripts should
7978                 depend on <tt>httpd</tt>, all those web applications which
7979                 <tt>do</tt> contain CGI scripts, should depend on
7980                 <tt>httpd-cgi</tt>.
7981               </p>
7982             </item>
7983           </enumlist>
7984         </p>
7985       </sect>
7986
7987       <sect id="mail-transport-agents">
7988         <heading>Mail transport, delivery and user agents</heading>
7989
7990         <p>
7991           Debian packages which process electronic mail, whether mail
7992           user agents (MUAs) or mail transport agents (MTAs), must
7993           ensure that they are compatible with the configuration
7994           decisions below.  Failure to do this may result in lost
7995           mail, broken <tt>From:</tt> lines, and other serious brain
7996           damage!
7997         </p>
7998
7999         <p>
8000           The mail spool is <file>/var/mail</file> and the interface to
8001           send a mail message is <file>/usr/sbin/sendmail</file> (as per
8002           the FHS).  On older systems, the mail spool may be
8003           physically located in <file>/var/spool/mail</file>, but all
8004           access to the mail spool should be via the
8005           <file>/var/mail</file> symlink.  The mail spool is part of the
8006           base system and not part of the MTA package.
8007         </p>
8008
8009         <p>
8010           All Debian MUAs, MTAs, MDAs and other mailbox accessing
8011           programs (such as IMAP daemons) must lock the mailbox in an
8012           NFS-safe way. This means that <tt>fcntl()</tt> locking must
8013           be combined with dot locking.  To avoid deadlocks, a program
8014           should use <tt>fcntl()</tt> first and dot locking after
8015           this, or alternatively implement the two locking methods in
8016           a non blocking way<footnote>
8017               If it is not possible to establish both locks, the
8018               system shouldn't wait for the second lock to be
8019               established, but remove the first lock, wait a (random)
8020               time, and start over locking again.
8021           </footnote>. Using the functions <tt>maillock</tt> and
8022           <tt>mailunlock</tt> provided by the
8023           <tt>liblockfile*</tt><footnote>
8024               You will need to depend on <tt>liblockfile1 (&gt;&gt;1.01)</tt>
8025               to use these functions.
8026           </footnote> packages is the recommended way to realize this.
8027         </p>
8028
8029         <p>
8030           Mailboxes are generally mode 660
8031           <tt><var>user</var>:mail</tt> unless the system
8032           administrator has chosen otherwise.  A MUA may remove a
8033           mailbox (unless it has nonstandard permissions) in which
8034           case the MTA or another MUA must recreate it if needed.
8035           Mailboxes must be writable by group mail.
8036         </p>
8037
8038         <p>
8039           The mail spool is 2775 <tt>root:mail</tt>, and MUAs should
8040           be setgid mail to do the locking mentioned above (and
8041           must obviously avoid accessing other users' mailboxes
8042           using this privilege).</p>
8043
8044         <p>
8045           <file>/etc/aliases</file> is the source file for the system mail
8046           aliases (e.g., postmaster, usenet, etc.), it is the one
8047           which the sysadmin and <prgn>postinst</prgn> scripts may
8048           edit.  After <file>/etc/aliases</file> is edited the program or
8049           human editing it must call <prgn>newaliases</prgn>.  All MTA
8050           packages must come with a <prgn>newaliases</prgn> program,
8051           even if it does nothing, but older MTA packages did not do
8052           this so programs should not fail if <prgn>newaliases</prgn>
8053           cannot be found.  Note that because of this, all MTA
8054           packages must have <tt>Provides</tt>, <tt>Conflicts</tt> and
8055           <tt>Replaces: mail-transport-agent</tt> control file
8056           fields.
8057         </p>
8058
8059         <p>
8060           The convention of writing <tt>forward to
8061             <var>address</var></tt> in the mailbox itself is not
8062           supported.  Use a <tt>.forward</tt> file instead.</p>
8063
8064         <p>
8065           The <prgn>rmail</prgn> program used by UUCP
8066           for incoming mail should be  <file>/usr/sbin/rmail</file>.
8067           Likewise, <prgn>rsmtp</prgn>, for receiving
8068           batch-SMTP-over-UUCP, should be <file>/usr/sbin/rsmtp</file> if it
8069           is supported.</p>
8070
8071         <p>
8072           If your package needs to know what hostname to use on (for
8073           example) outgoing news and mail messages which are generated
8074           locally, you should use the file <file>/etc/mailname</file>.  It
8075           will contain the portion after the username and <tt>@</tt>
8076           (at) sign for email addresses of users on the machine
8077           (followed by a newline).
8078         </p>
8079
8080         <p>
8081           Such a package should check for the existence of this file
8082           when it is being configured.  If it exists, it should be
8083           used without comment, although an MTA's configuration script
8084           may wish to prompt the user even if it finds that this file
8085           exists.  If the file does not exist, the package should
8086           prompt the user for the value (preferably using
8087           <prgn>debconf</prgn>) and store it in <file>/etc/mailname</file>
8088           as well as using it in the package's configuration.  The
8089           prompt should make it clear that the name will not just be
8090           used by that package.  For example, in this situation the
8091           <tt>inn</tt> package could say something like:
8092           <example compact="compact">
8093 Please enter the "mail name" of your system.  This is the
8094 hostname portion of the address to be shown on outgoing
8095 news and mail messages.  The default is
8096 <var>syshostname</var>, your system's host name.  Mail
8097 name ["<var>syshostname</var>"]:
8098           </example>
8099           where <var>syshostname</var> is the output of <tt>hostname
8100             --fqdn</tt>.
8101         </p>
8102       </sect>
8103
8104       <sect>
8105         <heading>News system configuration</heading>
8106
8107         <p>
8108           All the configuration files related to the NNTP (news)
8109           servers and clients should be located under
8110           <file>/etc/news</file>.</p>
8111
8112         <p>
8113           There are some configuration issues that apply to a number
8114           of news clients and server packages on the machine. These
8115           are:
8116
8117           <taglist>
8118             <tag><file>/etc/news/organization</file></tag>
8119             <item>
8120                 A string which should appear as the
8121                 organization header for all messages posted
8122                 by NNTP clients on the machine
8123             </item>
8124
8125             <tag><file>/etc/news/server</file></tag>
8126             <item>
8127                 Contains the FQDN of the upstream NNTP
8128                 server, or localhost if the local machine is
8129                 an NNTP server.
8130             </item>
8131           </taglist>
8132
8133           Other global files may be added as required for cross-package news
8134           configuration.
8135         </p>
8136       </sect>
8137
8138
8139       <sect>
8140         <heading>Programs for the X Window System</heading>
8141
8142         <sect1>
8143           <heading>Providing X support and package priorities</heading>
8144
8145           <p>
8146             Programs that can be configured with support for the X
8147             Window System must be configured to do so and must declare
8148             any package dependencies necessary to satisfy their
8149             runtime requirements when using the X Window System.  If
8150             such a package is of higher priority than the X packages
8151             on which it depends, it is required that either the
8152             X-specific components be split into a separate package, or
8153             that an alternative version of the package, which includes
8154             X support, be provided, or that the package's priority be
8155             lowered.
8156           </p>
8157         </sect1>
8158
8159         <sect1>
8160           <heading>Packages providing an X server</heading>
8161
8162           <p>
8163             Packages that provide an X server that, directly or
8164             indirectly, communicates with real input and display
8165             hardware should declare in their control data that they
8166             provide the virtual package <tt>xserver</tt>.<footnote>
8167                 This implements current practice, and provides an
8168                 actual policy for usage of the <tt>xserver</tt>
8169                 virtual package which appears in the virtual packages
8170                 list.  In a nutshell, X servers that interface
8171                 directly with the display and input hardware or via
8172                 another subsystem (e.g., GGI) should provide
8173                 <tt>xserver</tt>.  Things like <tt>Xvfb</tt>,
8174                 <tt>Xnest</tt>, and <tt>Xprt</tt> should not.
8175             </footnote>
8176           </p>
8177         </sect1>
8178
8179         <sect1>
8180           <heading>Packages providing a terminal emulator</heading>
8181
8182           <p>
8183             Packages that provide a terminal emulator for the X Window
8184             System which meet the criteria listed below should declare
8185             in their control data that they provide the virtual
8186             package <tt>x-terminal-emulator</tt>.  They should also
8187             register themselves as an alternative for
8188             <file>/usr/bin/x-terminal-emulator</file>, with a priority of
8189             20.
8190           </p>
8191
8192           <p>
8193             To be an <tt>x-terminal-emulator</tt>, a program must:
8194             <list compact="compact">
8195               <item>
8196                   Be able to emulate a DEC VT100 terminal, or a
8197                   compatible terminal.
8198               </item>
8199
8200               <item>
8201                   Support the command-line option <tt>-e
8202                     <var>command</var></tt>, which creates a new
8203                   terminal window<footnote>
8204                       "New terminal window" does not necessarily mean
8205                       a new top-level X window directly parented by
8206                       the window manager; it could, if the terminal
8207                       emulator application were so coded, be a new
8208                       "view" in a multiple-document interface (MDI).
8209                   </footnote>
8210                   and runs the specified <var>command</var>,
8211                   interpreting the entirety of the rest of the command
8212                   line as a command to pass straight to exec, in the
8213                   manner that <tt>xterm</tt> does.
8214               </item>
8215
8216               <item>
8217                   Support the command-line option <tt>-T
8218                     <var>title</var></tt>, which creates a new terminal
8219                   window with the window title <var>title</var>.
8220               </item>
8221             </list>
8222           </p>
8223         </sect1>
8224
8225         <sect1>
8226           <heading>Packages providing a window manager</heading>
8227
8228           <p>
8229             Packages that provide a window manager should declare in
8230             their control data that they provide the virtual package
8231             <tt>x-window-manager</tt>.  They should also register
8232             themselves as an alternative for
8233             <file>/usr/bin/x-window-manager</file>, with a priority
8234             calculated as follows:
8235             <list compact="compact">
8236               <item>
8237                   Start with a priority of 20.
8238               </item>
8239
8240               <item>
8241                   If the window manager supports the Debian menu
8242                   system, add 20 points if this support is available
8243                   in the package's default configuration (i.e., no
8244                   configuration files belonging to the system or user
8245                   have to be edited to activate the feature); if
8246                   configuration files must be modified, add only 10
8247                   points.
8248                 </p>
8249               </item>
8250
8251               <item>
8252                   If the window manager complies with <url
8253                     id="http://www.freedesktop.org/Standards/wm-spec"
8254                     name="The Window Manager Specification Project">,
8255                   written by the <url id="http://www.freedesktop.org/"
8256                     name="Free Desktop Group">, add 40 points.
8257               </item>
8258
8259               <item>
8260                   If the window manager permits the X session to be
8261                   restarted using a <em>different</em> window manager
8262                   (without killing the X server) in its default
8263                   configuration, add 10 points; otherwise add none.
8264               </item>
8265             </list>
8266           </p>
8267         </sect1>
8268
8269         <sect1>
8270           <heading>Packages providing fonts</heading>
8271
8272           <p>
8273             Packages that provide fonts for the X Window
8274             System<footnote>
8275                 For the purposes of Debian Policy, a "font for the X
8276                 Window System" is one which is accessed via X protocol
8277                 requests.  Fonts for the Linux console, for PostScript
8278                 renderer, or any other purpose, do not fit this
8279                 definition.  Any tool which makes such fonts available
8280                 to the X Window System, however, must abide by this
8281                 font policy.
8282             </footnote>
8283             must do a number of things to ensure that they are both
8284             available without modification of the X or font server
8285             configuration, and that they do not corrupt files used by
8286             other font packages to register information about
8287             themselves.
8288             <enumlist>
8289               <item>
8290                   Fonts of any type supported by the X Window System
8291                   must be in a separate binary package from any
8292                   executables, libraries, or documentation (except
8293                   that specific to the fonts shipped, such as their
8294                   license information).  If one or more of the fonts
8295                   so packaged are necessary for proper operation of
8296                   the package with which they are associated the font
8297                   package may be Recommended; if the fonts merely
8298                   provide an enhancement, a Suggests relationship may
8299                   be used.  Packages must not Depend on font
8300                   packages.<footnote>
8301                       This is because the X server may retrieve fonts
8302                       from the local file system or over the network
8303                       from an X font server; the Debian package system
8304                       is empowered to deal only with the local
8305                       file system.
8306                   </footnote>
8307               </item>
8308
8309               <item>
8310                   BDF fonts must be converted to PCF fonts with the
8311                   <prgn>bdftopcf</prgn> utility (available in the
8312                   <tt>xfonts-utils</tt> package, <prgn>gzip</prgn>ped, and
8313                   placed in a directory that corresponds to their
8314                   resolution:
8315                   <list compact="compact">
8316                     <item>
8317                         100 dpi fonts must be placed in
8318                         <file>/usr/share/fonts/X11/100dpi/</file>.
8319                     </item>
8320
8321                     <item>
8322                         75 dpi fonts must be placed in
8323                         <file>/usr/share/fonts/X11/75dpi/</file>.
8324                     </item>
8325
8326                     <item>
8327                         Character-cell fonts, cursor fonts, and other
8328                         low-resolution fonts must be placed in
8329                         <file>/usr/share/fonts/X11/misc/</file>.
8330                     </item>
8331                   </list>
8332               </item>
8333
8334               <item>
8335                   Speedo fonts must be placed in
8336                   <file>/usr/share/fonts/X11/Speedo/</file>.
8337               </item>
8338
8339               <item>
8340                   Type 1 fonts must be placed in
8341                   <file>/usr/share/fonts/X11/Type1/</file>.  If font
8342                   metric files are available, they must be placed here
8343                   as well.
8344               </item>
8345
8346               <item>
8347                   Subdirectories of <file>/usr/share/fonts/X11/</file>
8348                   other than those listed above must be neither
8349                   created nor used.  (The <file>PEX</file>, <file>CID</file>,
8350                   and <file>cyrillic</file> directories are excepted for
8351                   historical reasons, but installation of files into
8352                   these directories remains discouraged.)
8353               </item>
8354
8355               <item>
8356                   Font packages may, instead of placing files directly
8357                   in the X font directories listed above, provide
8358                   symbolic links in that font directory pointing to
8359                   the files' actual location in the filesystem.  Such
8360                   a location must comply with the FHS.
8361               </item>
8362
8363               <item>
8364                   Font packages should not contain both 75dpi and
8365                   100dpi versions of a font.  If both are available,
8366                   they should be provided in separate binary packages
8367                   with <tt>-75dpi</tt> or <tt>-100dpi</tt> appended to
8368                   the names of the packages containing the
8369                   corresponding fonts.
8370               </item>
8371
8372               <item>
8373                   Fonts destined for the <file>misc</file> subdirectory
8374                   should not be included in the same package as 75dpi
8375                   or 100dpi fonts; instead, they should be provided in
8376                   a separate package with <tt>-misc</tt> appended to
8377                   its name.
8378               </item>
8379
8380               <item>
8381                   Font packages must not provide the files
8382                   <file>fonts.dir</file>, <file>fonts.alias</file>, or
8383                   <file>fonts.scale</file> in a font directory:
8384                   <list>
8385                     <item>
8386                         <file>fonts.dir</file> files must not be provided at all.
8387                     </item>
8388
8389                     <item>
8390                         <file>fonts.alias</file> and <file>fonts.scale</file>
8391                         files, if needed, should be provided in the
8392                         directory
8393                         <file>/etc/X11/fonts/<var>fontdir</var>/<var>package</var>.<var>extension</var></file>,
8394                         where <var>fontdir</var> is the name of the
8395                         subdirectory of
8396                         <file>/usr/share/fonts/X11/</file> where the
8397                         package's corresponding fonts are stored
8398                         (e.g., <tt>75dpi</tt> or <tt>misc</tt>),
8399                         <var>package</var> is the name of the package
8400                         that provides these fonts, and
8401                         <var>extension</var> is either <tt>scale</tt>
8402                         or <tt>alias</tt>, whichever corresponds to
8403                         the file contents.
8404                     </item>
8405                   </list>
8406               </item>
8407
8408               <item>
8409                   Font packages must declare a dependency on
8410                   <tt>xfonts-utils</tt> in their control
8411                   data.
8412               </item>
8413
8414               <item>
8415                   Font packages that provide one or more
8416                   <file>fonts.scale</file> files as described above must
8417                   invoke <prgn>update-fonts-scale</prgn> on each
8418                   directory into which they installed fonts
8419                   <em>before</em> invoking
8420                   <prgn>update-fonts-dir</prgn> on that directory.
8421                   This invocation must occur in both the
8422                   <prgn>postinst</prgn> (for all arguments) and
8423                   <prgn>postrm</prgn> (for all arguments except
8424                   <tt>upgrade</tt>) scripts.
8425               </item>
8426
8427               <item>
8428                   Font packages that provide one or more
8429                   <file>fonts.alias</file> files as described above must
8430                   invoke <prgn>update-fonts-alias</prgn> on each
8431                   directory into which they installed fonts.  This
8432                   invocation must occur in both the
8433                   <prgn>postinst</prgn> (for all arguments) and
8434                   <prgn>postrm</prgn> (for all arguments except
8435                   <tt>upgrade</tt>) scripts.
8436               </item>
8437
8438               <item>
8439                   Font packages must invoke
8440                   <prgn>update-fonts-dir</prgn> on each directory into
8441                   which they installed fonts.  This invocation must
8442                   occur in both the <prgn>postinst</prgn> (for all
8443                   arguments) and <prgn>postrm</prgn> (for all
8444                   arguments except <tt>upgrade</tt>) scripts.
8445               </item>
8446
8447               <item>
8448                   Font packages must not provide alias names for the
8449                   fonts they include which collide with alias names
8450                   already in use by fonts already packaged.
8451               </item>
8452
8453               <item>
8454                   Font packages must not provide fonts with the same
8455                   XLFD registry name as another font already packaged.
8456               </item>
8457             </enumlist>
8458           </p>
8459         </sect1>
8460
8461         <sect1>
8462           <heading>Application defaults files</heading>
8463
8464           <p>
8465             Application defaults files must be installed in the
8466             directory <file>/etc/X11/app-defaults/</file> (use of a
8467             localized subdirectory of <file>/etc/X11/</file> as described
8468             in the <em>X Toolkit Intrinsics - C Language
8469             Interface</em> manual is also permitted).  They must be
8470             registered as <tt>conffile</tt>s or handled as
8471             configuration files.
8472           </p>
8473
8474           <p>
8475             Customization of programs' X resources may also be
8476             supported with the provision of a file with the same name
8477             as that of the package placed in the
8478             <file>/etc/X11/Xresources/</file> directory, which must
8479             registered as a <tt>conffile</tt> or handled as a
8480             configuration file.<footnote>
8481                 Note that this mechanism is not the same as using
8482                 app-defaults; app-defaults are tied to the client
8483                 binary on the local file system, whereas X resources
8484                 are stored in the X server and affect all connecting
8485                 clients.
8486             </footnote>
8487           </p>
8488         </sect1>
8489
8490         <sect1>
8491           <heading>Installation directory issues</heading>
8492
8493           <p>
8494             Packages using the X Window System should not be
8495             configured to install files under the
8496             <file>/usr/X11R6/</file> directory. The
8497             <file>/usr/X11R6/</file> directory hierarchy should be
8498             regarded as obsolete.
8499           </p>
8500
8501           <p>
8502             Programs that use GNU <prgn>autoconf</prgn> and
8503             <prgn>automake</prgn> are usually easily configured at
8504             compile time to use <file>/usr/</file> instead of
8505             <file>/usr/X11R6/</file>, and this should be done whenever
8506             possible.  Configuration files for window managers and
8507             display managers should be placed in a subdirectory of
8508             <file>/etc/X11/</file> corresponding to the package name due
8509             to these programs' tight integration with the mechanisms
8510             of the X Window System.  Application-level programs should
8511             use the <file>/etc/</file> directory unless otherwise mandated
8512             by policy.
8513           </p>
8514
8515           <p>
8516             The installation of files into subdirectories
8517             of <file>/usr/X11R6/include/X11/</file> and
8518             <file>/usr/X11R6/lib/X11/</file> is now prohibited;
8519             package maintainers should determine if subdirectories of
8520             <file>/usr/lib/</file> and <file>/usr/share/</file> can be used
8521             instead. 
8522           </p>
8523
8524           <p>
8525             Packages should install any relevant files into the
8526             directories <file>/usr/include/X11/</file> and
8527             <file>/usr/lib/X11/</file>, but if they do so, they must
8528             pre-depend on <tt>x11-common (&gt;=
8529             1:7.0.0)</tt><footnote>
8530               <p>
8531                 These libraries used to be all symbolic
8532                 links. However, with <tt>X11R7</tt>,
8533                 <tt>/usr/include/X11</tt> and <tt>/usr/lib/X11</tt>
8534                 are now real directories, and packages
8535                 <strong>should</strong> ship their files here instead
8536                 of in <tt>/usr/X11R6/{include,lib}/X11</tt>.
8537                 <tt>x11-common (&gt;= 1:7.0.0) </tt> is the package
8538                 responsible for converting these symlinks into
8539                 directories.
8540               </p>
8541             </footnote>
8542           </p>
8543         </sect1>
8544
8545         <sect1>
8546           <heading>The OSF/Motif and OpenMotif libraries</heading>
8547
8548           <p>
8549             <em>Programs that require the non-DFSG-compliant OSF/Motif or
8550               OpenMotif libraries</em><footnote>
8551                 OSF/Motif and OpenMotif are collectively referred to as
8552                 "Motif" in this policy document.
8553             </footnote>
8554             should be compiled against and tested with LessTif (a free
8555             re-implementation of Motif) instead.  If the maintainer
8556             judges that the program or programs do not work
8557             sufficiently well with LessTif to be distributed and
8558             supported, but do so when compiled against Motif, then two
8559             versions of the package should be created; one linked
8560             statically against Motif and with <tt>-smotif</tt>
8561             appended to the package name, and one linked dynamically
8562             against Motif and with <tt>-dmotif</tt> appended to the
8563             package name.
8564           </p>
8565
8566           <p>
8567             Both Motif-linked versions are dependent
8568             upon non-DFSG-compliant software and thus cannot be
8569             uploaded to the <em>main</em> distribution; if the
8570             software is itself DFSG-compliant it may be uploaded to
8571             the <em>contrib</em> distribution.  While known existing
8572             versions of Motif permit unlimited redistribution of
8573             binaries linked against the library (whether statically or
8574             dynamically), it is the package maintainer's
8575             responsibility to determine whether this is permitted by
8576             the license of the copy of Motif in their possession.
8577           </p>
8578         </sect1>
8579       </sect>
8580
8581       <sect id="perl">
8582         <heading>Perl programs and modules</heading>
8583
8584         <p>
8585           Perl programs and modules should follow the current Perl policy.
8586         </p>
8587
8588         <p>
8589           The Perl policy can be found in the <tt>perl-policy</tt>
8590           files in the <tt>debian-policy</tt> package.
8591           It is also available from the Debian web mirrors at
8592           <tt><url name="/doc/packaging-manuals/perl-policy/"
8593                 id="http://www.debian.org/doc/packaging-manuals/perl-policy/"></tt>.
8594         </p>
8595       </sect>
8596
8597       <sect id="emacs">
8598         <heading>Emacs lisp programs</heading>
8599
8600         <p>
8601           Please refer to the "Debian Emacs Policy" for details of how to
8602           package emacs lisp programs.
8603         </p>
8604
8605         <p>
8606           The Emacs policy is available in
8607           <file>debian-emacs-policy.gz</file> of the
8608           <package>emacsen-common</package> package.
8609           It is also available from the Debian web mirrors at
8610           <tt><url name="/doc/packaging-manuals/debian-emacs-policy"
8611                 id="http://www.debian.org/doc/packaging-manuals/debian-emacs-policy"></tt>.
8612         </p>
8613       </sect>
8614
8615       <sect>
8616         <heading>Games</heading>
8617
8618         <p>
8619           The permissions on <file>/var/games</file> are mode 755, owner
8620           <tt>root</tt> and group <tt>root</tt>.
8621         </p>
8622
8623         <p>
8624           Each game decides on its own security policy.</p>
8625
8626         <p>
8627           Games which require protected, privileged access to
8628           high-score files, saved games, etc., may be made
8629           set-<em>group</em>-id (mode 2755) and owned by
8630           <tt>root:games</tt>, and use files and directories with
8631           appropriate permissions (770 <tt>root:games</tt>, for
8632           example).  They must not be made
8633           set-<em>user</em>-id, as this causes security problems. (If
8634           an attacker can subvert any set-user-id game they can
8635           overwrite the executable of any other, causing other players
8636           of these games to run a Trojan horse program.  With a
8637           set-group-id game the attacker only gets access to less
8638           important game data, and if they can get at the other
8639           players' accounts at all it will take considerably more
8640           effort.)</p>
8641
8642         <p>
8643           Some packages, for example some fortune cookie programs, are
8644           configured by the upstream authors to install with their
8645           data files or other static information made unreadable so
8646           that they can only be accessed through set-id programs
8647           provided.  You should not do this in a Debian package: anyone can
8648           download the <file>.deb</file> file and read the data from it,
8649           so there is no point making the files unreadable.  Not
8650           making the files unreadable also means that you don't have
8651           to make so many programs set-id, which reduces the risk of a
8652           security hole.</p>
8653
8654         <p>
8655           As described in the FHS, binaries of games should be
8656           installed in the directory <file>/usr/games</file>. This also
8657           applies to games that use the X Window System. Manual pages
8658           for games (X and non-X games) should be installed in
8659           <file>/usr/share/man/man6</file>.</p>
8660       </sect>
8661     </chapt>
8662
8663
8664     <chapt id="docs">
8665       <heading>Documentation</heading>
8666
8667       <sect>
8668         <heading>Manual pages</heading>
8669
8670         <p>
8671           You should install manual pages in <prgn>nroff</prgn> source
8672           form, in appropriate places under <file>/usr/share/man</file>.
8673           You should only use sections 1 to 9 (see the FHS for more
8674           details).  You must not install a pre-formatted "cat page".
8675         </p>
8676
8677         <p>
8678           Each program, utility, and function should have an
8679           associated manual page included in the same package. It is
8680           suggested that all configuration files also have a manual
8681           page included as well. Manual pages for protocols and other
8682           auxiliary things are optional.
8683         </p>
8684
8685         <p>
8686           If no manual page is available, this is considered as a bug
8687           and should be reported to the Debian Bug Tracking System (the
8688           maintainer of the package is allowed to write this bug report
8689           themselves, if they so desire).  Do not close the bug report
8690           until a proper man page is available.<footnote>
8691               It is not very hard to write a man page. See the
8692               <url id="http://www.schweikhardt.net/man_page_howto.html"
8693                 name="Man-Page-HOWTO">,
8694               <manref name="man" section="7">, the examples
8695               created by <prgn>debmake</prgn> or <prgn>dh_make</prgn>,
8696               the helper programs <prgn>help2man</prgn>, or the
8697               directory <file>/usr/share/doc/man-db/examples</file>.
8698           </footnote>
8699         </p>
8700
8701         <p>
8702           You may forward a complaint about a missing man page to the
8703           upstream authors, and mark the bug as forwarded in the
8704           Debian bug tracking system.  Even though the GNU Project do
8705           not in general consider the lack of a man page to be a bug,
8706           we do; if they tell you that they don't consider it a bug
8707           you should leave the bug in our bug tracking system open
8708           anyway.
8709         </p>
8710
8711         <p>
8712           Manual pages should be installed compressed using <tt>gzip -9</tt>.
8713         </p>
8714
8715         <p>
8716           If one man page needs to be accessible via several names it
8717           is better to use a symbolic link than the <file>.so</file>
8718           feature, but there is no need to fiddle with the relevant
8719           parts of the upstream source to change from <file>.so</file> to
8720           symlinks: don't do it unless it's easy.  You should not
8721           create hard links in the manual page directories, nor put
8722           absolute filenames in <file>.so</file> directives.  The filename
8723           in a <file>.so</file> in a man page should be relative to the
8724           base of the man page tree (usually
8725           <file>/usr/share/man</file>). If you do not create any links
8726           (whether symlinks, hard links, or <tt>.so</tt> directives)
8727           in the file system to the alternate names of the man page,
8728           then you should not rely on <prgn>man</prgn> finding your
8729           man page under those names based solely on the information in
8730           the man page's header.<footnote>
8731               Supporting this in <prgn>man</prgn> often requires
8732               unreasonable processing time to find a manual page or to
8733               report that none exists, and moves knowledge into man's
8734               database that would be better left in the file system.
8735               This support is therefore deprecated and will cease to
8736               be present in the future.
8737           </footnote>
8738         </p>
8739
8740         <p>
8741           Manual pages in locale-specific subdirectories of
8742           <file>/usr/share/man</file> should use either UTF-8 or the usual
8743           legacy encoding for that language (normally the one corresponding
8744           to the shortest relevant locale name in
8745           <file>/usr/share/i18n/SUPPORTED</file>). For example, pages under
8746           <file>/usr/share/man/fr</file> should use either UTF-8 or
8747           ISO-8859-1.<footnote>
8748             <prgn>man</prgn> will automatically detect whether UTF-8 is in
8749             use. In future, all manual pages will be required to use
8750             UTF-8.
8751           </footnote>
8752         </p>
8753
8754         <p>
8755           A country name (the <tt>DE</tt> in <tt>de_DE</tt>) should not be
8756           included in the subdirectory name unless it indicates a
8757           significant difference in the language, as this excludes
8758           speakers of the language in other countries.<footnote>
8759             At the time of writing, Chinese and Portuguese are the main
8760             languages with such differences, so <file>pt_BR</file>,
8761             <file>zh_CN</file>, and <file>zh_TW</file> are all allowed.
8762           </footnote>
8763         </p>
8764
8765         <p>
8766           Due to limitations in current implementations, all characters
8767           in the manual page source should be representable in the usual
8768           legacy encoding for that language, even if the file is
8769           actually encoded in UTF-8. Safe alternative ways to write many
8770           characters outside that range may be found in
8771           <manref name="groff_char" section="7">.
8772         </p>
8773       </sect>
8774
8775       <sect>
8776         <heading>Info documents</heading>
8777
8778         <p>
8779           Info documents should be installed in <file>/usr/share/info</file>.
8780           They should be compressed with <tt>gzip -9</tt>.
8781         </p>
8782
8783         <p>
8784           Your package should call <prgn>install-info</prgn> to update
8785           the Info <file>dir</file> file in its <prgn>postinst</prgn>
8786           script when called with a <tt>configure</tt> argument, for
8787           example:
8788           <example compact="compact">
8789 install-info --quiet --section Development Development \
8790   /usr/share/info/foobar.info
8791           </example></p>
8792
8793         <p>
8794           It is a good idea to specify a section for the location of
8795           your program; this is done with the <tt>--section</tt>
8796           switch.  To determine which section to use, you should look
8797           at <file>/usr/share/info/dir</file> on your system and choose the most
8798           relevant (or create a new section if none of the current
8799           sections are relevant).  Note that the <tt>--section</tt>
8800           flag takes two arguments; the first is a regular expression
8801           to match (case-insensitively) against an existing section,
8802           the second is used when creating a new one.</p>
8803
8804         <p>
8805           You should remove the entries in the <prgn>prerm</prgn>
8806           script when called with a <tt>remove</tt> argument:
8807           <example compact="compact">
8808 install-info --quiet --remove /usr/share/info/foobar.info
8809           </example></p>
8810
8811         <p>
8812           If <prgn>install-info</prgn> cannot find a description entry
8813           in the Info file you must supply one.  See <manref
8814           name="install-info" section="8"> for details.</p>
8815       </sect>
8816
8817       <sect>
8818         <heading>Additional documentation</heading>
8819
8820         <p>
8821           Any additional documentation that comes with the package may
8822           be installed at the discretion of the package maintainer.
8823           Plain text documentation should be installed in the directory
8824           <file>/usr/share/doc/<var>package</var></file>, where
8825           <var>package</var> is the name of the package, and
8826           compressed with <tt>gzip -9</tt> unless it is small.
8827         </p>
8828
8829         <p>
8830           If a package comes with large amounts of documentation which
8831           many users of the package will not require you should create
8832           a separate binary package to contain it, so that it does not
8833           take up disk space on the machines of users who do not need
8834           or want it installed.</p>
8835
8836         <p>
8837           It is often a good idea to put text information files
8838           (<file>README</file>s, changelogs, and so forth) that come with
8839           the source package in <file>/usr/share/doc/<var>package</var></file>
8840           in the binary package.  However, you don't need to install
8841           the instructions for building and installing the package, of
8842           course!</p>
8843
8844         <p>
8845           Packages must not require the existence of any files in
8846           <file>/usr/share/doc/</file> in order to function
8847           <footnote>
8848               The system administrator should be able to
8849               delete files in <file>/usr/share/doc/</file> without causing
8850               any programs to break.
8851           </footnote>.
8852           Any files that are referenced by programs but are also
8853           useful as stand alone documentation should be installed under
8854           <file>/usr/share/<var>package</var>/</file> with symbolic links from
8855           <file>/usr/share/doc/<var>package</var></file>.
8856         </p>
8857
8858         <p>
8859           <file>/usr/share/doc/<var>package</var></file> may be a symbolic
8860           link to another directory in <file>/usr/share/doc</file> only if
8861           the two packages both come from the same source and the
8862           first package Depends on the second.<footnote>
8863             <p>
8864               Please note that this does not override the section on
8865               changelog files below, so the file 
8866               <file>/usr/share/<var>package</var>/changelog.Debian.gz</file>
8867               must refer to the changelog for the current version of
8868               <var>package</var> in question. In practice, this means
8869               that the sources of the target and the destination of the
8870               symlink must be the same (same source package and
8871               version). 
8872             </p>
8873           </footnote>
8874         </p>
8875
8876         <p>
8877           Former Debian releases placed all additional documentation
8878           in <file>/usr/doc/<var>package</var></file>.  This has been
8879           changed to <file>/usr/share/doc/<var>package</var></file>,
8880           and packages must not put documentation in the directory
8881           <file>/usr/doc/<var>package</var></file>. <footnote>
8882             At this phase of the transition, we no longer require a
8883             symbolic link in <file>/usr/doc/</file>. At a later point,
8884             policy shall change to make the symbolic links a bug.
8885           </footnote>
8886         </p>
8887       </sect>
8888
8889       <sect>
8890         <heading>Preferred documentation formats</heading>
8891
8892         <p>
8893           The unification of Debian documentation is being carried out
8894           via HTML.</p>
8895
8896         <p>
8897           If your package comes with extensive documentation in a
8898           markup format that can be converted to various other formats
8899           you should if possible ship HTML versions in a binary
8900           package, in the directory
8901           <file>/usr/share/doc/<var>appropriate-package</var></file> or
8902           its subdirectories.<footnote>
8903               The rationale: The important thing here is that HTML
8904               docs should be available in <em>some</em> package, not
8905               necessarily in the main binary package.
8906           </footnote>
8907         </p>
8908
8909         <p>
8910           Other formats such as PostScript may be provided at the
8911           package maintainer's discretion.
8912         </p>
8913       </sect>
8914
8915       <sect id="copyrightfile">
8916         <heading>Copyright information</heading>
8917
8918         <p>
8919           Every package must be accompanied by a verbatim copy of its
8920           copyright and distribution license in the file
8921           <file>/usr/share/doc/<var>package</var>/copyright</file>. This
8922           file must neither be compressed nor be a symbolic link.
8923         </p>
8924
8925         <p>
8926           In addition, the copyright file must say where the upstream
8927           sources (if any) were obtained.  It should name the original
8928           authors of the package and the Debian maintainer(s) who were
8929           involved with its creation.
8930         </p>
8931
8932         <p>
8933           Packages in the <em>contrib</em> or <em>non-free</em> categories
8934           should state in the copyright file that the package is not part
8935           of the Debian GNU/Linux distribution and briefly explain why.
8936         </p>
8937
8938         <p>
8939           A copy of the file which will be installed in
8940           <file>/usr/share/doc/<var>package</var>/copyright</file> should
8941           be in <file>debian/copyright</file> in the source package.
8942         </p>
8943
8944         <p>
8945           <file>/usr/share/doc/<var>package</var></file> may be a symbolic
8946           link to another directory in <file>/usr/share/doc</file> only if
8947           the two packages both come from the same source and the
8948           first package Depends on the second.  These rules are
8949           important because copyrights must be extractable by
8950           mechanical means.
8951         </p>
8952
8953         <p>
8954           Packages distributed under the UCB BSD license, the Apache
8955           license (version 2.0), the Artistic license, the GNU GPL
8956           (version 2 or 3), the GNU LGPL (versions 2, 2.1, or 3), and
8957           the GNU FDL (version 1.2) should refer to the corresponding
8958           files under <file>/usr/share/common-licenses</file>,<footnote>
8959             <p>
8960               In particular,
8961               <file>/usr/share/common-licenses/BSD</file>,
8962               <file>/usr/share/common-licenses/Apache-2.0</file>,
8963               <file>/usr/share/common-licenses/Artistic</file>,
8964               <file>/usr/share/common-licenses/GPL-2</file>,
8965               <file>/usr/share/common-licenses/GPL-3</file>,
8966               <file>/usr/share/common-licenses/LGPL-2</file>,
8967               <file>/usr/share/common-licenses/LGPL-2.1</file>,
8968               <file>/usr/share/common-licenses/LGPL-3</file>, and
8969               <file>/usr/share/common-licenses/GFDL-1.2</file>
8970               respectively.
8971             </p>
8972           </footnote> rather than quoting them in the copyright
8973           file. 
8974         </p>
8975
8976         <p>
8977           You should not use the copyright file as a general <file>README</file>
8978           file.  If your package has such a file it should be
8979           installed in <file>/usr/share/doc/<var>package</var>/README</file> or
8980           <file>README.Debian</file> or some other appropriate place.</p>
8981       </sect>
8982
8983       <sect>
8984         <heading>Examples</heading>
8985
8986         <p>
8987           Any examples (configurations, source files, whatever),
8988           should be installed in a directory
8989           <file>/usr/share/doc/<var>package</var>/examples</file>.  These
8990           files should not be referenced by any program: they're there
8991           for the benefit of the system administrator and users as
8992           documentation only.  Architecture-specific example files
8993           should be installed in a directory
8994           <file>/usr/lib/<var>package</var>/examples</file> with symbolic
8995           links to them from
8996           <file>/usr/share/doc/<var>package</var>/examples</file>, or the
8997           latter directory itself may be a symbolic link to the
8998           former.
8999         </p>
9000
9001         <p>
9002           If the purpose of a package is to provide examples, then the
9003           example files may be installed into
9004           <file>/usr/share/doc/<var>package</var></file>.
9005         </p>
9006       </sect>
9007
9008       <sect id="changelogs">
9009         <heading>Changelog files</heading>
9010
9011         <p>
9012           Packages that are not Debian-native must contain a
9013           compressed copy of the <file>debian/changelog</file> file from
9014           the Debian source tree in
9015           <file>/usr/share/doc/<var>package</var></file> with the name
9016           <file>changelog.Debian.gz</file>.
9017         </p>
9018
9019         <p>
9020           If an upstream changelog is available, it should be accessible as
9021           <file>/usr/share/doc/<var>package</var>/changelog.gz</file> in
9022           plain text.  If the upstream changelog is distributed in
9023           HTML, it should be made available in that form as
9024           <file>/usr/share/doc/<var>package</var>/changelog.html.gz</file>
9025           and a plain text <file>changelog.gz</file> should be generated
9026           from it using, for example, <tt>lynx -dump -nolist</tt>.  If
9027           the upstream changelog files do not already conform to this
9028           naming convention, then this may be achieved either by
9029           renaming the files, or by adding a symbolic link, at the
9030           maintainer's discretion.<footnote>
9031               Rationale: People should not have to look in places for
9032               upstream changelogs merely because they are given
9033               different names or are distributed in HTML format.
9034           </footnote>
9035         </p>
9036
9037         <p>
9038           All of these files should be installed compressed using
9039           <tt>gzip -9</tt>, as they will become large with time even
9040           if they start out small.
9041         </p>
9042
9043         <p>
9044           If the package has only one changelog which is used both as
9045           the Debian changelog and the upstream one because there is
9046           no separate upstream maintainer then that changelog should
9047           usually be installed as
9048           <file>/usr/share/doc/<var>package</var>/changelog.gz</file>; if
9049           there is a separate upstream maintainer, but no upstream
9050           changelog, then the Debian changelog should still be called
9051           <file>changelog.Debian.gz</file>.
9052         </p>
9053
9054         <p>
9055           For details about the format and contents of the Debian
9056           changelog file, please see <ref id="dpkgchangelog">.
9057         </p>
9058       </sect>
9059     </chapt>
9060
9061     <appendix id="pkg-scope">
9062       <heading>Introduction and scope of these appendices</heading>
9063
9064       <p>
9065         These appendices are taken essentially verbatim from the
9066         now-deprecated Packaging Manual, version 3.2.1.0.  They are
9067         the chapters which are likely to be of use to package
9068         maintainers and which have not already been included in the
9069         policy document itself. Most of these sections are very likely
9070         not relevant to policy; they should be treated as
9071         documentation for the packaging system. Please note that these
9072         appendices are included for convenience, and for historical
9073         reasons: they used to be part of policy package, and they have
9074         not yet been incorporated into dpkg documentation. However,
9075         they still have value, and hence they are presented here.
9076       </p>
9077
9078       <p>
9079         They have not yet been checked to ensure that they are
9080         compatible with the contents of policy, and if there are any
9081         contradictions, the version in the main policy document takes
9082         precedence.  The remaining chapters of the old Packaging
9083         Manual have also not been read in detail to ensure that there
9084         are not parts which have been left out.  Both of these will be
9085         done in due course.
9086       </p>
9087
9088       <p>
9089         Certain parts of the Packaging manual were integrated into the
9090         Policy Manual proper, and removed from the appendices. Links
9091         have been placed from the old locations to the new ones.
9092       </p>
9093
9094       <p>
9095         <prgn>dpkg</prgn> is a suite of programs for creating binary
9096         package files and installing and removing them on Unix
9097         systems.<footnote>
9098             <prgn>dpkg</prgn> is targeted primarily at Debian
9099             GNU/Linux, but may work on or be ported to other
9100             systems.
9101         </footnote>
9102       </p>
9103
9104       <p>
9105         The binary packages are designed for the management of
9106         installed executable programs (usually compiled binaries) and
9107         their associated data, though source code examples and
9108         documentation are provided as part of some packages.</p>
9109
9110       <p>
9111         This manual describes the technical aspects of creating Debian
9112         binary packages (<file>.deb</file> files).  It documents the
9113         behavior of the package management programs
9114         <prgn>dpkg</prgn>, <prgn>dselect</prgn> et al. and the way
9115         they interact with packages.</p>
9116
9117       <p>
9118         It also documents the interaction between
9119         <prgn>dselect</prgn>'s core and the access method scripts it
9120         uses to actually install the selected packages, and describes
9121         how to create a new access method.</p>
9122
9123       <p>
9124         This manual does not go into detail about the options and
9125         usage of the package building and installation tools.  It
9126         should therefore be read in conjunction with those programs'
9127         man pages.
9128       </p>
9129
9130       <p>
9131         The utility programs which are provided with <prgn>dpkg</prgn>
9132         for managing various system configuration and similar issues,
9133         such as <prgn>update-rc.d</prgn> and
9134         <prgn>install-info</prgn>, are not described in detail here -
9135         please see their man pages.
9136       </p>
9137
9138       <p>
9139         It is assumed that the reader is reasonably familiar with the
9140         <prgn>dpkg</prgn> System Administrators' manual.
9141         Unfortunately this manual does not yet exist.
9142       </p>
9143
9144       <p>
9145         The Debian version of the FSF's GNU hello program is provided
9146         as an example for people wishing to create Debian
9147         packages. The Debian <prgn>debmake</prgn> package is
9148         recommended as a very helpful tool in creating and maintaining
9149         Debian packages. However, while the tools and examples are
9150         helpful, they do not replace the need to read and follow the
9151         Policy and Programmer's Manual.</p>
9152     </appendix>
9153
9154     <appendix id="pkg-binarypkg">
9155       <heading>Binary packages (from old Packaging Manual)</heading>
9156
9157       <p>
9158         The binary package has two main sections.  The first part
9159         consists of various control information files and scripts used
9160         by <prgn>dpkg</prgn> when installing and removing.  See <ref
9161         id="pkg-controlarea">.
9162       </p>
9163
9164       <p>
9165         The second part is an archive containing the files and
9166         directories to be installed.
9167       </p>
9168
9169       <p>
9170         In the future binary packages may also contain other
9171         components, such as checksums and digital signatures. The
9172         format for the archive is described in full in the
9173         <file>deb(5)</file> man page.
9174       </p>
9175
9176
9177       <sect id="pkg-bincreating"><heading>Creating package files -
9178       <prgn>dpkg-deb</prgn>
9179         </heading>
9180
9181         <p>
9182           All manipulation of binary package files is done by
9183           <prgn>dpkg-deb</prgn>; it's the only program that has
9184           knowledge of the format.  (<prgn>dpkg-deb</prgn> may be
9185           invoked by calling <prgn>dpkg</prgn>, as <prgn>dpkg</prgn>
9186           will spot that the options requested are appropriate to
9187           <prgn>dpkg-deb</prgn> and invoke that instead with the same
9188           arguments.)
9189         </p>
9190
9191         <p>
9192           In order to create a binary package you must make a
9193           directory tree which contains all the files and directories
9194           you want to have in the file system data part of the package.
9195           In Debian-format source packages this directory is usually
9196           <file>debian/tmp</file>, relative to the top of the package's
9197           source tree.
9198         </p>
9199
9200         <p>
9201           They should have the locations (relative to the root of the
9202           directory tree you're constructing) ownerships and
9203           permissions which you want them to have on the system when
9204           they are installed.
9205         </p>
9206
9207         <p>
9208           With current versions of <prgn>dpkg</prgn> the uid/username
9209           and gid/groupname mappings for the users and groups being
9210           used should be the same on the system where the package is
9211           built and the one where it is installed.
9212         </p>
9213
9214         <p>
9215           You need to add one special directory to the root of the
9216           miniature file system tree you're creating:
9217           <prgn>DEBIAN</prgn>.  It should contain the control
9218           information files, notably the binary package control file
9219           (see <ref id="pkg-controlfile">).
9220         </p>
9221
9222         <p>
9223           The <prgn>DEBIAN</prgn> directory will not appear in the
9224           file system archive of the package, and so won't be installed
9225           by <prgn>dpkg</prgn> when the package is installed.
9226         </p>
9227
9228         <p>
9229           When you've prepared the package, you should invoke:
9230           <example>
9231   dpkg --build <var>directory</var>
9232           </example>
9233         </p>
9234
9235         <p>
9236           This will build the package in
9237           <file><var>directory</var>.deb</file>.  (<prgn>dpkg</prgn> knows
9238           that <tt>--build</tt> is a <prgn>dpkg-deb</prgn> option, so
9239           it invokes <prgn>dpkg-deb</prgn> with the same arguments to
9240           build the package.)
9241         </p>
9242
9243         <p>
9244           See the man page <manref name="dpkg-deb" section="8"> for details of how
9245           to examine the contents of this newly-created file.  You may find the
9246           output of following commands enlightening:
9247           <example>
9248   dpkg-deb --info <var>filename</var>.deb
9249   dpkg-deb --contents <var>filename</var>.deb
9250   dpkg --contents <var>filename</var>.deb
9251           </example>
9252           To view the copyright file for a package you could use this command:
9253           <example>
9254   dpkg --fsys-tarfile <var>filename</var>.deb | tar xOf - \*/copyright | pager
9255           </example>
9256         </p>
9257       </sect>
9258
9259       <sect id="pkg-controlarea">
9260         <heading>Package control information files</heading>
9261
9262         <p>
9263           The control information portion of a binary package is a
9264           collection of files with names known to <prgn>dpkg</prgn>.
9265           It will treat the contents of these files specially - some
9266           of them contain information used by <prgn>dpkg</prgn> when
9267           installing or removing the package; others are scripts which
9268           the package maintainer wants <prgn>dpkg</prgn> to run.
9269         </p>
9270
9271         <p>
9272           It is possible to put other files in the package control
9273           area, but this is not generally a good idea (though they
9274           will largely be ignored).
9275         </p>
9276
9277         <p>
9278           Here is a brief list of the control info files supported by
9279           <prgn>dpkg</prgn> and a summary of what they're used for.
9280         </p>
9281
9282         <p>
9283           <taglist>
9284             <tag><tt>control</tt>
9285             <item>
9286               <p>
9287                 This is the key description file used by
9288                 <prgn>dpkg</prgn>.  It specifies the package's name
9289                 and version, gives its description for the user,
9290                 states its relationships with other packages, and so
9291                 forth.  See <ref id="sourcecontrolfiles"> and
9292                 <ref id="binarycontrolfiles">.
9293               </p>
9294
9295               <p>
9296                 It is usually generated automatically from information
9297                 in the source package by the
9298                 <prgn>dpkg-gencontrol</prgn> program, and with
9299                 assistance from <prgn>dpkg-shlibdeps</prgn>.
9300                 See <ref id="pkg-sourcetools">.
9301               </p>
9302             </item>
9303
9304             <tag><tt>postinst</tt>, <tt>preinst</tt>, <tt>postrm</tt>,
9305                  <tt>prerm</tt>
9306             </tag>
9307             <item>
9308               <p>
9309                 These are executable files (usually scripts) which
9310                 <prgn>dpkg</prgn> runs during installation, upgrade
9311                 and removal of packages.  They allow the package to
9312                 deal with matters which are particular to that package
9313                 or require more complicated processing than that
9314                 provided by <prgn>dpkg</prgn>.  Details of when and
9315                 how they are called are in <ref id="maintainerscripts">.
9316               </p>
9317
9318               <p>
9319                 It is very important to make these scripts idempotent.
9320                 See <ref id="idempotency">.
9321               </p>
9322
9323               <p>
9324                 The maintainer scripts are guaranteed to run with a
9325                 controlling terminal and can interact with the user.
9326                 See <ref id="controllingterminal">.
9327               </p>
9328             </item>
9329
9330             <tag><tt>conffiles</tt>
9331             </tag>
9332             <item>
9333                 This file contains a list of configuration files which
9334                 are to be handled automatically by <prgn>dpkg</prgn>
9335                 (see <ref id="pkg-conffiles">).  Note that not necessarily
9336                 every configuration file should be listed here.
9337             </item>
9338
9339             <tag><tt>shlibs</tt>
9340             </tag>
9341             <item>
9342                 This file contains a list of the shared libraries
9343                 supplied by the package, with dependency details for
9344                 each.  This is used by <prgn>dpkg-shlibdeps</prgn>
9345                 when it determines what dependencies are required in a
9346                 package control file. The <tt>shlibs</tt> file format
9347                 is described on <ref id="shlibs">.
9348             </item>
9349           </taglist>
9350         </p>
9351
9352       <sect id="pkg-controlfile">
9353         <heading>The main control information file: <tt>control</tt></heading>
9354
9355         <p>
9356           The most important control information file used by
9357           <prgn>dpkg</prgn> when it installs a package is
9358           <tt>control</tt>.  It contains all the package's "vital
9359           statistics".
9360         </p>
9361
9362         <p>
9363           The binary package control files of packages built from
9364           Debian sources are made by a special tool,
9365           <prgn>dpkg-gencontrol</prgn>, which reads
9366           <file>debian/control</file> and <file>debian/changelog</file> to
9367           find the information it needs.  See <ref id="pkg-sourcepkg"> for
9368           more details.
9369         </p>
9370
9371         <p>
9372           The fields in binary package control files are listed in
9373           <ref id="binarycontrolfiles">.
9374         </p>
9375
9376         <p>
9377           A description of the syntax of control files and the purpose
9378           of the fields is available in <ref id="controlfields">.
9379         </p>
9380       </sect>
9381
9382       <sect>
9383         <heading>Time Stamps</heading>
9384
9385         <p>
9386           See <ref id="timestamps">.
9387         </p>
9388       </sect>
9389     </appendix>
9390
9391     <appendix id="pkg-sourcepkg">
9392       <heading>Source packages (from old Packaging Manual) </heading>
9393
9394       <p>
9395         The Debian binary packages in the distribution are generated
9396         from Debian sources, which are in a special format to assist
9397         the easy and automatic building of binaries.
9398       </p>
9399
9400       <sect id="pkg-sourcetools">
9401         <heading>Tools for processing source packages</heading>
9402
9403         <p>
9404           Various tools are provided for manipulating source packages;
9405           they pack and unpack sources and help build of binary
9406           packages and help manage the distribution of new versions.
9407         </p>
9408
9409         <p>
9410           They are introduced and typical uses described here; see
9411           <manref name="dpkg-source" section="1"> for full
9412           documentation about their arguments and operation.
9413         </p>
9414
9415         <p>
9416           For examples of how to construct a Debian source package,
9417           and how to use those utilities that are used by Debian
9418           source packages, please see the <prgn>hello</prgn> example
9419           package.
9420         </p>
9421
9422         <sect1 id="pkg-dpkg-source">
9423           <heading>
9424             <prgn>dpkg-source</prgn> - packs and unpacks Debian source
9425             packages
9426           </heading>
9427
9428           <p>
9429             This program is frequently used by hand, and is also
9430             called from package-independent automated building scripts
9431             such as <prgn>dpkg-buildpackage</prgn>.
9432           </p>
9433
9434           <p>
9435             To unpack a package it is typically invoked with
9436             <example>
9437   dpkg-source -x <var>.../path/to/filename</var>.dsc
9438             </example>
9439           </p>
9440
9441            <p>
9442             with the <file><var>filename</var>.tar.gz</file> and
9443             <file><var>filename</var>.diff.gz</file> (if applicable) in
9444             the same directory.  It unpacks into
9445             <file><var>package</var>-<var>version</var></file>, and if
9446             applicable
9447             <file><var>package</var>-<var>version</var>.orig</file>, in
9448             the current directory.
9449           </p>
9450
9451           <p>
9452             To create a packed source archive it is typically invoked:
9453             <example>
9454   dpkg-source -b <var>package</var>-<var>version</var>
9455           </example>
9456           </p>
9457
9458           <p>
9459             This will create the <file>.dsc</file>, <file>.tar.gz</file> and
9460             <file>.diff.gz</file> (if appropriate) in the current
9461             directory.  <prgn>dpkg-source</prgn> does not clean the
9462             source tree first - this must be done separately if it is
9463             required.
9464           </p>
9465
9466           <p>
9467             See also <ref id="pkg-sourcearchives">.</p>
9468         </sect1>
9469
9470
9471         <sect1 id="pkg-dpkg-buildpackage">
9472           <heading>
9473             <prgn>dpkg-buildpackage</prgn> - overall package-building
9474             control script
9475           </heading>
9476
9477           <p>
9478             <prgn>dpkg-buildpackage</prgn> is a script which invokes
9479             <prgn>dpkg-source</prgn>, the <file>debian/rules</file>
9480             targets <tt>clean</tt>, <tt>build</tt> and
9481             <tt>binary</tt>, <prgn>dpkg-genchanges</prgn> and
9482             <prgn>gpg</prgn> (or <prgn>pgp</prgn>) to build a signed
9483             source and binary package upload.
9484           </p>
9485
9486           <p>
9487             It is usually invoked by hand from the top level of the
9488             built or unbuilt source directory.  It may be invoked with
9489             no arguments; useful arguments include:
9490             <taglist compact="compact">
9491               <tag><tt>-uc</tt>, <tt>-us</tt></tag>
9492               <item>
9493                 <p>
9494                   Do not sign the <tt>.changes</tt> file or the
9495                   source package <tt>.dsc</tt> file, respectively.</p>
9496               </item>
9497               <tag><tt>-p<var>sign-command</var></tt></tag>
9498               <item>
9499                 <p>
9500                   Invoke <var>sign-command</var> instead of finding
9501                   <tt>gpg</tt> or <tt>pgp</tt> on the <prgn>PATH</prgn>.
9502                   <var>sign-command</var> must behave just like
9503                   <prgn>gpg</prgn> or <tt>pgp</tt>.</p>
9504               </item>
9505               <tag><tt>-r<var>root-command</var></tt></tag>
9506               <item>
9507                 <p>
9508                   When root privilege is required, invoke the command
9509                   <var>root-command</var>.  <var>root-command</var>
9510                   should invoke its first argument as a command, from
9511                   the <prgn>PATH</prgn> if necessary, and pass its
9512                   second and subsequent arguments to the command it
9513                   calls.  If no <var>root-command</var> is supplied
9514                   then <var>dpkg-buildpackage</var> will take no
9515                   special action to gain root privilege, so that for
9516                   most packages it will have to be invoked as root to
9517                   start with.</p>
9518               </item>
9519               <tag><tt>-b</tt>, <tt>-B</tt></tag>
9520               <item>
9521                 <p>
9522                   Two types of binary-only build and upload - see
9523                   <manref name="dpkg-source" section="1">.
9524                 </p>
9525               </item>
9526             </taglist>
9527           </p>
9528         </sect1>
9529
9530         <sect1 id="pkg-dpkg-gencontrol">
9531           <heading>
9532             <prgn>dpkg-gencontrol</prgn> - generates binary package
9533             control files
9534           </heading>
9535
9536           <p>
9537             This program is usually called from <file>debian/rules</file>
9538             (see <ref id="pkg-sourcetree">) in the top level of the source
9539             tree.
9540           </p>
9541
9542           <p>
9543             This is usually done just before the files and directories in the
9544             temporary directory tree where the package is being built have their
9545             permissions and ownerships set and the package is constructed using
9546             <prgn>dpkg-deb/</prgn>
9547               <footnote>
9548                 This is so that the control file which is produced has
9549                 the right permissions
9550             </footnote>.
9551           </p>
9552
9553           <p>
9554             <prgn>dpkg-gencontrol</prgn> must be called after all the
9555             files which are to go into the package have been placed in
9556             the temporary build directory, so that its calculation of
9557             the installed size of a package is correct.
9558           </p>
9559
9560           <p>
9561             It is also necessary for <prgn>dpkg-gencontrol</prgn> to
9562             be run after <prgn>dpkg-shlibdeps</prgn> so that the
9563             variable substitutions created by
9564             <prgn>dpkg-shlibdeps</prgn> in <file>debian/substvars</file>
9565             are available.
9566           </p>
9567
9568           <p>
9569             For a package which generates only one binary package, and
9570             which builds it in <file>debian/tmp</file> relative to the top
9571             of the source package, it is usually sufficient to call
9572             <prgn>dpkg-gencontrol</prgn>.
9573           </p>
9574
9575           <p>
9576             Sources which build several binaries will typically need
9577             something like:
9578             <example>
9579   dpkg-gencontrol -Pdebian/tmp-<var>pkg</var> -p<var>package</var>
9580             </example> The <tt>-P</tt> tells
9581             <prgn>dpkg-gencontrol</prgn> that the package is being
9582             built in a non-default directory, and the <tt>-p</tt>
9583             tells it which package's control file should be generated.
9584           </p>
9585
9586           <p>
9587             <prgn>dpkg-gencontrol</prgn> also adds information to the
9588             list of files in <file>debian/files</file>, for the benefit of
9589             (for example) a future invocation of
9590             <prgn>dpkg-genchanges</prgn>.</p>
9591         </sect1>
9592
9593         <sect1 id="pkg-dpkg-shlibdeps">
9594           <heading>
9595             <prgn>dpkg-shlibdeps</prgn> - calculates shared library
9596             dependencies
9597           </heading>
9598
9599           <p>
9600             This program is usually called from <file>debian/rules</file>
9601             just before <prgn>dpkg-gencontrol</prgn> (see <ref
9602             id="pkg-sourcetree">), in the top level of the source tree.
9603           </p>
9604
9605           <p>
9606             Its arguments are executables and shared libraries
9607             <footnote>
9608               <p>
9609                 They may be specified either in the locations in the
9610                 source tree where they are created or in the locations
9611                 in the temporary build tree where they are installed
9612                 prior to binary package creation.
9613               </p>
9614             </footnote> for which shared library dependencies should
9615             be included in the binary package's control file.
9616           </p>
9617
9618           <p>
9619             If some of the found shared libraries should only
9620             warrant a <tt>Recommends</tt> or <tt>Suggests</tt>, or if
9621             some warrant a <tt>Pre-Depends</tt>, this can be achieved
9622             by using the <tt>-d<var>dependency-field</var></tt> option
9623             before those executable(s).  (Each <tt>-d</tt> option
9624             takes effect until the next <tt>-d</tt>.)
9625           </p>
9626
9627           <p>
9628             <prgn>dpkg-shlibdeps</prgn> does not directly cause the
9629             output control file to be modified.  Instead by default it
9630             adds to the <file>debian/substvars</file> file variable
9631             settings like <tt>shlibs:Depends</tt>.  These variable
9632             settings must be referenced in dependency fields in the
9633             appropriate per-binary-package sections of the source
9634             control file.
9635           </p>
9636
9637           <p>
9638             For example, a package that generates an essential part
9639             which requires dependencies, and optional parts that 
9640             which only require a recommendation, would separate those
9641             two sets of dependencies into two different fields.<footnote>
9642                 At the time of writing, an example for this was the
9643                 <package/xmms/ package, with Depends used for the xmms
9644                 executable, Recommends for the plug-ins and Suggests for
9645                 even more optional features provided by unzip.
9646             </footnote>
9647             It can say in its <file>debian/rules</file>:
9648             <example>
9649   dpkg-shlibdeps -dDepends <var>program anotherprogram ...</var> \
9650                  -dRecommends <var>optionalpart anotheroptionalpart</var>
9651             </example>
9652             and then in its main control file <file>debian/control</file>:
9653             <example>
9654   <var>...</var>
9655   Depends: ${shlibs:Depends}
9656   Recommends: ${shlibs:Recommends}
9657   <var>...</var>
9658             </example>
9659           </p>
9660
9661           <p>
9662             Sources which produce several binary packages with
9663             different shared library dependency requirements can use
9664             the <tt>-p<var>varnameprefix</var></tt> option to override
9665             the default <tt>shlibs:</tt> prefix (one invocation of
9666             <prgn>dpkg-shlibdeps</prgn> per setting of this option).
9667             They can thus produce several sets of dependency
9668             variables, each of the form
9669             <tt><var>varnameprefix</var>:<var>dependencyfield</var></tt>,
9670             which can be referred to in the appropriate parts of the
9671             binary package control files.
9672           </p>
9673         </sect1>
9674
9675
9676         <sect1 id="pkg-dpkg-distaddfile">
9677           <heading>
9678             <prgn>dpkg-distaddfile</prgn> - adds a file to
9679             <file>debian/files</file>
9680           </heading>
9681
9682           <p>
9683             Some packages' uploads need to include files other than
9684             the source and binary package files.
9685           </p>
9686
9687           <p>
9688             <prgn>dpkg-distaddfile</prgn> adds a file to the
9689             <file>debian/files</file> file so that it will be included in
9690             the <file>.changes</file> file when
9691             <prgn>dpkg-genchanges</prgn> is run.
9692           </p>
9693
9694           <p>
9695             It is usually invoked from the <tt>binary</tt> target of
9696             <file>debian/rules</file>:
9697             <example>
9698   dpkg-distaddfile <var>filename</var> <var>section</var> <var>priority</var>
9699             </example>
9700             The <var>filename</var> is relative to the directory where
9701             <prgn>dpkg-genchanges</prgn> will expect to find it - this
9702             is usually the directory above the top level of the source
9703             tree.  The <file>debian/rules</file> target should put the
9704             file there just before or just after calling
9705             <prgn>dpkg-distaddfile</prgn>.
9706           </p>
9707
9708           <p>
9709             The <var>section</var> and <var>priority</var> are passed
9710             unchanged into the resulting <file>.changes</file> file.
9711           </p>
9712         </sect1>
9713
9714
9715         <sect1 id="pkg-dpkg-genchanges">
9716           <heading>
9717             <prgn>dpkg-genchanges</prgn> - generates a <file>.changes</file>
9718             upload control file
9719           </heading>
9720
9721           <p>
9722             This program is usually called by package-independent
9723             automatic building scripts such as
9724             <prgn>dpkg-buildpackage</prgn>, but it may also be called
9725             by hand.
9726           </p>
9727
9728           <p>
9729             It is usually called in the top level of a built source
9730             tree, and when invoked with no arguments will print out a
9731             straightforward <file>.changes</file> file based on the
9732             information in the source package's changelog and control
9733             file and the binary and source packages which should have
9734             been built.
9735           </p>
9736         </sect1>
9737
9738
9739         <sect1 id="pkg-dpkg-parsechangelog">
9740           <heading>
9741             <prgn>dpkg-parsechangelog</prgn> - produces parsed
9742             representation of a changelog
9743           </heading>
9744
9745           <p>
9746             This program is used internally by
9747             <prgn>dpkg-source</prgn> et al.  It may also occasionally
9748             be useful in <file>debian/rules</file> and elsewhere.  It
9749             parses a changelog, <file>debian/changelog</file> by default,
9750             and prints a control-file format representation of the
9751             information in it to standard output.
9752           </p>
9753         </sect1>
9754
9755         <sect1 id="pkg-dpkg-architecture">
9756           <heading>
9757             <prgn>dpkg-architecture</prgn> - information about the build and
9758             host system
9759           </heading>
9760
9761           <p>
9762             This program can be used manually, but is also invoked by
9763             <tt>dpkg-buildpackage</tt> or <file>debian/rules</file> to set
9764             environment or make variables which specify the build and host
9765             architecture for the package building process.
9766           </p>
9767         </sect1>
9768       </sect>
9769
9770       <sect id="pkg-sourcetree">
9771         <heading>The Debianised source tree</heading>
9772
9773         <p>
9774           The source archive scheme described later is intended to
9775           allow a Debianised source tree with some associated control
9776           information to be reproduced and transported easily.  The
9777           Debianised source tree is a version of the original program
9778           with certain files added for the benefit of the
9779           Debianisation process, and with any other changes required
9780           made to the rest of the source code and installation
9781           scripts.
9782         </p>
9783
9784         <p>
9785           The extra files created for Debian are in the subdirectory
9786           <file>debian</file> of the top level of the Debianised source
9787           tree.  They are described below.
9788         </p>
9789
9790         <sect1 id="pkg-debianrules">
9791           <heading><file>debian/rules</file> - the main building script</heading>
9792
9793           <p>
9794             See <ref id="debianrules">.
9795           </p>
9796         </sect1>
9797
9798
9799         <sect1 id="pkg-dpkgchangelog">
9800           <heading><file>debian/changelog</file></heading>
9801
9802           <p>
9803             See <ref id="dpkgchangelog">.
9804           </p>
9805
9806           <p>
9807             It is recommended that the entire changelog be encoded in the
9808             <url id="http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2279.html" name="UTF-8">
9809             encoding of
9810             <url id="http://www.unicode.org/"
9811             name="Unicode">.<footnote>
9812               <p>
9813                 I think it is fairly obvious that we need to
9814                 eventually transition to UTF-8 for our package
9815                 infrastructure; it is really the only sane char-set in
9816                 an international environment.  Now, we can't switch to
9817                 using UTF-8 for package control fields and the like
9818                 until dpkg has better support, but one thing we can
9819                 start doing today is requesting that Debian changelogs
9820                 are UTF-8 encoded. At some point in time, we can start
9821                 requiring them to do so. 
9822               </p>
9823               <p>
9824                 Checking for non-UTF8 characters in a changelog is
9825                 trivial.  Dump the file through 
9826                 <example>iconv -f utf-8 -t ucs-4</example>
9827                   discard the output, and check the return
9828                 value.  If there are any characters in the stream
9829                 which are invalid UTF-8 sequences, iconv will exit
9830                 with an error code; and this will be the case for the
9831                 vast majority of other character sets.
9832               </p>
9833             </footnote>
9834           </p>
9835
9836           <sect2><heading>Defining alternative changelog formats
9837             </heading>
9838
9839             <p>
9840               It is possible to use a different format to the standard
9841               one, by providing a parser for the format you wish to
9842               use.
9843             </p>
9844
9845             <p>
9846               In order to have <tt>dpkg-parsechangelog</tt> run your
9847               parser, you must include a line within the last 40 lines
9848               of your file matching the Perl regular expression:
9849               <tt>\schangelog-format:\s+([0-9a-z]+)\W</tt> The part in
9850               parentheses should be the name of the format.  For
9851               example, you might say:
9852               <example>
9853   @@@ changelog-format: joebloggs @@@
9854               </example>
9855               Changelog format names are non-empty strings of alphanumerics.
9856             </p>
9857
9858             <p>
9859               If such a line exists then <tt>dpkg-parsechangelog</tt>
9860               will look for the parser as
9861               <file>/usr/lib/dpkg/parsechangelog/<var>format-name</var></file>
9862               or
9863               <file>/usr/local/lib/dpkg/parsechangelog/<var>format-name</var></file>;
9864               it is an error for it not to find it, or for it not to
9865               be an executable program.  The default changelog format
9866               is <tt>dpkg</tt>, and a parser for it is provided with
9867               the <tt>dpkg</tt> package.
9868             </p>
9869
9870             <p>
9871               The parser will be invoked with the changelog open on
9872               standard input at the start of the file.  It should read
9873               the file (it may seek if it wishes) to determine the
9874               information required and return the parsed information
9875               to standard output in the form of a series of control
9876               fields in the standard format.  By default it should
9877               return information about only the most recent version in
9878               the changelog; it should accept a
9879               <tt>-v<var>version</var></tt> option to return changes
9880               information from all versions present <em>strictly
9881               after</em> <var>version</var>, and it should then be an
9882               error for <var>version</var> not to be present in the
9883               changelog.
9884             </p>
9885
9886             <p>
9887               The fields are:
9888               <list compact="compact">
9889                 <item><qref id="f-Source"><tt>Source</tt></qref></item>
9890                 <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
9891                 <item><qref id="f-Distribution"><tt>Distribution</tt></qref> (mandatory)</item>
9892                 <item><qref id="f-Urgency"><tt>Urgency</tt></qref> (mandatory)</item>
9893                 <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
9894                 <item><qref id="f-Date"><tt>Date</tt></qref></item>
9895                 <item><qref id="f-Changes"><tt>Changes</tt></qref> (mandatory)</item>
9896               </list>
9897             </p>
9898
9899             <p>
9900               If several versions are being returned (due to the use
9901               of <tt>-v</tt>), the urgency value should be of the
9902               highest urgency code listed at the start of any of the
9903               versions requested followed by the concatenated
9904               (space-separated) comments from all the versions
9905               requested; the maintainer, version, distribution and
9906               date should always be from the most recent version.
9907             </p>
9908
9909             <p>
9910               For the format of the <tt>Changes</tt> field see
9911               <ref id="f-Changes">.
9912             </p>
9913
9914             <p>
9915               If the changelog format which is being parsed always or
9916               almost always leaves a blank line between individual
9917               change notes these blank lines should be stripped out,
9918               so as to make the resulting output compact.
9919             </p>
9920
9921             <p>
9922               If the changelog format does not contain date or package
9923               name information this information should be omitted from
9924               the output.  The parser should not attempt to synthesize
9925               it or find it from other sources.
9926             </p>
9927
9928             <p>
9929               If the changelog does not have the expected format the
9930               parser should exit with a nonzero exit status, rather
9931               than trying to muddle through and possibly generating
9932               incorrect output.
9933             </p>
9934
9935             <p>
9936               A changelog parser may not interact with the user at
9937               all.
9938             </p>
9939           </sect2>
9940         </sect1>
9941
9942         <sect1 id="pkg-srcsubstvars">
9943           <heading><file>debian/substvars</file> and variable substitutions</heading>
9944
9945           <p>
9946             See <ref id="substvars">.
9947           </p>
9948
9949         </sect1>
9950
9951         <sect1>
9952           <heading><file>debian/files</file></heading>
9953
9954           <p>
9955             See <ref id="debianfiles">.
9956           </p>
9957         </sect1>
9958
9959         <sect1><heading><file>debian/tmp</file>
9960           </heading>
9961
9962           <p>
9963             This is the canonical temporary location for the
9964             construction of binary packages by the <tt>binary</tt>
9965             target.  The directory <file>tmp</file> serves as the root of
9966             the file system tree as it is being constructed (for
9967             example, by using the package's upstream makefiles install
9968             targets and redirecting the output there), and it also
9969             contains the <tt>DEBIAN</tt> subdirectory.  See <ref
9970             id="pkg-bincreating">.
9971           </p>
9972
9973           <p>
9974             If several binary packages are generated from the same
9975             source tree it is usual to use several
9976             <file>debian/tmp<var>something</var></file> directories, for
9977             example <file>tmp-a</file> or <file>tmp-doc</file>.
9978           </p>
9979
9980           <p>
9981             Whatever <file>tmp</file> directories are created and used by
9982             <tt>binary</tt> must of course be removed by the
9983             <tt>clean</tt> target.</p></sect1>
9984       </sect>
9985
9986
9987       <sect id="pkg-sourcearchives"><heading>Source packages as archives
9988         </heading>
9989
9990         <p>
9991           As it exists on the FTP site, a Debian source package
9992           consists of three related files.  You must have the right
9993           versions of all three to be able to use them.
9994         </p>
9995
9996         <p>
9997           <taglist>
9998             <tag>Debian source control file - <tt>.dsc</tt></tag>
9999             <item>
10000                 This file is a control file used by <prgn>dpkg-source</prgn>
10001                 to extract a source package.
10002                 See <ref id="debiansourcecontrolfiles">.
10003             </item>
10004
10005             <tag>
10006               Original source archive -
10007               <file>
10008                 <var>package</var>_<var>upstream-version</var>.orig.tar.gz
10009               </file>
10010             </tag>
10011
10012             <item>
10013               <p>
10014                 This is a compressed (with <tt>gzip -9</tt>)
10015                 <prgn>tar</prgn> file containing the source code from
10016                 the upstream authors of the program.
10017               </p>
10018             </item>
10019
10020             <tag>
10021               Debianisation diff -
10022               <file>
10023                 <var>package</var>_<var>upstream_version-revision</var>.diff.gz
10024               </file>
10025             </tag>
10026             <item>
10027
10028               <p>
10029                 This is a unified context diff (<tt>diff -u</tt>)
10030                 giving the changes which are required to turn the
10031                 original source into the Debian source.  These changes
10032                 may only include editing and creating plain files.
10033                 The permissions of files, the targets of symbolic
10034                 links and the characteristics of special files or
10035                 pipes may not be changed and no files may be removed
10036                 or renamed.
10037               </p>
10038
10039               <p>
10040                 All the directories in the diff must exist, except the
10041                 <file>debian</file> subdirectory of the top of the source
10042                 tree, which will be created by
10043                 <prgn>dpkg-source</prgn> if necessary when unpacking.
10044               </p>
10045
10046               <p>
10047                 The <prgn>dpkg-source</prgn> program will
10048                 automatically make the <file>debian/rules</file> file
10049                 executable (see below).</p></item>
10050           </taglist>
10051         </p>
10052
10053         <p>
10054           If there is no original source code - for example, if the
10055           package is specially prepared for Debian or the Debian
10056           maintainer is the same as the upstream maintainer - the
10057           format is slightly different: then there is no diff, and the
10058           tarfile is named
10059           <file><var>package</var>_<var>version</var>.tar.gz</file>,
10060           and preferably contains a directory named
10061           <file><var>package</var>-<var>version</var></file>.
10062         </p>
10063       </sect>
10064
10065       <sect>
10066         <heading>Unpacking a Debian source package without <prgn>dpkg-source</prgn></heading>
10067
10068         <p>
10069           <tt>dpkg-source -x</tt> is the recommended way to unpack a
10070           Debian source package.  However, if it is not available it
10071           is possible to unpack a Debian source archive as follows:
10072         <enumlist compact="compact">
10073           <item>
10074             <p>
10075               Untar the tarfile, which will create a <file>.orig</file>
10076               directory.</p>
10077           </item>
10078           <item>
10079             <p>Rename the <file>.orig</file> directory to
10080               <file><var>package</var>-<var>version</var></file>.</p>
10081           </item>
10082             <item>
10083             <p>
10084               Create the subdirectory <file>debian</file> at the top of
10085               the source tree.</p>
10086           </item>
10087           <item><p>Apply the diff using <tt>patch -p0</tt>.</p>
10088           </item>
10089           <item><p>Untar the tarfile again if you want a copy of the original
10090               source code alongside the Debianised version.</p>
10091           </item>
10092         </enumlist>
10093
10094         <p>
10095           It is not possible to generate a valid Debian source archive
10096           without using <prgn>dpkg-source</prgn>.  In particular,
10097           attempting to use <prgn>diff</prgn> directly to generate the
10098           <file>.diff.gz</file> file will not work.
10099         </p>
10100
10101         <sect1>
10102           <heading>Restrictions on objects in source packages</heading>
10103
10104           <p>
10105             The source package may not contain any hard links
10106             <footnote>
10107                 This is not currently detected when building source
10108                 packages, but only when extracting
10109                 them.
10110             </footnote>
10111             <footnote>
10112                 Hard links may be permitted at some point in the
10113                 future, but would require a fair amount of
10114                 work.
10115             </footnote>, device special files, sockets or setuid or
10116             setgid files.
10117             <footnote>
10118                 Setgid directories are allowed.
10119             </footnote>
10120           </p>
10121
10122           <p>
10123             The source packaging tools manage the changes between the
10124             original and Debianised source using <prgn>diff</prgn> and
10125             <prgn>patch</prgn>.  Turning the original source tree as
10126             included in the <file>.orig.tar.gz</file> into the debianised
10127             source must not involve any changes which cannot be
10128             handled by these tools.  Problematic changes which cause
10129             <prgn>dpkg-source</prgn> to halt with an error when
10130             building the source package are:
10131             <list compact="compact">
10132               <item><p>Adding or removing symbolic links, sockets or pipes.</p>
10133               </item>
10134               <item><p>Changing the targets of symbolic links.</p>
10135               </item>
10136               <item><p>Creating directories, other than <file>debian</file>.</p>
10137               </item>
10138               <item><p>Changes to the contents of binary files.</p></item>
10139             </list> Changes which cause <prgn>dpkg-source</prgn> to
10140             print a warning but continue anyway are:
10141             <list compact="compact">
10142               <item>
10143                 <p>
10144                   Removing files, directories or symlinks.
10145                   <footnote>
10146                       Renaming a file is not treated specially - it is
10147                       seen as the removal of the old file (which
10148                       generates a warning, but is otherwise ignored),
10149                       and the creation of the new one.
10150                   </footnote>
10151                 </p>
10152               </item>
10153               <item>
10154                 <p>
10155                   Changed text files which are missing the usual final
10156                   newline (either in the original or the modified
10157                   source tree).
10158                 </p>
10159               </item>
10160             </list>
10161             Changes which are not represented, but which are not detected by
10162             <prgn>dpkg-source</prgn>, are:
10163             <list compact="compact">
10164               <item><p>Changing the permissions of files (other than
10165                   <file>debian/rules</file>) and directories.</p></item>
10166             </list>
10167           </p>
10168
10169           <p>
10170             The <file>debian</file> directory and <file>debian/rules</file>
10171             are handled specially by <prgn>dpkg-source</prgn> - before
10172             applying the changes it will create the <file>debian</file>
10173             directory, and afterwards it will make
10174             <file>debian/rules</file> world-executable.
10175           </p>
10176         </sect1>
10177       </sect>
10178     </appendix>
10179
10180     <appendix id="pkg-controlfields">
10181       <heading>Control files and their fields (from old Packaging Manual)</heading>
10182
10183       <p>
10184         Many of the tools in the <prgn>dpkg</prgn> suite manipulate
10185         data in a common format, known as control files.  Binary and
10186         source packages have control data as do the <file>.changes</file>
10187         files which control the installation of uploaded files, and
10188         <prgn>dpkg</prgn>'s internal databases are in a similar
10189         format.
10190       </p>
10191
10192       <sect>
10193         <heading>Syntax of control files</heading>
10194
10195         <p>
10196           See <ref id="controlsyntax">.
10197         </p>
10198
10199         <p>
10200           It is important to note that there are several fields which
10201           are optional as far as <prgn>dpkg</prgn> and the related
10202           tools are concerned, but which must appear in every Debian
10203           package, or whose omission may cause problems.
10204         </p>
10205       </sect>
10206
10207       <sect>
10208         <heading>List of fields</heading>
10209
10210         <p>
10211           See <ref id="controlfieldslist">.
10212         </p>
10213
10214         <p>
10215           This section now contains only the fields that didn't belong
10216           to the Policy manual.
10217         </p>
10218
10219         <sect1 id="pkg-f-Filename">
10220           <heading><tt>Filename</tt> and <tt>MSDOS-Filename</tt></heading>
10221
10222           <p>
10223             These fields in <tt>Packages</tt> files give the
10224             filename(s) of (the parts of) a package in the
10225             distribution directories, relative to the root of the
10226             Debian hierarchy.  If the package has been split into
10227             several parts the parts are all listed in order, separated
10228             by spaces.
10229           </p>
10230         </sect1>
10231
10232         <sect1 id="pkg-f-Size">
10233           <heading><tt>Size</tt> and <tt>MD5sum</tt></heading>
10234
10235           <p>
10236             These fields in <file>Packages</file> files give the size (in
10237             bytes, expressed in decimal) and MD5 checksum of the
10238             file(s) which make(s) up a binary package in the
10239             distribution.  If the package is split into several parts
10240             the values for the parts are listed in order, separated by
10241             spaces.
10242           </p>
10243         </sect1>
10244
10245         <sect1 id="pkg-f-Status">
10246           <heading><tt>Status</tt></heading>
10247
10248           <p>
10249             This field in <prgn>dpkg</prgn>'s status file records
10250             whether the user wants a package installed, removed or
10251             left alone, whether it is broken (requiring
10252             re-installation) or not and what its current state on the
10253             system is.  Each of these pieces of information is a
10254             single word.
10255           </p>
10256         </sect1>
10257
10258         <sect1 id="pkg-f-Config-Version">
10259           <heading><tt>Config-Version</tt></heading>
10260
10261           <p>
10262             If a package is not installed or not configured, this
10263             field in <prgn>dpkg</prgn>'s status file records the last
10264             version of the package which was successfully
10265             configured.
10266           </p>
10267         </sect1>
10268
10269         <sect1 id="pkg-f-Conffiles">
10270           <heading><tt>Conffiles</tt></heading>
10271
10272           <p>
10273             This field in <prgn>dpkg</prgn>'s status file contains
10274             information about the automatically-managed configuration
10275             files held by a package.  This field should <em>not</em>
10276             appear anywhere in a package!
10277           </p>
10278         </sect1>
10279
10280         <sect1>
10281           <heading>Obsolete fields</heading>
10282
10283           <p>
10284             These are still recognized by <prgn>dpkg</prgn> but should
10285             not appear anywhere any more.
10286
10287             <taglist compact="compact">
10288
10289               <tag><tt>Revision</tt></tag>
10290               <tag><tt>Package-Revision</tt></tag>
10291               <tag><tt>Package_Revision</tt></tag>
10292               <item>
10293                   The Debian revision part of the package version was
10294                   at one point in a separate control file field.  This
10295                   field went through several names.
10296               </item>
10297
10298               <tag><tt>Recommended</tt></tag>
10299               <item>Old name for <tt>Recommends</tt>.</item>
10300
10301               <tag><tt>Optional</tt></tag>
10302               <item>Old name for <tt>Suggests</tt>.</item>
10303
10304               <tag><tt>Class</tt></tag>
10305               <item>Old name for <tt>Priority</tt>.</item>
10306
10307             </taglist>
10308           </p>
10309         </sect1>
10310       </sect>
10311
10312     </appendix>
10313
10314     <appendix id="pkg-conffiles">
10315       <heading>Configuration file handling (from old Packaging Manual)</heading>
10316
10317       <p>
10318         <prgn>dpkg</prgn> can do a certain amount of automatic
10319         handling of package configuration files.
10320       </p>
10321
10322       <p>
10323         Whether this mechanism is appropriate depends on a number of
10324         factors, but basically there are two approaches to any
10325         particular configuration file.
10326       </p>
10327
10328       <p>
10329         The easy method is to ship a best-effort configuration in the
10330         package, and use <prgn>dpkg</prgn>'s conffile mechanism to
10331         handle updates.  If the user is unlikely to want to edit the
10332         file, but you need them to be able to without losing their
10333         changes, and a new package with a changed version of the file
10334         is only released infrequently, this is a good approach.
10335       </p>
10336
10337       <p>
10338         The hard method is to build the configuration file from
10339         scratch in the <prgn>postinst</prgn> script, and to take the
10340         responsibility for fixing any mistakes made in earlier
10341         versions of the package automatically.  This will be
10342         appropriate if the file is likely to need to be different on
10343         each system.
10344       </p>
10345
10346       <sect><heading>Automatic handling of configuration files by
10347       <prgn>dpkg</prgn>
10348         </heading>
10349
10350         <p>
10351           A package may contain a control area file called
10352           <tt>conffiles</tt>.  This file should be a list of filenames
10353           of configuration files needing automatic handling, separated
10354           by newlines.  The filenames should be absolute pathnames,
10355           and the files referred to should actually exist in the
10356           package.
10357         </p>
10358
10359         <p>
10360           When a package is upgraded <prgn>dpkg</prgn> will process
10361           the configuration files during the configuration stage,
10362           shortly before it runs the package's <prgn>postinst</prgn>
10363           script,
10364         </p>
10365
10366         <p>
10367           For each file it checks to see whether the version of the
10368           file included in the package is the same as the one that was
10369           included in the last version of the package (the one that is
10370           being upgraded from); it also compares the version currently
10371           installed on the system with the one shipped with the last
10372           version.
10373         </p>
10374
10375         <p>
10376           If neither the user nor the package maintainer has changed
10377           the file, it is left alone.  If one or the other has changed
10378           their version, then the changed version is preferred - i.e.,
10379           if the user edits their file, but the package maintainer
10380           doesn't ship a different version, the user's changes will
10381           stay, silently, but if the maintainer ships a new version
10382           and the user hasn't edited it the new version will be
10383           installed (with an informative message).  If both have
10384           changed their version the user is prompted about the problem
10385           and must resolve the differences themselves.
10386         </p>
10387
10388         <p>
10389           The comparisons are done by calculating the MD5 message
10390           digests of the files, and storing the MD5 of the file as it
10391           was included in the most recent version of the package.
10392         </p>
10393
10394         <p>
10395           When a package is installed for the first time
10396           <prgn>dpkg</prgn> will install the file that comes with it,
10397           unless that would mean overwriting a file already on the
10398           file system.
10399         </p>
10400
10401         <p>
10402           However, note that <prgn>dpkg</prgn> will <em>not</em>
10403           replace a conffile that was removed by the user (or by a
10404           script).  This is necessary because with some programs a
10405           missing file produces an effect hard or impossible to
10406           achieve in another way, so that a missing file needs to be
10407           kept that way if the user did it.
10408         </p>
10409
10410         <p>
10411           Note that a package should <em>not</em> modify a
10412           <prgn>dpkg</prgn>-handled conffile in its maintainer
10413           scripts.  Doing this will lead to <prgn>dpkg</prgn> giving
10414           the user confusing and possibly dangerous options for
10415           conffile update when the package is upgraded.</p>
10416       </sect>
10417
10418       <sect><heading>Fully-featured maintainer script configuration
10419       handling
10420         </heading>
10421
10422         <p>
10423           For files which contain site-specific information such as
10424           the hostname and networking details and so forth, it is
10425           better to create the file in the package's
10426           <prgn>postinst</prgn> script.
10427         </p>
10428
10429         <p>
10430           This will typically involve examining the state of the rest
10431           of the system to determine values and other information, and
10432           may involve prompting the user for some information which
10433           can't be obtained some other way.
10434         </p>
10435
10436         <p>
10437           When using this method there are a couple of important
10438           issues which should be considered:
10439         </p>
10440
10441         <p>
10442           If you discover a bug in the program which generates the
10443           configuration file, or if the format of the file changes
10444           from one version to the next, you will have to arrange for
10445           the postinst script to do something sensible - usually this
10446           will mean editing the installed configuration file to remove
10447           the problem or change the syntax.  You will have to do this
10448           very carefully, since the user may have changed the file,
10449           perhaps to fix the very problem that your script is trying
10450           to deal with - you will have to detect these situations and
10451           deal with them correctly.
10452         </p>
10453
10454         <p>
10455           If you do go down this route it's probably a good idea to
10456           make the program that generates the configuration file(s) a
10457           separate program in <file>/usr/sbin</file>, by convention called
10458           <file><var>package</var>config</file> and then run that if
10459           appropriate from the post-installation script.  The
10460           <tt><var>package</var>config</tt> program should not
10461           unquestioningly overwrite an existing configuration - if its
10462           mode of operation is geared towards setting up a package for
10463           the first time (rather than any arbitrary reconfiguration
10464           later) you should have it check whether the configuration
10465           already exists, and require a <tt>--force</tt> flag to
10466           overwrite it.</p></sect>
10467     </appendix>
10468
10469     <appendix id="pkg-alternatives"><heading>Alternative versions of
10470         an interface - <prgn>update-alternatives</prgn> (from old
10471     Packaging Manual)
10472       </heading>
10473
10474       <p>
10475         When several packages all provide different versions of the
10476         same program or file it is useful to have the system select a
10477         default, but to allow the system administrator to change it
10478         and have their decisions respected.
10479       </p>
10480
10481       <p>
10482         For example, there are several versions of the <prgn>vi</prgn>
10483         editor, and there is no reason to prevent all of them from
10484         being installed at once, each under their own name
10485         (<prgn>nvi</prgn>, <prgn>vim</prgn> or whatever).
10486         Nevertheless it is desirable to have the name <tt>vi</tt>
10487         refer to something, at least by default.
10488       </p>
10489
10490       <p>
10491         If all the packages involved cooperate, this can be done with
10492         <prgn>update-alternatives</prgn>.
10493       </p>
10494
10495       <p>
10496         Each package provides its own version under its own name, and
10497         calls <prgn>update-alternatives</prgn> in its postinst to
10498         register its version (and again in its prerm to deregister
10499         it).
10500       </p>
10501
10502       <p>
10503         See the man page <manref name="update-alternatives"
10504         section="8"> for details.
10505       </p>
10506
10507       <p>
10508         If <prgn>update-alternatives</prgn> does not seem appropriate
10509         you may wish to consider using diversions instead.</p>
10510     </appendix>
10511
10512     <appendix id="pkg-diversions"><heading>Diversions - overriding a
10513     package's version of a file (from old Packaging Manual)
10514       </heading>
10515
10516       <p>
10517         It is possible to have <prgn>dpkg</prgn> not overwrite a file
10518         when it reinstalls the package it belongs to, and to have it
10519         put the file from the package somewhere else instead.
10520       </p>
10521
10522       <p>
10523         This can be used locally to override a package's version of a
10524         file, or by one package to override another's version (or
10525         provide a wrapper for it).
10526       </p>
10527
10528       <p>
10529         Before deciding to use a diversion, read <ref
10530         id="pkg-alternatives"> to see if you really want a diversion
10531         rather than several alternative versions of a program.
10532       </p>
10533
10534       <p>
10535         There is a diversion list, which is read by <prgn>dpkg</prgn>,
10536         and updated by a special program <prgn>dpkg-divert</prgn>.
10537         Please see <manref name="dpkg-divert" section="8"> for full
10538         details of its operation.
10539       </p>
10540
10541       <p>
10542         When a package wishes to divert a file from another, it should
10543         call <prgn>dpkg-divert</prgn> in its preinst to add the
10544         diversion and rename the existing file.  For example,
10545         supposing that a <prgn>smailwrapper</prgn> package wishes to
10546         install a wrapper around <file>/usr/sbin/smail</file>:
10547         <example>
10548   if [ install = "$1"  ]; then
10549      dpkg-divert --package smailwrapper --add --rename \
10550         --divert /usr/sbin/smail.real /usr/sbin/smail
10551   fi
10552         </example> Testing <tt>$1</tt> is necessary so that the script
10553         doesn't try to add the diversion again when
10554         <prgn>smailwrapper</prgn> is upgraded.  The <tt>--package
10555         smailwrapper</tt> ensures that <prgn>smailwrapper</prgn>'s
10556         copy of <file>/usr/sbin/smail</file> can bypass the diversion and
10557         get installed as the true version.
10558       </p>
10559
10560       <p>
10561         The postrm has to do the reverse:
10562         <example>
10563   if [ remove = "$1" ]; then
10564      dpkg-divert --package smailwrapper --remove --rename \
10565         --divert /usr/sbin/smail.real /usr/sbin/smail
10566   fi
10567         </example>
10568       </p>
10569
10570       <p>
10571         Do not attempt to divert a file which is vitally important for
10572         the system's operation - when using <prgn>dpkg-divert</prgn>
10573         there is a time, after it has been diverted but before
10574         <prgn>dpkg</prgn> has installed the new version, when the file
10575         does not exist.</p>
10576     </appendix>
10577
10578   </book>
10579 </debiandoc>
10580 <!-- Local variables: -->
10581 <!-- indent-tabs-mode: t -->
10582 <!-- End: -->
10583 <!-- vim:set ai et sts=2 sw=2 tw=76: -->