]> git.donarmstrong.com Git - debian/debian-policy.git/blob - policy.sgml
Merge branch 'master' into bug416450-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 defined as the minimal set of functionality
989               that must be available and usable on the system even
990               when packages are in an unconfigured (but unpacked)
991               state.  This is needed to avoid unresolvable dependency
992               loops on upgrade.  If packages add unnecessary
993               dependencies on packages in this set, the chances that
994               there <strong>will</strong> be an unresolvable
995               dependency loop caused by forcing these Essential
996               packages to be configured first before they need to be
997               is greatly increased.  It also increases the chances
998               that frontends will be unable to
999               <strong>calculate</strong> an upgrade path, even if one
1000               exists.
1001             </p>
1002             <p>
1003               Also, it's pretty unlikely that functionality from
1004               Essential shall ever be removed (which is one reason why
1005               care must be taken before adding to the Essential
1006               packages set), but <em>packages</em> have been removed
1007               from the Essential set when the functionality moved to a
1008               different package. So depending on these packages
1009               <em>just in case</em> they stop being essential does way
1010               more harm than good.
1011             </p>
1012           </footnote>
1013         </p>
1014
1015         <p>
1016           Sometimes, a package requires another package to be installed
1017           <em>and</em> configured before it can be installed. In this
1018           case, you must specify a <tt>Pre-Depends</tt> entry for
1019           the package.
1020         </p>
1021
1022         <p>
1023           You should not specify a <tt>Pre-Depends</tt> entry for a
1024           package before this has been discussed on the
1025           <tt>debian-devel</tt> mailing list and a consensus about
1026           doing that has been reached.
1027         </p>
1028
1029         <p>
1030           The format of the package interrelationship control fields is
1031           described in <ref id="relationships">.
1032         </p>
1033       </sect>
1034
1035       <sect id="virtual_pkg">
1036         <heading>Virtual packages</heading>
1037
1038         <p>
1039           Sometimes, there are several packages which offer
1040           more-or-less the same functionality. In this case, it's
1041           useful to define a <em>virtual package</em> whose name
1042           describes that common functionality.  (The virtual
1043           packages only exist logically, not physically; that's why
1044           they are called <em>virtual</em>.) The packages with this
1045           particular function will then <em>provide</em> the virtual
1046           package. Thus, any other package requiring that function
1047           can simply depend on the virtual package without having to
1048           specify all possible packages individually.
1049         </p>
1050
1051         <p>
1052           All packages should use virtual package names where
1053           appropriate, and arrange to create new ones if necessary.
1054           They should not use virtual package names (except privately,
1055           amongst a cooperating group of packages) unless they have
1056           been agreed upon and appear in the list of virtual package
1057           names. (See also <ref id="virtual">)
1058         </p>
1059
1060         <p>
1061           The latest version of the authoritative list of virtual
1062           package names can be found in the <tt>debian-policy</tt> package.
1063           It is also available from the Debian web mirrors at
1064           <tt><url name="/doc/packaging-manuals/virtual-package-names-list.txt"
1065                 id="http://www.debian.org/doc/packaging-manuals/virtual-package-names-list.txt"></tt>.
1066         </p>
1067
1068         <p>
1069           The procedure for updating the list is described in the preface
1070           to the list.
1071         </p>
1072
1073       </sect>
1074
1075       <sect>
1076         <heading>Base system</heading>
1077
1078         <p>
1079           The <tt>base system</tt> is a minimum subset of the Debian
1080           GNU/Linux system that is installed before everything else
1081           on a new system. Only very few packages are allowed to form
1082           part of the base system, in order to keep the required disk
1083           usage very small.
1084         </p>
1085
1086         <p>
1087           The base system consists of all those packages with priority
1088           <tt>required</tt> or <tt>important</tt>. Many of them will
1089           be tagged <tt>essential</tt> (see below).
1090         </p>
1091       </sect>
1092
1093       <sect>
1094         <heading>Essential packages</heading>
1095
1096         <p>
1097           Some packages are tagged <tt>essential</tt> for a system
1098           using the <tt>Essential</tt> control file field.
1099           The format of the <tt>Essential</tt> control field is
1100           described in <ref id="f-Essential">.
1101         </p>
1102
1103         <p>
1104           Since these packages cannot be easily removed (one has to
1105           specify an extra <em>force option</em> to
1106           <prgn>dpkg</prgn> to do so), this flag must not be used
1107           unless absolutely necessary.  A shared library package
1108           must not be tagged <tt>essential</tt>; dependencies will
1109           prevent its premature removal, and we need to be able to
1110           remove it when it has been superseded.
1111         </p>
1112
1113         <p>
1114           Since dpkg will not prevent upgrading of other packages
1115           while an <tt>essential</tt> package is in an unconfigured
1116             state, all <tt>essential</tt> packages must supply all of
1117             their core functionality even when unconfigured. If the
1118             package cannot satisfy this requirement it must not be
1119             tagged as essential, and any packages depending on this
1120             package must instead have explicit dependency fields as
1121             appropriate.
1122         </p>
1123
1124         <p>
1125           You must not tag any packages <tt>essential</tt> before
1126           this has been discussed on the <tt>debian-devel</tt>
1127           mailing list and a consensus about doing that has been
1128           reached.
1129         </p>
1130       </sect>
1131
1132       <sect id="maintscripts">
1133         <heading>Maintainer Scripts</heading>
1134
1135         <p>
1136           The package installation scripts should avoid producing
1137           output which is unnecessary for the user to see and
1138           should rely on <prgn>dpkg</prgn> to stave off boredom on
1139           the part of a user installing many packages.  This means,
1140           amongst other things, using the <tt>--quiet</tt> option on
1141           <prgn>install-info</prgn>.
1142         </p>
1143
1144         <p>
1145           Errors which occur during the execution of an installation
1146           script must be checked and the installation must not
1147           continue after an error.
1148         </p>
1149
1150         <p>
1151           Note that in general <ref id="scripts"> applies to package
1152           maintainer scripts, too.
1153         </p>
1154
1155         <p>
1156           You should not use <prgn>dpkg-divert</prgn> on a file
1157           belonging to another package without consulting the
1158           maintainer of that package first.
1159         </p>
1160
1161         <p>
1162           All packages which supply an instance of a common command
1163           name (or, in general, filename) should generally use
1164           <prgn>update-alternatives</prgn>, so that they may be
1165           installed together.  If <prgn>update-alternatives</prgn>
1166           is not used, then each package must use
1167           <tt>Conflicts</tt> to ensure that other packages are
1168           de-installed.  (In this case, it may be appropriate to
1169           specify a conflict against earlier versions of something
1170           that previously did not use
1171           <prgn>update-alternatives</prgn>; this is an exception to
1172           the usual rule that versioned conflicts should be
1173           avoided.)
1174         </p>
1175
1176         <sect1 id="maintscriptprompt">
1177           <heading>Prompting in maintainer scripts</heading>
1178           <p>
1179             Package maintainer scripts may prompt the user if
1180             necessary. Prompting should be done by communicating
1181             through a program, such as <prgn>debconf</prgn>, which
1182             conforms to the Debian Configuration management
1183             specification, version 2 or higher.  Prompting the user by
1184             other means, such as by hand<footnote>
1185                 From the Jargon file: by hand 2. By extension,
1186                 writing code which does something in an explicit or
1187                 low-level way for which a presupplied library
1188                 (<em>debconf, in this instance</em>) routine ought
1189                 to have been available.
1190             </footnote>, is now deprecated.
1191           </p>
1192
1193           <p>
1194             The Debian Configuration management specification is included
1195             in the <file>debconf_specification</file> files in the
1196             <package>debian-policy</package> package.
1197             It is also available from the Debian web mirrors at
1198             <tt><url name="/doc/packaging-manuals/debconf_specification.html"
1199                 id="http://www.debian.org/doc/packaging-manuals/debconf_specification.html"></tt>.
1200           </p>
1201
1202           <p>
1203             Packages which use the Debian Configuration management
1204             specification may contain an additional
1205             <prgn>config</prgn> script and a <tt>templates</tt>
1206             file in their control archive<footnote>
1207                 The control.tar.gz inside the .deb.
1208                 See <manref name="deb" section="5">.
1209             </footnote>.
1210             The <prgn>config</prgn> script might be run before the
1211             <prgn>preinst</prgn> script, and before the package is unpacked
1212             or any of its dependencies or pre-dependencies are satisfied.
1213             Therefore it must work using only the tools present in
1214             <em>essential</em> packages.<footnote>
1215                   <package>Debconf</package> or another tool that
1216                   implements the Debian Configuration management
1217                   specification will also be installed, and any
1218                   versioned dependencies on it will be satisfied
1219                   before preconfiguration begins.
1220             </footnote>
1221           </p>
1222
1223           <p>
1224             Packages which use the Debian Configuration management
1225             specification must allow for translation of their messages
1226             by using a gettext-based system such as the one provided by
1227             the <package>po-debconf</package> package.
1228           </p>
1229
1230           <p>
1231             Packages should try to minimize the amount of prompting
1232             they need to do, and they should ensure that the user
1233             will only ever be asked each question once.  This means
1234             that packages should try to use appropriate shared
1235             configuration files (such as <file>/etc/papersize</file> and
1236             <file>/etc/news/server</file>), and shared
1237             <package>debconf</package> variables rather than each
1238             prompting for their own list of required pieces of
1239             information.
1240           </p>
1241
1242           <p>
1243             It also means that an upgrade should not ask the same
1244             questions again, unless the user has used
1245             <tt>dpkg --purge</tt> to remove the package's configuration.
1246             The answers to configuration questions should be stored in an
1247             appropriate place in <file>/etc</file> so that the user can
1248             modify them, and how this has been done should be
1249             documented.
1250           </p>
1251
1252           <p>
1253             If a package has a vitally important piece of
1254             information to pass to the user (such as "don't run me
1255             as I am, you must edit the following configuration files
1256             first or you risk your system emitting badly-formatted
1257             messages"), it should display this in the
1258             <prgn>config</prgn> or <prgn>postinst</prgn> script and
1259             prompt the user to hit return to acknowledge the
1260             message.  Copyright messages do not count as vitally
1261             important (they belong in
1262             <file>/usr/share/doc/<var>package</var>/copyright</file>);
1263             neither do instructions on how to use a program (these
1264             should be in on-line documentation, where all the users
1265             can see them).
1266           </p>
1267
1268           <p>
1269             Any necessary prompting should almost always be confined
1270             to the <prgn>config</prgn> or <prgn>postinst</prgn>
1271             script. If it is done in the <prgn>postinst</prgn>, it
1272             should be protected with a conditional so that
1273             unnecessary prompting doesn't happen if a package's
1274             installation fails and the <prgn>postinst</prgn> is
1275             called with <tt>abort-upgrade</tt>,
1276             <tt>abort-remove</tt> or <tt>abort-deconfigure</tt>.
1277           </p>
1278         </sect1>
1279
1280       </sect>
1281
1282     </chapt>
1283
1284
1285     <chapt id="source">
1286       <heading>Source packages</heading>
1287
1288       <sect id="standardsversion">
1289         <heading>Standards conformance</heading>
1290
1291         <p>
1292           Source packages should specify the most recent version number
1293           of this policy document with which your package complied
1294           when it was last updated.
1295         </p>
1296
1297         <p>
1298           This information may be used to file bug reports
1299           automatically if your package becomes too much out of date.
1300         </p>
1301
1302         <p>
1303           The version is specified in the <tt>Standards-Version</tt>
1304           control field.
1305           The format of the <tt>Standards-Version</tt> field is
1306           described in <ref id="f-Standards-Version">.
1307         </p>
1308
1309         <p>
1310           You should regularly, and especially if your package has
1311           become out of date, check for the newest Policy Manual
1312           available and update your package, if necessary. When your
1313           package complies with the new standards you should update the
1314           <tt>Standards-Version</tt> source package field and
1315           release it.<footnote>
1316                 See the file <file>upgrading-checklist</file> for
1317                 information about policy which has changed between
1318                 different versions of this document.
1319           </footnote>
1320         </p>
1321
1322       </sect>
1323
1324       <sect id="pkg-relations">
1325         <heading>Package relationships</heading>
1326
1327         <p>
1328           Source packages should specify which binary packages they
1329           require to be installed or not to be installed in order to
1330           build correctly.  For example, if building a package
1331           requires a certain compiler, then the compiler should be
1332           specified as a build-time dependency.
1333         </p>
1334
1335         <p>
1336           It is not necessary to explicitly specify build-time
1337           relationships on a minimal set of packages that are always
1338           needed to compile, link and put in a Debian package a
1339           standard "Hello World!" program written in C or C++.  The
1340           required packages are called <em>build-essential</em>, and
1341           an informational list can be found in
1342           <file>/usr/share/doc/build-essential/list</file> (which is
1343           contained in the <tt>build-essential</tt>
1344           package).<footnote>
1345             Rationale:
1346                 <list compact="compact">
1347                   <item>
1348                       This allows maintaining the list separately
1349                       from the policy documents (the list does not
1350                       need the kind of control that the policy
1351                       documents do).
1352                   </item>
1353                   <item>
1354                       Having a separate package allows one to install
1355                       the build-essential packages on a machine, as
1356                       well as allowing other packages such as tasks to
1357                       require installation of the build-essential
1358                       packages using the depends relation.
1359                   </item>
1360                   <item>
1361                       The separate package allows bug reports against
1362                       the list to be categorized separately from
1363                       the policy management process in the BTS.
1364                   </item>
1365                 </list>
1366           </footnote>
1367         </p>
1368
1369         <p>
1370           When specifying the set of build-time dependencies, one
1371           should list only those packages explicitly required by the
1372           build.  It is not necessary to list packages which are
1373           required merely because some other package in the list of
1374           build-time dependencies depends on them.<footnote>
1375                 The reason for this is that dependencies change, and
1376                 you should list all those packages, and <em>only</em>
1377                 those packages that <em>you</em> need directly.  What
1378                 others need is their business.  For example, if you
1379                 only link against <file>libimlib</file>, you will need to
1380                 build-depend on <package>libimlib2-dev</package> but
1381                 not against any <tt>libjpeg*</tt> packages, even
1382                 though <tt>libimlib2-dev</tt> currently depends on
1383                 them: installation of <package>libimlib2-dev</package>
1384                 will automatically ensure that all of its run-time
1385                 dependencies are satisfied.
1386           </footnote>
1387         </p>
1388
1389         <p>
1390           If build-time dependencies are specified, it must be
1391           possible to build the package and produce working binaries
1392           on a system with only essential and build-essential
1393           packages installed and also those required to satisfy the
1394           build-time relationships (including any implied
1395           relationships).  In particular, this means that version
1396           clauses should be used rigorously in build-time
1397           relationships so that one cannot produce bad or
1398           inconsistently configured packages when the relationships
1399           are properly satisfied.
1400         </p>
1401
1402         <p>
1403           <ref id="relationships"> explains the technical details.
1404         </p>
1405       </sect>
1406
1407       <sect>
1408         <heading>Changes to the upstream sources</heading>
1409
1410         <p>
1411           If changes to the source code are made that are not
1412           specific to the needs of the Debian system, they should be
1413           sent to the upstream authors in whatever form they prefer
1414           so as to be included in the upstream version of the
1415           package.
1416         </p>
1417
1418         <p>
1419           If you need to configure the package differently for
1420           Debian or for Linux, and the upstream source doesn't
1421           provide a way to do so, you should add such configuration
1422           facilities (for example, a new <prgn>autoconf</prgn> test
1423           or <tt>#define</tt>) and send the patch to the upstream
1424           authors, with the default set to the way they originally
1425           had it.  You can then easily override the default in your
1426           <file>debian/rules</file> or wherever is appropriate.
1427         </p>
1428
1429         <p>
1430           You should make sure that the <prgn>configure</prgn> utility
1431           detects the correct architecture specification string
1432           (refer to <ref id="arch-spec"> for details).
1433         </p>
1434
1435         <p>
1436           If you need to edit a <prgn>Makefile</prgn> where GNU-style
1437           <prgn>configure</prgn> scripts are used, you should edit the
1438           <file>.in</file> files rather than editing the
1439           <prgn>Makefile</prgn> directly.  This allows the user to
1440           reconfigure the package if necessary.  You should
1441           <em>not</em> configure the package and edit the generated
1442           <prgn>Makefile</prgn>!  This makes it impossible for someone
1443           else to later reconfigure the package without losing the
1444           changes you made.
1445         </p>
1446
1447       </sect>
1448
1449       <sect id="dpkgchangelog">
1450         <heading>Debian changelog: <file>debian/changelog</file></heading>
1451
1452         <p>
1453           Changes in the Debian version of the package should be
1454           briefly explained in the Debian changelog file
1455           <file>debian/changelog</file>.<footnote>
1456             <p>
1457               Mistakes in changelogs are usually best rectified by
1458               making a new changelog entry rather than "rewriting
1459               history" by editing old changelog entries.
1460             </p>
1461           </footnote>
1462           This includes modifications
1463           made in the Debian package compared to the upstream one
1464           as well as other changes and updates to the package.
1465           <footnote>
1466               Although there is nothing stopping an author who is also
1467               the Debian maintainer from using this changelog for all
1468               their changes, it will have to be renamed if the Debian
1469               and upstream maintainers become different people. In such
1470               a case, however, it might be better to maintain the package
1471               as a non-native package.
1472           </footnote>
1473         </p>
1474
1475         <p>
1476           The format of the <file>debian/changelog</file> allows the
1477           package building tools to discover which version of the package
1478           is being built and find out other release-specific information.
1479         </p>
1480
1481         <p>
1482           That format is a series of entries like this:
1483
1484 <example compact="compact">
1485 <var>package</var> (<var>version</var>) <var>distribution(s)</var>; urgency=<var>urgency</var>
1486             <var>
1487               [optional blank line(s), stripped]
1488             </var>
1489   * <var>change details</var>
1490     <var>more change details</var>
1491             <var>
1492               [blank line(s), included in output of dpkg-parsechangelog]
1493             </var>
1494   * <var>even more change details</var>
1495             <var>
1496               [optional blank line(s), stripped]
1497             </var>
1498  -- <var>maintainer name</var> &lt;<var>email address</var>&gt;<var>[two spaces]</var>  <var>date</var>
1499 </example>
1500         </p>
1501
1502         <p>
1503           <var>package</var> and <var>version</var> are the source
1504           package name and version number.
1505         </p>
1506
1507         <p>
1508           <var>distribution(s)</var> lists the distributions where
1509           this version should be installed when it is uploaded - it
1510           is copied to the <tt>Distribution</tt> field in the
1511           <file>.changes</file> file.  See <ref id="f-Distribution">.
1512         </p>
1513
1514         <p>
1515           <var>urgency</var> is the value for the <tt>Urgency</tt>
1516           field in the <file>.changes</file> file for the upload
1517           (see <ref id="f-Urgency">). It is not possible to specify
1518           an urgency containing commas; commas are used to separate
1519           <tt><var>keyword</var>=<var>value</var></tt> settings in the
1520           <prgn>dpkg</prgn> changelog format (though there is
1521           currently only one useful <var>keyword</var>,
1522           <tt>urgency</tt>).
1523         </p>
1524
1525         <p>
1526           The change details may in fact be any series of lines
1527           starting with at least two spaces, but conventionally each
1528           change starts with an asterisk and a separating space and
1529           continuation lines are indented so as to bring them in
1530           line with the start of the text above.  Blank lines may be
1531           used here to separate groups of changes, if desired.
1532         </p>
1533
1534         <p>
1535           If this upload resolves bugs recorded in the Bug Tracking
1536           System (BTS), they may be automatically closed on the
1537           inclusion of this package into the Debian archive by
1538           including the string: <tt>closes: Bug#<var>nnnnn</var></tt>
1539           in the change details.<footnote>
1540               To be precise, the string should match the following
1541               Perl regular expression:
1542               <example>
1543 /closes:\s*(?:bug)?\#?\s?\d+(?:,\s*(?:bug)?\#?\s?\d+)*/i
1544               </example>
1545               Then all of the bug numbers listed will be closed by the
1546               archive maintenance script (<prgn>katie</prgn>) using the
1547               <var>version</var> of the changelog entry.
1548           </footnote>
1549           This information is conveyed via the <tt>Closes</tt> field
1550           in the <tt>.changes</tt> file (see <ref id="f-Closes">).
1551         </p>
1552
1553         <p>
1554           The maintainer name and email address used in the changelog
1555           should be the details of the person uploading <em>this</em>
1556           version.  They are <em>not</em> necessarily those of the
1557           usual package maintainer.  The information here will be
1558           copied to the <tt>Changed-By</tt> field in the
1559           <tt>.changes</tt> file (see <ref id="f-Changed-By">),
1560           and then later used to send an acknowledgement when the
1561           upload has been installed.
1562         </p>
1563
1564         <p>
1565           The <var>date</var> must be in RFC822 format<footnote>
1566               This is generated by <tt>date -R</tt>.
1567           </footnote>; it must include the time zone specified
1568           numerically, with the time zone name or abbreviation
1569           optionally present as a comment in parentheses.
1570         </p>
1571
1572         <p>
1573           The first "title" line with the package name must start
1574           at the left hand margin.  The "trailer" line with the
1575           maintainer and date details must be preceded by exactly
1576           one space.  The maintainer details and the date must be
1577           separated by exactly two spaces.
1578         </p>
1579
1580         <p>
1581           For more information on placement of the changelog files
1582           within binary packages, please see <ref id="changelogs">.
1583         </p>
1584       </sect>
1585
1586       <sect id="dpkgcopyright">
1587         <heading>Copyright: <file>debian/copyright</file></heading>
1588         <p>
1589           Every package must be accompanied by a verbatim copy of
1590           its copyright and distribution license in the file
1591           <file>/usr/share/doc/<var>package</var>/copyright</file>
1592           (see <ref id="copyrightfile"> for further details). Also see
1593           <ref id="pkgcopyright"> for further considerations relayed
1594           to copyrights for packages.
1595         </p>
1596       </sect>
1597       <sect>
1598         <heading>Error trapping in makefiles</heading>
1599
1600         <p>
1601           When <prgn>make</prgn> invokes a command in a makefile
1602           (including your package's upstream makefiles and
1603           <file>debian/rules</file>), it does so using <prgn>sh</prgn>.  This
1604           means that <prgn>sh</prgn>'s usual bad error handling
1605           properties apply: if you include a miniature script as one
1606           of the commands in your makefile you'll find that if you
1607           don't do anything about it then errors are not detected
1608           and <prgn>make</prgn> will blithely continue after
1609           problems.
1610         </p>
1611
1612         <p>
1613           Every time you put more than one shell command (this
1614           includes using a loop) in a makefile command you
1615           must make sure that errors are trapped.  For
1616           simple compound commands, such as changing directory and
1617           then running a program, using <tt>&amp;&amp;</tt> rather
1618           than semicolon as a command separator is sufficient.  For
1619           more complex commands including most loops and
1620           conditionals you should include a separate <tt>set -e</tt>
1621           command at the start of every makefile command that's
1622           actually one of these miniature shell scripts.
1623         </p>
1624       </sect>
1625
1626       <sect id="timestamps">
1627         <heading>Time Stamps</heading>
1628         <p>
1629           Maintainers should preserve the modification times of the
1630           upstream source files in a package, as far as is reasonably
1631           possible.<footnote>
1632               The rationale is that there is some information conveyed
1633               by knowing the age of the file, for example, you could
1634               recognize that some documentation is very old by looking
1635               at the modification time, so it would be nice if the
1636               modification time of the upstream source would be
1637               preserved.
1638           </footnote>
1639         </p>
1640       </sect>
1641
1642       <sect id="restrictions">
1643         <heading>Restrictions on objects in source packages</heading>
1644
1645         <p>
1646           The source package may not contain any hard links<footnote>
1647             <p>
1648               This is not currently detected when building source
1649               packages, but only when extracting
1650               them.
1651             </p>
1652             <p>
1653               Hard links may be permitted at some point in the
1654               future, but would require a fair amount of
1655               work.
1656             </p>
1657           </footnote>, device special files, sockets or setuid or
1658           setgid files.<footnote>
1659               Setgid directories are allowed.
1660           </footnote>
1661         </p>
1662       </sect>
1663
1664       <sect id="debianrules">
1665         <heading>Main building script: <file>debian/rules</file></heading>
1666
1667         <p>
1668           This file must be an executable makefile, and contains the
1669           package-specific recipes for compiling the package and
1670           building binary package(s) from the source.
1671         </p>
1672
1673         <p>
1674           It must start with the line <tt>#!/usr/bin/make -f</tt>,
1675           so that it can be invoked by saying its name rather than
1676           invoking <prgn>make</prgn> explicitly.
1677         </p>
1678
1679         <p>
1680           Since an interactive <file>debian/rules</file> script makes it
1681           impossible to auto-compile that package and also makes it
1682           hard for other people to reproduce the same binary
1683           package, all <em>required targets</em> MUST be
1684           non-interactive. At a minimum, required targets are the
1685           ones called by <prgn>dpkg-buildpackage</prgn>, namely,
1686           <em>clean</em>, <em>binary</em>, <em>binary-arch</em>,
1687           <em>binary-indep</em>, and <em>build</em>. It also follows
1688           that any target that these targets depend on must also be
1689           non-interactive.
1690         </p>
1691
1692         <p>
1693           The targets are as follows (required unless stated otherwise):
1694           <taglist>
1695             <tag><tt>build</tt></tag>
1696             <item>
1697               <p>
1698                 The <tt>build</tt> target should perform all the
1699                 configuration and compilation of the package.
1700                 If a package has an interactive pre-build
1701                 configuration routine, the Debianized source package
1702                 must either be built after this has taken place (so
1703                 that the binary package can be built without rerunning
1704                 the configuration) or the configuration routine
1705                 modified to become non-interactive.  (The latter is
1706                 preferable if there are architecture-specific features
1707                 detected by the configuration routine.)
1708               </p>
1709
1710               <p>
1711                 For some packages, notably ones where the same
1712                 source tree is compiled in different ways to produce
1713                 two binary packages, the <tt>build</tt> target
1714                 does not make much sense.  For these packages it is
1715                 good enough to provide two (or more) targets
1716                 (<tt>build-a</tt> and <tt>build-b</tt> or whatever)
1717                 for each of the ways of building the package, and a
1718                 <tt>build</tt> target that does nothing.  The
1719                 <tt>binary</tt> target will have to build the
1720                 package in each of the possible ways and make the
1721                 binary package out of each.
1722               </p>
1723
1724               <p>
1725                 The <tt>build</tt> target must not do anything
1726                 that might require root privilege.
1727               </p>
1728
1729               <p>
1730                 The <tt>build</tt> target may need to run the
1731                 <tt>clean</tt> target first - see below.
1732               </p>
1733
1734               <p>
1735                 When a package has a configuration and build routine
1736                 which takes a long time, or when the makefiles are
1737                 poorly designed, or when <tt>build</tt> needs to
1738                 run <tt>clean</tt> first, it is a good idea to
1739                 <tt>touch build</tt> when the build process is
1740                 complete.  This will ensure that if <tt>debian/rules
1741                 build</tt> is run again it will not rebuild the whole
1742                 program.<footnote>
1743                     Another common way to do this is for <tt>build</tt>
1744                     to depend on <prgn>build-stamp</prgn> and to do
1745                     nothing else, and for the <prgn>build-stamp</prgn>
1746                     target to do the building and to <tt>touch
1747                     build-stamp</tt> on completion.  This is
1748                     especially useful if the build routine creates a
1749                     file or directory called <tt>build</tt>; in such a
1750                     case, <tt>build</tt> will need to be listed as
1751                     a phony target (i.e., as a dependency of the
1752                     <tt>.PHONY</tt> target).  See the documentation of
1753                     <prgn>make</prgn> for more information on phony
1754                     targets.
1755                 </footnote>
1756               </p>
1757             </item>
1758
1759             <tag><tt>build-arch</tt> (optional),
1760                  <tt>build-indep</tt> (optional)
1761             </tag>
1762             <item>
1763               <p>
1764                 A package may also provide both of the targets
1765                 <tt>build-arch</tt> and <tt>build-indep</tt>.
1766                 The <tt>build-arch</tt> target, if provided, should
1767                 perform all the configuration and compilation required
1768                 for producing all architecture-dependant binary packages
1769                 (those packages for which the body of the
1770                 <tt>Architecture</tt> field in <tt>debian/control</tt>
1771                 is not <tt>all</tt>).
1772                 Similarly, the <tt>build-indep</tt> target, if
1773                 provided, should perform all the configuration and
1774                 compilation required for producing all
1775                 architecture-independent binary packages
1776                 (those packages for which the body of the
1777                 <tt>Architecture</tt> field in <tt>debian/control</tt>
1778                 is <tt>all</tt>).
1779                 The <tt>build</tt> target should depend on those of the
1780                 targets <tt>build-arch</tt> and <tt>build-indep</tt> that
1781                 are provided in the rules file.
1782               </p>
1783
1784               <p>
1785                 If one or both of the targets <tt>build-arch</tt> and
1786                 <tt>build-indep</tt> are not provided, then invoking
1787                 <file>debian/rules</file> with one of the not-provided
1788                 targets as arguments should produce a exit status code
1789                 of 2.  Usually this is provided automatically by make
1790                 if the target is missing.
1791               </p>
1792
1793               <p>
1794                 The <tt>build-arch</tt> and <tt>build-indep</tt> targets
1795                 must not do anything that might require root privilege.
1796               </p>
1797             </item>
1798
1799             <tag><tt>binary</tt>, <tt>binary-arch</tt>,
1800               <tt>binary-indep</tt>
1801             </tag>
1802             <item>
1803               <p>
1804                 The <tt>binary</tt> target must be all that is
1805                 necessary for the user to build the binary package(s)
1806                 produced from this source package.  It is
1807                 split into two parts: <prgn>binary-arch</prgn> builds
1808                 the binary packages which are specific to a particular
1809                 architecture, and <tt>binary-indep</tt> builds
1810                 those which are not.
1811               </p>
1812               <p>
1813                 <tt>binary</tt> may be (and commonly is) a target with
1814                 no commands which simply depends on
1815                 <tt>binary-arch</tt> and <tt>binary-indep</tt>.
1816               </p>
1817               <p>
1818                 Both <tt>binary-*</tt> targets should depend on the
1819                 <tt>build</tt> target, or on the appropriate
1820                 <tt>build-arch</tt> or <tt>build-indep</tt> target, if
1821                 provided, so that the package is built if it has not
1822                 been already.  It should then create the relevant
1823                 binary package(s), using <prgn>dpkg-gencontrol</prgn> to
1824                 make their control files and <prgn>dpkg-deb</prgn> to
1825                 build them and place them in the parent of the top
1826                 level directory.
1827               </p>
1828
1829               <p>
1830                 Both the <tt>binary-arch</tt> and
1831                 <tt>binary-indep</tt> targets <em>must</em> exist.
1832                 If one of them has nothing to do (which will always be
1833                 the case if the source generates only a single binary
1834                 package, whether architecture-dependent or not), it
1835                 must still exist and must always succeed.
1836               </p>
1837
1838               <p>
1839                 The <tt>binary</tt> targets must be invoked as
1840                 root.<footnote>
1841                     The <prgn>fakeroot</prgn> package often allows one
1842                     to build a package correctly even without being
1843                     root.
1844                 </footnote>
1845               </p>
1846             </item>
1847
1848             <tag><tt>clean</tt></tag>
1849             <item>
1850               <p>
1851                 This must undo any effects that the <tt>build</tt>
1852                 and <tt>binary</tt> targets may have had, except
1853                 that it should leave alone any output files created in
1854                 the parent directory by a run of a <tt>binary</tt>
1855                 target.
1856               </p>
1857
1858               <p>
1859                 If a <tt>build</tt> file is touched at the end of
1860                 the <tt>build</tt> target, as suggested above, it
1861                 should be removed as the first action that
1862                 <tt>clean</tt> performs, so that running
1863                 <tt>build</tt> again after an interrupted
1864                 <tt>clean</tt> doesn't think that everything is
1865                 already done.
1866               </p>
1867
1868               <p>
1869                 The <tt>clean</tt> target may need to be
1870                 invoked as root if <tt>binary</tt> has been
1871                 invoked since the last <tt>clean</tt>, or if
1872                 <tt>build</tt> has been invoked as root (since
1873                 <tt>build</tt> may create directories, for
1874                 example).
1875               </p>
1876             </item>
1877
1878             <tag><tt>get-orig-source</tt> (optional)</tag>
1879             <item>
1880               <p>
1881                 This target fetches the most recent version of the
1882                 original source package from a canonical archive site
1883                 (via FTP or WWW, for example), does any necessary
1884                 rearrangement to turn it into the original source
1885                 tar file format described below, and leaves it in the
1886                 current directory.
1887               </p>
1888
1889               <p>
1890                 This target may be invoked in any directory, and
1891                 should take care to clean up any temporary files it
1892                 may have left.
1893               </p>
1894
1895               <p>
1896                 This target is optional, but providing it if
1897                 possible is a good idea.
1898               </p>
1899             </item>
1900
1901             <tag><tt>patch</tt> (optional)</tag>
1902             <item>
1903               <p>
1904                 This target performs whatever additional actions are
1905                 required to make the source ready for editing (unpacking
1906                 additional upstream archives, applying patches, etc.).
1907                 It is recommended to be implemented for any package where
1908                 <tt>dpkg-source -x</tt> does not result in source ready
1909                 for additional modification.  See
1910                 <ref id="readmesource">.
1911               </p>
1912             </item>
1913           </taglist>
1914
1915         <p>
1916           The <tt>build</tt>, <tt>binary</tt> and
1917           <tt>clean</tt> targets must be invoked with the current
1918           directory being the package's top-level directory.
1919         </p>
1920
1921
1922         <p>
1923           Additional targets may exist in <file>debian/rules</file>,
1924           either as published or undocumented interfaces or for the
1925           package's internal use.
1926         </p>
1927
1928         <p>
1929           The architectures we build on and build for are determined
1930           by <prgn>make</prgn> variables using the utility
1931           <qref id="pkg-dpkg-architecture"><prgn>dpkg-architecture</prgn></qref>.
1932           You can determine the
1933           Debian architecture and the GNU style architecture
1934           specification string for the build machine (the machine type
1935           we are building on) as well as for the host machine (the
1936           machine type we are building for).  Here is a list of
1937           supported <prgn>make</prgn> variables:
1938           <list compact="compact">
1939             <item>
1940                 <tt>DEB_*_ARCH</tt> (the Debian architecture)
1941             </item>
1942             <item>
1943                 <tt>DEB_*_GNU_TYPE</tt> (the GNU style architecture
1944                 specification string)
1945             </item>
1946             <item>
1947                 <tt>DEB_*_GNU_CPU</tt> (the CPU part of
1948                 <tt>DEB_*_GNU_TYPE</tt>)
1949             </item>
1950             <item>
1951                 <tt>DEB_*_GNU_SYSTEM</tt> (the System part of
1952                 <tt>DEB_*_GNU_TYPE</tt>)
1953           </list>
1954           where <tt>*</tt> is either <tt>BUILD</tt> for specification of
1955           the build machine or <tt>HOST</tt> for specification of the
1956           host machine.
1957         </p>
1958
1959         <p>
1960           Backward compatibility can be provided in the rules file
1961           by setting the needed variables to suitable default
1962           values; please refer to the documentation of
1963           <prgn>dpkg-architecture</prgn> for details.
1964         </p>
1965
1966         <p>
1967           It is important to understand that the <tt>DEB_*_ARCH</tt>
1968           string only determines which Debian architecture we are
1969           building on or for. It should not be used to get the CPU
1970           or system information; the GNU style variables should be
1971           used for that.
1972         </p>
1973
1974         <sect1 id="debianrules-options">
1975           <heading><file>debian/rules</file> and
1976             <tt>DEB_BUILD_OPTIONS</tt></heading>
1977
1978           <p>
1979             Supporting the standardized environment variable
1980             <tt>DEB_BUILD_OPTIONS</tt> is recommended.  This variable can
1981             contain several flags to change how a package is compiled and
1982             built.  Each flag must be in the form <var>flag</var> or
1983             <var>flag</var>=<var>options</var>.  If multiple flags are
1984             given, they must be separated by whitespace.<footnote>
1985               Some packages support any delimiter, but whitespace is the
1986               easiest to parse inside a makefile and avoids ambiguity with
1987               flag values that contain commas.
1988             </footnote>
1989             <var>flag</var> must start with a lowercase letter
1990             (<tt>a-z</tt>) and consist only of lowercase letters,
1991             numbers (<tt>0-9</tt>), and the characters
1992             <tt>-</tt> and <tt>_</tt> (hyphen and underscore).
1993             <var>options</var> must not contain whitespace.  The same
1994             tag should not be given multiple times with conflicting
1995             values.  Package maintainers may assume that
1996             <tt>DEB_BUILD_OPTIONS</tt> will not contain conflicting tags.
1997           </p>
1998
1999           <p>
2000             The meaning of the following tags has been standardized:
2001             <taglist>
2002               <tag>nocheck</tag>
2003               <item>
2004                   This tag says to not run any build-time test suite
2005                   provided by the package.
2006               </item>
2007               <tag>noopt</tag>
2008               <item>
2009                   The presence of this tag means that the package should
2010                   be compiled with a minimum of optimization.  For C
2011                   programs, it is best to add <tt>-O0</tt> to
2012                   <tt>CFLAGS</tt> (although this is usually the default).
2013                   Some programs might fail to build or run at this level
2014                   of optimization; it may be necessary to use
2015                   <tt>-O1</tt>, for example.
2016               </item>
2017               <tag>nostrip</tag>
2018               <item>
2019                   This tag means that the debugging symbols should not be
2020                   stripped from the binary during installation, so that
2021                   debugging information may be included in the package.
2022               </item>
2023               <tag>parallel=n</tag>
2024               <item>
2025                   This tag means that the package should be built using up
2026                   to <tt>n</tt> parallel processes if the package build
2027                   system supports this.<footnote>
2028                       Packages built with <tt>make</tt> can often implement
2029                       this by passing the <tt>-j</tt><var>n</var> option to
2030                       <tt>make</tt>.
2031                   </footnote>
2032                   If the package build system does not support parallel
2033                   builds, this string must be ignored.  If the package
2034                   build system only supports a lower level of concurrency
2035                   than <var>n</var>, the package should be built using as
2036                   many parallel processes as the package build system
2037                   supports.  It is up to the package maintainer to decide
2038                   whether the package build times are long enough and the
2039                   package build system is robust enough to make supporting
2040                   parallel builds worthwhile.
2041                </item>
2042             </taglist>
2043           </p>
2044
2045           <p>
2046             Unknown flags must be ignored by <file>debian/rules</file>.
2047           </p>
2048
2049           <p>
2050             The following makefile snippet is an example of how one may
2051             implement the build options; you will probably have to
2052             massage this example in order to make it work for your
2053             package.
2054             <example compact="compact">
2055 CFLAGS = -Wall -g
2056 INSTALL = install
2057 INSTALL_FILE    = $(INSTALL) -p    -o root -g root  -m  644
2058 INSTALL_PROGRAM = $(INSTALL) -p    -o root -g root  -m  755
2059 INSTALL_SCRIPT  = $(INSTALL) -p    -o root -g root  -m  755
2060 INSTALL_DIR     = $(INSTALL) -p -d -o root -g root  -m  755
2061
2062 ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
2063     CFLAGS += -O0
2064 else
2065     CFLAGS += -O2
2066 endif
2067 ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
2068     INSTALL_PROGRAM += -s
2069 endif
2070 ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
2071     NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
2072     MAKEFLAGS += -j$(NUMJOBS)
2073 endif
2074
2075 build:
2076         # ...
2077 ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
2078         # Code to run the package test suite.
2079 endif
2080             </example>
2081           </p>
2082         </sect1>
2083       </sect>
2084
2085 <!-- FIXME: section pkg-srcsubstvars is the same as substvars -->
2086       <sect id="substvars">
2087         <heading>Variable substitutions: <file>debian/substvars</file></heading>
2088
2089         <p>
2090           When <prgn>dpkg-gencontrol</prgn>,
2091           <prgn>dpkg-genchanges</prgn> and <prgn>dpkg-source</prgn>
2092           generate control files they perform variable substitutions
2093           on their output just before writing it.  Variable
2094           substitutions have the form <tt>${<var>variable</var>}</tt>.
2095           The optional file <file>debian/substvars</file> contains
2096           variable substitutions to be used; variables can also be set
2097           directly from <file>debian/rules</file> using the <tt>-V</tt>
2098           option to the source packaging commands, and certain
2099           predefined variables are also available.
2100         </p>
2101
2102         <p>
2103           The <file>debian/substvars</file> file is usually generated and
2104           modified dynamically by <file>debian/rules</file> targets, in
2105           which case it must be removed by the <tt>clean</tt> target.
2106         </p>
2107
2108         <p>
2109           See <manref name="deb-substvars" section="5"> for full
2110           details about source variable substitutions, including the
2111           format of <file>debian/substvars</file>.</p>
2112       </sect>
2113
2114       <sect id="debianwatch">
2115         <heading>Optional upstream source location: <file>debian/watch</file></heading>
2116
2117         <p>
2118           This is an optional, recommended control file for the
2119           <tt>uscan</tt> utility which defines how to automatically
2120           scan ftp or http sites for newly available updates of the
2121           package. This is used by <url id="
2122           http://dehs.alioth.debian.org/"> and other Debian QA tools
2123           to help with quality control and maintenance of the
2124           distribution as a whole.
2125         </p>
2126
2127       </sect>
2128
2129       <sect id="debianfiles">
2130         <heading>Generated files list: <file>debian/files</file></heading>
2131
2132         <p>
2133           This file is not a permanent part of the source tree; it
2134           is used while building packages to record which files are
2135           being generated.  <prgn>dpkg-genchanges</prgn> uses it
2136           when it generates a <file>.changes</file> file.
2137         </p>
2138
2139         <p>
2140           It should not exist in a shipped source package, and so it
2141           (and any backup files or temporary files such as
2142           <file>files.new</file><footnote>
2143               <file>files.new</file> is used as a temporary file by
2144               <prgn>dpkg-gencontrol</prgn> and
2145               <prgn>dpkg-distaddfile</prgn> - they write a new
2146               version of <tt>files</tt> here before renaming it,
2147               to avoid leaving a corrupted copy if an error
2148               occurs.
2149           </footnote>) should be removed by the
2150           <tt>clean</tt> target.  It may also be wise to
2151           ensure a fresh start by emptying or removing it at the
2152           start of the <tt>binary</tt> target.
2153         </p>
2154
2155         <p>
2156           When <prgn>dpkg-gencontrol</prgn> is run for a binary
2157           package, it adds an entry to <file>debian/files</file> for the
2158           <file>.deb</file> file that will be created when <tt>dpkg-deb
2159           --build</tt> is run for that binary package.  So for most
2160           packages all that needs to be done with this file is to
2161           delete it in the <tt>clean</tt> target.
2162         </p>
2163
2164         <p>
2165           If a package upload includes files besides the source
2166           package and any binary packages whose control files were
2167           made with <prgn>dpkg-gencontrol</prgn> then they should be
2168           placed in the parent of the package's top-level directory
2169           and <prgn>dpkg-distaddfile</prgn> should be called to add
2170           the file to the list in <file>debian/files</file>.</p>
2171       </sect>
2172
2173       <sect id="embeddedfiles">
2174         <heading>Convenience copies of code</heading>
2175
2176         <p>
2177           Some software packages include in their distribution convenience
2178           copies of code from other software packages, generally so that
2179           users compiling from source don't have to download multiple
2180           packages.  Debian packages should not make use of these
2181           convenience copies unless the included package is explicitly
2182           intended to be used in this way.<footnote>
2183             For example, parts of the GNU build system work like this.
2184           </footnote>
2185           If the included code is already in the Debian archive in the
2186           form of a library, the Debian packaging should ensure that
2187           binary packages reference the libraries already in Debian and
2188           the convenience copy is not used.  If the included code is not
2189           already in Debian, it should be packaged separately as a
2190           prerequisite if possible.
2191           <footnote>
2192             Having multiple copies of the same code in Debian is
2193             inefficient, often creates either static linking or shared
2194             library conflicts, and, most importantly, increases the
2195             difficulty of handling security vulnerabilities in the
2196             duplicated code.
2197           </footnote>
2198         </p>
2199       </sect>
2200
2201       <sect id="readmesource">
2202         <heading>Source package handling:
2203           <file>debian/README.source</file></heading>
2204
2205         <p>
2206           If running <prgn>dpkg-source -x</prgn> on a source package
2207           doesn't produce the source of the package, ready for editing,
2208           and allow one to make changes and run
2209           <prgn>dpkg-buildpackage</prgn> to produce a modified package
2210           without taking any additional steps, creating a
2211           <file>debian/README.source</file> documentation file is
2212           recommended.  This file should explain how to do all of the
2213           following:
2214             <enumlist>
2215               <item>Generate the fully patched source, in a form ready for
2216               editing, that would be built to create Debian
2217               packages.  Doing this with a <tt>patch</tt> target in
2218               <file>debian/rules</file> is recommended; see
2219               <ref id="debianrules">.</item>
2220               <item>Modify the source and save those modifications so that
2221               they will be applied when building the package.</item>
2222               <item>Remove source modifications that are currently being
2223               applied when building the package.</item>
2224               <item>Optionally, document what steps are necessary to
2225               upgrade the Debian source package to a new upstream version,
2226               if applicable.</item>
2227             </enumlist>
2228           This explanation should include specific commands and mention
2229           any additional required Debian packages.  It should not assume
2230           familiarity with any specific Debian packaging system or patch
2231           management tools.
2232         </p>
2233
2234         <p>
2235           This explanation may refer to a documentation file installed by
2236           one of the package's build dependencies provided that the
2237           referenced documentation clearly explains these tasks and is not
2238           a general reference manual.
2239         </p>
2240
2241         <p>
2242           <file>debian/README.source</file> may also include any other
2243           information that would be helpful to someone modifying the
2244           source package.  Even if the package doesn't fit the above
2245           description, maintainers are encouraged to document in a
2246           <file>debian/README.source</file> file any source package with a
2247           particularly complex or unintuitive source layout or build
2248           system (for example, a package that builds the same source
2249           multiple times to generate different binary packages).
2250         </p>
2251       </sect>
2252     </chapt>
2253
2254
2255     <chapt id="controlfields">
2256       <heading>Control files and their fields</heading>
2257
2258       <p>
2259         The package management system manipulates data represented in
2260         a common format, known as <em>control data</em>, stored in
2261         <em>control files</em>.
2262         Control files are used for source packages, binary packages and
2263         the <file>.changes</file> files which control the installation
2264         of uploaded files<footnote>
2265             <prgn>dpkg</prgn>'s internal databases are in a similar
2266             format.
2267         </footnote>.
2268       </p>
2269
2270       <sect id="controlsyntax">
2271         <heading>Syntax of control files</heading>
2272
2273         <p>
2274           A control file consists of one or more paragraphs of
2275           fields<footnote>
2276                 The paragraphs are also sometimes referred to as stanzas.
2277           </footnote>.
2278           The paragraphs are separated by blank lines.  Some control
2279           files allow only one paragraph; others allow several, in
2280           which case each paragraph usually refers to a different
2281           package.  (For example, in source packages, the first
2282           paragraph refers to the source package, and later paragraphs
2283           refer to binary packages generated from the source.)
2284         </p>
2285
2286         <p>
2287           Each paragraph consists of a series of data fields; each
2288           field consists of the field name, followed by a colon and
2289           then the data/value associated with that field.  It ends at
2290           the end of the (logical) line.  Horizontal whitespace
2291           (spaces and tabs) may occur immediately before or after the
2292           value and is ignored there; it is conventional to put a
2293           single space after the colon.  For example, a field might
2294           be:
2295           <example compact="compact">
2296 Package: libc6
2297           </example>
2298           the field name is <tt>Package</tt> and the field value
2299           <tt>libc6</tt>.
2300         </p>
2301
2302         <p>
2303           Many fields' values may span several lines; in this case
2304           each continuation line must start with a space or a tab.
2305           Any trailing spaces or tabs at the end of individual
2306           lines of a field value are ignored. 
2307         </p>
2308
2309         <p>
2310           In fields where it is specified that lines may not wrap,
2311           only a single line of data is allowed and whitespace is not
2312           significant in a field body. Whitespace must not appear
2313           inside names (of packages, architectures, files or anything
2314           else) or version numbers, or between the characters of
2315           multi-character version relationships.
2316         </p>
2317
2318         <p>
2319           Field names are not case-sensitive, but it is usual to
2320           capitalize the field names using mixed case as shown below.
2321         </p>
2322
2323         <p>
2324           Blank lines, or lines consisting only of spaces and tabs,
2325           are not allowed within field values or between fields - that
2326           would mean a new paragraph.
2327         </p>
2328
2329       </sect>
2330
2331       <sect id="sourcecontrolfiles">
2332         <heading>Source package control files -- <file>debian/control</file></heading>
2333
2334         <p>
2335           The <file>debian/control</file> file contains the most vital
2336           (and version-independent) information about the source package
2337           and about the binary packages it creates.
2338         </p>
2339
2340         <p>
2341           The first paragraph of the control file contains information about
2342           the source package in general. The subsequent sets each describe a
2343           binary package that the source tree builds.
2344         </p>
2345
2346         <p>
2347           The fields in the general paragraph (the first one, for the source
2348           package) are:
2349
2350           <list compact="compact">
2351             <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2352             <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2353             <item><qref id="f-Uploaders"><tt>Uploaders</tt></qref></item>
2354             <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2355             <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2356             <item><qref id="sourcebinarydeps"><tt>Build-Depends</tt> et al</qref></item>
2357             <item><qref id="f-Standards-Version"><tt>Standards-Version</tt></qref> (recommended)</item>
2358             <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2359           </list>
2360         </p>
2361
2362         <p>
2363           The fields in the binary package paragraphs are:
2364
2365           <list compact="compact">
2366             <item><qref id="f-Package"><tt>Package</tt></qref> (mandatory)</item>
2367             <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2368             <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2369             <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2370             <item><qref id="f-Essential"><tt>Essential</tt></qref></item>
2371             <item><qref id="binarydeps"><tt>Depends</tt> et al</qref></item>
2372             <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2373             <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2374           </list>
2375         </p>
2376
2377         <p>
2378           The syntax and semantics of the fields are described below.
2379         </p>
2380
2381 <!-- stuff -->
2382
2383         <p>
2384           These fields are used by <prgn>dpkg-gencontrol</prgn> to
2385           generate control files for binary packages (see below), by
2386           <prgn>dpkg-genchanges</prgn> to generate the
2387           <tt>.changes</tt> file to accompany the upload, and by
2388           <prgn>dpkg-source</prgn> when it creates the
2389           <file>.dsc</file> source control file as part of a source
2390           archive. Many fields are permitted to span multiple lines in
2391           <file>debian/control</file> but not in any other control
2392           file. These tools are responsible for removing the line
2393           breaks from such fields when using fields from
2394           <file>debian/control</file> to generate other control files.
2395         </p>
2396
2397         <p>
2398           The fields here may contain variable references - their
2399           values will be substituted by <prgn>dpkg-gencontrol</prgn>,
2400           <prgn>dpkg-genchanges</prgn> or <prgn>dpkg-source</prgn>
2401           when they generate output control files.
2402           See <ref id="substvars"> for details.
2403         </p>
2404
2405       </sect>
2406
2407       <sect id="binarycontrolfiles">
2408         <heading>Binary package control files -- <file>DEBIAN/control</file></heading>
2409
2410         <p>
2411           The <file>DEBIAN/control</file> file contains the most vital
2412           (and version-dependent) information about a binary package.
2413         </p>
2414
2415         <p>
2416           The fields in this file are:
2417
2418           <list compact="compact">
2419             <item><qref id="f-Package"><tt>Package</tt></qref> (mandatory)</item>
2420             <item><qref id="f-Source"><tt>Source</tt></qref></item>
2421             <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2422             <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2423             <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2424             <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2425             <item><qref id="f-Essential"><tt>Essential</tt></qref></item>
2426             <item><qref id="binarydeps"><tt>Depends</tt> et al</qref></item>
2427             <item><qref id="f-Installed-Size"><tt>Installed-Size</tt></qref></item>
2428             <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2429             <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2430             <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2431           </list>
2432         </p>
2433       </sect>
2434
2435       <sect id="debiansourcecontrolfiles">
2436         <heading>Debian source control files -- <tt>.dsc</tt></heading>
2437
2438         <p>
2439           This file contains a series of fields, identified and
2440           separated just like the fields in the control file of
2441           a binary package.  The fields are listed below; their
2442           syntax is described above, in <ref id="pkg-controlfields">.
2443
2444         <list compact="compact">
2445           <item><qref id="f-Format"><tt>Format</tt></qref> (mandatory)</item>
2446           <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2447           <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2448           <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2449           <item><qref id="f-Uploaders"><tt>Uploaders</tt></qref></item>
2450           <item><qref id="f-Binary"><tt>Binary</tt></qref></item>
2451           <item><qref id="f-Architecture"><tt>Architecture</tt></qref></item>
2452           <item><qref id="sourcebinarydeps"><tt>Build-Depends</tt> et al</qref></item>
2453           <item><qref id="f-Standards-Version"><tt>Standards-Version</tt></qref> (recommended)</item>
2454           <item><qref id="f-Files"><tt>Files</tt></qref> (mandatory)</item>
2455           <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2456         </list>
2457         </p>
2458
2459         <p>
2460           The source package control file is generated by
2461           <prgn>dpkg-source</prgn> when it builds the source
2462           archive, from other files in the source package,
2463           described above.  When unpacking, it is checked against
2464           the files and directories in the other parts of the
2465           source package.
2466         </p>
2467
2468       </sect>
2469
2470       <sect id="debianchangesfiles">
2471         <heading>Debian changes files -- <file>.changes</file></heading>
2472
2473         <p>
2474           The .changes files are used by the Debian archive maintenance
2475           software to process updates to packages. They contain one
2476           paragraph which contains information from the
2477           <tt>debian/control</tt> file and other data about the
2478           source package gathered via <tt>debian/changelog</tt>
2479           and <tt>debian/rules</tt>.
2480         </p>
2481
2482         <p>
2483           The fields in this file are:
2484
2485           <list compact="compact">
2486             <item><qref id="f-Format"><tt>Format</tt></qref> (mandatory)</item>
2487             <item><qref id="f-Date"><tt>Date</tt></qref> (mandatory)</item>
2488             <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2489             <item><qref id="f-Binary"><tt>Binary</tt></qref> (mandatory)</item>
2490             <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2491             <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2492             <item><qref id="f-Distribution"><tt>Distribution</tt></qref> (mandatory)</item>
2493             <item><qref id="f-Urgency"><tt>Urgency</tt></qref> (recommended)</item>
2494             <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2495             <item><qref id="f-Changed-By"><tt>Changed-By</tt></qref></item>
2496             <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2497             <item><qref id="f-Closes"><tt>Closes</tt></qref></item>
2498             <item><qref id="f-Changes"><tt>Changes</tt></qref> (mandatory)</item>
2499             <item><qref id="f-Files"><tt>Files</tt></qref> (mandatory)</item>
2500           </list>
2501         </p>
2502       </sect>
2503
2504       <sect id="controlfieldslist">
2505         <heading>List of fields</heading>
2506
2507         <sect1 id="f-Source">
2508           <heading><tt>Source</tt></heading>
2509
2510           <p>
2511             This field identifies the source package name.
2512           </p>
2513
2514           <p>
2515             In <file>debian/control</file> or a <file>.dsc</file> file,
2516             this field must contain only the name of the source package.
2517           </p>
2518
2519           <p>
2520             In a binary package control file or a <file>.changes</file>
2521             file, the source package name may be followed by a version
2522             number in parentheses<footnote>
2523                 It is customary to leave a space after the package name
2524                 if a version number is specified.
2525             </footnote>.
2526             This version number may be omitted (and is, by
2527             <prgn>dpkg-gencontrol</prgn>) if it has the same value as
2528             the <tt>Version</tt> field of the binary package in
2529             question.  The field itself may be omitted from a binary
2530             package control file when the source package has the same
2531             name and version as the binary package.
2532           </p>
2533         </sect1>
2534
2535         <sect1 id="f-Maintainer">
2536           <heading><tt>Maintainer</tt></heading>
2537
2538           <p>
2539             The package maintainer's name and email address.  The name
2540             should come first, then the email address inside angle
2541             brackets <tt>&lt;&gt</tt> (in RFC822 format).
2542           </p>
2543
2544           <p>
2545             If the maintainer's name contains a full stop then the
2546             whole field will not work directly as an email address due
2547             to a misfeature in the syntax specified in RFC822; a
2548             program using this field as an address must check for this
2549             and correct the problem if necessary (for example by
2550             putting the name in round brackets and moving it to the
2551             end, and bringing the email address forward).
2552           </p>
2553         </sect1>
2554
2555         <sect1 id="f-Uploaders">
2556           <heading><tt>Uploaders</tt></heading>
2557
2558           <p>
2559             List of the names and email addresses of co-maintainers of
2560             the package, if any. If the package has other maintainers
2561             beside the one named in the 
2562             <qref id="f-Maintainer">Maintainer field</qref>, their
2563             names and email addresses should be listed here. The
2564             format is the same as that of the Maintainer tag, and
2565             multiple entries should be comma separated. Currently,
2566             this field is restricted to a single line of data.  This
2567             is an optional field.
2568           </p>
2569           <p>
2570             Any parser that interprets the Uploaders field in
2571             <file>debian/control</file> must permit it to span multiple
2572             lines.  Line breaks in an Uploaders field that spans multiple
2573             lines are not significant and the semantics of the field are
2574             the same as if the line breaks had not been present.
2575           </p>
2576         </sect1>
2577
2578         <sect1 id="f-Changed-By">
2579           <heading><tt>Changed-By</tt></heading>
2580
2581           <p>
2582             The name and email address of the person who changed the
2583             said package. Usually the name of the maintainer.
2584             All the rules for the Maintainer field apply here, too.
2585           </p>
2586         </sect1>
2587
2588         <sect1 id="f-Section">
2589           <heading><tt>Section</tt></heading>
2590
2591           <p>
2592             This field specifies an application area into which the package
2593             has been classified. See <ref id="subsections">.
2594           </p>
2595
2596           <p>
2597             When it appears in the <file>debian/control</file> file,
2598             it gives the value for the subfield of the same name in
2599             the <tt>Files</tt> field of the <file>.changes</file> file.
2600             It also gives the default for the same field in the binary
2601             packages.
2602           </p>
2603         </sect1>
2604
2605         <sect1 id="f-Priority">
2606           <heading><tt>Priority</tt></heading>
2607
2608           <p>
2609             This field represents how important that it is that the user
2610             have the package installed. See <ref id="priorities">.
2611           </p>
2612
2613           <p>
2614             When it appears in the <file>debian/control</file> file,
2615             it gives the value for the subfield of the same name in
2616             the <tt>Files</tt> field of the <file>.changes</file> file.
2617             It also gives the default for the same field in the binary
2618             packages.
2619           </p>
2620         </sect1>
2621
2622         <sect1 id="f-Package">
2623           <heading><tt>Package</tt></heading>
2624
2625           <p>
2626             The name of the binary package.
2627           </p>
2628
2629           <p>
2630             Package names must consist only of lower case letters
2631             (<tt>a-z</tt>), digits (<tt>0-9</tt>), plus (<tt>+</tt>)
2632             and minus (<tt>-</tt>) signs, and periods (<tt>.</tt>).
2633             They must be at least two characters long and must start
2634             with an alphanumeric character.
2635           </p>
2636         </sect1>
2637
2638         <sect1 id="f-Architecture">
2639           <heading><tt>Architecture</tt></heading>
2640
2641           <p>
2642             Depending on context and the control file used, the
2643             <tt>Architecture</tt> field can include the following sets of
2644             values:
2645             <list>
2646                 <item>A unique single word identifying a Debian machine
2647                       architecture, see <ref id="arch-spec">.
2648                 <item><tt>all</tt>, which indicates an
2649                       architecture-independent package.
2650                 <item><tt>any</tt>, which indicates a package available
2651                       for building on any architecture.
2652                 <item><tt>source</tt>, which indicates a source package.
2653             </list>
2654           </p>
2655
2656           <p>
2657             In the main <file>debian/control</file> file in the source
2658             package, or in the source package control file
2659             <file>.dsc</file>, one may specify a list of architectures
2660             separated by spaces, or the special values <tt>any</tt> or
2661             <tt>all</tt>.
2662           </p>
2663
2664           <p>
2665             Specifying <tt>any</tt> indicates that the source package
2666             isn't dependent on any particular architecture and should
2667             compile fine on any one. The produced binary package(s)
2668             will be specific to whatever the current build architecture
2669             is.<footnote>
2670                 This is the most often used setting, and is recommended
2671                 for new packages that aren't <tt>Architecture: all</tt>.
2672             </footnote>
2673           </p>
2674
2675           <p>
2676             Specifying a list of architectures indicates that the source
2677             will build an architecture-dependent package, and will only
2678             work correctly on the listed architectures.<footnote>
2679                 This is a setting used for a minority of cases where the
2680                 program is not portable. Generally, it should not be used
2681                 for new packages.
2682             </footnote>
2683           </p>
2684
2685           <p>
2686             In a <file>.changes</file> file, the <tt>Architecture</tt>
2687             field lists the architecture(s) of the package(s)
2688             currently being uploaded.  This will be a list; if the
2689             source for the package is also being uploaded, the special
2690             entry <tt>source</tt> is also present.
2691           </p>
2692
2693           <p>
2694             See <ref id="debianrules"> for information how to get the
2695             architecture for the build process.
2696           </p>
2697         </sect1>
2698
2699         <sect1 id="f-Essential">
2700           <heading><tt>Essential</tt></heading>
2701
2702           <p>
2703             This is a boolean field which may occur only in the
2704             control file of a binary package or in a per-package fields
2705             paragraph of a main source control data file.
2706           </p>
2707
2708           <p>
2709             If set to <tt>yes</tt> then the package management system
2710             will refuse to remove the package (upgrading and replacing
2711             it is still possible). The other possible value is <tt>no</tt>,
2712             which is the same as not having the field at all.
2713           </p>
2714         </sect1>
2715
2716         <sect1>
2717           <heading>Package interrelationship fields:
2718             <tt>Depends</tt>, <tt>Pre-Depends</tt>,
2719             <tt>Recommends</tt>, <tt>Suggests</tt>,
2720             <tt>Breaks</tt>, <tt>Conflicts</tt>,
2721             <tt>Provides</tt>, <tt>Replaces</tt>, <tt>Enhances</tt>
2722           </heading>
2723
2724           <p>
2725             These fields describe the package's relationships with
2726             other packages.  Their syntax and semantics are described
2727             in <ref id="relationships">.</p>
2728         </sect1>
2729
2730         <sect1 id="f-Standards-Version">
2731           <heading><tt>Standards-Version</tt></heading>
2732
2733           <p>
2734             The most recent version of the standards (the policy
2735             manual and associated texts) with which the package
2736             complies.
2737           </p>
2738
2739           <p>
2740             The version number has four components: major and minor
2741             version number and major and minor patch level.  When the
2742             standards change in a way that requires every package to
2743             change the major number will be changed.  Significant
2744             changes that will require work in many packages will be
2745             signaled by a change to the minor number.  The major patch
2746             level will be changed for any change to the meaning of the
2747             standards, however small; the minor patch level will be
2748             changed when only cosmetic, typographical or other edits
2749             are made which neither change the meaning of the document
2750             nor affect the contents of packages.
2751           </p>
2752
2753           <p>
2754             Thus only the first three components of the policy version
2755             are significant in the <em>Standards-Version</em> control
2756             field, and so either these three components or the all
2757             four components may be specified.<footnote>
2758                 In the past, people specified the full version number
2759                 in the Standards-Version field, for example "2.3.0.0".
2760                 Since minor patch-level changes don't introduce new
2761                 policy, it was thought it would be better to relax
2762                 policy and only require the first 3 components to be
2763                 specified, in this example "2.3.0".  All four
2764                 components may still be used if someone wishes to do so.
2765             </footnote>
2766           </p>
2767
2768         </sect1>
2769
2770         <sect1 id="f-Version">
2771           <heading><tt>Version</tt></heading>
2772
2773           <p>
2774             The version number of a package. The format is:
2775             [<var>epoch</var><tt>:</tt>]<var>upstream_version</var>[<tt>-</tt><var>debian_revision</var>]
2776           </p>
2777
2778           <p>
2779             The three components here are:
2780             <taglist>
2781               <tag><var>epoch</var></tag>
2782               <item>
2783                 <p>
2784                   This is a single (generally small) unsigned integer.  It
2785                   may be omitted, in which case zero is assumed.  If it is
2786                   omitted then the <var>upstream_version</var> may not
2787                   contain any colons.
2788                 </p>
2789
2790                 <p>
2791                   It is provided to allow mistakes in the version numbers
2792                   of older versions of a package, and also a package's
2793                   previous version numbering schemes, to be left behind.
2794                 </p>
2795               </item>
2796
2797               <tag><var>upstream_version</var></tag>
2798               <item>
2799                 <p>
2800                   This is the main part of the version number.  It is
2801                   usually the version number of the original ("upstream")
2802                   package from which the <file>.deb</file> file has been made,
2803                   if this is applicable.  Usually this will be in the same
2804                   format as that specified by the upstream author(s);
2805                   however, it may need to be reformatted to fit into the
2806                   package management system's format and comparison
2807                   scheme.
2808                 </p>
2809
2810                 <p>
2811                   The comparison behavior of the package management system
2812                   with respect to the <var>upstream_version</var> is
2813                   described below.  The <var>upstream_version</var>
2814                   portion of the version number is mandatory.
2815                 </p>
2816
2817                 <p>
2818                   The <var>upstream_version</var> may contain only
2819                   alphanumerics<footnote>
2820                         Alphanumerics are <tt>A-Za-z0-9</tt> only.
2821                   </footnote>
2822                   and the characters <tt>.</tt> <tt>+</tt> <tt>-</tt>
2823                   <tt>:</tt> <tt>~</tt> (full stop, plus, hyphen, colon,
2824                   tilde) and should start with a digit.  If there is no
2825                   <var>debian_revision</var> then hyphens are not allowed;
2826                   if there is no <var>epoch</var> then colons are not
2827                   allowed.
2828                 </p>
2829               </item>
2830
2831               <tag><var>debian_revision</var></tag>
2832               <item>
2833                 <p>
2834                   This part of the version number specifies the version of
2835                   the Debian package based on the upstream version.  It
2836                   may contain only alphanumerics and the characters
2837                   <tt>+</tt> <tt>.</tt> <tt>~</tt> (plus, full stop,
2838                   tilde) and is compared in the same way as the
2839                   <var>upstream_version</var> is.
2840                 </p>
2841
2842                 <p>
2843                   It is optional; if it isn't present then the
2844                   <var>upstream_version</var> may not contain a hyphen.
2845                   This format represents the case where a piece of
2846                   software was written specifically to be turned into a
2847                   Debian package, and so there is only one "debianisation"
2848                   of it and therefore no revision indication is required.
2849                 </p>
2850
2851                 <p>
2852                   It is conventional to restart the
2853                   <var>debian_revision</var> at <tt>1</tt> each time the
2854                   <var>upstream_version</var> is increased.
2855                 </p>
2856
2857                 <p>
2858                   The package management system will break the version
2859                   number apart at the last hyphen in the string (if there
2860                   is one) to determine the <var>upstream_version</var> and
2861                   <var>debian_revision</var>.  The absence of a
2862                   <var>debian_revision</var> is equivalent to a
2863                   <var>debian_revision</var> of <tt>0</tt>.
2864                 </p>
2865               </item>
2866             </taglist>
2867           </p>
2868
2869           <p>
2870             When comparing two version numbers, first the <var>epoch</var>
2871             of each are compared, then the <var>upstream_version</var> if
2872             <var>epoch</var> is equal, and then <var>debian_revision</var>
2873             if <var>upstream_version</var> is also equal.
2874             <var>epoch</var> is compared numerically.  The
2875             <var>upstream_version</var> and <var>debian_revision</var>
2876             parts are compared by the package management system using the
2877             following algorithm:
2878           </p>
2879
2880           <p>
2881             The strings are compared from left to right.
2882           </p>
2883
2884           <p>
2885             First the initial part of each string consisting entirely of
2886             non-digit characters is determined.  These two parts (one of
2887             which may be empty) are compared lexically.  If a difference
2888             is found it is returned.  The lexical comparison is a
2889             comparison of ASCII values modified so that all the letters
2890             sort earlier than all the non-letters and so that a tilde
2891             sorts before anything, even the end of a part.  For example,
2892             the following parts are in sorted order from earliest to
2893             latest: <tt>~~</tt>, <tt>~~a</tt>, <tt>~</tt>, the empty part,
2894             <tt>a</tt>.<footnote>
2895               One common use of <tt>~</tt> is for upstream pre-releases.
2896               For example, <tt>1.0~beta1~svn1245</tt> sorts earlier than
2897               <tt>1.0~beta1</tt>, which sorts earlier than <tt>1.0</tt>.
2898             </footnote>
2899           </p>
2900
2901           <p>
2902             Then the initial part of the remainder of each string which
2903             consists entirely of digit characters is determined.  The
2904             numerical values of these two parts are compared, and any
2905             difference found is returned as the result of the comparison.
2906             For these purposes an empty string (which can only occur at
2907             the end of one or both version strings being compared) counts
2908             as zero.
2909           </p>
2910
2911           <p>
2912             These two steps (comparing and removing initial non-digit
2913             strings and initial digit strings) are repeated until a
2914             difference is found or both strings are exhausted.
2915           </p>
2916
2917           <p>
2918             Note that the purpose of epochs is to allow us to leave behind
2919             mistakes in version numbering, and to cope with situations
2920             where the version numbering scheme changes.  It is
2921             <em>not</em> intended to cope with version numbers containing
2922             strings of letters which the package management system cannot
2923             interpret (such as <tt>ALPHA</tt> or <tt>pre-</tt>), or with
2924             silly orderings (the author of this manual has heard of a
2925             package whose versions went <tt>1.1</tt>, <tt>1.2</tt>,
2926             <tt>1.3</tt>, <tt>1</tt>, <tt>2.1</tt>, <tt>2.2</tt>,
2927             <tt>2</tt> and so forth).
2928           </p>
2929         </sect1>
2930
2931         <sect1 id="f-Description">
2932           <heading><tt>Description</tt></heading>
2933
2934           <p>
2935             In a source or binary control file, the <tt>Description</tt>
2936             field contains a description of the binary package, consisting
2937             of two parts, the synopsis or the short description, and the
2938             long description. The field's format is as follows:
2939           </p>
2940
2941           <p>
2942 <example>
2943         Description: &lt;single line synopsis&gt;
2944          &lt;extended description over several lines&gt;
2945 </example>
2946           </p>
2947
2948           <p>
2949             The lines in the extended description can have these formats:
2950           </p>
2951
2952           <p><list>
2953
2954             <item>
2955               Those starting with a single space are part of a paragraph.
2956               Successive lines of this form will be word-wrapped when
2957               displayed. The leading space will usually be stripped off.
2958             </item>
2959
2960             <item>
2961               Those starting with two or more spaces. These will be
2962               displayed verbatim. If the display cannot be panned
2963               horizontally, the displaying program will line wrap them "hard"
2964               (i.e., without taking account of word breaks). If it can they
2965               will be allowed to trail off to the right. None, one or two
2966               initial spaces may be deleted, but the number of spaces
2967               deleted from each line will be the same (so that you can have
2968               indenting work correctly, for example).
2969             </item>
2970
2971             <item>
2972               Those containing a single space followed by a single full stop
2973               character. These are rendered as blank lines. This is the
2974               <em>only</em> way to get a blank line<footnote>
2975                 Completely empty lines will not be rendered as blank lines.
2976                 Instead, they will cause the parser to think you're starting
2977                 a whole new record in the control file, and will therefore
2978                 likely abort with an error.
2979               </footnote>.
2980             </item>
2981
2982             <item>
2983               Those containing a space, a full stop and some more characters.
2984               These are for future expansion. Do not use them.
2985             </item>
2986
2987           </list></p>
2988
2989           <p>
2990             Do not use tab characters.  Their effect is not predictable.
2991           </p>
2992
2993           <p>
2994             See <ref id="descriptions"> for further information on this.
2995           </p>
2996
2997           <p>
2998             In a <file>.changes</file> file, the <tt>Description</tt> field
2999             contains a summary of the descriptions for the packages being
3000             uploaded.
3001           </p>
3002
3003           <p>
3004             The part of the field before the first newline is empty;
3005             thereafter each line has the name of a binary package and
3006             the summary description line from that binary package.
3007             Each line is indented by one space.
3008           </p>
3009
3010         </sect1>
3011
3012         <sect1 id="f-Distribution">
3013           <heading><tt>Distribution</tt></heading>
3014
3015           <p>
3016             In a <file>.changes</file> file or parsed changelog output
3017             this contains the (space-separated) name(s) of the
3018             distribution(s) where this version of the package should
3019             be installed.  Valid distributions are determined by the
3020             archive maintainers.<footnote>
3021                 Current distribution names are:
3022                 <taglist compact="compact">
3023                   <tag><em>stable</em></tag>
3024                   <item>
3025                       This is the current "released" version of Debian
3026                       GNU/Linux.  Once the distribution is
3027                       <em>stable</em> only security fixes and other
3028                       major bug fixes are allowed. When changes are
3029                       made to this distribution, the release number is
3030                       increased (for example: 2.2r1 becomes 2.2r2 then
3031                       2.2r3, etc).
3032                   </item>
3033
3034                   <tag><em>unstable</em></tag>
3035                   <item>
3036                       This distribution value refers to the
3037                       <em>developmental</em> part of the Debian
3038                       distribution tree. New packages, new upstream
3039                       versions of packages and bug fixes go into the
3040                       <em>unstable</em> directory tree. Download from
3041                       this distribution at your own risk.
3042                   </item>
3043
3044                   <tag><em>testing</em></tag>
3045                   <item>
3046                       This distribution value refers to the
3047                       <em>testing</em> part of the Debian distribution
3048                       tree.  It receives its packages from the
3049                       unstable distribution after a short time lag to
3050                       ensure that there are no major issues with the
3051                       unstable packages.  It is less prone to breakage
3052                       than unstable, but still risky.  It is not
3053                       possible to upload packages directly to
3054                       <em>testing</em>.
3055                   </item>
3056
3057                   <tag><em>frozen</em></tag>
3058                   <item>
3059                       From time to time, the <em>testing</em>
3060                       distribution enters a state of "code-freeze" in
3061                       anticipation of release as a <em>stable</em>
3062                       version. During this period of testing only
3063                       fixes for existing or newly-discovered bugs will
3064                       be allowed.  The exact details of this stage are
3065                       determined by the Release Manager.
3066                   </item>
3067
3068                   <tag><em>experimental</em></tag>
3069                   <item>
3070                       The packages with this distribution value are
3071                       deemed by their maintainers to be high
3072                       risk. Oftentimes they represent early beta or
3073                       developmental packages from various sources that
3074                       the maintainers want people to try, but are not
3075                       ready to be a part of the other parts of the
3076                       Debian distribution tree. Download at your own
3077                       risk.
3078                   </item>
3079                 </taglist>
3080
3081                 <p>
3082                   You should list <em>all</em> distributions that the
3083                   package should be installed into.
3084                 </p>
3085
3086                 <p>
3087                   More information is available in the Debian Developer's
3088                   Reference, section "The Debian archive".
3089                 </p>
3090             </footnote>
3091           </p>
3092         </sect1>
3093
3094         <sect1 id="f-Date">
3095           <heading><tt>Date</tt></heading>
3096
3097           <p>
3098             This field includes the date the package was built or last edited.
3099           </p>
3100
3101           <p>
3102             The value of this field is usually extracted from the
3103             <file>debian/changelog</file> file - see
3104             <ref id="dpkgchangelog">).
3105           </p>
3106         </sect1>
3107
3108         <sect1 id="f-Format">
3109           <heading><tt>Format</tt></heading>
3110
3111           <p>
3112             This field specifies a format revision for the file.
3113             The most current format described in the Policy Manual
3114             is version <strong>1.5</strong>.  The syntax of the
3115             format value is the same as that of a package version
3116             number except that no epoch or Debian revision is allowed
3117             - see <ref id="f-Version">.
3118           </p>
3119         </sect1>
3120
3121         <sect1 id="f-Urgency">
3122           <heading><tt>Urgency</tt></heading>
3123
3124           <p>
3125             This is a description of how important it is to upgrade to
3126             this version from previous ones.  It consists of a single
3127             keyword taking one of the values <tt>low</tt>,
3128             <tt>medium</tt>, <tt>high</tt>, <tt>emergency</tt>, or
3129             <tt>critical</tt><footnote>
3130               Other urgency values are supported with configuration
3131               changes in the archive software but are not used in Debian.
3132               The urgency affects how quickly a package will be considered
3133               for inclusion into the <tt>testing</tt> distribution and
3134               gives an indication of the importance of any fixes included
3135               in the upload.  <tt>Emergency</tt> and <tt>critical</tt> are
3136               treated as synonymous.
3137             </footnote> (not case-sensitive) followed by an optional
3138             commentary (separated by a space) which is usually in
3139             parentheses.  For example:
3140
3141             <example>
3142   Urgency: low (HIGH for users of diversions)
3143             </example>
3144
3145           </p>
3146
3147           <p>
3148             The value of this field is usually extracted from the
3149             <file>debian/changelog</file> file - see
3150             <ref id="dpkgchangelog">.
3151           </p>
3152         </sect1>
3153
3154         <sect1 id="f-Changes">
3155           <heading><tt>Changes</tt></heading>
3156
3157           <p>
3158             This field contains the human-readable changes data, describing
3159             the differences between the last version and the current one.
3160           </p>
3161
3162           <p>
3163             There should be nothing in this field before the first
3164             newline; all the subsequent lines must be indented by at
3165             least one space; blank lines must be represented by a line
3166             consisting only of a space and a full stop.
3167           </p>
3168
3169           <p>
3170             The value of this field is usually extracted from the
3171             <file>debian/changelog</file> file - see
3172             <ref id="dpkgchangelog">).
3173           </p>
3174
3175           <p>
3176             Each version's change information should be preceded by a
3177             "title" line giving at least the version, distribution(s)
3178             and urgency, in a human-readable way.
3179           </p>
3180
3181           <p>
3182             If data from several versions is being returned the entry
3183             for the most recent version should be returned first, and
3184             entries should be separated by the representation of a
3185             blank line (the "title" line may also be followed by the
3186             representation of blank line).
3187           </p>
3188         </sect1>
3189
3190         <sect1 id="f-Binary">
3191           <heading><tt>Binary</tt></heading>
3192
3193           <p>
3194             This field is a list of binary packages.
3195           </p>
3196
3197           <p>
3198             When it appears in the <file>.dsc</file> file it is the list
3199             of binary packages which a source package can produce.  It
3200             does not necessarily produce all of these binary packages
3201             for every architecture.  The source control file doesn't
3202             contain details of which architectures are appropriate for
3203             which of the binary packages.
3204           </p>
3205
3206           <p>
3207             When it appears in a <file>.changes</file> file it lists the
3208             names of the binary packages actually being uploaded.
3209           </p>
3210
3211           <p>
3212             The syntax is a list of binary packages separated by
3213             commas<footnote>
3214                 A space after each comma is conventional.
3215             </footnote>. Currently the packages must be separated using
3216             only spaces in the <file>.changes</file> file.
3217           </p>
3218         </sect1>
3219
3220         <sect1 id="f-Installed-Size">
3221           <heading><tt>Installed-Size</tt></heading>
3222
3223           <p>
3224             This field appears in the control files of binary
3225             packages, and in the <file>Packages</file> files.  It gives
3226             the total amount of disk space required to install the
3227             named package.
3228           </p>
3229
3230           <p>
3231             The disk space is represented in kilobytes as a simple
3232             decimal number.
3233           </p>
3234         </sect1>
3235
3236         <sect1 id="f-Files">
3237           <heading><tt>Files</tt></heading>
3238
3239           <p>
3240             This field contains a list of files with information about
3241             each one.  The exact information and syntax varies with
3242             the context.  In all cases the part of the field
3243             contents on the same line as the field name is empty.  The
3244             remainder of the field is one line per file, each line
3245             being indented by one space and containing a number of
3246             sub-fields separated by spaces.
3247           </p>
3248
3249           <p>
3250             In the <file>.dsc</file> file, each line contains the MD5
3251             checksum, size and filename of the tar file and (if applicable)
3252             diff file which make up the remainder of the source
3253             package<footnote>
3254                 That is, the parts which are not the <tt>.dsc</tt>.
3255             </footnote>.
3256             The exact forms of the filenames are described
3257             in <ref id="pkg-sourcearchives">.
3258           </p>
3259
3260           <p>
3261             In the <file>.changes</file> file this contains one line per
3262             file being uploaded.  Each line contains the MD5 checksum,
3263             size, section and priority and the filename.
3264             The <qref id="f-Section">section</qref>
3265             and <qref id="f-Priority">priority</qref>
3266             are the values of the corresponding fields in
3267             the main source control file.  If no section or priority is
3268             specified then <tt>-</tt> should be used, though section
3269             and priority values must be specified for new packages to
3270             be installed properly.
3271           </p>
3272
3273           <p>
3274             The special value <tt>byhand</tt> for the section in a
3275             <tt>.changes</tt> file indicates that the file in question
3276             is not an ordinary package file and must by installed by
3277             hand by the distribution maintainers.  If the section is
3278             <tt>byhand</tt> the priority should be <tt>-</tt>.
3279           </p>
3280
3281           <p>
3282             If a new Debian revision of a package is being shipped and
3283             no new original source archive is being distributed the
3284             <tt>.dsc</tt> must still contain the <tt>Files</tt> field
3285             entry for the original source archive
3286             <file><var>package</var>-<var>upstream-version</var>.orig.tar.gz</file>,
3287             but the <file>.changes</file> file should leave it out.  In
3288             this case the original source archive on the distribution
3289             site must match exactly, byte-for-byte, the original
3290             source archive which was used to generate the
3291             <file>.dsc</file> file and diff which are being uploaded.</p>
3292         </sect1>
3293
3294         <sect1 id="f-Closes">
3295           <heading><tt>Closes</tt></heading>
3296
3297           <p>
3298             A space-separated list of bug report numbers that the upload
3299             governed by the .changes file closes.
3300           </p>
3301         </sect1>
3302
3303         <sect1 id="f-Homepage">
3304           <heading><tt>Homepage</tt></heading>
3305
3306           <p>
3307             The URL of the web site for this package, preferably (when
3308             applicable) the site from which the original source can be
3309             obtained and any additional upstream documentation or
3310             information may be found.  The content of this field is a
3311             simple URL without any surrounding characters such as
3312             <tt>&lt;&gt;</tt>.
3313           </p>
3314         </sect1>
3315
3316       </sect>
3317
3318       <sect>
3319         <heading>User-defined fields</heading>
3320
3321         <p>
3322           Additional user-defined fields may be added to the
3323           source package control file.  Such fields will be
3324           ignored, and not copied to (for example) binary or
3325           source package control files or upload control files.
3326         </p>
3327
3328         <p>
3329           If you wish to add additional unsupported fields to
3330           these output files you should use the mechanism
3331           described here.
3332         </p>
3333
3334         <p>
3335           Fields in the main source control information file with
3336           names starting <tt>X</tt>, followed by one or more of
3337           the letters <tt>BCS</tt> and a hyphen <tt>-</tt>, will
3338           be copied to the output files.  Only the part of the
3339           field name after the hyphen will be used in the output
3340           file.  Where the letter <tt>B</tt> is used the field
3341           will appear in binary package control files, where the
3342           letter <tt>S</tt> is used in source package control
3343           files and where <tt>C</tt> is used in upload control
3344           (<tt>.changes</tt>) files.
3345         </p>
3346
3347         <p>
3348           For example, if the main source information control file
3349           contains the field
3350           <example>
3351   XBS-Comment: I stand between the candle and the star.
3352           </example>
3353           then the binary and source package control files will contain the
3354           field
3355           <example>
3356   Comment: I stand between the candle and the star.
3357           </example>
3358         </p>
3359
3360       </sect>
3361
3362     </chapt>
3363
3364
3365     <chapt id="maintainerscripts">
3366       <heading>Package maintainer scripts and installation procedure</heading>
3367
3368       <sect>
3369         <heading>Introduction to package maintainer scripts</heading>
3370
3371         <p>
3372           It is possible to supply scripts as part of a package which
3373           the package management system will run for you when your
3374           package is installed, upgraded or removed.
3375         </p>
3376
3377         <p>
3378           These scripts are the files <prgn>preinst</prgn>,
3379           <prgn>postinst</prgn>, <prgn>prerm</prgn> and
3380           <prgn>postrm</prgn> in the control area of the package.
3381           They must be proper executable files; if they are scripts
3382           (which is recommended), they must start with the usual
3383           <tt>#!</tt> convention.  They should be readable and
3384           executable by anyone, and must not be world-writable.
3385         </p>
3386
3387         <p>
3388           The package management system looks at the exit status from
3389           these scripts.  It is important that they exit with a
3390           non-zero status if there is an error, so that the package
3391           management system can stop its processing.  For shell
3392           scripts this means that you <em>almost always</em> need to
3393           use <tt>set -e</tt> (this is usually true when writing shell
3394           scripts, in fact).  It is also important, of course, that
3395           they don't exit with a non-zero status if everything went
3396           well.
3397         </p>
3398
3399         <p>
3400           Additionally, packages interacting with users using
3401           <tt>debconf</tt> in the <prgn>postinst</prgn> script should
3402           install a <prgn>config</prgn> script  in the control area,
3403           see <ref id="maintscriptprompt"> for details.
3404         </p>
3405
3406         <p>
3407           When a package is upgraded a combination of the scripts from
3408           the old and new packages is called during the upgrade
3409           procedure.  If your scripts are going to be at all
3410           complicated you need to be aware of this, and may need to
3411           check the arguments to your scripts.
3412         </p>
3413
3414         <p>
3415           Broadly speaking the <prgn>preinst</prgn> is called before
3416           (a particular version of) a package is installed, and the
3417           <prgn>postinst</prgn> afterwards; the <prgn>prerm</prgn>
3418           before (a version of) a package is removed and the
3419           <prgn>postrm</prgn> afterwards.
3420         </p>
3421
3422         <p>
3423           Programs called from maintainer scripts should not normally
3424           have a path prepended to them. Before installation is
3425           started, the package management system checks to see if the
3426           programs <prgn>ldconfig</prgn>,
3427           <prgn>start-stop-daemon</prgn>, <prgn>install-info</prgn>,
3428           and <prgn>update-rc.d</prgn> can be found via the
3429           <tt>PATH</tt> environment variable. Those programs, and any
3430           other program that one would expect to be in the
3431           <tt>PATH</tt>, should thus be invoked without an absolute
3432           pathname. Maintainer scripts should also not reset the
3433           <tt>PATH</tt>, though they might choose to modify it by
3434           prepending or appending package-specific directories. These
3435           considerations really apply to all shell scripts.</p>
3436       </sect>
3437
3438       <sect id="idempotency">
3439         <heading>Maintainer scripts idempotency</heading>
3440
3441         <p>
3442           It is necessary for the error recovery procedures that the
3443           scripts be idempotent.  This means that if it is run
3444           successfully, and then it is called again, it doesn't bomb
3445           out or cause any harm, but just ensures that everything is
3446           the way it ought to be.  If the first call failed, or
3447           aborted half way through for some reason, the second call
3448           should merely do the things that were left undone the first
3449           time, if any, and exit with a success status if everything
3450           is OK.<footnote>
3451               This is so that if an error occurs, the user interrupts
3452               <prgn>dpkg</prgn> or some other unforeseen circumstance
3453               happens you don't leave the user with a badly-broken
3454               package when <prgn>dpkg</prgn> attempts to repeat the
3455               action.
3456           </footnote>
3457         </p>
3458       </sect>
3459
3460       <sect id="controllingterminal">
3461         <heading>Controlling terminal for maintainer scripts</heading>
3462
3463         <p>
3464           The maintainer scripts are guaranteed to run with a
3465           controlling terminal and can interact with the user.
3466           Because these scripts may be executed with standard output
3467           redirected into a pipe for logging purposes, Perl scripts
3468           should set unbuffered output by setting <tt>$|=1</tt> so
3469           that the output is printed immediately rather than being
3470           buffered.
3471         </p>
3472       </sect>
3473       <sect id="exitstatus">
3474         <heading>Exit status</heading>
3475
3476         <p>
3477           Each script must return a zero exit status for
3478           success, or a nonzero one for failure, since the package
3479           management system looks for the exit status of these scripts
3480           and determines what action to take next based on that datum.
3481         </p>
3482       </sect>
3483
3484       <sect id="mscriptsinstact"><heading>Summary of ways maintainer
3485           scripts are called
3486         </heading>
3487
3488         <p>
3489           <list compact="compact">
3490             <item>
3491               <var>new-preinst</var> <tt>install</tt>
3492             </item>
3493             <item>
3494               <var>new-preinst</var> <tt>install</tt> <var>old-version</var>
3495             </item>
3496             <item>
3497                 <var>new-preinst</var> <tt>upgrade</tt> <var>old-version</var>
3498             </item>
3499             <item>
3500                 <var>old-preinst</var> <tt>abort-upgrade</tt>
3501                 <var>new-version</var>
3502             </item>
3503           </list>
3504
3505         <p>
3506           <list compact="compact">
3507             <item>
3508                 <var>postinst</var> <tt>configure</tt>
3509                 <var>most-recently-configured-version</var>
3510             </item>
3511             <item>
3512                 <var>old-postinst</var> <tt>abort-upgrade</tt>
3513                 <var>new-version</var>
3514             </item>
3515             <item>
3516                 <var>conflictor's-postinst</var> <tt>abort-remove</tt>
3517                 <tt>in-favour</tt> <var>package</var>
3518                 <var>new-version</var>
3519             </item>
3520             <item>
3521                 <var>postinst</var> <tt>abort-remove</tt>
3522             </item>
3523             <item>
3524                 <var>deconfigured's-postinst</var>
3525                 <tt>abort-deconfigure</tt> <tt>in-favour</tt>
3526                 <var>failed-install-package</var> <var>version</var>
3527                 [<tt>removing</tt> <var>conflicting-package</var>
3528                 <var>version</var>]
3529             </item>
3530           </list>
3531
3532         <p>
3533           <list compact="compact">
3534             <item>
3535                 <var>prerm</var> <tt>remove</tt>
3536             </item>
3537             <item>
3538                 <var>old-prerm</var> <tt>upgrade</tt>
3539                 <var>new-version</var>
3540             </item>
3541             <item>
3542                 <var>new-prerm</var> <tt>failed-upgrade</tt>
3543                 <var>old-version</var>
3544             </item>
3545             <item>
3546                 <var>conflictor's-prerm</var> <tt>remove</tt>
3547                 <tt>in-favour</tt> <var>package</var>
3548                 <var>new-version</var>
3549             </item>
3550             <item>
3551                 <var>deconfigured's-prerm</var> <tt>deconfigure</tt>
3552                 <tt>in-favour</tt> <var>package-being-installed</var>
3553                 <var>version</var> [<tt>removing</tt>
3554                 <var>conflicting-package</var>
3555                 <var>version</var>]
3556             </item>
3557           </list>
3558
3559         <p>
3560           <list compact="compact">
3561             <item>
3562                 <var>postrm</var> <tt>remove</tt>
3563             </item>
3564             <item>
3565                 <var>postrm</var> <tt>purge</tt>
3566             </item>
3567             <item>
3568                 <var>old-postrm</var> <tt>upgrade</tt>
3569                 <var>new-version</var>
3570             </item>
3571             <item>
3572                 <var>new-postrm</var> <tt>failed-upgrade</tt>
3573                 <var>old-version</var>
3574             </item>
3575             <item>
3576                 <var>new-postrm</var> <tt>abort-install</tt>
3577             </item>
3578             <item>
3579                 <var>new-postrm</var> <tt>abort-install</tt>
3580                 <var>old-version</var>
3581             </item>
3582             <item>
3583                 <var>new-postrm</var> <tt>abort-upgrade</tt>
3584                 <var>old-version</var>
3585             </item>
3586             <item>
3587                 <var>disappearer's-postrm</var> <tt>disappear</tt>
3588                 <var>overwriter</var>
3589                 <var>overwriter-version</var>
3590             </item>
3591           </list>
3592         </p>
3593
3594
3595       <sect id="unpackphase">
3596         <heading>Details of unpack phase of installation or upgrade</heading>
3597
3598         <p>
3599           The procedure on installation/upgrade/overwrite/disappear
3600           (i.e., when running <tt>dpkg --unpack</tt>, or the unpack
3601           stage of <tt>dpkg --install</tt>) is as follows.  In each
3602           case, if a major error occurs (unless listed below) the
3603           actions are, in general, run backwards - this means that the
3604           maintainer scripts are run with different arguments in
3605           reverse order.  These are the "error unwind" calls listed
3606           below.
3607
3608           <enumlist>
3609             <item>
3610                 <enumlist>
3611                   <item>
3612                       If a version of the package is already installed, call
3613                       <example compact="compact">
3614 <var>old-prerm</var> upgrade <var>new-version</var>
3615                       </example>
3616                   </item>
3617                   <item>
3618                       If the script runs but exits with a non-zero
3619                       exit status, <prgn>dpkg</prgn> will attempt:
3620                       <example compact="compact">
3621 <var>new-prerm</var> failed-upgrade <var>old-version</var>
3622                       </example>
3623                       If this works, the upgrade continues. If this
3624                       does not work, the error unwind:
3625                       <example compact="compact">
3626 <var>old-postinst</var> abort-upgrade <var>new-version</var>
3627                       </example>
3628                       If this works, then the old-version is
3629                       "Installed", if not, the old version is in a
3630                       "Failed-Config" state.
3631                   </item>
3632                 </enumlist>
3633             </item>
3634
3635             <item>
3636                 If a "conflicting" package is being removed at the same time,
3637                 or if any package will be broken (due to <tt>Breaks</tt>):
3638                 <enumlist>
3639                   <item>
3640                       If <tt>--auto-deconfigure</tt> is
3641                       specified, call, for each package to be deconfigured
3642                       due to <tt>Breaks</tt>:
3643                       <example compact="compact">
3644 <var>deconfigured's-prerm</var> deconfigure \
3645   in-favour <var>package-being-installed</var> <var>version</var>
3646                       </example>
3647                       Error unwind:
3648                       <example compact="compact">
3649 <var>deconfigured's-postinst</var> abort-deconfigure \
3650   in-favour <var>package-being-installed-but-failed</var> <var>version</var>
3651                       </example>
3652                       The deconfigured packages are marked as
3653                       requiring configuration, so that if
3654                       <tt>--install</tt> is used they will be
3655                       configured again if possible.
3656                   </item>
3657                   <item>
3658                       If any packages depended on a conflicting
3659                       package being removed and <tt>--auto-deconfigure</tt> is
3660                       specified, call, for each such package:
3661                       <example compact="compact">
3662 <var>deconfigured's-prerm</var> deconfigure \
3663   in-favour <var>package-being-installed</var> <var>version</var> \
3664     removing <var>conflicting-package</var> <var>version</var>
3665                       </example>
3666                       Error unwind:
3667                       <example compact="compact">
3668 <var>deconfigured's-postinst</var> abort-deconfigure \
3669   in-favour <var>package-being-installed-but-failed</var> <var>version</var> \
3670     removing <var>conflicting-package</var> <var>version</var>
3671                       </example>
3672                       The deconfigured packages are marked as
3673                       requiring configuration, so that if
3674                       <tt>--install</tt> is used they will be
3675                       configured again if possible.
3676                   </item>
3677                   <item>
3678                       To prepare for removal of each conflicting package, call:
3679                       <example compact="compact">
3680 <var>conflictor's-prerm</var> remove \
3681   in-favour <var>package</var> <var>new-version</var>
3682                       </example>
3683                       Error unwind:
3684                       <example compact="compact">
3685 <var>conflictor's-postinst</var> abort-remove \
3686   in-favour <var>package</var> <var>new-version</var>
3687                       </example>
3688                   </item>
3689                 </enumlist>
3690             </item>
3691
3692             <item>
3693                 <enumlist>
3694                   <item>
3695                       If the package is being upgraded, call:
3696                       <example compact="compact">
3697 <var>new-preinst</var> upgrade <var>old-version</var>
3698                       </example>
3699                       If this fails, we call:
3700                       <example>
3701 <var>new-postrm</var> abort-upgrade <var>old-version</var>
3702                       </example>
3703                       <enumlist>
3704                         <item>
3705                           <p>
3706                             If that works, then
3707                             <example>
3708 <var>old-postinst</var> abort-upgrade <var>new-version</var>
3709                             </example>
3710                             is called. If this works, then the old version
3711                             is in an "Installed" state, or else it is left
3712                             in an "Unpacked" state.
3713                           </p>
3714                         </item>
3715                         <item>
3716                           <p>
3717                             If it fails, then the old version is left
3718                             in an "Half-Installed" state.
3719                           </p>
3720                         </item>
3721                       </enumlist>
3722                       
3723                   </item>
3724                   <item>
3725                       Otherwise, if the package had some configuration
3726                       files from a previous version installed (i.e., it
3727                       is in the "configuration files only" state):
3728                       <example compact="compact">
3729 <var>new-preinst</var> install <var>old-version</var>
3730                       </example>
3731                       Error unwind:
3732                       <example>
3733 <var>new-postrm</var> abort-install <var>old-version</var>
3734                       </example>
3735                       If this fails, the package is left in a
3736                       "Half-Installed" state, which requires a
3737                       reinstall. If it works, the packages is left in
3738                       a "Config Files" state.
3739                   </item>
3740                   <item>
3741                       Otherwise (i.e., the package was completely purged):
3742                       <example compact="compact">
3743 <var>new-preinst</var> install
3744                       </example>
3745                       Error unwind:
3746                       <example compact="compact">
3747 <var>new-postrm</var> abort-install
3748                       </example>
3749                       If the error-unwind fails, the package is in a
3750                       "Half Installed" phase, and requires a
3751                       reinstall. If the error unwind works, the
3752                       package is in a not installed state.
3753                   </item>
3754                 </enumlist>
3755             </item>
3756
3757             <item>
3758               <p>
3759                 The new package's files are unpacked, overwriting any
3760                 that may be on the system already, for example any
3761                 from the old version of the same package or from
3762                 another package.  Backups of the old files are kept
3763                 temporarily, and if anything goes wrong the package
3764                 management system will attempt to put them back as
3765                 part of the error unwind.
3766               </p>
3767
3768               <p>
3769                 It is an error for a package to contain files which
3770                 are on the system in another package, unless
3771                 <tt>Replaces</tt> is used (see <ref id="replaces">).
3772                 <!--
3773                 The following paragraph is not currently the case:
3774                 Currently the <tt>- - force-overwrite</tt> flag is
3775                 enabled, downgrading it to a warning, but this may not
3776                 always be the case.
3777                 -->
3778               </p>
3779
3780               <p>
3781                 It is a more serious error for a package to contain a
3782                 plain file or other kind of non-directory where another
3783                 package has a directory (again, unless
3784                 <tt>Replaces</tt> is used).  This error can be
3785                 overridden if desired using
3786                 <tt>--force-overwrite-dir</tt>, but this is not
3787                 advisable.
3788               </p>
3789
3790               <p>
3791                 Packages which overwrite each other's files produce
3792                 behavior which, though deterministic, is hard for the
3793                 system administrator to understand.  It can easily
3794                 lead to "missing" programs if, for example, a package
3795                 is installed which overwrites a file from another
3796                 package, and is then removed again.<footnote>
3797                     Part of the problem is due to what is arguably a
3798                     bug in <prgn>dpkg</prgn>.
3799                 </footnote>
3800               </p>
3801
3802               <p>
3803                 A directory will never be replaced by a symbolic link
3804                 to a directory or vice versa; instead, the existing
3805                 state (symlink or not) will be left alone and
3806                 <prgn>dpkg</prgn> will follow the symlink if there is
3807                 one.
3808               </p>
3809             </item>
3810
3811             <item>
3812               <p>
3813                 <enumlist>
3814                   <item>
3815                       If the package is being upgraded, call
3816                       <example compact="compact">
3817 <var>old-postrm</var> upgrade <var>new-version</var>
3818                       </example>
3819                   </item>
3820                   <item>
3821                       If this fails, <prgn>dpkg</prgn> will attempt:
3822                       <example compact="compact">
3823 <var>new-postrm</var> failed-upgrade <var>old-version</var>
3824                       </example>
3825                       If this works, installation continues. If not, 
3826                       Error unwind:
3827                       <example compact="compact">
3828 <var>old-preinst</var> abort-upgrade <var>new-version</var>
3829                       </example>
3830                       If this fails, the old version is left in an
3831                       "Half Installed" state. If it works, dpkg now
3832                       calls:
3833                       <example compact="compact">
3834 <var>new-postrm</var> abort-upgrade <var>old-version</var>
3835                       </example>
3836                       If this fails, the old version is left in an
3837                       "Half Installed" state. If it works, dpkg now
3838                       calls:
3839                       <example compact="compact">
3840 <var>old-postinst</var> abort-upgrade <var>new-version</var>
3841                       </example>
3842                       If this fails, the old version is in an
3843                       "Unpacked" state.
3844                   </item>
3845                 </enumlist>
3846               </p>
3847
3848               <p>
3849                 This is the point of no return - if
3850                 <prgn>dpkg</prgn> gets this far, it won't back off
3851                 past this point if an error occurs.  This will
3852                 leave the package in a fairly bad state, which
3853                 will require a successful re-installation to clear
3854                 up, but it's when <prgn>dpkg</prgn> starts doing
3855                 things that are irreversible.
3856               </p>
3857             </item>
3858
3859             <item>
3860                 Any files which were in the old version of the package
3861                 but not in the new are removed.
3862             </item>
3863
3864             <item>
3865                 The new file list replaces the old.
3866             </item>
3867
3868             <item>
3869                 The new maintainer scripts replace the old.
3870             </item>
3871
3872             <item>
3873                 Any packages all of whose files have been overwritten
3874                 during the installation, and which aren't required for
3875                 dependencies, are considered to have been removed.
3876                 For each such package
3877                 <enumlist>
3878                   <item>
3879                       <prgn>dpkg</prgn> calls:
3880                       <example compact="compact">
3881 <var>disappearer's-postrm</var> disappear \
3882   <var>overwriter</var> <var>overwriter-version</var>
3883                       </example>
3884                   </item>
3885                   <item>
3886                       The package's maintainer scripts are removed.
3887                   </item>
3888                   <item>
3889                       It is noted in the status database as being in a
3890                       sane state, namely not installed (any conffiles
3891                       it may have are ignored, rather than being
3892                       removed by <prgn>dpkg</prgn>).  Note that
3893                       disappearing packages do not have their prerm
3894                       called, because <prgn>dpkg</prgn> doesn't know
3895                       in advance that the package is going to
3896                       vanish.
3897                   </item>
3898                 </enumlist>
3899             </item>
3900
3901             <item>
3902                 Any files in the package we're unpacking that are also
3903                 listed in the file lists of other packages are removed
3904                 from those lists.  (This will lobotomize the file list
3905                 of the "conflicting" package if there is one.)
3906             </item>
3907
3908             <item>
3909                 The backup files made during installation, above, are
3910                 deleted.
3911             </item>
3912
3913             <item>
3914               <p>
3915                 The new package's status is now sane, and recorded as
3916                 "unpacked".
3917               </p>
3918
3919               <p>
3920                 Here is another point of no return - if the
3921                 conflicting package's removal fails we do not unwind
3922                 the rest of the installation; the conflicting package
3923                 is left in a half-removed limbo.
3924               </p>
3925             </item>
3926
3927             <item>
3928                 If there was a conflicting package we go and do the
3929                 removal actions (described below), starting with the
3930                 removal of the conflicting package's files (any that
3931                 are also in the package being installed have already
3932                 been removed from the conflicting package's file list,
3933                 and so do not get removed now).
3934             </item>
3935           </enumlist>
3936         </p>
3937       </sect>
3938
3939       <sect id="configdetails"><heading>Details of configuration</heading>
3940
3941         <p>
3942           When we configure a package (this happens with <tt>dpkg
3943             --install</tt> and <tt>dpkg --configure</tt>), we first
3944           update any <tt>conffile</tt>s and then call:
3945           <example compact="compact">
3946 <var>postinst</var> configure <var>most-recently-configured-version</var>
3947           </example>
3948         </p>
3949
3950         <p>
3951           No attempt is made to unwind after errors during
3952           configuration. If the configuration fails, the package is in
3953           a "Failed Config" state, and an error message is generated.
3954         </p>
3955
3956         <p>
3957           If there is no most recently configured version
3958           <prgn>dpkg</prgn> will pass a null argument.
3959           <footnote>
3960             <p>
3961               Historical note: Truly ancient (pre-1997) versions of
3962               <prgn>dpkg</prgn> passed <tt>&lt;unknown&gt;</tt>
3963               (including the angle brackets) in this case.  Even older
3964               ones did not pass a second argument at all, under any
3965               circumstance.  Note that upgrades using such an old dpkg
3966               version are unlikely to work for other reasons, even if
3967               this old argument behavior is handled by your postinst script.
3968             </p>
3969           </footnote>     
3970         </p>
3971       </sect>
3972
3973       <sect id="removedetails"><heading>Details of removal and/or
3974       configuration purging</heading>
3975
3976         <p>
3977           <enumlist>
3978             <item>
3979               <p>
3980                 <example compact="compact">
3981 <var>prerm</var> remove
3982                 </example>
3983               </p>
3984               <p>
3985                 If prerm fails during replacement due to conflict
3986                 <example>
3987 <var>conflictor's-postinst</var> abort-remove \
3988   in-favour <var>package</var> <var>new-version</var>
3989                 </example>
3990                 Or else we call:
3991                 <example>
3992 <var>postinst</var> abort-remove
3993                 </example>
3994               </p>
3995               <p>
3996                 If this fails, the package is in a "Failed-Config"
3997                 state, or else it remains "Installed".
3998               </p>
3999             </item>
4000             <item>
4001                 The package's files are removed (except <tt>conffile</tt>s).
4002             </item>
4003             <item>
4004                 <example compact="compact">
4005 <var>postrm</var> remove
4006                 </example>
4007
4008               <p>
4009                 If it fails, there's no error unwind, and the package is in
4010                 an "Half-Installed" state.
4011               </p>
4012             </item>
4013             <item>
4014               <p>
4015                 All the maintainer scripts except the <prgn>postrm</prgn>
4016                 are removed.
4017               </p>
4018
4019               <p>
4020                 If we aren't purging the package we stop here.  Note
4021                 that packages which have no <prgn>postrm</prgn> and no
4022                 <tt>conffile</tt>s are automatically purged when
4023                 removed, as there is no difference except for the
4024                 <prgn>dpkg</prgn> status.
4025               </p>
4026             </item>
4027             <item>
4028                 The <tt>conffile</tt>s and any backup files
4029                 (<tt>~</tt>-files, <tt>#*#</tt> files,
4030                 <tt>%</tt>-files, <tt>.dpkg-{old,new,tmp}</tt>, etc.)
4031                 are removed.
4032             </item>
4033             <item>
4034               <p>
4035                 <example compact="compact">
4036 <var>postrm</var> purge
4037                 </example>
4038               </p>
4039               <p>
4040                 If this fails, the package remains in a "Config-Files"
4041                 state.
4042               </p>
4043             </item>
4044             <item>
4045                 The package's file list is removed.
4046             </item>
4047           </enumlist>
4048
4049         </p>
4050       </sect>
4051     </chapt>
4052
4053
4054     <chapt id="relationships">
4055       <heading>Declaring relationships between packages</heading>
4056
4057       <sect id="depsyntax">
4058         <heading>Syntax of relationship fields</heading>
4059
4060         <p>
4061           These fields all have a uniform syntax.  They are a list of
4062           package names separated by commas.
4063         </p>
4064
4065         <p>
4066           In the <tt>Depends</tt>, <tt>Recommends</tt>,
4067           <tt>Suggests</tt>, <tt>Pre-Depends</tt>,
4068           <tt>Build-Depends</tt> and <tt>Build-Depends-Indep</tt>
4069           control file fields of the package, which declare
4070           dependencies on other packages, the package names listed may
4071           also include lists of alternative package names, separated
4072           by vertical bar (pipe) symbols <tt>|</tt>.  In such a case,
4073           if any one of the alternative packages is installed, that
4074           part of the dependency is considered to be satisfied.
4075         </p>
4076
4077         <p>
4078           All of the fields except for <tt>Provides</tt> may restrict
4079           their applicability to particular versions of each named
4080           package.  This is done in parentheses after each individual
4081           package name; the parentheses should contain a relation from
4082           the list below followed by a version number, in the format
4083           described in <ref id="f-Version">.
4084         </p>
4085
4086         <p>
4087           The relations allowed are <tt>&lt;&lt;</tt>, <tt>&lt;=</tt>,
4088           <tt>=</tt>, <tt>&gt;=</tt> and <tt>&gt;&gt;</tt> for
4089           strictly earlier, earlier or equal, exactly equal, later or
4090           equal and strictly later, respectively.  The deprecated
4091           forms <tt>&lt;</tt> and <tt>&gt;</tt> were used to mean
4092           earlier/later or equal, rather than strictly earlier/later,
4093           so they should not appear in new packages (though
4094           <prgn>dpkg</prgn> still supports them).
4095         </p>
4096
4097         <p>
4098           Whitespace may appear at any point in the version
4099           specification subject to the rules in <ref
4100           id="controlsyntax">, and must appear where it's necessary to
4101           disambiguate; it is not otherwise significant.  All of the
4102           relationship fields may span multiple lines.  For
4103           consistency and in case of future changes to
4104           <prgn>dpkg</prgn> it is recommended that a single space be
4105           used after a version relationship and before a version
4106           number; it is also conventional to put a single space after
4107           each comma, on either side of each vertical bar, and before
4108           each open parenthesis.  When wrapping a relationship field, it
4109           is conventional to do so after a comma and before the space
4110           following that comma.
4111         </p>
4112
4113         <p>
4114           For example, a list of dependencies might appear as:
4115           <example compact="compact">
4116 Package: mutt
4117 Version: 1.3.17-1
4118 Depends: libc6 (>= 2.2.1), exim | mail-transport-agent
4119           </example>
4120         </p>
4121
4122         <p>
4123           All fields that specify build-time relationships
4124           (<tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
4125           <tt>Build-Conflicts</tt> and <tt>Build-Conflicts-Indep</tt>)
4126           may be restricted to a certain set of architectures.  This
4127           is indicated in brackets after each individual package name and
4128           the optional version specification.  The brackets enclose a
4129           list of Debian architecture names separated by whitespace.
4130           Exclamation marks may be prepended to each of the names.
4131           (It is not permitted for some names to be prepended with
4132           exclamation marks while others aren't.) If the current Debian
4133           host architecture is not in this list and there are no
4134           exclamation marks in the list, or it is in the list with a
4135           prepended exclamation mark, the package name and the
4136           associated version specification are ignored completely for
4137           the purposes of defining the relationships.
4138         </p>
4139
4140         <p>
4141           For example:
4142           <example compact="compact">
4143 Source: glibc
4144 Build-Depends-Indep: texinfo
4145 Build-Depends: kernel-headers-2.2.10 [!hurd-i386],
4146   hurd-dev [hurd-i386], gnumach-dev [hurd-i386]
4147           </example>
4148         </p>
4149
4150         <p>
4151           Note that the binary package relationship fields such as
4152           <tt>Depends</tt> appear in one of the binary package
4153           sections of the control file, whereas the build-time
4154           relationships such as <tt>Build-Depends</tt> appear in the
4155           source package section of the control file (which is the
4156           first section).
4157         </p>
4158       </sect>
4159
4160       <sect id="binarydeps">
4161         <heading>Binary Dependencies - <tt>Depends</tt>,
4162           <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4163           <tt>Pre-Depends</tt>
4164         </heading>
4165
4166         <p>
4167           Packages can declare in their control file that they have
4168           certain relationships to other packages - for example, that
4169           they may not be installed at the same time as certain other
4170           packages, and/or that they depend on the presence of others.
4171         </p>
4172
4173         <p>
4174           This is done using the <tt>Depends</tt>, <tt>Pre-Depends</tt>,
4175           <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4176           <tt>Breaks</tt> and <tt>Conflicts</tt> control file fields.
4177         </p>
4178
4179         <p>
4180           These seven fields are used to declare a dependency
4181           relationship by one package on another.  Except for
4182           <tt>Enhances</tt> and <tt>Breaks</tt>, they appear in the
4183           depending (binary) package's control file.
4184           (<tt>Enhances</tt> appears in the recommending package's
4185           control file, and <tt>Breaks</tt> appears in the version of
4186           depended-on package which causes the named package to
4187           break).
4188         </p>
4189
4190         <p>
4191           A <tt>Depends</tt> field takes effect <em>only</em> when a
4192           package is to be configured.  It does not prevent a package
4193           being on the system in an unconfigured state while its
4194           dependencies are unsatisfied, and it is possible to replace
4195           a package whose dependencies are satisfied and which is
4196           properly installed with a different version whose
4197           dependencies are not and cannot be satisfied; when this is
4198           done the depending package will be left unconfigured (since
4199           attempts to configure it will give errors) and will not
4200           function properly.  If it is necessary, a
4201           <tt>Pre-Depends</tt> field can be used, which has a partial
4202           effect even when a package is being unpacked, as explained
4203           in detail below.  (The other three dependency fields,
4204           <tt>Recommends</tt>, <tt>Suggests</tt> and
4205           <tt>Enhances</tt>, are only used by the various front-ends
4206           to <prgn>dpkg</prgn> such as <prgn>apt-get</prgn>,
4207           <prgn>aptitude</prgn>, and <prgn>dselect</prgn>.)
4208         </p>
4209
4210         <p>
4211           For this reason packages in an installation run are usually
4212           all unpacked first and all configured later; this gives
4213           later versions of packages with dependencies on later
4214           versions of other packages the opportunity to have their
4215           dependencies satisfied.
4216         </p>
4217
4218         <p>
4219           In case of circular dependencies, since installation or
4220           removal order honoring the dependency order can't be
4221           established, dependency loops are broken at some point
4222           (based on rules below), and some packages may not be able to
4223           rely on their dependencies being present when being
4224           installed or removed, depending on which side of the break
4225           of the circular dependency loop they happen to be on.  If one
4226           of the packages in the loop has no postinst script, then the
4227           cycle will be broken at that package, so as to ensure that
4228           all postinst scripts run with the dependencies properly
4229           configured if this is possible. Otherwise the breaking point
4230           is arbitrary.
4231         </p>
4232
4233         <p>
4234           The <tt>Depends</tt> field thus allows package maintainers
4235           to impose an order in which packages should be configured.
4236         </p>
4237
4238         <p>
4239           The meaning of the five dependency fields is as follows:
4240           <taglist>
4241             <tag><tt>Depends</tt></tag>
4242             <item>
4243               <p>
4244                 This declares an absolute dependency.  A package will
4245                 not be configured unless all of the packages listed in
4246                 its <tt>Depends</tt> field have been correctly
4247                 configured.
4248               </p>
4249
4250               <p>
4251                 The <tt>Depends</tt> field should be used if the
4252                 depended-on package is required for the depending
4253                 package to provide a significant amount of
4254                 functionality.
4255               </p>
4256
4257               <p>
4258                 The <tt>Depends</tt> field should also be used if the
4259                 <prgn>postinst</prgn>, <prgn>prerm</prgn> or
4260                 <prgn>postrm</prgn> scripts require the package to be
4261                 present in order to run.  Note, however, that the
4262                 <prgn>postrm</prgn> cannot rely on any non-essential
4263                 packages to be present during the <tt>purge</tt>
4264                 phase.
4265             </item>
4266
4267             <tag><tt>Recommends</tt></tag>
4268             <item>
4269               <p>
4270                 This declares a strong, but not absolute, dependency.
4271               </p>
4272
4273               <p>
4274                 The <tt>Recommends</tt> field should list packages
4275                 that would be found together with this one in all but
4276                 unusual installations.
4277               </p>
4278             </item>
4279
4280             <tag><tt>Suggests</tt></tag>
4281             <item>
4282                 This is used to declare that one package may be more
4283                 useful with one or more others.  Using this field
4284                 tells the packaging system and the user that the
4285                 listed packages are related to this one and can
4286                 perhaps enhance its usefulness, but that installing
4287                 this one without them is perfectly reasonable.
4288             </item>
4289
4290             <tag><tt>Enhances</tt></tag>
4291             <item>
4292                 This field is similar to Suggests but works in the
4293                 opposite direction. It is used to declare that a
4294                 package can enhance the functionality of another
4295                 package.
4296             </item>
4297
4298             <tag><tt>Pre-Depends</tt></tag>
4299             <item>
4300               <p>
4301                 This field is like <tt>Depends</tt>, except that it
4302                 also forces <prgn>dpkg</prgn> to complete installation
4303                 of the packages named before even starting the
4304                 installation of the package which declares the
4305                 pre-dependency, as follows:
4306               </p>
4307
4308               <p>
4309                 When a package declaring a pre-dependency is about to
4310                 be <em>unpacked</em> the pre-dependency can be
4311                 satisfied if the depended-on package is either fully
4312                 configured, <em>or even if</em> the depended-on
4313                 package(s) are only unpacked or half-configured,
4314                 provided that they have been configured correctly at
4315                 some point in the past (and not removed or partially
4316                 removed since).  In this case, both the
4317                 previously-configured and currently unpacked or
4318                 half-configured versions must satisfy any version
4319                 clause in the <tt>Pre-Depends</tt> field.
4320               </p>
4321
4322               <p>
4323                 When the package declaring a pre-dependency is about
4324                 to be <em>configured</em>, the pre-dependency will be
4325                 treated as a normal <tt>Depends</tt>, that is, it will
4326                 be considered satisfied only if the depended-on
4327                 package has been correctly configured.
4328               </p>
4329
4330               <p>
4331                 <tt>Pre-Depends</tt> should be used sparingly,
4332                 preferably only by packages whose premature upgrade or
4333                 installation would hamper the ability of the system to
4334                 continue with any upgrade that might be in progress.
4335               </p>
4336
4337               <p>
4338                 <tt>Pre-Depends</tt> are also required if the
4339                 <prgn>preinst</prgn> script depends on the named
4340                 package.  It is best to avoid this situation if
4341                 possible.
4342               </p>
4343             </item>
4344           </taglist>
4345         </p>
4346
4347         <p>
4348           When selecting which level of dependency to use you should
4349           consider how important the depended-on package is to the
4350           functionality of the one declaring the dependency.  Some
4351           packages are composed of components of varying degrees of
4352           importance.  Such a package should list using
4353           <tt>Depends</tt> the package(s) which are required by the
4354           more important components.  The other components'
4355           requirements may be mentioned as Suggestions or
4356           Recommendations, as appropriate to the components' relative
4357           importance.
4358         </p>
4359       </sect>
4360
4361       <sect id="breaks">
4362         <heading>Packages which break other packages - <tt>Breaks</tt></heading>
4363
4364         <p>
4365           Using <tt>Breaks</tt> may cause problems for upgrades from older
4366           versions of Debian and should not be used until the stable
4367           release of Debian supports <tt>Breaks</tt>.
4368         </p>
4369
4370         <p>
4371           When one binary package declares that it breaks another,
4372           <prgn>dpkg</prgn> will refuse to allow the package which
4373           declares <tt>Breaks</tt> be installed unless the broken
4374           package is deconfigured first, and it will refuse to
4375           allow the broken package to be reconfigured.
4376         </p>
4377
4378         <p>
4379           A package will not be regarded as causing breakage merely
4380           because its configuration files are still installed; it must
4381           be at least half-installed.
4382         </p>
4383
4384         <p>
4385           A special exception is made for packages which declare that
4386           they break their own package name or a virtual package which
4387           they provide (see below): this does not count as a real
4388           breakage.
4389         </p>
4390
4391         <p>
4392           Normally a <tt>Breaks</tt> entry will have an "earlier than"
4393           version clause; such a <tt>Breaks</tt> is introduced in the
4394           version of an (implicit or explicit) dependency which
4395           violates an assumption or reveals a bug in earlier versions
4396           of the broken package.  This use of <tt>Breaks</tt> will
4397           inform higher-level package management tools that broken
4398           package must be upgraded before the new one.
4399         </p>
4400
4401         <p>
4402           If the breaking package also overwrites some files from the
4403           older package, it should use <tt>Replaces</tt> (not
4404           <tt>Conflicts</tt>) to ensure this goes smoothly.
4405         </p>
4406       </sect>
4407
4408       <sect id="conflicts">
4409         <heading>Conflicting binary packages - <tt>Conflicts</tt></heading>
4410
4411         <p>
4412           When one binary package declares a conflict with another
4413           using a <tt>Conflicts</tt> field, <prgn>dpkg</prgn> will
4414           refuse to allow them to be installed on the system at the
4415           same time.
4416         </p>
4417
4418         <p>
4419           If one package is to be installed, the other must be removed
4420           first - if the package being installed is marked as
4421           replacing (see <ref id="replaces">) the one on the system,
4422           or the one on the system is marked as deselected, or both
4423           packages are marked <tt>Essential</tt>, then
4424           <prgn>dpkg</prgn> will automatically remove the package
4425           which is causing the conflict, otherwise it will halt the
4426           installation of the new package with an error.  This
4427           mechanism is specifically designed to produce an error when
4428           the installed package is <tt>Essential</tt>, but the new
4429           package is not.
4430         </p>
4431
4432         <p>
4433           A package will not cause a conflict merely because its
4434           configuration files are still installed; it must be at least
4435           half-installed.
4436         </p>
4437
4438         <p>
4439           A special exception is made for packages which declare a
4440           conflict with their own package name, or with a virtual
4441           package which they provide (see below): this does not
4442           prevent their installation, and allows a package to conflict
4443           with others providing a replacement for it.  You use this
4444           feature when you want the package in question to be the only
4445           package providing some feature.
4446         </p>
4447
4448         <p>
4449           A <tt>Conflicts</tt> entry should almost never have an
4450           "earlier than" version clause.  This would prevent
4451           <prgn>dpkg</prgn> from upgrading or installing the package
4452           which declared such a conflict until the upgrade or removal
4453           of the conflicted-with package had been completed.  Instead,
4454           <tt>Breaks</tt> may be used (once <tt>Breaks</tt> is supported
4455           by the stable release of Debian).
4456         </p>
4457       </sect>
4458
4459       <sect id="virtual"><heading>Virtual packages - <tt>Provides</tt>
4460         </heading>
4461
4462         <p>
4463           As well as the names of actual ("concrete") packages, the
4464           package relationship fields <tt>Depends</tt>,
4465           <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4466           <tt>Pre-Depends</tt>, <tt>Breaks</tt>, <tt>Conflicts</tt>,
4467           <tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
4468           <tt>Build-Conflicts</tt> and <tt>Build-Conflicts-Indep</tt>
4469           may mention "virtual packages".
4470         </p>
4471
4472         <p>
4473           A <em>virtual package</em> is one which appears in the
4474           <tt>Provides</tt> control file field of another package.
4475           The effect is as if the package(s) which provide a
4476           particular virtual package name had been listed by name
4477           everywhere the virtual package name appears. (See also <ref
4478             id="virtual_pkg">)
4479         </p>
4480
4481         <p>
4482           If there are both concrete and virtual packages of the same
4483           name, then the dependency may be satisfied (or the conflict
4484           caused) by either the concrete package with the name in
4485           question or any other concrete package which provides the
4486           virtual package with the name in question.  This is so that,
4487           for example, supposing we have
4488           <example compact="compact">
4489 Package: foo
4490 Depends: bar
4491           </example> and someone else releases an enhanced version of
4492           the <tt>bar</tt> package they can say:
4493           <example compact="compact">
4494 Package: bar-plus
4495 Provides: bar
4496           </example>
4497           and the <tt>bar-plus</tt> package will now also satisfy the
4498           dependency for the <tt>foo</tt> package.
4499         </p>
4500
4501         <p>
4502           If a relationship field has a version number attached
4503           then only real packages will be considered to see whether
4504           the relationship is satisfied (or the prohibition violated,
4505           for a conflict or breakage) - it is assumed that a real
4506           package which provides the virtual package is not of the
4507           "right" version.  So, a <tt>Provides</tt> field may not
4508           contain version numbers, and the version number of the
4509           concrete package which provides a particular virtual package
4510           will not be looked at when considering a dependency on or
4511           conflict with the virtual package name.
4512         </p>
4513
4514         <p>
4515           It is likely that the ability will be added in a future
4516           release of <prgn>dpkg</prgn> to specify a version number for
4517           each virtual package it provides.  This feature is not yet
4518           present, however, and is expected to be used only
4519           infrequently.
4520         </p>
4521
4522         <p>
4523           If you want to specify which of a set of real packages
4524           should be the default to satisfy a particular dependency on
4525           a virtual package, you should list the real package as an
4526           alternative before the virtual one.
4527         </p>
4528       </sect>
4529
4530
4531       <sect id="replaces"><heading>Overwriting files and replacing
4532           packages - <tt>Replaces</tt></heading>
4533
4534         <p>
4535           Packages can declare in their control file that they should
4536           overwrite files in certain other packages, or completely
4537           replace other packages. The <tt>Replaces</tt> control file
4538           field has these two distinct purposes.
4539         </p>
4540
4541         <sect1><heading>Overwriting files in other packages</heading>
4542
4543           <p>
4544             Firstly, as mentioned before, it is usually an error for a
4545             package to contain files which are on the system in
4546             another package.
4547           </p>
4548
4549           <p>
4550             However, if the overwriting package declares that it
4551             <tt>Replaces</tt> the one containing the file being
4552             overwritten, then <prgn>dpkg</prgn> will replace the file
4553             from the old package with that from the new.  The file
4554             will no longer be listed as "owned" by the old package.
4555           </p>
4556
4557           <p>
4558             If a package is completely replaced in this way, so that
4559             <prgn>dpkg</prgn> does not know of any files it still
4560             contains, it is considered to have "disappeared".  It will
4561             be marked as not wanted on the system (selected for
4562             removal) and not installed.  Any <tt>conffile</tt>s
4563             details noted for the package will be ignored, as they
4564             will have been taken over by the overwriting package.  The
4565             package's <prgn>postrm</prgn> script will be run with a
4566             special argument to allow the package to do any final
4567             cleanup required.  See <ref id="mscriptsinstact">.
4568             <footnote>
4569               <p>
4570                 Replaces is a one way relationship -- you have to              
4571                 install the replacing package after the replaced
4572                 package.
4573               </p>
4574             </footnote>
4575           </p>
4576
4577           <p>
4578             For this usage of <tt>Replaces</tt>, virtual packages (see
4579             <ref id="virtual">) are not considered when looking at a
4580             <tt>Replaces</tt> field - the packages declared as being
4581             replaced must be mentioned by their real names.
4582           </p>
4583
4584           <p>
4585             Furthermore, this usage of <tt>Replaces</tt> only takes
4586             effect when both packages are at least partially on the
4587             system at once, so that it can only happen if they do not
4588             conflict or if the conflict has been overridden.
4589           </p>
4590
4591         </sect1>
4592
4593         <sect1><heading>Replacing whole packages, forcing their
4594             removal</heading>
4595
4596           <p>
4597             Secondly, <tt>Replaces</tt> allows the packaging system to
4598             resolve which package should be removed when there is a
4599             conflict - see <ref id="conflicts">.  This usage only
4600             takes effect when the two packages <em>do</em> conflict,
4601             so that the two usages of this field do not interfere with
4602             each other.
4603           </p>
4604
4605           <p>
4606             In this situation, the package declared as being replaced
4607             can be a virtual package, so for example, all mail
4608             transport agents (MTAs) would have the following fields in
4609             their control files:
4610             <example compact="compact">
4611 Provides: mail-transport-agent
4612 Conflicts: mail-transport-agent
4613 Replaces: mail-transport-agent
4614             </example>
4615             ensuring that only one MTA can be installed at any one
4616             time.
4617         </sect1>
4618       </sect>
4619
4620       <sect id="sourcebinarydeps">
4621         <heading>Relationships between source and binary packages -
4622           <tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
4623           <tt>Build-Conflicts</tt>, <tt>Build-Conflicts-Indep</tt>
4624         </heading>
4625
4626         <p>
4627           Source packages that require certain binary packages to be
4628           installed or absent at the time of building the package
4629           can declare relationships to those binary packages.
4630         </p>
4631
4632         <p>
4633           This is done using the <tt>Build-Depends</tt>,
4634           <tt>Build-Depends-Indep</tt>, <tt>Build-Conflicts</tt> and
4635           <tt>Build-Conflicts-Indep</tt> control file fields.
4636         </p>
4637
4638         <p>
4639           Build-dependencies on "build-essential" binary packages can be
4640           omitted. Please see <ref id="pkg-relations"> for more information.
4641         </p>
4642
4643         <p>
4644           The dependencies and conflicts they define must be satisfied
4645           (as defined earlier for binary packages) in order to invoke
4646           the targets in <tt>debian/rules</tt>, as follows:<footnote>
4647             <p>
4648               If you make "build-arch" or "binary-arch", you need
4649               Build-Depends.  If you make "build-indep" or
4650               "binary-indep", you need Build-Depends and
4651               Build-Depends-Indep.  If you make "build" or "binary",
4652               you need both.
4653             </p>
4654             <p>
4655               There is no Build-Depends-Arch; this role is essentially
4656               met with Build-Depends.  Anyone building the
4657               <tt>build-indep</tt> and binary-indep<tt></tt> targets
4658               is basically assumed to be building the whole package
4659               anyway and so installs all build dependencies.  The
4660               autobuilders use <tt>dpkg-buildpackage -B</tt>, which
4661               calls <tt>build</tt> (not <tt>build-arch</tt>, since it
4662               does not yet know how to check for its existence) and
4663               <tt>binary-arch</tt>.
4664             </p>
4665             <p>
4666               The purpose of the original split, I recall, was so that
4667               the autobuilders wouldn't need to install extra packages
4668               needed only for the binary-indep targets.  But without a
4669               build-arch/build-indep split, this didn't work, since
4670               most of the work is done in the build target, not in the
4671               binary target.
4672             </p>
4673           </footnote>
4674
4675           <taglist>
4676             <tag><tt>Build-Depends</tt>, <tt>Build-Conflicts</tt></tag>
4677             <item>
4678                 The <tt>Build-Depends</tt> and
4679                 <tt>Build-Conflicts</tt> fields must be satisfied when
4680                 any of the following targets is invoked:
4681                 <tt>build</tt>, <tt>clean</tt>, <tt>binary</tt>,
4682                 <tt>binary-arch</tt>, <tt>build-arch</tt>,
4683                 <tt>build-indep</tt> and <tt>binary-indep</tt>.
4684             </item>
4685             <tag><tt>Build-Depends-Indep</tt>,
4686               <tt>Build-Conflicts-Indep</tt></tag>
4687             <item>
4688                 The <tt>Build-Depends-Indep</tt> and
4689                 <tt>Build-Conflicts-Indep</tt> fields must be
4690                 satisfied when any of the following targets is
4691                 invoked: <tt>build</tt>, <tt>build-indep</tt>,
4692                 <tt>binary</tt> and <tt>binary-indep</tt>.
4693             </item>
4694           </taglist>
4695         </p>
4696
4697       </sect>
4698
4699     </chapt>
4700
4701
4702     <chapt id="sharedlibs"><heading>Shared libraries</heading>
4703
4704       <p>
4705         Packages containing shared libraries must be constructed with
4706         a little care to make sure that the shared library is always
4707         available.  This is especially important for packages whose
4708         shared libraries are vitally important, such as the C library
4709         (currently <tt>libc6</tt>).
4710       </p>
4711
4712       <p>
4713         Packages involving shared libraries should be split up into
4714         several binary packages. This section mostly deals with how
4715         this separation is to be accomplished; rules for files within
4716         the shared library packages are in <ref id="libraries"> instead.
4717       </p>
4718
4719       <sect id="sharedlibs-runtime">
4720         <heading>Run-time shared libraries</heading>
4721
4722       <p>
4723         The run-time shared library needs to be placed in a package
4724         whose name changes whenever the shared object version
4725         changes.<footnote>
4726             <p>
4727               Since it is common place to install several versions of a
4728               package that just provides shared libraries, it is a
4729               good idea that the library package should not
4730               contain any extraneous non-versioned files, unless they
4731               happen to be in versioned directories.</p>
4732           </footnote>
4733           The most common mechanism is to place it in a package
4734         called
4735         <package><var>libraryname</var><var>soversion</var></package>,
4736         where <file><var>soversion</var></file> is the version number
4737         in the soname of the shared library<footnote>
4738               The soname is the shared object name: it's the thing
4739               that has to match exactly between building an executable
4740               and running it for the dynamic linker to be able run the
4741               program.  For example, if the soname of the library is
4742               <file>libfoo.so.6</file>, the library package would be
4743               called <file>libfoo6</file>.
4744           </footnote>.
4745         Alternatively, if it would be confusing to directly append
4746         <var>soversion</var> to <var>libraryname</var> (e.g. because
4747         <var>libraryname</var> itself ends in a number), you may use
4748         <package><var>libraryname</var>-<var>soversion</var></package> and
4749         <package><var>libraryname</var>-<var>soversion</var>-dev</package>
4750         instead.
4751       </p>
4752
4753       <p>
4754         If you have several shared libraries built from the same
4755         source tree you may lump them all together into a single
4756         shared library package, provided that you change all of
4757         their sonames at once (so that you don't get filename
4758         clashes if you try to install different versions of the
4759         combined shared libraries package).
4760       </p>
4761
4762       <p>
4763         The package should install the shared libraries under
4764         their normal names.  For example, the <package>libgdbm3</package>
4765         package should install <file>libgdbm.so.3.0.0</file> as
4766         <file>/usr/lib/libgdbm.so.3.0.0</file>.  The files should not be
4767         renamed or re-linked by any <prgn>prerm</prgn> or
4768         <prgn>postrm</prgn> scripts; <prgn>dpkg</prgn> will take care
4769         of renaming things safely without affecting running programs,
4770         and attempts to interfere with this are likely to lead to
4771         problems.
4772       </p>
4773
4774       <p>
4775         Shared libraries should not be installed executable, since
4776         the dynamic linker does not require this and trying to
4777         execute a shared library usually results in a core dump.
4778       </p>
4779
4780       <p>
4781         The run-time library package should include the symbolic link that
4782         <prgn>ldconfig</prgn> would create for the shared libraries.
4783         For example, the <package>libgdbm3</package> package should include
4784         a symbolic link from <file>/usr/lib/libgdbm.so.3</file> to
4785         <file>libgdbm.so.3.0.0</file>.  This is needed so that the dynamic
4786         linker (for example <prgn>ld.so</prgn> or
4787         <prgn>ld-linux.so.*</prgn>) can find the library between the
4788         time that <prgn>dpkg</prgn> installs it and the time that
4789         <prgn>ldconfig</prgn> is run in the <prgn>postinst</prgn>
4790         script.<footnote>
4791             The package management system requires the library to be
4792             placed before the symbolic link pointing to it in the
4793             <file>.deb</file> file.  This is so that when
4794             <prgn>dpkg</prgn> comes to install the symlink
4795             (overwriting the previous symlink pointing at an older
4796             version of the library), the new shared library is already
4797             in place.  In the past, this was achieved by creating the
4798             library in the temporary packaging directory before
4799             creating the symlink.  Unfortunately, this was not always
4800             effective, since the building of the tar file in the
4801             <file>.deb</file> depended on the behavior of the underlying
4802             file system.  Some file systems (such as reiserfs) reorder
4803             the files so that the order of creation is forgotten.
4804             Since version 1.7.0, <prgn>dpkg</prgn>
4805             reorders the files itself as necessary when building a
4806             package.  Thus it is no longer important to concern
4807             oneself with the order of file creation.
4808         </footnote>
4809       </p>
4810
4811         <sect1 id="ldconfig">
4812           <heading><tt>ldconfig</tt></heading>
4813
4814         <p>
4815           Any package installing shared libraries in one of the default
4816           library directories of the dynamic linker (which are currently
4817           <file>/usr/lib</file> and <file>/lib</file>) or a directory that is
4818           listed in <file>/etc/ld.so.conf</file><footnote>
4819             These are currently
4820             <list compact="compact">
4821               <item>/usr/local/lib</item>
4822               <item>/usr/lib/libc5-compat</item>
4823               <item>/lib/libc5-compat</item>
4824             </list>
4825           </footnote>
4826           must use <prgn>ldconfig</prgn> to update the shared library
4827           system.
4828         </p>
4829
4830         <p>
4831             The package maintainer scripts must only call
4832             <prgn>ldconfig</prgn> under these circumstances:
4833             <list compact="compact">
4834               <item>When the <prgn>postinst</prgn> script is run with a
4835                   first argument of <tt>configure</tt>, the script must call
4836                   <prgn>ldconfig</prgn>, and may optionally invoke
4837                   <prgn>ldconfig</prgn> at other times.
4838               </item>
4839               <item>When the <prgn>postrm</prgn> script is run with a
4840                   first argument of <tt>remove</tt>, the script should call
4841                   <prgn>ldconfig</prgn>.
4842               </item>
4843             </list>
4844          <footnote>
4845             <p>
4846               During install or upgrade, the preinst is called before
4847               the new files are installed, so calling "ldconfig" is
4848               pointless.  The preinst of an existing package can also be
4849               called if an upgrade fails.  However, this happens during
4850               the critical time when a shared libs may exist on-disk
4851               under a temporary name.  Thus, it is dangerous and
4852               forbidden by current policy to call "ldconfig" at this
4853               time.
4854             </p>
4855
4856             <p>
4857               When a package is installed or upgraded, "postinst
4858               configure" runs after the new files are safely on-disk.
4859               Since it is perfectly safe to invoke ldconfig
4860               unconditionally in a postinst, it is OK for a package to
4861               simply put ldconfig in its postinst without checking the
4862               argument.  The postinst can also be called to recover from
4863               a failed upgrade.  This happens before any new files are
4864               unpacked, so there is no reason to call "ldconfig" at this
4865               point.
4866             </p>
4867
4868             <p>
4869               For a package that is being removed, prerm is
4870               called with all the files intact, so calling ldconfig is
4871               useless.  The other calls to "prerm" happen in the case of
4872               upgrade at a time when all the files of the old package
4873               are on-disk, so again calling "ldconfig" is pointless.
4874             </p>
4875
4876             <p>
4877               postrm, on the other hand, is called with the "remove"
4878               argument just after the files are removed, so this is
4879               the proper time to call "ldconfig" to notify the system
4880               of the fact that the shared libraries from the package
4881               are removed.  The postrm can be called at several other
4882               times.  At the time of "postrm purge", "postrm
4883               abort-install", or "postrm abort-upgrade", calling
4884               "ldconfig" is useless because the shared lib files are
4885               not on-disk.  However, when "postrm" is invoked with
4886               arguments "upgrade", "failed-upgrade", or "disappear", a
4887               shared lib may exist on-disk under a temporary filename.
4888             </p>
4889           </footnote>
4890         </p>
4891         </sect1>
4892
4893       </sect>
4894
4895       <sect id="sharedlibs-support-files">
4896         <heading>Shared library support files</heading>
4897
4898         <p>
4899           If your package contains files whose names do not change with
4900           each change in the library shared object version, you must not
4901           put them in the shared library package.  Otherwise, several
4902           versions of the shared library cannot be installed at the same
4903           time without filename clashes, making upgrades and transitions
4904           unnecessarily difficult.
4905         </p>
4906
4907         <p>
4908           It is recommended that supporting files and run-time support
4909           programs that do not need to be invoked manually by users, but
4910           are nevertheless required for the package to function, be placed
4911           (if they are binary) in a subdirectory of <file>/usr/lib</file>,
4912           preferably under <file>/usr/lib/</file><var>package-name</var>.
4913           If the program or file is architecture independent, the
4914           recommendation is for it to be placed in a subdirectory of
4915           <file>/usr/share</file> instead, preferably under
4916           <file>/usr/share/</file><var>package-name</var>.  Following the
4917           <var>package-name</var> naming convention ensures that the file
4918           names change when the shared object version changes.
4919         </p>
4920
4921         <p>
4922           Run-time support programs that use the shared library but are
4923           not required for the library to function or files used by the
4924           shared library that can be used by any version of the shared
4925           library package should instead be put in a separate package.
4926           This package might typically be named
4927           <package><var>libraryname</var>-tools</package>; note the
4928           absence of the <var>soversion</var> in the package name.
4929         </p>
4930
4931         <p>
4932           Files and support programs only useful when compiling software
4933           against the library should be included in the development
4934           package for the library.<footnote>
4935             For example, a <file><var>package-name</var>-config</file>
4936             script or <package>pkg-config</package> configuration files.
4937           </footnote>
4938         </p>
4939       </sect>
4940
4941       <sect id="sharedlibs-static">
4942         <heading>Static libraries</heading>
4943
4944       <p>
4945         The static library (<file><var>libraryname.a</var></file>)
4946         is usually provided in addition to the shared version.
4947         It is placed into the development package (see below).
4948       </p>
4949
4950       <p>
4951         In some cases, it is acceptable for a library to be
4952         available in static form only; these cases include:
4953         <list>
4954           <item>libraries for languages whose shared library support
4955                 is immature or unstable</item>
4956           <item>libraries whose interfaces are in flux or under
4957                 development (commonly the case when the library's
4958                 major version number is zero, or where the ABI breaks
4959                 across patchlevels)</item>
4960           <item>libraries which are explicitly intended to be
4961                 available only in static form by their upstream
4962                 author(s)</item>
4963         </list>
4964       </p>
4965
4966       <sect id="sharedlibs-dev">
4967         <heading>Development files</heading>
4968
4969       <p>
4970         The development files associated to a shared library need to be
4971         placed in a package called
4972         <package><var>libraryname</var><var>soversion</var>-dev</package>,
4973         or if you prefer only to support one development version at a
4974         time, <package><var>libraryname</var>-dev</package>.
4975       </p>
4976
4977       <p>
4978         In case several development versions of a library exist, you may
4979         need to use <prgn>dpkg</prgn>'s Conflicts mechanism (see
4980         <ref id="conflicts">) to ensure that the user only installs one
4981         development version at a time (as different development versions are
4982         likely to have the same header files in them, which would cause a
4983         filename clash if both were installed).
4984       </p>
4985
4986       <p>
4987         The development package should contain a symlink for the associated
4988         shared library without a version number. For example, the
4989         <package>libgdbm-dev</package> package should include a symlink
4990         from <file>/usr/lib/libgdbm.so</file> to
4991         <file>libgdbm.so.3.0.0</file>.  This symlink is needed by the linker
4992         (<prgn>ld</prgn>) when compiling packages, as it will only look for
4993         <file>libgdbm.so</file> when compiling dynamically.
4994       </p>
4995       </sect>
4996
4997       <sect id="sharedlibs-intradeps">
4998         <heading>Dependencies between the packages of the same library</heading>
4999
5000         <p>
5001           Typically the development version should have an exact
5002           version dependency on the runtime library, to make sure that
5003           compilation and linking happens correctly.  The
5004           <tt>${binary:Version}</tt> substitution variable can be
5005           useful for this purpose.
5006           <footnote>
5007             Previously, <tt>${Source-Version}</tt> was used, but its name
5008             was confusing and it has been deprecated since dpkg 1.13.19.
5009           </footnote>
5010         </p>
5011       </sect>
5012
5013       <sect id="sharedlibs-shlibdeps">
5014         <heading>Dependencies between the library and other packages -
5015         the <tt>shlibs</tt> system</heading>
5016
5017         <p>
5018           If a package contains a binary or library which links to a
5019           shared library, we must ensure that when the package is
5020           installed on the system, all of the libraries needed are
5021           also installed.  This requirement led to the creation of the
5022           <tt>shlibs</tt> system, which is very simple in its design:
5023           any package which <em>provides</em> a shared library also
5024           provides information on the package dependencies required to
5025           ensure the presence of this library, and any package which
5026           <em>uses</em> a shared library uses this information to
5027           determine the dependencies it requires.  The files which
5028           contain the mapping from shared libraries to the necessary
5029           dependency information are called <file>shlibs</file> files.
5030         </p>
5031
5032         <p>
5033           Thus, when a package is built which contains any shared
5034           libraries, it must provide a <file>shlibs</file> file for other
5035           packages to use, and when a package is built which contains
5036           any shared libraries or compiled binaries, it must run
5037           <qref id="pkg-dpkg-shlibdeps"><prgn>dpkg-shlibdeps</prgn></qref>
5038           on these to determine the libraries used and hence the
5039           dependencies needed by this package.<footnote>
5040             <p>
5041               In the past, the shared libraries linked to were
5042               determined by calling <prgn>ldd</prgn>, but now
5043               <prgn>objdump</prgn> is used to do this.  The only
5044               change this makes to package building is that
5045               <prgn>dpkg-shlibdeps</prgn> must also be run on shared
5046               libraries, whereas in the past this was unnecessary.
5047               The rest of this footnote explains the advantage that
5048               this method gives.
5049             </p>
5050
5051             <p>
5052               We say that a binary <tt>foo</tt> <em>directly</em> uses
5053               a library <tt>libbar</tt> if it is explicitly linked
5054               with that library (that is, it uses the flag
5055               <tt>-lbar</tt> during the linking stage).  Other
5056               libraries that are needed by <tt>libbar</tt> are linked
5057               <em>indirectly</em> to <tt>foo</tt>, and the dynamic
5058               linker will load them automatically when it loads
5059               <tt>libbar</tt>.  A package should depend on
5060               the libraries it directly uses, and the dependencies for
5061               those libraries should automatically pull in the other
5062               libraries.
5063             </p>
5064
5065             <p>
5066               Unfortunately, the <prgn>ldd</prgn> program shows both
5067               the directly and indirectly used libraries, meaning that
5068               the dependencies determined included both direct and
5069               indirect dependencies.  The use of <prgn>objdump</prgn>
5070               avoids this problem by determining only the directly
5071               used libraries.
5072             </p>
5073
5074             <p>
5075               A good example of where this helps is the following.  We
5076               could update <tt>libimlib</tt> with a new version that
5077               supports a new graphics format called dgf (but retaining
5078               the same major version number).  If we used the old
5079               <prgn>ldd</prgn> method, every package that uses
5080               <tt>libimlib</tt> would need to be recompiled so it
5081               would also depend on <tt>libdgf</tt> or it wouldn't run
5082               due to missing symbols.  However with the new system,
5083               packages using <tt>libimlib</tt> can rely on
5084               <tt>libimlib</tt> itself having the dependency on
5085               <tt>libdgf</tt> and so they would not need rebuilding.
5086             </p>
5087           </footnote>
5088         </p>
5089
5090         <p>
5091           In the following sections, we will first describe where the
5092           various <tt>shlibs</tt> files are to be found, then how to
5093           use <prgn>dpkg-shlibdeps</prgn>, and finally the <tt>shlibs</tt>
5094           file format and how to create them if your package contains a
5095           shared library.
5096         </p>
5097
5098       <sect1>
5099         <heading>The <tt>shlibs</tt> files present on the system</heading>
5100
5101         <p>
5102           There are several places where <tt>shlibs</tt> files are
5103           found.  The following list gives them in the order in which
5104           they are read by
5105           <qref id="pkg-dpkg-shlibdeps"><prgn>dpkg-shlibdeps</prgn></qref>.
5106           (The first one which gives the required information is used.)
5107         </p>
5108
5109         <p>
5110           <list>
5111             <item>
5112               <p><file>debian/shlibs.local</file></p>
5113
5114               <p>
5115                 This lists overrides for this package.  Its use is
5116                 described below (see <ref id="shlibslocal">).
5117               </p>
5118             </item>
5119
5120             <item>
5121               <p><file>/etc/dpkg/shlibs.override</file></p>
5122
5123               <p>
5124                 This lists global overrides.  This list is normally
5125                 empty.  It is maintained by the local system
5126                 administrator.
5127               </p>
5128             </item>
5129
5130             <item>
5131               <p><file>DEBIAN/shlibs</file> files in the "build directory"</p>
5132
5133               <p>
5134                 When packages are being built, any
5135                 <file>debian/shlibs</file> files are copied into the
5136                 control file area of the temporary build directory and
5137                 given the name <file>shlibs</file>.  These files give
5138                 details of any shared libraries included in the
5139                 package.<footnote>
5140                     An example may help here.  Let us say that the
5141                     source package <tt>foo</tt> generates two binary
5142                     packages, <tt>libfoo2</tt> and
5143                     <tt>foo-runtime</tt>.  When building the binary
5144                     packages, the two packages are created in the
5145                     directories <file>debian/libfoo2</file> and
5146                     <file>debian/foo-runtime</file> respectively.
5147                     (<file>debian/tmp</file> could be used instead of one
5148                     of these.)  Since <tt>libfoo2</tt> provides the
5149                     <tt>libfoo</tt> shared library, it will require a
5150                     <tt>shlibs</tt> file, which will be installed in
5151                     <file>debian/libfoo2/DEBIAN/shlibs</file>, eventually
5152                     to become
5153                     <file>/var/lib/dpkg/info/libfoo2.shlibs</file>.  Then
5154                     when <prgn>dpkg-shlibdeps</prgn> is run on the
5155                     executable
5156                     <file>debian/foo-runtime/usr/bin/foo-prog</file>, it
5157                     will examine the
5158                     <file>debian/libfoo2/DEBIAN/shlibs</file> file to
5159                     determine whether <tt>foo-prog</tt>'s library
5160                     dependencies are satisfied by any of the libraries
5161                     provided by <tt>libfoo2</tt>.  For this reason,
5162                     <prgn>dpkg-shlibdeps</prgn> must only be run once
5163                     all of the individual binary packages'
5164                     <tt>shlibs</tt> files have been installed into the
5165                     build directory.
5166                 </footnote>
5167               </p>
5168             </item>
5169
5170             <item>
5171               <p><file>/var/lib/dpkg/info/*.shlibs</file></p>
5172
5173               <p>
5174                 These are the <file>shlibs</file> files corresponding to
5175                 all of the packages installed on the system, and are
5176                 maintained by the relevant package maintainers.
5177               </p>
5178             </item>
5179
5180             <item>
5181               <p><file>/etc/dpkg/shlibs.default</file></p>
5182
5183               <p>
5184                 This file lists any shared libraries whose packages
5185                 have failed to provide correct <file>shlibs</file> files.
5186                 It was used when the <file>shlibs</file> setup was first
5187                 introduced, but it is now normally empty.  It is
5188                 maintained by the <tt>dpkg</tt> maintainer.
5189               </p>
5190             </item>
5191           </list>
5192         </p>
5193       </sect1>
5194
5195       <sect1>
5196         <heading>How to use <prgn>dpkg-shlibdeps</prgn> and the
5197             <file>shlibs</file> files</heading>
5198
5199         <p>
5200           Put a call to
5201           <qref id="pkg-dpkg-shlibdeps"><prgn>dpkg-shlibdeps</prgn></qref>
5202           into your <file>debian/rules</file> file.  If your package
5203           contains only compiled binaries and libraries (but no scripts),
5204           you can use a command such as:
5205           <example compact="compact">
5206 dpkg-shlibdeps debian/tmp/usr/bin/* debian/tmp/usr/sbin/* \
5207   debian/tmp/usr/lib/*
5208           </example>
5209           Otherwise, you will need to explicitly list the compiled
5210           binaries and libraries.<footnote>
5211               If you are using <tt>debhelper</tt>, the
5212               <prgn>dh_shlibdeps</prgn> program will do this work for
5213               you.  It will also correctly handle multi-binary
5214               packages.
5215           </footnote>
5216         </p>
5217
5218         <p>
5219           This command puts the dependency information into the
5220           <file>debian/substvars</file> file, which is then used by
5221           <prgn>dpkg-gencontrol</prgn>.  You will need to place a
5222           <tt>${shlibs:Depends}</tt> variable in the <tt>Depends</tt>
5223           field in the control file for this to work.
5224         </p>
5225
5226         <p>
5227           If <prgn>dpkg-shlibdeps</prgn> doesn't complain, you're
5228           done.  If it does complain you might need to create your own
5229           <file>debian/shlibs.local</file> file, as explained below (see
5230           <ref id="shlibslocal">).
5231         </p>
5232
5233         <p>
5234           If you have multiple binary packages, you will need to call
5235           <prgn>dpkg-shlibdeps</prgn> on each one which contains
5236           compiled libraries or binaries.  In such a case, you will
5237           need to use the <tt>-T</tt> option to the <tt>dpkg</tt>
5238           utilities to specify a different <file>substvars</file> file.
5239         </p>
5240
5241         <p>
5242           If you are creating a udeb for use in the Debian Installer, you
5243           will need to specify that <prgn>dpkg-shlibdeps</prgn> should use
5244           the dependency line of type <tt>udeb</tt> by adding
5245           <tt>-tudeb</tt> as option<footnote>
5246               <prgn>dh_shlibdeps</prgn> from the <tt>debhelper</tt> suite
5247               will automatically add this option if it knows it is
5248               processing a udeb.
5249           </footnote>. If there is no dependency line of type <tt>udeb</tt>
5250           in the <file>shlibs</file> file, <prgn>dpkg-shlibdeps</prgn> will
5251           fall back to the regular dependency line.
5252         </p>
5253
5254         <p>
5255           For more details on dpkg-shlibdeps, please see
5256           <ref id="pkg-dpkg-shlibdeps"> and
5257           <manref name="dpkg-shlibdeps" section="1">.
5258         </p>
5259       </sect1>
5260
5261       <sect1 id="shlibs">
5262         <heading>The <file>shlibs</file> File Format</heading>
5263
5264         <p>
5265           Each <file>shlibs</file> file has the same format.  Lines
5266           beginning with <tt>#</tt> are considered to be comments and
5267           are ignored.  Each line is of the form:
5268           <example compact="compact">
5269 [<var>type</var>: ]<var>library-name</var> <var>soname-version</var> <var>dependencies ...</var>
5270           </example>
5271         </p>
5272
5273         <p>
5274           We will explain this by reference to the example of the
5275           <tt>zlib1g</tt> package, which (at the time of writing)
5276           installs the shared library <file>/usr/lib/libz.so.1.1.3</file>.
5277         </p>
5278
5279         <p>
5280           <var>type</var> is an optional element that indicates the type
5281           of package for which the line is valid. The only type currently
5282           in use is <tt>udeb</tt>. The colon and space after the type are
5283           required.
5284         </p>
5285
5286         <p>
5287           <var>library-name</var> is the name of the shared library,
5288           in this case <tt>libz</tt>.  (This must match the name part
5289           of the soname, see below.)
5290         </p>
5291
5292         <p>
5293           <var>soname-version</var> is the version part of the soname of
5294           the library.  The soname is the thing that must exactly match
5295           for the library to be recognized by the dynamic linker, and is
5296           usually of the form
5297           <tt><var>name</var>.so.<var>major-version</var></tt>, in our
5298           example, <tt>libz.so.1</tt>.<footnote>
5299               This can be determined using the command
5300               <example compact="compact">
5301 objdump -p /usr/lib/libz.so.1.1.3 | grep SONAME
5302               </example>
5303           </footnote>
5304           The version part is the part which comes after
5305           <tt>.so.</tt>, so in our case, it is <tt>1</tt>.
5306         </p>
5307
5308         <p>
5309           <var>dependencies</var> has the same syntax as a dependency
5310           field in a binary package control file.  It should give
5311           details of which packages are required to satisfy a binary
5312           built against the version of the library contained in the
5313           package.  See <ref id="depsyntax"> for details.
5314         </p>
5315
5316         <p>
5317           In our example, if the first version of the <tt>zlib1g</tt>
5318           package which contained a minor number of at least
5319           <tt>1.3</tt> was <var>1:1.1.3-1</var>, then the
5320           <tt>shlibs</tt> entry for this library could say:
5321           <example compact="compact">
5322 libz 1 zlib1g (>= 1:1.1.3)
5323           </example>
5324           The version-specific dependency is to avoid warnings from
5325           the dynamic linker about using older shared libraries with
5326           newer binaries.
5327         </p>
5328
5329         <p>
5330           As zlib1g also provides a udeb containing the shared library,
5331           there would also be a second line:
5332           <example compact="compact">
5333 udeb: libz 1 zlib1g-udeb (>= 1:1.1.3)
5334           </example>
5335         </p>
5336       </sect1>
5337
5338       <sect1>
5339         <heading>Providing a <file>shlibs</file> file</heading>
5340
5341         <p>
5342           If your package provides a shared library, you need to create
5343           a <file>shlibs</file> file following the format described above.
5344           It is usual to call this file <file>debian/shlibs</file> (but if
5345           you have multiple binary packages, you might want to call it
5346           <file>debian/shlibs.<var>package</var></file> instead).  Then
5347           let <file>debian/rules</file> install it in the control area:
5348           <example compact="compact">
5349 install -m644 debian/shlibs debian/tmp/DEBIAN
5350           </example>
5351           or, in the case of a multi-binary package:
5352           <example compact="compact">
5353 install -m644 debian/shlibs.<var>package</var> debian/<var>package</var>/DEBIAN/shlibs
5354           </example>
5355           An alternative way of doing this is to create the
5356           <file>shlibs</file> file in the control area directly from
5357           <file>debian/rules</file> without using a <file>debian/shlibs</file>
5358           file at all,<footnote>
5359               This is what <prgn>dh_makeshlibs</prgn> in the
5360               <tt>debhelper</tt> suite does. If your package also has a udeb
5361               that provides a shared library, <prgn>dh_makeshlibs</prgn> can
5362               automatically generate the <tt>udeb:</tt> lines if you specify
5363               the name of the udeb with the <tt>--add-udeb</tt> option.
5364           </footnote>
5365           since the <file>debian/shlibs</file> file itself is ignored by
5366           <prgn>dpkg-shlibdeps</prgn>.
5367         </p>
5368
5369         <p>
5370           As <prgn>dpkg-shlibdeps</prgn> reads the
5371           <file>DEBIAN/shlibs</file> files in all of the binary packages
5372           being built from this source package, all of the
5373           <file>DEBIAN/shlibs</file> files should be installed before
5374           <prgn>dpkg-shlibdeps</prgn> is called on any of the binary
5375           packages.
5376         </p>
5377       </sect1>
5378
5379       <sect1 id="shlibslocal">
5380         <heading>Writing the <file>debian/shlibs.local</file> file</heading>
5381
5382         <p>
5383           This file is intended only as a <em>temporary</em> fix if
5384           your binaries or libraries depend on a library whose package
5385           does not yet provide a correct <file>shlibs</file> file.
5386         </p>
5387
5388         <p>
5389           We will assume that you are trying to package a binary
5390           <tt>foo</tt>.  When you try running
5391           <prgn>dpkg-shlibdeps</prgn> you get the following error
5392           message (<tt>-O</tt> displays the dependency information on
5393           <tt>stdout</tt> instead of writing it to
5394           <tt>debian/substvars</tt>, and the lines have been wrapped
5395           for ease of reading):
5396           <example compact="compact">
5397 $ dpkg-shlibdeps -O debian/tmp/usr/bin/foo
5398 dpkg-shlibdeps: warning: unable to find dependency
5399   information for shared library libbar (soname 1,
5400   path /usr/lib/libbar.so.1, dependency field Depends)
5401 shlibs:Depends=libc6 (>= 2.2.2-2)
5402           </example>
5403           You can then run <prgn>ldd</prgn> on the binary to find the
5404           full location of the library concerned:
5405           <example compact="compact">
5406 $ ldd foo
5407 libbar.so.1 => /usr/lib/libbar.so.1 (0x4001e000)
5408 libc.so.6 => /lib/libc.so.6 (0x40032000)
5409 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
5410           </example>
5411           So the <prgn>foo</prgn> binary depends on the
5412           <prgn>libbar</prgn> shared library, but no package seems to
5413           provide a <file>*.shlibs</file> file handling
5414           <file>libbar.so.1</file> in <file>/var/lib/dpkg/info/</file>.  Let's
5415           determine the package responsible:
5416           <example compact="compact">
5417 $ dpkg -S /usr/lib/libbar.so.1
5418 bar1: /usr/lib/libbar.so.1
5419 $ dpkg -s bar1 | grep Version
5420 Version: 1.0-1
5421           </example>
5422           This tells us that the <tt>bar1</tt> package, version 1.0-1,
5423           is the one we are using.  Now we can file a bug against the
5424           <tt>bar1</tt> package and create our own
5425           <file>debian/shlibs.local</file> to locally fix the problem.
5426           Including the following line into your
5427           <file>debian/shlibs.local</file> file:
5428           <example compact="compact">
5429 libbar 1 bar1 (>= 1.0-1)
5430           </example>
5431           should allow the package build to work.
5432         </p>
5433
5434         <p>
5435           As soon as the maintainer of <tt>bar1</tt> provides a
5436           correct <file>shlibs</file> file, you should remove this line
5437           from your <file>debian/shlibs.local</file> file.  (You should
5438           probably also then have a versioned <tt>Build-Depends</tt>
5439           on <tt>bar1</tt> to help ensure that others do not have the
5440           same problem building your package.)
5441         </p>
5442       </sect1>
5443
5444       </sect>
5445
5446     </chapt>
5447
5448
5449     <chapt id="opersys"><heading>The Operating System</heading>
5450
5451       <sect>
5452         <heading>File system hierarchy</heading>
5453
5454
5455         <sect1 id="fhs">
5456           <heading>File system Structure</heading>
5457
5458           <p>
5459             The location of all installed files and directories must
5460             comply with the File system Hierarchy Standard (FHS),
5461             version 2.3, with the exceptions noted below, and except
5462             where doing so would violate other terms of Debian
5463             Policy.  The following exceptions to the FHS apply:
5464
5465             <enumlist>
5466               <item>
5467                 <p>
5468                   Legacy XFree86 servers are permitted to retain the
5469                   configuration file location 
5470                   <file>/etc/X11/XF86Config-4</file>.
5471                 </p>
5472               </item>
5473               <item>
5474                 <p>
5475                   The optional rules related to user specific
5476                   configuration files for applications are stored in
5477                   the user's home directory are relaxed.  It is
5478                   recommended that such files start with the
5479                   '<tt>.</tt>' character (a "dot file"), and if an
5480                   application needs to create more than one dot file
5481                   then the preferred placement is in a subdirectory
5482                   with a name starting with a '.' character, (a "dot
5483                   directory"). In this case it is recommended the
5484                   configuration files not start with the '.'
5485                   character.
5486                 </p>
5487               </item>
5488               <item>
5489                 <p>
5490                   The requirement for amd64 to use <file>/lib64</file>
5491                   for 64 bit binaries is removed.
5492                 </p>
5493               </item>
5494               <item>
5495                 <p>
5496                   The requirement that
5497                   <file>/usr/local/share/man</file> be "synonymous"
5498                   with <file>/usr/local/man</file> is relaxed to a
5499                   recommendation</p>
5500               </item>
5501               <item>
5502                 <p>
5503                   The requirement that windowmanagers with a single
5504                   configuration file call it <file>system.*wmrc</file>
5505                   is removed, as is the restriction that the window
5506                   manager subdirectory be named identically to the
5507                   window manager name itself.
5508                 </p>
5509               </item>
5510               <item>
5511                 <p>
5512                   The requirement that boot manager configuration
5513                   files live in <file>/etc</file>, or at least are
5514                   symlinked there, is relaxed to a recommendation.
5515                 </p>
5516               </item>
5517             </enumlist>
5518
5519           </p>
5520           <p>
5521             The version of this document referred here can be
5522             found in the <tt>debian-policy</tt> package or on <url
5523             id="http://www.debian.org/doc/packaging-manuals/fhs/"
5524               name="FHS (Debian copy)"> alongside this manual (or, if
5525             you have the <package>debian-policy</package> installed,
5526             you can try <url
5527               id="file:///usr/share/doc/debian-policy/fhs/" name="FHS
5528               (local copy)">). The
5529             latest version, which may be a more recent version, may
5530             be found on
5531             <url id="http://www.pathname.com/fhs/" name="FHS (upstream)">.
5532             Specific questions about following the standard may be
5533             asked on the <tt>debian-devel</tt> mailing list, or
5534             referred to the FHS mailing list (see the
5535             <url id="http://www.pathname.com/fhs/" name="FHS web site"> for
5536             more information).
5537           </p>
5538         </sect1>
5539
5540         <sect1>
5541           <heading>Site-specific programs</heading>
5542
5543           <p>
5544             As mandated by the FHS, packages must not place any
5545             files in <file>/usr/local</file>, either by putting them in
5546             the file system archive to be unpacked by <prgn>dpkg</prgn>
5547             or by manipulating them in their maintainer scripts.
5548           </p>
5549
5550           <p>
5551             However, the package may create empty directories below
5552             <file>/usr/local</file> so that the system administrator knows
5553             where to place site-specific files.  These are not
5554             directories <em>in</em> <file>/usr/local</file>, but are
5555             children of directories in <file>/usr/local</file>.  These
5556             directories (<file>/usr/local/*/dir/</file>)
5557             should be removed on package removal if they are
5558             empty.
5559           </p>
5560
5561           <p>
5562             Note, that this applies only to directories <em>below</em>
5563             <file>/usr/local</file>, not <em>in</em> <file>/usr/local</file>.
5564             Packages must not create sub-directories in the directory
5565             <file>/usr/local</file> itself, except those listed in FHS,
5566             section 4.5.  However, you may create directories below
5567             them as you wish. You must not remove any of the
5568             directories listed in 4.5, even if you created them.
5569           </p>
5570
5571           <p>
5572             Since <file>/usr/local</file> can be mounted read-only from a
5573             remote server, these directories must be created and
5574             removed by the <prgn>postinst</prgn> and <prgn>prerm</prgn>
5575             maintainer scripts and not be included in the
5576             <file>.deb</file> archive.  These scripts must not fail if
5577             either of these operations fail.
5578           </p>
5579
5580           <p>
5581             For example, the <tt>emacsen-common</tt> package could
5582             contain something like
5583             <example compact="compact">
5584 if [ ! -e /usr/local/share/emacs ]
5585 then
5586   if mkdir /usr/local/share/emacs 2>/dev/null
5587   then
5588     chown root:staff /usr/local/share/emacs
5589     chmod 2775 /usr/local/share/emacs
5590   fi
5591 fi
5592             </example>
5593             in its <prgn>postinst</prgn> script, and
5594             <example compact="compact">
5595 rmdir /usr/local/share/emacs/site-lisp 2>/dev/null || true
5596 rmdir /usr/local/share/emacs 2>/dev/null || true
5597             </example>
5598             in the <prgn>prerm</prgn> script.  (Note that this form is
5599             used to ensure that if the script is interrupted, the
5600             directory <file>/usr/local/share/emacs</file> will still be
5601             removed.)
5602           </p>
5603
5604           <p>
5605             If you do create a directory in <file>/usr/local</file> for
5606             local additions to a package, you should ensure that
5607             settings in <file>/usr/local</file> take precedence over the
5608             equivalents in <file>/usr</file>.
5609           </p>
5610
5611           <p>
5612             However, because <file>/usr/local</file> and its contents are
5613             for exclusive use of the local administrator, a package
5614             must not rely on the presence or absence of files or
5615             directories in <file>/usr/local</file> for normal operation.
5616           </p>
5617
5618           <p>
5619             The <file>/usr/local</file> directory itself and all the
5620             subdirectories created by the package should (by default) have
5621             permissions 2775 (group-writable and set-group-id) and be
5622             owned by <tt>root:staff</tt>.
5623           </p>
5624         </sect1>
5625
5626         <sect1>
5627           <heading>The system-wide mail directory</heading>
5628           <p>
5629             The system-wide mail directory is <file>/var/mail</file>. This
5630             directory is part of the base system and should not owned
5631             by any particular mail agents.  The use of the old
5632             location <file>/var/spool/mail</file> is deprecated, even
5633             though the spool may still be physically located there.
5634             To maintain partial upgrade compatibility for systems
5635             which have <file>/var/spool/mail</file> as their physical mail
5636             spool, packages using <file>/var/mail</file> must depend on
5637             either <package>libc6</package> (&gt;= 2.1.3-13), or on
5638             <package>base-files</package> (&gt;= 2.2.0), or on later
5639             versions of either one of these packages.
5640           </p>
5641         </sect1>
5642       </sect>
5643
5644       <sect>
5645         <heading>Users and groups</heading>
5646
5647         <sect1>
5648           <heading>Introduction</heading>
5649           <p>
5650             The Debian system can be configured to use either plain or
5651             shadow passwords.
5652           </p>
5653
5654           <p>
5655             Some user ids (UIDs) and group ids (GIDs) are reserved
5656             globally for use by certain packages.  Because some
5657             packages need to include files which are owned by these
5658             users or groups, or need the ids compiled into binaries,
5659             these ids must be used on any Debian system only for the
5660             purpose for which they are allocated. This is a serious
5661             restriction, and we should avoid getting in the way of
5662             local administration policies. In particular, many sites
5663             allocate users and/or local system groups starting at 100.
5664           </p>
5665
5666           <p>
5667             Apart from this we should have dynamically allocated ids,
5668             which should by default be arranged in some sensible
5669             order, but the behavior should be configurable.
5670           </p>
5671
5672           <p>
5673             Packages other than <tt>base-passwd</tt> must not modify
5674             <file>/etc/passwd</file>, <file>/etc/shadow</file>,
5675             <file>/etc/group</file> or <file>/etc/gshadow</file>.
5676           </p>
5677         </sect1>
5678
5679         <sect1>
5680           <heading>UID and GID classes</heading>
5681           <p>
5682             The UID and GID numbers are divided into classes as
5683             follows:
5684             <taglist>
5685               <tag>0-99:</tag>
5686               <item>
5687                 <p>
5688                   Globally allocated by the Debian project, the same
5689                   on every Debian system.  These ids will appear in
5690                   the <file>passwd</file> and <file>group</file> files of all
5691                   Debian systems, new ids in this range being added
5692                   automatically as the <tt>base-passwd</tt> package is
5693                   updated.
5694                 </p>
5695
5696                 <p>
5697                   Packages which need a single statically allocated
5698                   uid or gid should use one of these; their
5699                   maintainers should ask the <tt>base-passwd</tt>
5700                   maintainer for ids.
5701                 </p>
5702               </item>
5703
5704               <tag>100-999:</tag>
5705               <item>
5706                 <p>
5707                   Dynamically allocated system users and groups.
5708                   Packages which need a user or group, but can have
5709                   this user or group allocated dynamically and
5710                   differently on each system, should use <tt>adduser
5711                   --system</tt> to create the group and/or user.
5712                   <prgn>adduser</prgn> will check for the existence of
5713                   the user or group, and if necessary choose an unused
5714                   id based on the ranges specified in
5715                   <file>adduser.conf</file>.
5716                 </p>
5717               </item>
5718
5719               <tag>1000-29999:</tag>
5720               <item>
5721                 <p>
5722                   Dynamically allocated user accounts.  By default
5723                   <prgn>adduser</prgn> will choose UIDs and GIDs for
5724                   user accounts in this range, though
5725                   <file>adduser.conf</file> may be used to modify this
5726                   behavior.
5727                 </p>
5728               </item>
5729
5730               <tag>30000-59999:</tag>
5731               <item>
5732                 <p>Reserved.</p>
5733               </item>
5734
5735               <tag>60000-64999:</tag>
5736               <item>
5737                 <p>
5738                   Globally allocated by the Debian project, but only
5739                   created on demand. The ids are allocated centrally
5740                   and statically, but the actual accounts are only
5741                   created on users' systems on demand.
5742                 </p>
5743
5744                 <p>
5745                   These ids are for packages which are obscure or
5746                   which require many statically-allocated ids.  These
5747                   packages should check for and create the accounts in
5748                   <file>/etc/passwd</file> or <file>/etc/group</file> (using
5749                   <prgn>adduser</prgn> if it has this facility) if
5750                   necessary.  Packages which are likely to require
5751                   further allocations should have a "hole" left after
5752                   them in the allocation, to give them room to
5753                   grow.
5754                 </p>
5755               </item>
5756
5757               <tag>65000-65533:</tag>
5758               <item>
5759                 <p>Reserved.</p>
5760               </item>
5761
5762               <tag>65534:</tag>
5763               <item>
5764                 <p>
5765                   User <tt>nobody</tt>. The corresponding gid refers
5766                   to the group <tt>nogroup</tt>.
5767                 </p>
5768               </item>
5769
5770               <tag>65535:</tag>
5771               <item>
5772                 <p>
5773                   <tt>(uid_t)(-1) == (gid_t)(-1)</tt> <em>must
5774                   not</em> be used, because it is the error return
5775                   sentinel value.
5776                 </p>
5777               </item>
5778             </taglist>
5779           </p>
5780         </sect1>
5781       </sect>
5782
5783       <sect id="sysvinit">
5784         <heading>System run levels and <file>init.d</file> scripts</heading>
5785
5786         <sect1 id="/etc/init.d">
5787           <heading>Introduction</heading>
5788
5789           <p>
5790             The <file>/etc/init.d</file> directory contains the scripts
5791             executed by <prgn>init</prgn> at boot time and when the
5792             init state (or "runlevel") is changed (see <manref
5793             name="init" section="8">).
5794           </p>
5795
5796           <p>
5797             There are at least two different, yet functionally
5798             equivalent, ways of handling these scripts.  For the sake
5799             of simplicity, this document describes only the symbolic
5800             link method. However, it must not be assumed by maintainer
5801             scripts that this method is being used, and any automated
5802             manipulation of the various runlevel behaviors by
5803             maintainer scripts must be performed using
5804             <prgn>update-rc.d</prgn> as described below and not by
5805             manually installing or removing symlinks.  For information
5806             on the implementation details of the other method,
5807             implemented in the <tt>file-rc</tt> package, please refer
5808             to the documentation of that package.
5809           </p>
5810
5811           <p>
5812             These scripts are referenced by symbolic links in the
5813             <file>/etc/rc<var>n</var>.d</file> directories.  When changing
5814             runlevels, <prgn>init</prgn> looks in the directory
5815             <file>/etc/rc<var>n</var>.d</file> for the scripts it should
5816             execute, where <tt><var>n</var></tt> is the runlevel that
5817             is being changed to, or <tt>S</tt> for the boot-up
5818             scripts.
5819           </p>
5820
5821           <p>
5822             The names of the links all have the form
5823             <file>S<var>mm</var><var>script</var></file> or
5824             <file>K<var>mm</var><var>script</var></file> where
5825             <var>mm</var> is a two-digit number and <var>script</var>
5826             is the name of the script (this should be the same as the
5827             name of the actual script in <file>/etc/init.d</file>).
5828           </p>
5829
5830           <p>
5831             When <prgn>init</prgn> changes runlevel first the targets
5832             of the links whose names start with a <tt>K</tt> are
5833             executed, each with the single argument <tt>stop</tt>,
5834             followed by the scripts prefixed with an <tt>S</tt>, each
5835             with the single argument <tt>start</tt>.  (The links are
5836             those in the <file>/etc/rc<var>n</var>.d</file> directory
5837             corresponding to the new runlevel.)  The <tt>K</tt> links
5838             are responsible for killing services and the <tt>S</tt>
5839             link for starting services upon entering the runlevel.
5840           </p>
5841
5842           <p>
5843             For example, if we are changing from runlevel 2 to
5844             runlevel 3, init will first execute all of the <tt>K</tt>
5845             prefixed scripts it finds in <file>/etc/rc3.d</file>, and then
5846             all of the <tt>S</tt> prefixed scripts in that directory.
5847             The links starting with <tt>K</tt> will cause the
5848             referred-to file to be executed with an argument of
5849             <tt>stop</tt>, and the <tt>S</tt> links with an argument
5850             of <tt>start</tt>.
5851           </p>
5852
5853           <p>
5854             The two-digit number <var>mm</var> is used to determine
5855             the order in which to run the scripts: low-numbered links
5856             have their scripts run first.  For example, the
5857             <tt>K20</tt> scripts will be executed before the
5858             <tt>K30</tt> scripts.  This is used when a certain service
5859             must be started before another.  For example, the name
5860             server <prgn>bind</prgn> might need to be started before
5861             the news server <prgn>inn</prgn> so that <prgn>inn</prgn>
5862             can set up its access lists.  In this case, the script
5863             that starts <prgn>bind</prgn> would have a lower number
5864             than the script that starts <prgn>inn</prgn> so that it
5865             runs first:
5866             <example compact="compact">
5867 /etc/rc2.d/S17bind
5868 /etc/rc2.d/S70inn
5869             </example>
5870           </p>
5871
5872           <p>
5873             The two runlevels 0 (halt) and 6 (reboot) are slightly
5874             different.  In these runlevels, the links with an
5875             <tt>S</tt> prefix are still called after those with a
5876             <tt>K</tt> prefix, but they too are called with the single
5877             argument <tt>stop</tt>.
5878           </p>
5879
5880           <p>
5881             Also, if the script name ends in <tt>.sh</tt>, the script
5882             will be sourced in runlevel <tt>S</tt> rather than being
5883             run in a forked subprocess, but will be explicitly run by
5884             <prgn>sh</prgn> in all other runlevels.
5885           </p>
5886         </sect1>
5887
5888         <sect1>
5889           <heading>Writing the scripts</heading>
5890
5891           <p>
5892             Packages that include daemons for system services should
5893             place scripts in <file>/etc/init.d</file> to start or stop
5894             services at boot time or during a change of runlevel.
5895             These scripts should be named
5896             <file>/etc/init.d/<var>package</var></file>, and they should
5897             accept one argument, saying what to do:
5898
5899             <taglist>
5900               <tag><tt>start</tt></tag>
5901               <item>start the service,</item>
5902
5903               <tag><tt>stop</tt></tag>
5904               <item>stop the service,</item>
5905
5906               <tag><tt>restart</tt></tag>
5907               <item>stop and restart the service if it's already running,
5908                   otherwise start the service</item>
5909
5910               <tag><tt>reload</tt></tag>
5911               <item><p>cause the configuration of the service to be
5912                   reloaded without actually stopping and restarting
5913                   the service,</item>
5914
5915               <tag><tt>force-reload</tt></tag>
5916               <item>cause the configuration to be reloaded if the
5917                   service supports this, otherwise restart the
5918                   service.</item>
5919             </taglist>
5920
5921             The <tt>start</tt>, <tt>stop</tt>, <tt>restart</tt>, and
5922             <tt>force-reload</tt> options should be supported by all
5923             scripts in <file>/etc/init.d</file>, the <tt>reload</tt>
5924             option is optional.
5925           </p>
5926
5927           <p>
5928             The <file>init.d</file> scripts must ensure that they will
5929             behave sensibly (i.e., returning success and not starting
5930             multiple copies of a service) if invoked with <tt>start</tt>
5931             when the service is already running, or with <tt>stop</tt>
5932             when it isn't, and that they don't kill unfortunately-named
5933             user processes.  The best way to achieve this is usually to
5934             use <prgn>start-stop-daemon</prgn> with the <tt>--oknodo</tt>
5935             option.
5936           </p>
5937
5938           <p>
5939             If a service reloads its configuration automatically (as
5940             in the case of <prgn>cron</prgn>, for example), the
5941             <tt>reload</tt> option of the <file>init.d</file> script
5942             should behave as if the configuration has been reloaded
5943             successfully.
5944           </p>
5945
5946           <p>
5947             The <file>/etc/init.d</file> scripts must be treated as
5948             configuration files, either (if they are present in the
5949             package, that is, in the .deb file) by marking them as
5950             <tt>conffile</tt>s, or, (if they do not exist in the .deb)
5951             by managing them correctly in the maintainer scripts (see
5952             <ref id="config-files">).  This is important since we want
5953             to give the local system administrator the chance to adapt
5954             the scripts to the local system, e.g., to disable a
5955             service without de-installing the package, or to specify
5956             some special command line options when starting a service,
5957             while making sure their changes aren't lost during the next
5958             package upgrade.
5959           </p>
5960
5961           <p>
5962             These scripts should not fail obscurely when the
5963             configuration files remain but the package has been
5964             removed, as configuration files remain on the system after
5965             the package has been removed.  Only when <prgn>dpkg</prgn>
5966             is executed with the <tt>--purge</tt> option will
5967             configuration files be removed.  In particular, as the
5968             <file>/etc/init.d/<var>package</var></file> script itself is
5969             usually a <tt>conffile</tt>, it will remain on the system
5970             if the package is removed but not purged.  Therefore, you
5971             should include a <tt>test</tt> statement at the top of the
5972             script, like this:
5973             <example compact="compact">
5974 test -f <var>program-executed-later-in-script</var> || exit 0
5975             </example>
5976           </p>
5977
5978           <p>
5979             Often there are some variables in the <file>init.d</file>
5980             scripts whose values control the behavior of the scripts,
5981             and which a system administrator is likely to want to
5982             change.  As the scripts themselves are frequently
5983             <tt>conffile</tt>s, modifying them requires that the
5984             administrator merge in their changes each time the package
5985             is upgraded and the <tt>conffile</tt> changes.  To ease
5986             the burden on the system administrator, such configurable
5987             values should not be placed directly in the script.
5988             Instead, they should be placed in a file in
5989             <file>/etc/default</file>, which typically will have the same
5990             base name as the <file>init.d</file> script.  This extra file
5991             should be sourced by the script when the script runs.  It
5992             must contain only variable settings and comments in SUSv3
5993             <prgn>sh</prgn> format.  It may either be a
5994             <tt>conffile</tt> or a configuration file maintained by
5995             the package maintainer scripts.  See <ref id="config-files">
5996             for more details.
5997           </p>
5998
5999           <p>
6000             To ensure that vital configurable values are always
6001             available, the <file>init.d</file> script should set default
6002             values for each of the shell variables it uses, either
6003             before sourcing the <file>/etc/default/</file> file or
6004             afterwards using something like the <tt>:
6005             ${VAR:=default}</tt> syntax.  Also, the <file>init.d</file>
6006             script must behave sensibly and not fail if the
6007             <file>/etc/default</file> file is deleted.
6008           </p>
6009         </sect1>
6010
6011         <sect1>
6012           <heading>Interfacing with the initscript system</heading>
6013
6014           <p>
6015             Maintainers should use the abstraction layer provided by
6016             the <prgn>update-rc.d</prgn> and <prgn>invoke-rc.d</prgn>
6017             programs to deal with initscripts in their packages'
6018             scripts such as <prgn>postinst</prgn>, <prgn>prerm</prgn>
6019             and <prgn>postrm</prgn>.
6020           </p>
6021
6022           <p>
6023             Directly managing the /etc/rc?.d links and directly
6024             invoking the <file>/etc/init.d/</file> initscripts should
6025             be done only by packages providing the initscript
6026             subsystem (such as <prgn>sysv-rc</prgn> and
6027             <prgn>file-rc</prgn>).
6028           </p>
6029
6030           <sect2>
6031             <heading>Managing the links</heading>
6032
6033             <p>
6034               The program <prgn>update-rc.d</prgn> is provided for
6035               package maintainers to arrange for the proper creation and
6036               removal of <file>/etc/rc<var>n</var>.d</file> symbolic links,
6037               or their functional equivalent if another method is being
6038               used.  This may be used by maintainers in their packages'
6039               <prgn>postinst</prgn> and <prgn>postrm</prgn> scripts.
6040             </p>
6041
6042             <p>
6043               You must not include any <file>/etc/rc<var>n</var>.d</file>
6044               symbolic links in the actual archive or manually create or
6045               remove the symbolic links in maintainer scripts; you must
6046               use the <prgn>update-rc.d</prgn> program instead.  (The
6047               former will fail if an alternative method of maintaining
6048               runlevel information is being used.)  You must not include
6049               the <file>/etc/rc<var>n</var>.d</file> directories themselves
6050               in the archive either.  (Only the <tt>sysvinit</tt>
6051               package may do so.)
6052             </p>
6053
6054             <p>
6055               By default <prgn>update-rc.d</prgn> will start services in
6056               each of the multi-user state runlevels (2, 3, 4, and 5)
6057               and stop them in the halt runlevel (0), the single-user
6058               runlevel (1) and the reboot runlevel (6).  The system
6059               administrator will have the opportunity to customize
6060               runlevels by simply adding, moving, or removing the
6061               symbolic links in <file>/etc/rc<var>n</var>.d</file> if
6062               symbolic links are being used, or by modifying
6063               <file>/etc/runlevel.conf</file> if the <tt>file-rc</tt> method
6064               is being used.
6065             </p>
6066
6067             <p>
6068               To get the default behavior for your package, put in your
6069               <prgn>postinst</prgn> script
6070               <example compact="compact">
6071                 update-rc.d <var>package</var> defaults
6072               </example>
6073               and in your <prgn>postrm</prgn>
6074               <example compact="compact">
6075                 if [ "$1" = purge ]; then
6076                 update-rc.d <var>package</var> remove
6077                 fi
6078               </example>. Note that if your package changes runlevels
6079               or priority, you may have to remove and recreate the links,
6080               since otherwise the old links may persist. Refer to the
6081               documentation of <prgn>update-rc.d</prgn>.
6082             </p>
6083
6084             <p>
6085               This will use a default sequence number of 20.  If it does
6086               not matter when or in which order the <file>init.d</file>
6087               script is run, use this default.  If it does, then you
6088               should talk to the maintainer of the <prgn>sysvinit</prgn>
6089               package or post to <tt>debian-devel</tt>, and they will
6090               help you choose a number.
6091             </p>
6092
6093             <p>
6094               For more information about using <tt>update-rc.d</tt>,
6095               please consult its man page <manref name="update-rc.d"
6096                 section="8">.
6097             </p>
6098           </sect2>
6099
6100           <sect2>
6101             <heading>Running initscripts</heading>
6102             <p>
6103               The program <prgn>invoke-rc.d</prgn> is provided to make
6104               it easier for package maintainers to properly invoke an
6105               initscript, obeying runlevel and other locally-defined
6106               constraints that might limit a package's right to start,
6107               stop and otherwise manage services. This program may be
6108               used by maintainers in their packages' scripts.
6109             </p>
6110
6111             <p>
6112               The package maintainer scripts must use
6113               <prgn>invoke-rc.d</prgn> to invoke the
6114               <file>/etc/init.d/*</file> initscripts, instead of
6115               calling them directly.
6116             </p>
6117
6118             <p>
6119               By default, <prgn>invoke-rc.d</prgn> will pass any
6120               action requests (start, stop, reload, restart...) to the
6121               <file>/etc/init.d</file> script, filtering out requests
6122               to start or restart a service out of its intended
6123               runlevels.
6124             </p>
6125
6126             <p>
6127               Most packages will simply need to change:
6128               <example compact="compact">/etc/init.d/&lt;package&gt;
6129               &lt;action&gt;</example> in their <prgn>postinst</prgn>
6130               and <prgn>prerm</prgn> scripts to:
6131               <example compact="compact">
6132         if which invoke-rc.d >/dev/null 2>&1; then
6133                 invoke-rc.d <var>package</var> &lt;action&gt;
6134         else
6135                 /etc/init.d/<var>package</var> &lt;action&gt;
6136         fi
6137               </example>
6138             </p>
6139
6140             <p>
6141               A package should register its initscript services using
6142               <prgn>update-rc.d</prgn> before it tries to invoke them
6143               using <prgn>invoke-rc.d</prgn>. Invocation of
6144               unregistered services may fail.
6145             </p>
6146
6147             <p>
6148               For more information about using
6149               <prgn>invoke-rc.d</prgn>, please consult its man page
6150               <manref name="invoke-rc.d" section="8">.
6151             </p>
6152           </sect2>
6153         </sect1>
6154
6155         <sect1>
6156           <heading>Boot-time initialization</heading>
6157
6158           <p>
6159             There used to be another directory, <file>/etc/rc.boot</file>,
6160             which contained scripts which were run once per machine
6161             boot. This has been deprecated in favour of links from
6162             <file>/etc/rcS.d</file> to files in <file>/etc/init.d</file> as
6163             described in <ref id="/etc/init.d">.  Packages must not
6164             place files in <file>/etc/rc.boot</file>.
6165           </p>
6166         </sect1>
6167
6168         <sect1>
6169           <heading>Example</heading>
6170
6171           <p>
6172             An example on which you can base your
6173             <file>/etc/init.d</file> scripts is found in
6174             <file>/etc/init.d/skeleton</file>.
6175           </p>
6176
6177         </sect1>
6178       </sect>
6179
6180       <sect>
6181         <heading>Console messages from <file>init.d</file> scripts</heading>
6182
6183         <p>
6184           This section describes the formats to be used for messages
6185           written to standard output by the <file>/etc/init.d</file>
6186           scripts.  The intent is to improve the consistency of
6187           Debian's startup and shutdown look and feel.  For this
6188           reason, please look very carefully at the details.  We want
6189           the messages to have the same format in terms of wording,
6190           spaces, punctuation and case of letters.
6191         </p>
6192
6193         <p>
6194           Here is a list of overall rules that should be used for
6195           messages generated by <file>/etc/init.d</file> scripts.  
6196         </p>
6197
6198         <p>
6199           <list>
6200             <item>
6201                 The message should fit in one line (fewer than 80
6202                 characters), start with a capital letter and end with
6203                 a period (<tt>.</tt>) and line feed (<tt>"\n"</tt>).
6204             </item>
6205
6206             <item>
6207               If the script is performing some time consuming task in
6208               the background (not merely starting or stopping a
6209               program, for instance), an ellipsis (three dots:
6210               <tt>...</tt>) should be output to the screen, with no
6211               leading or tailing whitespace or line feeds.
6212             </item>
6213
6214             <item>
6215               The messages should appear as if the computer is telling
6216               the user what it is doing (politely :-), but should not
6217                 mention "it" directly.  For example, instead of:
6218                 <example compact="compact">
6219 I'm starting network daemons: nfsd mountd.
6220                 </example>
6221                 the message should say
6222                 <example compact="compact">
6223 Starting network daemons: nfsd mountd.
6224                 </example>
6225             </item>
6226           </list>
6227         </p>
6228
6229         <p>
6230           <tt>init.d</tt> script should use the following  standard
6231           message formats for the situations enumerated below.
6232         </p>
6233
6234         <p>
6235           <list>
6236             <item>
6237               <p>When daemons are started</p>
6238
6239               <p>
6240                 If the script starts one or more daemons, the output
6241                 should look like this (a single line, no leading
6242                 spaces):
6243                 <example compact="compact">
6244 Starting <var>description</var>: <var>daemon-1</var> ... <var>daemon-n</var>.
6245                 </example>
6246                 The <var>description</var> should describe the
6247                 subsystem the daemon or set of daemons are part of,
6248                 while <var>daemon-1</var> up to <var>daemon-n</var>
6249                 denote each daemon's name (typically the file name of
6250                 the program).
6251               </p>
6252
6253               <p>
6254                 For example, the output of <file>/etc/init.d/lpd</file>
6255                 would look like:
6256                 <example compact="compact">
6257 Starting printer spooler: lpd.
6258                 </example>
6259               </p>
6260
6261               <p>
6262                 This can be achieved by saying
6263                 <example compact="compact">
6264 echo -n "Starting printer spooler: lpd"
6265 start-stop-daemon --start --quiet --exec /usr/sbin/lpd
6266 echo "."
6267                 </example>
6268                 in the script. If there are more than one daemon to
6269                 start, the output should look like this:
6270                 <example compact="compact">
6271 echo -n "Starting remote file system services:"
6272 echo -n " nfsd"; start-stop-daemon --start --quiet nfsd
6273 echo -n " mountd"; start-stop-daemon --start --quiet mountd
6274 echo -n " ugidd"; start-stop-daemon --start --quiet ugidd
6275 echo "."
6276                 </example>
6277                 This makes it possible for the user to see what is
6278                 happening and when the final daemon has been started.
6279                 Care should be taken in the placement of white spaces:
6280                 in the example above the system administrators can
6281                 easily comment out a line if they don't want to start
6282                 a specific daemon, while the displayed message still
6283                 looks good.
6284               </p>
6285             </item>
6286
6287             <item>
6288               <p>When a system parameter is being set</p>
6289
6290               <p>
6291                 If you have to set up different system parameters
6292                 during the system boot, you should use this format:
6293                 <example compact="compact">
6294 Setting <var>parameter</var> to "<var>value</var>".
6295                 </example>
6296               </p>
6297
6298               <p>
6299                 You can use a statement such as the following to get
6300                 the quotes right:
6301                 <example compact="compact">
6302 echo "Setting DNS domainname to \"$domainname\"."
6303                 </example>
6304               </p>
6305
6306               <p>
6307                 Note that the same symbol (<tt>"</tt>) is used for the left
6308                 and right quotation marks.  A grave accent (<tt>`</tt>) is
6309                 not a quote character; neither is an apostrophe
6310                 (<tt>'</tt>).
6311               </p>
6312             </item>
6313
6314             <item>
6315               <p>When a daemon is stopped or restarted</p>
6316
6317               <p>
6318                 When you stop or restart a daemon, you should issue a
6319                 message identical to the startup message, except that
6320                 <tt>Starting</tt> is replaced with <tt>Stopping</tt>
6321                 or <tt>Restarting</tt> respectively.
6322               </p>
6323
6324               <p>
6325                 For example, stopping the printer daemon will look like
6326                 this:
6327                 <example compact="compact">
6328 Stopping printer spooler: lpd.
6329                 </example>
6330               </p>
6331             </item>
6332
6333             <item>
6334               <p>When something is executed</p>
6335
6336               <p>
6337                 There are several examples where you have to run a
6338                 program at system startup or shutdown to perform a
6339                 specific task, for example, setting the system's clock
6340                 using <prgn>netdate</prgn> or killing all processes
6341                 when the system shuts down.  Your message should look
6342                 like this:
6343                 <example compact="compact">
6344 Doing something very useful...done.
6345                 </example>
6346                 You should print the <tt>done.</tt> immediately after
6347                 the job has been completed, so that the user is
6348                 informed why they have to wait.  You can get this
6349                 behavior by saying
6350                 <example compact="compact">
6351 echo -n "Doing something very useful..."
6352 do_something
6353 echo "done."
6354                 </example>
6355                 in your script.
6356               </p>
6357             </item>
6358
6359             <item>
6360               <p>When the configuration is reloaded</p>
6361
6362               <p>
6363                 When a daemon is forced to reload its configuration
6364                 files you should use the following format:
6365                 <example compact="compact">
6366 Reloading <var>description</var> configuration...done.
6367                 </example>
6368                 where <var>description</var> is the same as in the
6369                 daemon starting message.
6370               </p>
6371             </item>
6372           </list>
6373         </p>
6374       </sect>
6375
6376       <sect>
6377         <heading>Cron jobs</heading>
6378
6379         <p>
6380           Packages must not modify the configuration file
6381           <file>/etc/crontab</file>, and they must not modify the files in
6382           <file>/var/spool/cron/crontabs</file>.</p>
6383
6384         <p>
6385           If a package wants to install a job that has to be executed
6386           via cron, it should place a file with the name of the
6387           package in one or more of the following directories:
6388           <example compact="compact">
6389 /etc/cron.hourly
6390 /etc/cron.daily
6391 /etc/cron.weekly
6392 /etc/cron.monthly
6393           </example>
6394           As these directory names imply, the files within them are
6395           executed on an hourly, daily, weekly, or monthly basis,
6396           respectively. The exact times are listed in
6397           <file>/etc/crontab</file>.</p>
6398
6399         <p>
6400           All files installed in any of these directories must be
6401           scripts (e.g., shell scripts or Perl scripts) so that they
6402           can easily be modified by the local system administrator.
6403           In addition, they must be treated as configuration files.
6404         </p>
6405
6406         <p>
6407           If a certain job has to be executed at some other frequency or
6408           at a specific time, the package should install a file
6409           <file>/etc/cron.d/<var>package</var></file>. This file uses the
6410           same syntax as <file>/etc/crontab</file> and is processed by
6411           <prgn>cron</prgn> automatically. The file must also be
6412           treated as a configuration file. (Note that entries in the
6413           <file>/etc/cron.d</file> directory are not handled by
6414           <prgn>anacron</prgn>. Thus, you should only use this
6415           directory for jobs which may be skipped if the system is not
6416           running.)</p>
6417
6418         <p>
6419           The scripts or crontab entries in these directories should
6420           check if all necessary programs are installed before they
6421           try to execute them. Otherwise, problems will arise when a
6422           package was removed but not purged since configuration files
6423           are kept on the system in this situation.</p>
6424       </sect>
6425
6426       <sect id="menus">
6427         <heading>Menus</heading>
6428
6429         <p>
6430           The Debian <tt>menu</tt> package provides a standard
6431           interface between packages providing applications and
6432           <em>menu programs</em> (either X window managers or
6433           text-based menu programs such as <prgn>pdmenu</prgn>).
6434         </p>
6435
6436         <p>
6437           All packages that provide applications that need not be
6438           passed any special command line arguments for normal
6439           operation should register a menu entry for those
6440           applications, so that users of the <tt>menu</tt> package
6441           will automatically get menu entries in their window
6442           managers, as well in shells like <tt>pdmenu</tt>.
6443         </p>
6444
6445         <p>
6446           Menu entries should follow the current menu policy.
6447         </p>
6448
6449         <p>
6450           The menu policy can be found in the <tt>menu-policy</tt>
6451           files in the <tt>debian-policy</tt> package.
6452           It is also available from the Debian web mirrors at
6453           <tt><url name="/doc/packaging-manuals/menu-policy/"
6454                 id="http://www.debian.org/doc/packaging-manuals/menu-policy/"></tt>.
6455         </p>
6456
6457         <p>
6458           Please also refer to the <em>Debian Menu System</em>
6459           documentation that comes with the <package>menu</package>
6460           package for information about how to register your
6461           applications.
6462         </p>
6463       </sect>
6464
6465       <sect id="mime">
6466         <heading>Multimedia handlers</heading>
6467
6468         <p>
6469           MIME (Multipurpose Internet Mail Extensions, RFCs 2045-2049)
6470           is a mechanism for encoding files and data streams and
6471           providing meta-information about them, in particular their
6472           type (e.g.  audio or video) and format (e.g. PNG, HTML,
6473           MP3).
6474         </p>
6475
6476         <p>
6477           Registration of MIME type handlers allows programs like mail
6478           user agents and web browsers to invoke these handlers to
6479           view, edit or display MIME types they don't support directly.
6480         </p>
6481
6482         <p>
6483           Packages which provide the ability to view/show/play,
6484           compose, edit or print MIME types should register themselves
6485           as such following the current MIME support policy.
6486         </p>
6487
6488         <p>
6489           The MIME support policy can be found in the <tt>mime-policy</tt>
6490           files in the <tt>debian-policy</tt> package.
6491           It is also available from the Debian web mirrors at
6492           <tt><url name="/doc/packaging-manuals/mime-policy/"
6493                 id="http://www.debian.org/doc/packaging-manuals/mime-policy/"></tt>.
6494         </p>
6495
6496       </sect>
6497
6498       <sect>
6499         <heading>Keyboard configuration</heading>
6500
6501         <p>
6502           To achieve a consistent keyboard configuration so that all
6503           applications interpret a keyboard event the same way, all
6504           programs in the Debian distribution must be configured to
6505           comply with the following guidelines.
6506         </p>
6507
6508         <p>
6509           The following keys must have the specified interpretations:
6510
6511           <taglist>
6512             <tag><tt>&lt;--</tt></tag>
6513             <item>delete the character to the left of the cursor</item>
6514
6515             <tag><tt>Delete</tt></tag>
6516             <item>delete the character to the right of the cursor</item>
6517
6518             <tag><tt>Control+H</tt></tag>
6519             <item>emacs: the help prefix</item>
6520           </taglist>
6521
6522           The interpretation of any keyboard events should be
6523           independent of the terminal that is used, be it a virtual
6524           console, an X terminal emulator, an rlogin/telnet session,
6525           etc.
6526         </p>
6527
6528         <p>
6529           The following list explains how the different programs
6530           should be set up to achieve this:
6531         </p>
6532
6533         <p>
6534           <list>
6535             <item>
6536                 <tt>&lt;--</tt> generates <tt>KB_BackSpace</tt> in X.
6537             </item>
6538
6539             <item>
6540                 <tt>Delete</tt> generates <tt>KB_Delete</tt> in X.
6541             </item>
6542
6543             <item>
6544                 X translations are set up to make
6545                 <tt>KB_Backspace</tt> generate ASCII DEL, and to make
6546                 <tt>KB_Delete</tt> generate <tt>ESC [ 3 ~</tt> (this
6547                 is the vt220 escape code for the "delete character"
6548                 key).  This must be done by loading the X resources
6549                 using <prgn>xrdb</prgn> on all local X displays, not
6550                 using the application defaults, so that the
6551                 translation resources used correspond to the
6552                 <prgn>xmodmap</prgn> settings.
6553             </item>
6554
6555             <item>
6556                 The Linux console is configured to make
6557                 <tt>&lt;--</tt> generate DEL, and <tt>Delete</tt>
6558                 generate <tt>ESC [ 3 ~</tt>.
6559             </item>
6560
6561             <item>
6562                 X applications are configured so that <tt>&lt;</tt>
6563                 deletes left, and <tt>Delete</tt> deletes right.  Motif
6564                 applications already work like this.
6565             </item>
6566
6567             <item>
6568                 Terminals should have <tt>stty erase ^?</tt> .
6569             </item>
6570
6571             <item>
6572                 The <tt>xterm</tt> terminfo entry should have <tt>ESC
6573                 [ 3 ~</tt> for <tt>kdch1</tt>, just as for
6574                 <tt>TERM=linux</tt> and <tt>TERM=vt220</tt>.
6575             </item>
6576
6577             <item>
6578                 Emacs is programmed to map <tt>KB_Backspace</tt> or
6579                 the <tt>stty erase</tt> character to
6580                 <tt>delete-backward-char</tt>, and <tt>KB_Delete</tt>
6581                 or <tt>kdch1</tt> to <tt>delete-forward-char</tt>, and
6582                 <tt>^H</tt> to <tt>help</tt> as always.
6583             </item>
6584
6585             <item>
6586                 Other applications use the <tt>stty erase</tt>
6587                 character and <tt>kdch1</tt> for the two delete keys,
6588                 with ASCII DEL being "delete previous character" and
6589                 <tt>kdch1</tt> being "delete character under
6590                 cursor".
6591             </item>
6592
6593           </list>
6594         </p>
6595
6596         <p>
6597           This will solve the problem except for the following
6598           cases:
6599         </p>
6600
6601         <p>
6602           <list>
6603             <item>
6604                 Some terminals have a <tt>&lt;--</tt> key that cannot
6605                 be made to produce anything except <tt>^H</tt>.  On
6606                 these terminals Emacs help will be unavailable on
6607                 <tt>^H</tt> (assuming that the <tt>stty erase</tt>
6608                 character takes precedence in Emacs, and has been set
6609                 correctly).  <tt>M-x help</tt> or <tt>F1</tt> (if
6610                 available) can be used instead.
6611             </item>
6612
6613             <item>
6614                 Some operating systems use <tt>^H</tt> for <tt>stty
6615                 erase</tt>.  However, modern telnet versions and all
6616                 rlogin versions propagate <tt>stty</tt> settings, and
6617                 almost all UNIX versions honour <tt>stty erase</tt>.
6618                 Where the <tt>stty</tt> settings are not propagated
6619                 correctly, things can be made to work by using
6620                 <tt>stty</tt> manually.
6621             </item>
6622
6623             <item>
6624                 Some systems (including previous Debian versions) use
6625                 <prgn>xmodmap</prgn> to arrange for both
6626                 <tt>&lt;--</tt> and <tt>Delete</tt> to generate
6627                 <tt>KB_Delete</tt>.  We can change the behavior of
6628                 their X clients using the same X resources that we use
6629                 to do it for our own clients, or configure our clients
6630                 using their resources when things are the other way
6631                 around.  On displays configured like this
6632                 <tt>Delete</tt> will not work, but <tt>&lt;--</tt>
6633                 will.
6634             </item>
6635
6636             <item>
6637                 Some operating systems have different <tt>kdch1</tt>
6638                 settings in their <tt>terminfo</tt> database for
6639                 <tt>xterm</tt> and others.  On these systems the
6640                 <tt>Delete</tt> key will not work correctly when you
6641                 log in from a system conforming to our policy, but
6642                 <tt>&lt;--</tt> will.
6643             </item>
6644           </list>
6645         </p>
6646       </sect>
6647
6648       <sect>
6649         <heading>Environment variables</heading>
6650
6651         <p>
6652           A program must not depend on environment variables to get
6653           reasonable defaults.  (That's because these environment
6654           variables would have to be set in a system-wide
6655           configuration file like <file>/etc/profile</file>, which is not
6656           supported by all shells.)
6657         </p>
6658
6659         <p>
6660           If a program usually depends on environment variables for its
6661           configuration, the program should be changed to fall back to
6662           a reasonable default configuration if these environment
6663           variables are not present. If this cannot be done easily
6664           (e.g., if the source code of a non-free program is not
6665           available), the program must be replaced by a small
6666           "wrapper" shell script which sets the environment variables
6667           if they are not already defined, and calls the original program.
6668         </p>
6669
6670         <p>
6671           Here is an example of a wrapper script for this purpose:
6672
6673           <example compact="compact">
6674 #!/bin/sh
6675 BAR=${BAR:-/var/lib/fubar}
6676 export BAR
6677 exec /usr/lib/foo/foo "$@"
6678           </example>
6679         </p>
6680
6681         <p>
6682           Furthermore, as <file>/etc/profile</file> is a configuration
6683           file of the <prgn>base-files</prgn> package, other packages must
6684           not put any environment variables or other commands into that
6685           file.
6686         </p>
6687       </sect>
6688
6689       <sect id="doc-base">
6690         <heading>Registering Documents using doc-base</heading>
6691
6692         <p>
6693           The <package>doc-base</package> package implements a
6694           flexible mechanism for handling and presenting
6695           documentation. The recommended practice is for every Debian
6696           package that provides online documentation (other than just
6697           manual pages) to register these documents with
6698           <package>doc-base</package> by installing a
6699           <package>doc-base</package> control file via the
6700           <prgn/install-docs/ script at installation time and
6701           de-register the manuals again when the package is removed.
6702         </p> 
6703         <p>
6704           Please refer to the documentation that comes with the
6705           <package>doc-base</package>  package for information and
6706           details. 
6707         </p>
6708       </sect>
6709
6710     </chapt>
6711
6712
6713     <chapt id="files">
6714       <heading>Files</heading>
6715
6716       <sect>
6717         <heading>Binaries</heading>
6718
6719         <p>
6720           Two different packages must not install programs with
6721           different functionality but with the same filenames.  (The
6722           case of two programs having the same functionality but
6723           different implementations is handled via "alternatives" or
6724           the "Conflicts" mechanism.  See <ref id="maintscripts"> and
6725           <ref id="conflicts"> respectively.)  If this case happens,
6726           one of the programs must be renamed.  The maintainers should
6727           report this to the <tt>debian-devel</tt> mailing list and
6728           try to find a consensus about which program will have to be
6729           renamed.  If a consensus cannot be reached, <em>both</em>
6730           programs must be renamed.
6731         </p>
6732
6733         <p>
6734          By default, when a package is being built, any binaries
6735          created should include debugging information, as well as
6736          being compiled with optimization.  You should also turn on
6737          as many reasonable compilation warnings as possible; this
6738          makes life easier for porters, who can then look at build
6739          logs for possible problems.  For the C programming language,
6740          this means the following compilation parameters should be
6741          used:
6742           <example compact="compact">
6743 CC = gcc
6744 CFLAGS = -O2 -g -Wall # sane warning options vary between programs
6745 LDFLAGS = # none
6746 INSTALL = install -s # (or use strip on the files in debian/tmp)
6747           </example>
6748         </p>
6749
6750         <p>
6751           Note that by default all installed binaries should be stripped,
6752           either by using the <tt>-s</tt> flag to
6753           <prgn>install</prgn>, or by calling <prgn>strip</prgn> on
6754           the binaries after they have been copied into
6755           <file>debian/tmp</file> but before the tree is made into a
6756           package.
6757         </p>
6758
6759         <p>
6760           Although binaries in the build tree should be compiled with
6761           debugging information by default, it can often be difficult to
6762           debug programs if they are also subjected to compiler
6763           optimization.  For this reason, it is recommended to support the
6764           standardized environment variable <tt>DEB_BUILD_OPTIONS</tt>
6765           (see <ref id="debianrules-options">).  This variable can contain
6766           several flags to change how a package is compiled and built.
6767         </p>
6768
6769         <p>
6770           It is up to the package maintainer to decide what
6771           compilation options are best for the package.  Certain
6772           binaries (such as computationally-intensive programs) will
6773           function better with certain flags (<tt>-O3</tt>, for
6774           example); feel free to use them.  Please use good judgment
6775           here.  Don't use flags for the sake of it; only use them
6776           if there is good reason to do so.  Feel free to override
6777           the upstream author's ideas about which compilation
6778           options are best: they are often inappropriate for our
6779           environment.
6780         </p>
6781       </sect>
6782
6783
6784       <sect id="libraries">
6785         <heading>Libraries</heading>
6786
6787         <p>
6788           If the package is <strong>architecture: any</strong>, then
6789           the shared library compilation and linking flags must have
6790           <tt>-fPIC</tt>, or the package shall not build on some of
6791           the supported architectures<footnote>
6792             <p>
6793               If you are using GCC, <tt>-fPIC</tt> produces code with
6794               relocatable position independent code, which is required for
6795               most architectures to create a shared library, with i386 and
6796               perhaps some others where non position independent code is
6797               permitted in a shared library.
6798             </p>
6799             <p>
6800               Position independent code may have a performance penalty,
6801               especially on <tt>i386</tt>. However, in most cases the
6802               speed penalty must be measured against the memory wasted on
6803               the few architectures where non position independent code is
6804               even possible.
6805             </p>
6806           </footnote>. Any exception to this rule must be discussed on
6807           the mailing list <em>debian-devel@lists.debian.org</em>, and
6808           a rough consensus obtained.  The reasons for not compiling
6809           with <tt>-fPIC</tt> flag must be recorded in the file
6810           <tt>README.Debian</tt>, and care must be taken to either
6811           restrict the architecture or arrange for <tt>-fPIC</tt> to
6812           be used on architectures where it is required.<footnote>
6813             <p>
6814               Some of the reasons why this might be required is if the
6815               library contains hand crafted assembly code that is not
6816               relocatable, the speed penalty is excessive for compute
6817               intensive libs, and similar reasons.
6818             </p>
6819           </footnote>
6820         </p>
6821         <p>
6822           As to the static libraries, the common case is not to have
6823           relocatable code, since there is no benefit, unless in specific
6824           cases; therefore the static version must not be compiled
6825           with the <tt>-fPIC</tt> flag. Any exception to this rule
6826           should be discussed on the mailing list
6827           <em>debian-devel@lists.debian.org</em>,  and the reasons for
6828           compiling with the <tt>-fPIC</tt> flag must be recorded in
6829           the file <tt>README.Debian</tt>. <footnote>
6830             <p>
6831               Some of the reasons for linking static libraries with
6832               the <tt>-fPIC</tt> flag are if, for example, one needs a
6833               Perl API for a library that is under rapid development,
6834               and has an unstable API, so shared libraries are
6835               pointless at this phase of the library's development. In
6836               that case, since Perl needs a library with relocatable
6837               code, it may make sense to create a static library with
6838               relocatable code. Another reason cited is if you are
6839               distilling various libraries into a common shared
6840               library, like <tt>mklibs</tt> does in the Debian
6841               installer project.
6842             </p>
6843           </footnote>
6844         </p>
6845         <p>
6846           In other words, if both a shared and a static library is
6847           being built, each source unit (<tt>*.c</tt>, for example,
6848           for C files) will need to be compiled twice, for the normal
6849           case. 
6850         </p>
6851         <p>
6852           You must specify the gcc option <tt>-D_REENTRANT</tt>
6853           when building a library (either static or shared) to make
6854           the library compatible with LinuxThreads.
6855         </p>
6856
6857         <p>
6858           Although not enforced by the build tools, shared libraries
6859           must be linked against all libraries that they use symbols from
6860           in the same way that binaries are.  This ensures the correct
6861           functioning of the <qref id="sharedlibs-shlibdeps">shlibs</qref>
6862           system and guarantees that all libraries can be safely opened
6863           with <tt>dlopen()</tt>.  Packagers may wish to use the gcc
6864           option <tt>-Wl,-z,defs</tt> when building a shared library.
6865           Since this option enforces symbol resolution at build time,
6866           a missing library reference will be caught early as a fatal
6867           build error.
6868         </p>
6869
6870         <p>
6871           All installed shared libraries should be stripped with
6872           <example compact="compact">
6873 strip --strip-unneeded <var>your-lib</var>
6874           </example>
6875           (The option <tt>--strip-unneeded</tt> makes
6876           <prgn>strip</prgn> remove only the symbols which aren't
6877           needed for relocation processing.)  Shared libraries can
6878           function perfectly well when stripped, since the symbols for
6879           dynamic linking are in a separate part of the ELF object
6880           file.<footnote>
6881               You might also want to use the options
6882               <tt>--remove-section=.comment</tt> and
6883               <tt>--remove-section=.note</tt> on both shared libraries
6884               and executables, and <tt>--strip-debug</tt> on static
6885               libraries.
6886           </footnote>
6887         </p>
6888
6889         <p>
6890           Note that under some circumstances it may be useful to
6891           install a shared library unstripped, for example when
6892           building a separate package to support debugging.
6893         </p>
6894
6895         <p>
6896           Shared object files (often <file>.so</file> files) that are not
6897           public libraries, that is, they are not meant to be linked
6898           to by third party executables (binaries of other packages),
6899           should be installed in subdirectories of the
6900           <file>/usr/lib</file> directory.  Such files are exempt from the
6901           rules that govern ordinary shared libraries, except that
6902           they must not be installed executable and should be
6903           stripped.<footnote>
6904               A common example are the so-called "plug-ins",
6905               internal shared objects that are dynamically loaded by
6906               programs using <manref name="dlopen" section="3">.
6907           </footnote>
6908         </p>
6909
6910         <p>
6911           Packages containing shared libraries that may be linked to
6912           by other packages' binaries, but which for some
6913           <em>compelling</em> reason can not be installed in
6914           <file>/usr/lib</file> directory, may install the shared library
6915           files in subdirectories of the <file>/usr/lib</file> directory,
6916           in which case they should arrange to add that directory in
6917           <file>/etc/ld.so.conf</file> in the package's post-installation
6918           script, and remove it in the package's post-removal script.
6919         </p>
6920
6921         <p>
6922           An ever increasing number of packages are using
6923           <prgn>libtool</prgn> to do their linking.  The latest GNU
6924           libtools (>= 1.3a) can take advantage of the metadata in the
6925           installed <prgn>libtool</prgn> archive files (<file>*.la</file>
6926           files).  The main advantage of <prgn>libtool</prgn>'s
6927           <file>.la</file> files is that it allows <prgn>libtool</prgn> to
6928           store and subsequently access metadata with respect to the
6929           libraries it builds.  <prgn>libtool</prgn> will search for
6930           those files, which contain a lot of useful information about
6931           a library (such as library dependency information for static
6932           linking).  Also, they're <em>essential</em> for programs
6933           using <tt>libltdl</tt>.<footnote>
6934               Although <prgn>libtool</prgn> is fully capable of
6935               linking against shared libraries which don't have
6936               <tt>.la</tt> files, as it is a mere shell script it can
6937               add considerably to the build time of a
6938               <prgn>libtool</prgn>-using package if that shell script
6939               has to derive all this information from first principles
6940               for each library every time it is linked.  With the
6941               advent of <prgn>libtool</prgn> version 1.4 (and to a
6942               lesser extent <prgn>libtool</prgn> version 1.3), the
6943               <file>.la</file> files also store information about
6944               inter-library dependencies which cannot necessarily be
6945               derived after the <file>.la</file> file is deleted.
6946           </footnote>
6947         </p>
6948
6949         <p>
6950           Packages that use <prgn>libtool</prgn> to create shared
6951           libraries should include the <file>.la</file> files in the
6952           <tt>-dev</tt> package, unless the package relies on
6953           <tt>libtool</tt>'s <tt>libltdl</tt> library, in which case
6954           the <tt>.la</tt> files must go in the run-time library
6955           package.
6956         </p>
6957
6958         <p>
6959           You must make sure that you use only released versions of
6960           shared libraries to build your packages; otherwise other
6961           users will not be able to run your binaries
6962           properly. Producing source packages that depend on
6963           unreleased compilers is also usually a bad
6964           idea.
6965         </p>
6966       </sect>
6967
6968
6969       <sect>
6970         <heading>Shared libraries</heading>
6971         <p>
6972           This section has moved to <ref id="sharedlibs">.
6973         </p>
6974       </sect>
6975
6976
6977       <sect id="scripts">
6978         <heading>Scripts</heading>
6979
6980         <p>
6981           All command scripts, including the package maintainer
6982           scripts inside the package and used by <prgn>dpkg</prgn>,
6983           should have a <tt>#!</tt> line naming the shell to be used
6984           to interpret them.
6985         </p>
6986
6987         <p>
6988           In the case of Perl scripts this should be
6989           <tt>#!/usr/bin/perl</tt>.
6990         </p>
6991
6992         <p>
6993           When scripts are installed into a directory in the system
6994           PATH, the script name should not include an extension such
6995           as <tt>.sh</tt> or <tt>.pl</tt> that denotes the scripting
6996           language currently used to implement it.
6997         </p>
6998         <p>
6999           Shell scripts (<prgn>sh</prgn> and <prgn>bash</prgn>)
7000           should almost certainly start with <tt>set -e</tt> so that
7001           errors are detected.  Every script should use
7002           <tt>set -e</tt> or check the exit status of <em>every</em>
7003           command.
7004         </p>
7005
7006         <p>
7007           Scripts may assume that <file>/bin/sh</file> implements the
7008           SUSv3 Shell Command Language<footnote>
7009             Single UNIX Specification, version 3, which is also IEEE
7010             1003.1-2004 (POSIX), and is available on the World Wide Web
7011             from <url id="http://www.unix.org/version3/online.html"
7012                       name="The Open Group"> after free
7013             registration.</footnote>
7014           plus the following additional features not mandated by
7015           SUSv3:<footnote>
7016             These features are in widespread use in the Linux community
7017             and are implemented in all of bash, dash, and ksh, the most
7018             common shells users may wish to use as <file>/bin/sh</file>.
7019           </footnote>
7020           <list>
7021             <item><tt>echo -n</tt>, if implemented as a shell built-in,
7022               must not generate a newline.</item>
7023             <item><tt>test</tt>, if implemented as a shell built-in, must
7024               support <tt>-a</tt> and <tt>-o</tt> as binary logical
7025               operators.</item>
7026             <item><tt>local</tt> to create a scoped variable must be
7027               supported; however, <tt>local</tt> may or may not preserve
7028               the variable value from an outer scope and may or may not
7029               support arguments more complex than simple variables.  Only
7030               uses such as:
7031 <example compact>
7032 fname () {
7033     local a
7034     a=''
7035     # ... use a ...
7036 }
7037 </example>
7038               must be supported.
7039             </item>
7040           </list>
7041           If a shell script requires non-SUSv3 features from the shell
7042           interpreter other than those listed above, the appropriate shell
7043           must be specified in the first line of the script (e.g.,
7044           <tt>#!/bin/bash</tt>) and the package must depend on the package
7045           providing the shell (unless the shell package is marked
7046           "Essential", as in the case of <prgn>bash</prgn>).
7047         </p>
7048
7049         <p>
7050           You may wish to restrict your script to SUSv3 features plus the
7051           above set when possible so that it may use <file>/bin/sh</file>
7052           as its interpreter. If your script works with <prgn>dash</prgn>
7053           (originally called <prgn>ash</prgn>), it probably complies with
7054           the above requirements, but if you are in doubt, use
7055           <file>/bin/bash</file>.
7056         </p>
7057
7058         <p>
7059           Perl scripts should check for errors when making any
7060           system calls, including <tt>open</tt>, <tt>print</tt>,
7061           <tt>close</tt>, <tt>rename</tt> and <tt>system</tt>.
7062         </p>
7063
7064         <p>
7065           <prgn>csh</prgn> and <prgn>tcsh</prgn> should be avoided as
7066           scripting languages.  See <em>Csh Programming Considered
7067           Harmful</em>, one of the <tt>comp.unix.*</tt> FAQs, which
7068           can be found at <url id="http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/">.
7069           If an upstream package comes with <prgn>csh</prgn> scripts
7070           then you must make sure that they start with
7071           <tt>#!/bin/csh</tt> and make your package depend on the
7072           <prgn>c-shell</prgn> virtual package.
7073         </p>
7074
7075         <p>
7076           Any scripts which create files in world-writeable
7077           directories (e.g., in <file>/tmp</file>) must use a
7078           mechanism which will fail atomically if a file with the same
7079           name already exists.
7080         </p>
7081
7082         <p>
7083           The Debian base system provides the <prgn>tempfile</prgn>
7084           and <prgn>mktemp</prgn> utilities for use by scripts for
7085           this purpose.
7086         </p>
7087       </sect>
7088
7089
7090       <sect>
7091         <heading>Symbolic links</heading>
7092
7093         <p>
7094           In general, symbolic links within a top-level directory
7095           should be relative, and symbolic links pointing from one
7096           top-level directory into another should be absolute. (A
7097           top-level directory is a sub-directory of the root
7098           directory <file>/</file>.)
7099         </p>
7100
7101         <p>
7102           In addition, symbolic links should be specified as short as
7103           possible, i.e., link targets like <file>foo/../bar</file> are
7104           deprecated.
7105         </p>
7106
7107         <p>
7108           Note that when creating a relative link using
7109           <prgn>ln</prgn> it is not necessary for the target of the
7110           link to exist relative to the working directory you're
7111           running <prgn>ln</prgn> from, nor is it necessary to change
7112           directory to the directory where the link is to be made.
7113           Simply include the string that should appear as the target
7114           of the link (this will be a pathname relative to the
7115           directory in which the link resides) as the first argument
7116           to <prgn>ln</prgn>.
7117         </p>
7118
7119         <p>
7120           For example, in your <prgn>Makefile</prgn> or
7121           <file>debian/rules</file>, you can do things like:
7122           <example compact="compact">
7123 ln -fs gcc $(prefix)/bin/cc
7124 ln -fs gcc debian/tmp/usr/bin/cc
7125 ln -fs ../sbin/sendmail $(prefix)/bin/runq
7126 ln -fs ../sbin/sendmail debian/tmp/usr/bin/runq
7127           </example>
7128         </p>
7129
7130         <p>
7131           A symbolic link pointing to a compressed file should always
7132           have the same file extension as the referenced file. (For
7133           example, if a file <file>foo.gz</file> is referenced by a
7134           symbolic link, the filename of the link has to end with
7135           "<file>.gz</file>" too, as in <file>bar.gz</file>.)
7136         </p>
7137       </sect>
7138
7139       <sect>
7140         <heading>Device files</heading>
7141
7142         <p>
7143           Packages must not include device files in the package file
7144           tree.
7145         </p>
7146
7147         <p>
7148           If a package needs any special device files that are not
7149           included in the base system, it must call
7150           <prgn>MAKEDEV</prgn> in the <prgn>postinst</prgn> script,
7151           after notifying the user<footnote>
7152               This notification could be done via a (low-priority)
7153               debconf message, or an echo (printf) statement.
7154           </footnote>.
7155         </p>
7156
7157         <p>
7158           Packages must not remove any device files in the
7159           <prgn>postrm</prgn> or any other script. This is left to the
7160           system administrator.
7161         </p>
7162
7163         <p>
7164           Debian uses the serial devices
7165           <file>/dev/ttyS*</file>. Programs using the old
7166           <file>/dev/cu*</file> devices should be changed to use
7167           <file>/dev/ttyS*</file>.
7168         </p>
7169       </sect>
7170
7171       <sect id="config-files">
7172         <heading>Configuration files</heading>
7173
7174         <sect1>
7175           <heading>Definitions</heading>
7176
7177           <p>
7178             <taglist>
7179               <tag>configuration file</tag>
7180               <item>
7181                   A file that affects the operation of a program, or
7182                   provides site- or host-specific information, or
7183                   otherwise customizes the behavior of a program.
7184                   Typically, configuration files are intended to be
7185                   modified by the system administrator (if needed or
7186                   desired) to conform to local policy or to provide
7187                   more useful site-specific behavior.
7188               </item>
7189
7190               <tag><tt>conffile</tt></tag>
7191               <item>
7192                   A file listed in a package's <tt>conffiles</tt>
7193                   file, and is treated specially by <prgn>dpkg</prgn>
7194                   (see <ref id="configdetails">).
7195               </item>
7196             </taglist>
7197           </p>
7198
7199           <p>
7200             The distinction between these two is important; they are
7201             not interchangeable concepts. Almost all
7202             <tt>conffile</tt>s are configuration files, but many
7203             configuration files are not <tt>conffiles</tt>.
7204           </p>
7205
7206           <p>
7207             As noted elsewhere, <file>/etc/init.d</file> scripts,
7208             <file>/etc/default</file> files, scripts installed in
7209             <file>/etc/cron.{hourly,daily,weekly,monthly}</file>, and cron
7210             configuration installed in <file>/etc/cron.d</file> must be
7211             treated as configuration files.  In general, any script that
7212             embeds configuration information is de-facto a configuration
7213             file and should be treated as such.
7214           </p>
7215         </sect1>
7216
7217         <sect1>
7218           <heading>Location</heading>
7219
7220           <p>
7221             Any configuration files created or used by your package
7222             must reside in <file>/etc</file>. If there are several,
7223             consider creating a subdirectory of <file>/etc</file>
7224             named after your package.
7225           </p>
7226
7227           <p>
7228             If your package creates or uses configuration files
7229             outside of <file>/etc</file>, and it is not feasible to modify
7230             the package to use <file>/etc</file> directly, put the files
7231             in <file>/etc</file> and create symbolic links to those files
7232             from the location that the package requires.
7233           </p>
7234         </sect1>
7235
7236         <sect1>
7237           <heading>Behavior</heading>
7238
7239           <p>
7240             Configuration file handling must conform to the following
7241             behavior:
7242             <list compact="compact">
7243               <item>
7244                   local changes must be preserved during a package
7245                   upgrade, and
7246               </item>
7247               <item>
7248                   configuration files must be preserved when the
7249                   package is removed, and only deleted when the
7250                   package is purged.
7251               </item>
7252             </list>
7253           </p>
7254
7255           <p>
7256             The easy way to achieve this behavior is to make the
7257             configuration file a <tt>conffile</tt>. This is
7258             appropriate only if it is possible to distribute a default
7259             version that will work for most installations, although
7260             some system administrators may choose to modify it. This
7261             implies that the default version will be part of the
7262             package distribution, and must not be modified by the
7263             maintainer scripts during installation (or at any other
7264             time).
7265           </p>
7266
7267           <p>
7268             In order to ensure that local changes are preserved
7269             correctly, no package may contain or make hard links to
7270             conffiles.<footnote>
7271                 Rationale: There are two problems with hard links.
7272                 The first is that some editors break the link while
7273                 editing one of the files, so that the two files may
7274                 unwittingly become unlinked and different.  The second
7275                 is that <prgn>dpkg</prgn> might break the hard link
7276                 while upgrading <tt>conffile</tt>s.
7277             </footnote>
7278           </p>
7279
7280           <p>
7281             The other way to do it is via the maintainer scripts.  In
7282             this case, the configuration file must not be listed as a
7283             <tt>conffile</tt> and must not be part of the package
7284             distribution. If the existence of a file is required for
7285             the package to be sensibly configured it is the
7286             responsibility of the package maintainer to provide
7287             maintainer scripts which correctly create, update and
7288             maintain the file and remove it on purge.  (See <ref
7289             id="maintainerscripts"> for more information.)  These
7290             scripts must be idempotent (i.e., must work correctly if
7291             <prgn>dpkg</prgn> needs to re-run them due to errors
7292             during installation or removal), must cope with all the
7293             variety of ways <prgn>dpkg</prgn> can call maintainer
7294             scripts, must not overwrite or otherwise mangle the user's
7295             configuration without asking, must not ask unnecessary
7296             questions (particularly during upgrades), and must
7297             otherwise be good citizens.
7298           </p>
7299
7300           <p>
7301             The scripts are not required to configure every possible
7302             option for the package, but only those necessary to get
7303             the package running on a given system. Ideally the
7304             sysadmin should not have to do any configuration other
7305             than that done (semi-)automatically by the
7306             <prgn>postinst</prgn> script.
7307           </p>
7308
7309           <p>
7310             A common practice is to create a script called
7311             <file><var>package</var>-configure</file> and have the
7312             package's <prgn>postinst</prgn> call it if and only if the
7313             configuration file does not already exist.  In certain
7314             cases it is useful for there to be an example or template
7315             file which the maintainer scripts use.  Such files should
7316             be in <file>/usr/share/<var>package</var></file> or
7317             <file>/usr/lib/<var>package</var></file> (depending on whether
7318             they are architecture-independent or not).  There should
7319             be symbolic links to them from
7320             <file>/usr/share/doc/<var>package</var>/examples</file> if
7321             they are examples, and should be perfectly ordinary
7322             <prgn>dpkg</prgn>-handled files (<em>not</em>
7323             configuration files).
7324           </p>
7325
7326           <p>
7327             These two styles of configuration file handling must
7328             not be mixed, for that way lies madness:
7329             <prgn>dpkg</prgn> will ask about overwriting the file
7330             every time the package is upgraded.
7331           </p>
7332         </sect1>
7333
7334         <sect1>
7335           <heading>Sharing configuration files</heading>
7336
7337           <p>
7338             Packages which specify the same file as a
7339             <tt>conffile</tt> must be tagged as <em>conflicting</em>
7340             with each other.  (This is an instance of the general rule
7341             about not sharing files.  Note that neither alternatives
7342             nor diversions are likely to be appropriate in this case;
7343             in particular, <prgn>dpkg</prgn> does not handle diverted
7344             <tt>conffile</tt>s well.)
7345           </p>
7346
7347           <p>
7348             The maintainer scripts must not alter a <tt>conffile</tt>
7349             of <em>any</em> package, including the one the scripts
7350             belong to.
7351           </p>
7352
7353           <p>
7354             If two or more packages use the same configuration file
7355             and it is reasonable for both to be installed at the same
7356             time, one of these packages must be defined as
7357             <em>owner</em> of the configuration file, i.e., it will be
7358             the package which handles that file as a configuration
7359             file.  Other packages that use the configuration file must
7360             depend on the owning package if they require the
7361             configuration file to operate. If the other package will
7362             use the configuration file if present, but is capable of
7363             operating without it, no dependency need be declared.
7364           </p>
7365
7366           <p>
7367             If it is desirable for two or more related packages to
7368             share a configuration file <em>and</em> for all of the
7369             related packages to be able to modify that configuration
7370             file, then the following should be done:
7371             <enumlist compact="compact">
7372               <item>
7373                   One of the related packages (the "owning" package)
7374                   will manage the configuration file with maintainer
7375                   scripts as described in the previous section.
7376               </item>
7377               <item>
7378                   The owning package should also provide a program
7379                   that the other packages may use to modify the
7380                   configuration file.
7381               </item>
7382               <item>
7383                   The related packages must use the provided program
7384                   to make any desired modifications to the
7385                   configuration file.  They should either depend on
7386                   the core package to guarantee that the configuration
7387                   modifier program is available or accept gracefully
7388                   that they cannot modify the configuration file if it
7389                   is not.  (This is in addition to the fact that the
7390                   configuration file may not even be present in the
7391                   latter scenario.)
7392               </item>
7393             </enumlist>
7394           </p>
7395
7396           <p>
7397             Sometimes it's appropriate to create a new package which
7398             provides the basic infrastructure for the other packages
7399             and which manages the shared configuration files.  (The
7400             <tt>sgml-base</tt> package is a good example.)
7401           </p>
7402         </sect1>
7403
7404         <sect1>
7405           <heading>User configuration files ("dotfiles")</heading>
7406
7407           <p>
7408             The files in <file>/etc/skel</file> will automatically be
7409             copied into new user accounts by <prgn>adduser</prgn>.
7410             No other program should reference the files in
7411             <file>/etc/skel</file>.
7412           </p>
7413
7414           <p>
7415             Therefore, if a program needs a dotfile to exist in
7416             advance in <file>$HOME</file> to work sensibly, that dotfile
7417             should be installed in <file>/etc/skel</file> and treated as a
7418             configuration file.
7419           </p>
7420
7421           <p>
7422             However, programs that require dotfiles in order to
7423             operate sensibly are a bad thing, unless they do create
7424             the dotfiles themselves automatically.
7425           </p>
7426
7427           <p>
7428             Furthermore, programs should be configured by the Debian
7429             default installation to behave as closely to the upstream
7430             default behavior as possible.
7431           </p>
7432
7433           <p>
7434             Therefore, if a program in a Debian package needs to be
7435             configured in some way in order to operate sensibly, that
7436             should be done using a site-wide configuration file placed
7437             in <file>/etc</file>.  Only if the program doesn't support a
7438             site-wide default configuration and the package maintainer
7439             doesn't have time to add it may a default per-user file be
7440             placed in <file>/etc/skel</file>.
7441           </p>
7442
7443           <p>
7444             <file>/etc/skel</file> should be as empty as we can make it.
7445             This is particularly true because there is no easy (or
7446             necessarily desirable) mechanism for ensuring that the
7447             appropriate dotfiles are copied into the accounts of
7448             existing users when a package is installed.
7449           </p>
7450         </sect1>
7451       </sect>
7452
7453       <sect>
7454         <heading>Log files</heading>
7455         <p>
7456           Log files should usually be named
7457           <file>/var/log/<var>package</var>.log</file>.  If you have many
7458           log files, or need a separate directory for permission
7459           reasons (<file>/var/log</file> is writable only by
7460           <file>root</file>), you should usually create a directory named
7461           <file>/var/log/<var>package</var></file> and place your log
7462           files there.
7463         </p>
7464
7465         <p>
7466           Log files must be rotated occasionally so that they don't
7467           grow indefinitely; the best way to do this is to drop a log
7468           rotation configuration file into the directory
7469           <file>/etc/logrotate.d</file> and use the facilities provided by
7470           logrotate.<footnote>
7471             <p>
7472               The traditional approach to log files has been to set up
7473               <em>ad hoc</em> log rotation schemes using simple shell
7474               scripts and cron.  While this approach is highly
7475               customizable, it requires quite a lot of sysadmin work.
7476               Even though the original Debian system helped a little
7477               by automatically installing a system which can be used
7478               as a template, this was deemed not enough.
7479             </p>
7480
7481             <p>
7482               The use of <prgn>logrotate</prgn>, a program developed
7483               by Red Hat, is better, as it centralizes log management.
7484               It has both a configuration file
7485               (<file>/etc/logrotate.conf</file>) and a directory where
7486               packages can drop their individual log rotation
7487               configurations (<file>/etc/logrotate.d</file>).
7488             </p>
7489           </footnote>
7490           Here is a good example for a logrotate config
7491           file (for more information see <manref name="logrotate"
7492             section="8">):
7493           <example compact="compact">
7494 /var/log/foo/*.log {
7495 rotate 12
7496 weekly
7497 compress
7498 postrotate
7499 /etc/init.d/foo force-reload
7500 endscript
7501 }
7502           </example>
7503           This rotates all files under <file>/var/log/foo</file>, saves 12
7504           compressed generations, and forces the daemon to reload its
7505           configuration information after the log rotation.
7506         </p>
7507
7508         <p>
7509           Log files should be removed when the package is
7510           purged (but not when it is only removed).  This should be
7511           done by the <prgn>postrm</prgn> script when it is called
7512           with the argument <tt>purge</tt> (see <ref
7513           id="removedetails">).
7514         </p>
7515       </sect>
7516
7517       <sect>
7518         <heading>Permissions and owners</heading>
7519
7520         <p>
7521           The rules in this section are guidelines for general use.
7522           If necessary you may deviate from the details below.
7523           However, if you do so you must make sure that what is done
7524           is secure and you should try to be as consistent as possible
7525           with the rest of the system.  You should probably also
7526           discuss it on <prgn>debian-devel</prgn> first.
7527         </p>
7528
7529         <p>
7530           Files should be owned by <tt>root:root</tt>, and made
7531           writable only by the owner and universally readable (and
7532           executable, if appropriate), that is mode 644 or 755.
7533         </p>
7534
7535         <p>
7536           Directories should be mode 755 or (for group-writability)
7537           mode 2775.  The ownership of the directory should be
7538           consistent with its mode: if a directory is mode 2775, it
7539           should be owned by the group that needs write access to
7540           it.<footnote>
7541             <p>
7542               When a package is upgraded, and the owner or permissions
7543               of a file included in the package has changed, dpkg
7544               arranges for the ownership and permissions to be
7545               correctly set upon installation. However, this does not
7546               extend to directories; the permissions and ownership of
7547               directories already on the system does not change on
7548               install or upgrade of packages.  This makes sense, since
7549               otherwise common directories like <tt>/usr</tt> would
7550               always be in flux.  To correctly change permissions of a
7551               directory the package owns, explicit action is required,
7552               usually in the <tt>postinst</tt> script. Care must be
7553               taken to handle downgrades as well, in that case.
7554             </p>
7555           </footnote>
7556         </p>
7557
7558
7559         <p>
7560           Setuid and setgid executables should be mode 4755 or 2755
7561           respectively, and owned by the appropriate user or group.
7562           They should not be made unreadable (modes like 4711 or
7563           2711 or even 4111); doing so achieves no extra security,
7564           because anyone can find the binary in the freely available
7565           Debian package; it is merely inconvenient.  For the same
7566           reason you should not restrict read or execute permissions
7567           on non-set-id executables.
7568         </p>
7569
7570         <p>
7571           Some setuid programs need to be restricted to particular
7572           sets of users, using file permissions.  In this case they
7573           should be owned by the uid to which they are set-id, and by
7574           the group which should be allowed to execute them.  They
7575           should have mode 4754; again there is no point in making
7576           them unreadable to those users who must not be allowed to
7577           execute them.
7578         </p>
7579
7580         <p>
7581           It is possible to arrange that the system administrator can
7582           reconfigure the package to correspond to their local
7583           security policy by changing the permissions on a binary:
7584           they can do this by using <prgn>dpkg-statoverride</prgn>, as
7585           described below.<footnote>
7586               Ordinary files installed by <prgn>dpkg</prgn> (as
7587               opposed to <tt>conffile</tt>s and other similar objects)
7588               normally have their permissions reset to the distributed
7589               permissions when the package is reinstalled.  However,
7590               the use of <prgn>dpkg-statoverride</prgn> overrides this
7591               default behavior.  If you use this method, you should
7592               remember to describe <prgn>dpkg-statoverride</prgn> in
7593               the package documentation; being a relatively new
7594               addition to Debian, it is probably not yet well-known.
7595           </footnote>
7596           Another method you should consider is to create a group for
7597           people allowed to use the program(s) and make any setuid
7598           executables executable only by that group.
7599         </p>
7600
7601         <p>
7602           If you need to create a new user or group for your package
7603           there are two possibilities.  Firstly, you may need to
7604           make some files in the binary package be owned by this
7605           user or group, or you may need to compile the user or
7606           group id (rather than just the name) into the binary
7607           (though this latter should be avoided if possible, as in
7608           this case you need a statically allocated id).</p>
7609
7610         <p>
7611           If you need a statically allocated id, you must ask for a
7612           user or group id from the <tt>base-passwd</tt> maintainer,
7613           and must not release the package until you have been
7614           allocated one.  Once you have been allocated one you must
7615           either make the package depend on a version of the
7616           <tt>base-passwd</tt> package with the id present in
7617           <file>/etc/passwd</file> or <file>/etc/group</file>, or arrange for
7618           your package to create the user or group itself with the
7619           correct id (using <tt>adduser</tt>) in its
7620           <prgn>preinst</prgn> or <prgn>postinst</prgn>.  (Doing it in
7621           the <prgn>postinst</prgn> is to be preferred if it is
7622           possible, otherwise a pre-dependency will be needed on the
7623           <tt>adduser</tt> package.)
7624         </p>
7625
7626         <p>
7627           On the other hand, the program might be able to determine
7628           the uid or gid from the user or group name at runtime, so
7629           that a dynamically allocated id can be used.  In this case
7630           you should choose an appropriate user or group name,
7631           discussing this on <prgn>debian-devel</prgn> and checking
7632           with the <package/base-passwd/ maintainer that it is unique and that
7633           they do not wish you to use a statically allocated id
7634           instead.  When this has been checked you must arrange for
7635           your package to create the user or group if necessary using
7636           <prgn>adduser</prgn> in the <prgn>preinst</prgn> or
7637           <prgn>postinst</prgn> script (again, the latter is to be
7638           preferred if it is possible).
7639         </p>
7640
7641         <p>
7642           Note that changing the numeric value of an id associated
7643           with a name is very difficult, and involves searching the
7644           file system for all appropriate files.  You need to think
7645           carefully whether a static or dynamic id is required, since
7646           changing your mind later will cause problems.
7647         </p>
7648
7649         <sect1><heading>The use of <prgn>dpkg-statoverride</prgn></heading>
7650           <p>
7651             This section is not intended as policy, but as a
7652             description of the use of <prgn>dpkg-statoverride</prgn>.
7653           </p>
7654
7655           <p>
7656             If a system administrator wishes to have a file (or
7657             directory or other such thing) installed with owner and
7658             permissions different from those in the distributed Debian
7659             package, they can use the <prgn>dpkg-statoverride</prgn>
7660             program to instruct <prgn>dpkg</prgn> to use the different
7661             settings every time the file is installed.  Thus the
7662             package maintainer should distribute the files with their
7663             normal permissions, and leave it for the system
7664             administrator to make any desired changes.  For example, a
7665             daemon which is normally required to be setuid root, but
7666             in certain situations could be used without being setuid,
7667             should be installed setuid in the <tt>.deb</tt>.  Then the
7668             local system administrator can change this if they wish.
7669             If there are two standard ways of doing it, the package
7670             maintainer can use <tt>debconf</tt> to find out the
7671             preference, and call <prgn>dpkg-statoverride</prgn> in the
7672             maintainer script if necessary to accommodate the system
7673             administrator's choice. Care must be taken during
7674             upgrades to not override an existing setting.
7675           </p>
7676
7677           <p>
7678             Given the above, <prgn>dpkg-statoverride</prgn> is
7679             essentially a tool for system administrators and would not
7680             normally be needed in the maintainer scripts.  There is
7681             one type of situation, though, where calls to
7682             <prgn>dpkg-statoverride</prgn> would be needed in the
7683             maintainer scripts, and that involves packages which use
7684             dynamically allocated user or group ids.  In such a
7685             situation, something like the following idiom can be very
7686             helpful in the package's <prgn>postinst</prgn>, where
7687             <tt>sysuser</tt> is a dynamically allocated id:
7688             <example>
7689 for i in /usr/bin/foo /usr/sbin/bar
7690 do
7691   # only do something when no setting exists
7692   if ! dpkg-statoverride --list $i >/dev/null 2>&1
7693   then
7694     #include: debconf processing, question about foo and bar
7695     if [ "$RET" = "true" ] ; then
7696       dpkg-statoverride --update --add sysuser root 4755 $i
7697     fi
7698   fi
7699 done
7700             </example>
7701             The corresponding <tt>dpkg-statoverride --remove</tt>
7702             calls can then be made unconditionally when the package is
7703             purged.
7704           </p>
7705         </sect1>
7706       </sect>
7707     </chapt>
7708
7709
7710     <chapt id="customized-programs">
7711       <heading>Customized programs</heading>
7712
7713       <sect id="arch-spec">
7714         <heading>Architecture specification strings</heading>
7715
7716         <p>
7717           If a program needs to specify an <em>architecture specification
7718             string</em> in some place, it should select one of the
7719           strings provided by <tt>dpkg-architecture -L</tt>. The
7720           strings are in the format
7721           <tt><var>os</var>-<var>arch</var></tt>, though the OS part
7722           is sometimes elided, as when the OS is Linux.<footnote>
7723             <p>Currently, the strings are:
7724               i386 ia64 alpha amd64 armeb arm hppa m32r m68k mips
7725               mipsel powerpc ppc64 s390 s390x sh3 sh3eb sh4 sh4eb
7726               sparc darwin-i386 darwin-ia64 darwin-alpha darwin-amd64
7727               darwin-armeb darwin-arm darwin-hppa darwin-m32r
7728               darwin-m68k darwin-mips darwin-mipsel darwin-powerpc
7729               darwin-ppc64 darwin-s390 darwin-s390x darwin-sh3
7730               darwin-sh3eb darwin-sh4 darwin-sh4eb darwin-sparc
7731               freebsd-i386 freebsd-ia64 freebsd-alpha freebsd-amd64
7732               freebsd-armeb freebsd-arm freebsd-hppa freebsd-m32r
7733               freebsd-m68k freebsd-mips freebsd-mipsel freebsd-powerpc
7734               freebsd-ppc64 freebsd-s390 freebsd-s390x freebsd-sh3
7735               freebsd-sh3eb freebsd-sh4 freebsd-sh4eb freebsd-sparc
7736               kfreebsd-i386 kfreebsd-ia64 kfreebsd-alpha
7737               kfreebsd-amd64 kfreebsd-armeb kfreebsd-arm kfreebsd-hppa
7738               kfreebsd-m32r kfreebsd-m68k kfreebsd-mips
7739               kfreebsd-mipsel kfreebsd-powerpc kfreebsd-ppc64
7740               kfreebsd-s390 kfreebsd-s390x kfreebsd-sh3 kfreebsd-sh3eb
7741               kfreebsd-sh4 kfreebsd-sh4eb kfreebsd-sparc knetbsd-i386
7742               knetbsd-ia64 knetbsd-alpha knetbsd-amd64 knetbsd-armeb
7743               knetbsd-arm knetbsd-hppa knetbsd-m32r knetbsd-m68k
7744               knetbsd-mips knetbsd-mipsel knetbsd-powerpc
7745               knetbsd-ppc64 knetbsd-s390 knetbsd-s390x knetbsd-sh3
7746               knetbsd-sh3eb knetbsd-sh4 knetbsd-sh4eb knetbsd-sparc
7747               netbsd-i386 netbsd-ia64 netbsd-alpha netbsd-amd64
7748               netbsd-armeb netbsd-arm netbsd-hppa netbsd-m32r
7749               netbsd-m68k netbsd-mips netbsd-mipsel netbsd-powerpc
7750               netbsd-ppc64 netbsd-s390 netbsd-s390x netbsd-sh3
7751               netbsd-sh3eb netbsd-sh4 netbsd-sh4eb netbsd-sparc
7752               openbsd-i386 openbsd-ia64 openbsd-alpha openbsd-amd64
7753               openbsd-armeb openbsd-arm openbsd-hppa openbsd-m32r
7754               openbsd-m68k openbsd-mips openbsd-mipsel openbsd-powerpc
7755               openbsd-ppc64 openbsd-s390 openbsd-s390x openbsd-sh3
7756               openbsd-sh3eb openbsd-sh4 openbsd-sh4eb openbsd-sparc
7757               hurd-i386 hurd-ia64 hurd-alpha hurd-amd64 hurd-armeb
7758               hurd-arm hurd-hppa hurd-m32r hurd-m68k hurd-mips
7759               hurd-mipsel hurd-powerpc hurd-ppc64 hurd-s390 hurd-s390x
7760               hurd-sh3 hurd-sh3eb hurd-sh4 hurd-sh4eb hurd-sparc
7761             </p>
7762           </footnote>
7763         </p>
7764
7765         <p>
7766           Note that we don't want to use
7767           <tt><var>arch</var>-debian-linux</tt> to apply to the rule
7768           <tt><var>architecture</var>-<var>vendor</var>-<var>os</var></tt>
7769           since this would make our programs incompatible with other
7770           Linux distributions.  We also don't use something like
7771           <tt><var>arch</var>-unknown-linux</tt>, since the
7772           <tt>unknown</tt> does not look very good.
7773         </p>
7774       </sect>
7775
7776       <sect>
7777         <heading>Daemons</heading>
7778
7779         <p>
7780           The configuration files <file>/etc/services</file>,
7781           <file>/etc/protocols</file>, and <file>/etc/rpc</file> are managed
7782           by the <prgn>netbase</prgn> package and must not be modified
7783           by other packages.
7784         </p>
7785
7786         <p>
7787           If a package requires a new entry in one of these files, the
7788           maintainer should get in contact with the
7789           <prgn>netbase</prgn> maintainer, who will add the entries
7790           and release a new version of the <prgn>netbase</prgn>
7791           package.
7792         </p>
7793
7794         <p>
7795           The configuration file <file>/etc/inetd.conf</file> must not be
7796           modified by the package's scripts except via the
7797           <prgn>update-inetd</prgn> script or the
7798           <file>DebianNet.pm</file> Perl module.  See their documentation
7799           for details on how to add entries.
7800         </p>
7801
7802         <p>
7803           If a package wants to install an example entry into
7804           <file>/etc/inetd.conf</file>, the entry must be preceded with
7805           exactly one hash character (<tt>#</tt>). Such lines are
7806           treated as "commented out by user" by the
7807           <prgn>update-inetd</prgn> script and are not changed or
7808           activated during package updates.
7809         </p>
7810       </sect>
7811
7812       <sect>
7813         <heading>Using pseudo-ttys and modifying wtmp, utmp and
7814         lastlog</heading>
7815
7816         <p>
7817           Some programs need to create pseudo-ttys. This should be done
7818           using Unix98 ptys if the C library supports it. The resulting
7819           program must not be installed setuid root, unless that
7820           is required for other functionality.
7821         </p>
7822
7823         <p>
7824           The files <file>/var/run/utmp</file>, <file>/var/log/wtmp</file> and
7825           <file>/var/log/lastlog</file> must be installed writable by
7826           group <tt>utmp</tt>.  Programs which need to modify those
7827           files must be installed setgid <tt>utmp</tt>.
7828         </p>
7829       </sect>
7830
7831       <sect>
7832         <heading>Editors and pagers</heading>
7833
7834         <p>
7835           Some programs have the ability to launch an editor or pager
7836           program to edit or display a text document.  Since there are
7837           lots of different editors and pagers available in the Debian
7838           distribution, the system administrator and each user should
7839           have the possibility to choose their preferred editor and
7840           pager.
7841         </p>
7842
7843         <p>
7844           In addition, every program should choose a good default
7845           editor/pager if none is selected by the user or system
7846           administrator.
7847         </p>
7848
7849         <p>
7850           Thus, every program that launches an editor or pager must
7851           use the EDITOR or PAGER environment variable to determine
7852           the editor or pager the user wishes to use.  If these
7853           variables are not set, the programs <file>/usr/bin/editor</file>
7854           and <file>/usr/bin/pager</file> should be used, respectively.
7855         </p>
7856
7857         <p>
7858           These two files are managed through the <prgn>dpkg</prgn>
7859           "alternatives" mechanism.  Thus every package providing an
7860           editor or pager must call the
7861           <prgn>update-alternatives</prgn> script to register these
7862           programs.
7863         </p>
7864
7865         <p>
7866           If it is very hard to adapt a program to make use of the
7867           EDITOR or PAGER variables, that program may be configured to
7868           use <file>/usr/bin/sensible-editor</file> and
7869           <file>/usr/bin/sensible-pager</file> as the editor or pager
7870           program respectively.  These are two scripts provided in the
7871           Debian base system that check the EDITOR and PAGER variables
7872           and launch the appropriate program, and fall back to
7873           <file>/usr/bin/editor</file> and <file>/usr/bin/pager</file> if the
7874           variable is not set.
7875         </p>
7876
7877         <p>
7878           A program may also use the VISUAL environment variable to
7879           determine the user's choice of editor.  If it exists, it
7880           should take precedence over EDITOR.  This is in fact what
7881           <file>/usr/bin/sensible-editor</file> does.
7882         </p>
7883
7884         <p>
7885           It is not required for a package to depend on
7886           <tt>editor</tt> and <tt>pager</tt>, nor is it required for a
7887           package to provide such virtual packages.<footnote>
7888               The Debian base system already provides an editor and a
7889               pager program.
7890           </footnote>
7891         </p>
7892       </sect>
7893
7894       <sect id="web-appl">
7895         <heading>Web servers and applications</heading>
7896
7897         <p>
7898           This section describes the locations and URLs that should
7899           be used by all web servers and web applications in the
7900           Debian system.
7901         </p>
7902
7903         <p>
7904           <enumlist>
7905             <item>
7906                 Cgi-bin executable files are installed in the
7907                 directory
7908                 <example compact="compact">
7909 /usr/lib/cgi-bin/<var>cgi-bin-name</var>
7910                 </example>
7911                 and should be referred to as
7912                 <example compact="compact">
7913 http://localhost/cgi-bin/<var>cgi-bin-name</var>
7914                 </example>
7915
7916             </item>
7917
7918             <item>
7919               <p>Access to HTML documents</p>
7920
7921               <p>
7922                 HTML documents for a package are stored in
7923                 <file>/usr/share/doc/<var>package</var></file>
7924                 and can be referred to as
7925                 <example compact="compact">
7926 http://localhost/doc/<var>package</var>/<var>filename</var>
7927                 </example>
7928               </p>
7929
7930               <p>
7931                 The web server should restrict access to the document
7932                 tree so that only clients on the same host can read
7933                 the documents. If the web server does not support such
7934                 access controls, then it should not provide access at
7935                 all, or ask about providing access during installation.
7936               </p>
7937             </item>
7938
7939             <item>
7940               <p>Access to images</p>
7941               <p>
7942                 It is recommended that images for a package be stored
7943                 in <tt>/usr/share/images/<var>package</var></tt> and
7944                 may be referred to through an alias <tt>/images/</tt>
7945                 as
7946                 <example>
7947                   http://localhost/images/&lt;package&gt;/&lt;filename&gt;     
7948                 </example>
7949                 
7950               </p>
7951             </item>
7952
7953             <item>
7954               <p>Web Document Root</p>
7955
7956               <p>
7957                 Web Applications should try to avoid storing files in
7958                 the Web Document Root.  Instead they should use the
7959                 /usr/share/doc/<var>package</var> directory for
7960                 documents and register the Web Application via the
7961                 <package>doc-base</package> package.  If access to the
7962                 web document root is unavoidable then use
7963                 <example compact="compact">
7964 /var/www
7965                 </example>
7966                 as the Document Root.  This might be just a symbolic
7967                 link to the location where the system administrator
7968                 has put the real document root.
7969               </p>
7970             </item>
7971             <item><p>Providing httpd and/or httpd-cgi</p>
7972               <p>
7973                 All web servers should provide the virtual package
7974                 <tt>httpd</tt>. If a web server has CGI support it should
7975                 provide <tt>httpd-cgi</tt> additionally.
7976               </p>
7977               <p>
7978                 All web applications which do not contain CGI scripts should
7979                 depend on <tt>httpd</tt>, all those web applications which
7980                 <tt>do</tt> contain CGI scripts, should depend on
7981                 <tt>httpd-cgi</tt>.
7982               </p>
7983             </item>
7984           </enumlist>
7985         </p>
7986       </sect>
7987
7988       <sect id="mail-transport-agents">
7989         <heading>Mail transport, delivery and user agents</heading>
7990
7991         <p>
7992           Debian packages which process electronic mail, whether mail
7993           user agents (MUAs) or mail transport agents (MTAs), must
7994           ensure that they are compatible with the configuration
7995           decisions below.  Failure to do this may result in lost
7996           mail, broken <tt>From:</tt> lines, and other serious brain
7997           damage!
7998         </p>
7999
8000         <p>
8001           The mail spool is <file>/var/mail</file> and the interface to
8002           send a mail message is <file>/usr/sbin/sendmail</file> (as per
8003           the FHS).  On older systems, the mail spool may be
8004           physically located in <file>/var/spool/mail</file>, but all
8005           access to the mail spool should be via the
8006           <file>/var/mail</file> symlink.  The mail spool is part of the
8007           base system and not part of the MTA package.
8008         </p>
8009
8010         <p>
8011           All Debian MUAs, MTAs, MDAs and other mailbox accessing
8012           programs (such as IMAP daemons) must lock the mailbox in an
8013           NFS-safe way. This means that <tt>fcntl()</tt> locking must
8014           be combined with dot locking.  To avoid deadlocks, a program
8015           should use <tt>fcntl()</tt> first and dot locking after
8016           this, or alternatively implement the two locking methods in
8017           a non blocking way<footnote>
8018               If it is not possible to establish both locks, the
8019               system shouldn't wait for the second lock to be
8020               established, but remove the first lock, wait a (random)
8021               time, and start over locking again.
8022           </footnote>. Using the functions <tt>maillock</tt> and
8023           <tt>mailunlock</tt> provided by the
8024           <tt>liblockfile*</tt><footnote>
8025               You will need to depend on <tt>liblockfile1 (&gt;&gt;1.01)</tt>
8026               to use these functions.
8027           </footnote> packages is the recommended way to realize this.
8028         </p>
8029
8030         <p>
8031           Mailboxes are generally mode 660
8032           <tt><var>user</var>:mail</tt> unless the system
8033           administrator has chosen otherwise.  A MUA may remove a
8034           mailbox (unless it has nonstandard permissions) in which
8035           case the MTA or another MUA must recreate it if needed.
8036           Mailboxes must be writable by group mail.
8037         </p>
8038
8039         <p>
8040           The mail spool is 2775 <tt>root:mail</tt>, and MUAs should
8041           be setgid mail to do the locking mentioned above (and
8042           must obviously avoid accessing other users' mailboxes
8043           using this privilege).</p>
8044
8045         <p>
8046           <file>/etc/aliases</file> is the source file for the system mail
8047           aliases (e.g., postmaster, usenet, etc.), it is the one
8048           which the sysadmin and <prgn>postinst</prgn> scripts may
8049           edit.  After <file>/etc/aliases</file> is edited the program or
8050           human editing it must call <prgn>newaliases</prgn>.  All MTA
8051           packages must come with a <prgn>newaliases</prgn> program,
8052           even if it does nothing, but older MTA packages did not do
8053           this so programs should not fail if <prgn>newaliases</prgn>
8054           cannot be found.  Note that because of this, all MTA
8055           packages must have <tt>Provides</tt>, <tt>Conflicts</tt> and
8056           <tt>Replaces: mail-transport-agent</tt> control file
8057           fields.
8058         </p>
8059
8060         <p>
8061           The convention of writing <tt>forward to
8062             <var>address</var></tt> in the mailbox itself is not
8063           supported.  Use a <tt>.forward</tt> file instead.</p>
8064
8065         <p>
8066           The <prgn>rmail</prgn> program used by UUCP
8067           for incoming mail should be  <file>/usr/sbin/rmail</file>.
8068           Likewise, <prgn>rsmtp</prgn>, for receiving
8069           batch-SMTP-over-UUCP, should be <file>/usr/sbin/rsmtp</file> if it
8070           is supported.</p>
8071
8072         <p>
8073           If your package needs to know what hostname to use on (for
8074           example) outgoing news and mail messages which are generated
8075           locally, you should use the file <file>/etc/mailname</file>.  It
8076           will contain the portion after the username and <tt>@</tt>
8077           (at) sign for email addresses of users on the machine
8078           (followed by a newline).
8079         </p>
8080
8081         <p>
8082           Such a package should check for the existence of this file
8083           when it is being configured.  If it exists, it should be
8084           used without comment, although an MTA's configuration script
8085           may wish to prompt the user even if it finds that this file
8086           exists.  If the file does not exist, the package should
8087           prompt the user for the value (preferably using
8088           <prgn>debconf</prgn>) and store it in <file>/etc/mailname</file>
8089           as well as using it in the package's configuration.  The
8090           prompt should make it clear that the name will not just be
8091           used by that package.  For example, in this situation the
8092           <tt>inn</tt> package could say something like:
8093           <example compact="compact">
8094 Please enter the "mail name" of your system.  This is the
8095 hostname portion of the address to be shown on outgoing
8096 news and mail messages.  The default is
8097 <var>syshostname</var>, your system's host name.  Mail
8098 name ["<var>syshostname</var>"]:
8099           </example>
8100           where <var>syshostname</var> is the output of <tt>hostname
8101             --fqdn</tt>.
8102         </p>
8103       </sect>
8104
8105       <sect>
8106         <heading>News system configuration</heading>
8107
8108         <p>
8109           All the configuration files related to the NNTP (news)
8110           servers and clients should be located under
8111           <file>/etc/news</file>.</p>
8112
8113         <p>
8114           There are some configuration issues that apply to a number
8115           of news clients and server packages on the machine. These
8116           are:
8117
8118           <taglist>
8119             <tag><file>/etc/news/organization</file></tag>
8120             <item>
8121                 A string which should appear as the
8122                 organization header for all messages posted
8123                 by NNTP clients on the machine
8124             </item>
8125
8126             <tag><file>/etc/news/server</file></tag>
8127             <item>
8128                 Contains the FQDN of the upstream NNTP
8129                 server, or localhost if the local machine is
8130                 an NNTP server.
8131             </item>
8132           </taglist>
8133
8134           Other global files may be added as required for cross-package news
8135           configuration.
8136         </p>
8137       </sect>
8138
8139
8140       <sect>
8141         <heading>Programs for the X Window System</heading>
8142
8143         <sect1>
8144           <heading>Providing X support and package priorities</heading>
8145
8146           <p>
8147             Programs that can be configured with support for the X
8148             Window System must be configured to do so and must declare
8149             any package dependencies necessary to satisfy their
8150             runtime requirements when using the X Window System.  If
8151             such a package is of higher priority than the X packages
8152             on which it depends, it is required that either the
8153             X-specific components be split into a separate package, or
8154             that an alternative version of the package, which includes
8155             X support, be provided, or that the package's priority be
8156             lowered.
8157           </p>
8158         </sect1>
8159
8160         <sect1>
8161           <heading>Packages providing an X server</heading>
8162
8163           <p>
8164             Packages that provide an X server that, directly or
8165             indirectly, communicates with real input and display
8166             hardware should declare in their control data that they
8167             provide the virtual package <tt>xserver</tt>.<footnote>
8168                 This implements current practice, and provides an
8169                 actual policy for usage of the <tt>xserver</tt>
8170                 virtual package which appears in the virtual packages
8171                 list.  In a nutshell, X servers that interface
8172                 directly with the display and input hardware or via
8173                 another subsystem (e.g., GGI) should provide
8174                 <tt>xserver</tt>.  Things like <tt>Xvfb</tt>,
8175                 <tt>Xnest</tt>, and <tt>Xprt</tt> should not.
8176             </footnote>
8177           </p>
8178         </sect1>
8179
8180         <sect1>
8181           <heading>Packages providing a terminal emulator</heading>
8182
8183           <p>
8184             Packages that provide a terminal emulator for the X Window
8185             System which meet the criteria listed below should declare
8186             in their control data that they provide the virtual
8187             package <tt>x-terminal-emulator</tt>.  They should also
8188             register themselves as an alternative for
8189             <file>/usr/bin/x-terminal-emulator</file>, with a priority of
8190             20.
8191           </p>
8192
8193           <p>
8194             To be an <tt>x-terminal-emulator</tt>, a program must:
8195             <list compact="compact">
8196               <item>
8197                   Be able to emulate a DEC VT100 terminal, or a
8198                   compatible terminal.
8199               </item>
8200
8201               <item>
8202                   Support the command-line option <tt>-e
8203                     <var>command</var></tt>, which creates a new
8204                   terminal window<footnote>
8205                       "New terminal window" does not necessarily mean
8206                       a new top-level X window directly parented by
8207                       the window manager; it could, if the terminal
8208                       emulator application were so coded, be a new
8209                       "view" in a multiple-document interface (MDI).
8210                   </footnote>
8211                   and runs the specified <var>command</var>,
8212                   interpreting the entirety of the rest of the command
8213                   line as a command to pass straight to exec, in the
8214                   manner that <tt>xterm</tt> does.
8215               </item>
8216
8217               <item>
8218                   Support the command-line option <tt>-T
8219                     <var>title</var></tt>, which creates a new terminal
8220                   window with the window title <var>title</var>.
8221               </item>
8222             </list>
8223           </p>
8224         </sect1>
8225
8226         <sect1>
8227           <heading>Packages providing a window manager</heading>
8228
8229           <p>
8230             Packages that provide a window manager should declare in
8231             their control data that they provide the virtual package
8232             <tt>x-window-manager</tt>.  They should also register
8233             themselves as an alternative for
8234             <file>/usr/bin/x-window-manager</file>, with a priority
8235             calculated as follows:
8236             <list compact="compact">
8237               <item>
8238                   Start with a priority of 20.
8239               </item>
8240
8241               <item>
8242                   If the window manager supports the Debian menu
8243                   system, add 20 points if this support is available
8244                   in the package's default configuration (i.e., no
8245                   configuration files belonging to the system or user
8246                   have to be edited to activate the feature); if
8247                   configuration files must be modified, add only 10
8248                   points.
8249                 </p>
8250               </item>
8251
8252               <item>
8253                   If the window manager complies with <url
8254                     id="http://www.freedesktop.org/Standards/wm-spec"
8255                     name="The Window Manager Specification Project">,
8256                   written by the <url id="http://www.freedesktop.org/"
8257                     name="Free Desktop Group">, add 40 points.
8258               </item>
8259
8260               <item>
8261                   If the window manager permits the X session to be
8262                   restarted using a <em>different</em> window manager
8263                   (without killing the X server) in its default
8264                   configuration, add 10 points; otherwise add none.
8265               </item>
8266             </list>
8267           </p>
8268         </sect1>
8269
8270         <sect1>
8271           <heading>Packages providing fonts</heading>
8272
8273           <p>
8274             Packages that provide fonts for the X Window
8275             System<footnote>
8276                 For the purposes of Debian Policy, a "font for the X
8277                 Window System" is one which is accessed via X protocol
8278                 requests.  Fonts for the Linux console, for PostScript
8279                 renderer, or any other purpose, do not fit this
8280                 definition.  Any tool which makes such fonts available
8281                 to the X Window System, however, must abide by this
8282                 font policy.
8283             </footnote>
8284             must do a number of things to ensure that they are both
8285             available without modification of the X or font server
8286             configuration, and that they do not corrupt files used by
8287             other font packages to register information about
8288             themselves.
8289             <enumlist>
8290               <item>
8291                   Fonts of any type supported by the X Window System
8292                   must be in a separate binary package from any
8293                   executables, libraries, or documentation (except
8294                   that specific to the fonts shipped, such as their
8295                   license information).  If one or more of the fonts
8296                   so packaged are necessary for proper operation of
8297                   the package with which they are associated the font
8298                   package may be Recommended; if the fonts merely
8299                   provide an enhancement, a Suggests relationship may
8300                   be used.  Packages must not Depend on font
8301                   packages.<footnote>
8302                       This is because the X server may retrieve fonts
8303                       from the local file system or over the network
8304                       from an X font server; the Debian package system
8305                       is empowered to deal only with the local
8306                       file system.
8307                   </footnote>
8308               </item>
8309
8310               <item>
8311                   BDF fonts must be converted to PCF fonts with the
8312                   <prgn>bdftopcf</prgn> utility (available in the
8313                   <tt>xfonts-utils</tt> package, <prgn>gzip</prgn>ped, and
8314                   placed in a directory that corresponds to their
8315                   resolution:
8316                   <list compact="compact">
8317                     <item>
8318                         100 dpi fonts must be placed in
8319                         <file>/usr/share/fonts/X11/100dpi/</file>.
8320                     </item>
8321
8322                     <item>
8323                         75 dpi fonts must be placed in
8324                         <file>/usr/share/fonts/X11/75dpi/</file>.
8325                     </item>
8326
8327                     <item>
8328                         Character-cell fonts, cursor fonts, and other
8329                         low-resolution fonts must be placed in
8330                         <file>/usr/share/fonts/X11/misc/</file>.
8331                     </item>
8332                   </list>
8333               </item>
8334
8335               <item>
8336                   Speedo fonts must be placed in
8337                   <file>/usr/share/fonts/X11/Speedo/</file>.
8338               </item>
8339
8340               <item>
8341                   Type 1 fonts must be placed in
8342                   <file>/usr/share/fonts/X11/Type1/</file>.  If font
8343                   metric files are available, they must be placed here
8344                   as well.
8345               </item>
8346
8347               <item>
8348                   Subdirectories of <file>/usr/share/fonts/X11/</file>
8349                   other than those listed above must be neither
8350                   created nor used.  (The <file>PEX</file>, <file>CID</file>,
8351                   and <file>cyrillic</file> directories are excepted for
8352                   historical reasons, but installation of files into
8353                   these directories remains discouraged.)
8354               </item>
8355
8356               <item>
8357                   Font packages may, instead of placing files directly
8358                   in the X font directories listed above, provide
8359                   symbolic links in that font directory pointing to
8360                   the files' actual location in the filesystem.  Such
8361                   a location must comply with the FHS.
8362               </item>
8363
8364               <item>
8365                   Font packages should not contain both 75dpi and
8366                   100dpi versions of a font.  If both are available,
8367                   they should be provided in separate binary packages
8368                   with <tt>-75dpi</tt> or <tt>-100dpi</tt> appended to
8369                   the names of the packages containing the
8370                   corresponding fonts.
8371               </item>
8372
8373               <item>
8374                   Fonts destined for the <file>misc</file> subdirectory
8375                   should not be included in the same package as 75dpi
8376                   or 100dpi fonts; instead, they should be provided in
8377                   a separate package with <tt>-misc</tt> appended to
8378                   its name.
8379               </item>
8380
8381               <item>
8382                   Font packages must not provide the files
8383                   <file>fonts.dir</file>, <file>fonts.alias</file>, or
8384                   <file>fonts.scale</file> in a font directory:
8385                   <list>
8386                     <item>
8387                         <file>fonts.dir</file> files must not be provided at all.
8388                     </item>
8389
8390                     <item>
8391                         <file>fonts.alias</file> and <file>fonts.scale</file>
8392                         files, if needed, should be provided in the
8393                         directory
8394                         <file>/etc/X11/fonts/<var>fontdir</var>/<var>package</var>.<var>extension</var></file>,
8395                         where <var>fontdir</var> is the name of the
8396                         subdirectory of
8397                         <file>/usr/share/fonts/X11/</file> where the
8398                         package's corresponding fonts are stored
8399                         (e.g., <tt>75dpi</tt> or <tt>misc</tt>),
8400                         <var>package</var> is the name of the package
8401                         that provides these fonts, and
8402                         <var>extension</var> is either <tt>scale</tt>
8403                         or <tt>alias</tt>, whichever corresponds to
8404                         the file contents.
8405                     </item>
8406                   </list>
8407               </item>
8408
8409               <item>
8410                   Font packages must declare a dependency on
8411                   <tt>xfonts-utils</tt> in their control
8412                   data.
8413               </item>
8414
8415               <item>
8416                   Font packages that provide one or more
8417                   <file>fonts.scale</file> files as described above must
8418                   invoke <prgn>update-fonts-scale</prgn> on each
8419                   directory into which they installed fonts
8420                   <em>before</em> invoking
8421                   <prgn>update-fonts-dir</prgn> on that directory.
8422                   This invocation must occur in both the
8423                   <prgn>postinst</prgn> (for all arguments) and
8424                   <prgn>postrm</prgn> (for all arguments except
8425                   <tt>upgrade</tt>) scripts.
8426               </item>
8427
8428               <item>
8429                   Font packages that provide one or more
8430                   <file>fonts.alias</file> files as described above must
8431                   invoke <prgn>update-fonts-alias</prgn> on each
8432                   directory into which they installed fonts.  This
8433                   invocation must occur in both the
8434                   <prgn>postinst</prgn> (for all arguments) and
8435                   <prgn>postrm</prgn> (for all arguments except
8436                   <tt>upgrade</tt>) scripts.
8437               </item>
8438
8439               <item>
8440                   Font packages must invoke
8441                   <prgn>update-fonts-dir</prgn> on each directory into
8442                   which they installed fonts.  This invocation must
8443                   occur in both the <prgn>postinst</prgn> (for all
8444                   arguments) and <prgn>postrm</prgn> (for all
8445                   arguments except <tt>upgrade</tt>) scripts.
8446               </item>
8447
8448               <item>
8449                   Font packages must not provide alias names for the
8450                   fonts they include which collide with alias names
8451                   already in use by fonts already packaged.
8452               </item>
8453
8454               <item>
8455                   Font packages must not provide fonts with the same
8456                   XLFD registry name as another font already packaged.
8457               </item>
8458             </enumlist>
8459           </p>
8460         </sect1>
8461
8462         <sect1>
8463           <heading>Application defaults files</heading>
8464
8465           <p>
8466             Application defaults files must be installed in the
8467             directory <file>/etc/X11/app-defaults/</file> (use of a
8468             localized subdirectory of <file>/etc/X11/</file> as described
8469             in the <em>X Toolkit Intrinsics - C Language
8470             Interface</em> manual is also permitted).  They must be
8471             registered as <tt>conffile</tt>s or handled as
8472             configuration files.
8473           </p>
8474
8475           <p>
8476             Customization of programs' X resources may also be
8477             supported with the provision of a file with the same name
8478             as that of the package placed in the
8479             <file>/etc/X11/Xresources/</file> directory, which must
8480             registered as a <tt>conffile</tt> or handled as a
8481             configuration file.<footnote>
8482                 Note that this mechanism is not the same as using
8483                 app-defaults; app-defaults are tied to the client
8484                 binary on the local file system, whereas X resources
8485                 are stored in the X server and affect all connecting
8486                 clients.
8487             </footnote>
8488           </p>
8489         </sect1>
8490
8491         <sect1>
8492           <heading>Installation directory issues</heading>
8493
8494           <p>
8495             Packages using the X Window System should not be
8496             configured to install files under the
8497             <file>/usr/X11R6/</file> directory. The
8498             <file>/usr/X11R6/</file> directory hierarchy should be
8499             regarded as obsolete.
8500           </p>
8501
8502           <p>
8503             Programs that use GNU <prgn>autoconf</prgn> and
8504             <prgn>automake</prgn> are usually easily configured at
8505             compile time to use <file>/usr/</file> instead of
8506             <file>/usr/X11R6/</file>, and this should be done whenever
8507             possible.  Configuration files for window managers and
8508             display managers should be placed in a subdirectory of
8509             <file>/etc/X11/</file> corresponding to the package name due
8510             to these programs' tight integration with the mechanisms
8511             of the X Window System.  Application-level programs should
8512             use the <file>/etc/</file> directory unless otherwise mandated
8513             by policy.
8514           </p>
8515
8516           <p>
8517             The installation of files into subdirectories
8518             of <file>/usr/X11R6/include/X11/</file> and
8519             <file>/usr/X11R6/lib/X11/</file> is now prohibited;
8520             package maintainers should determine if subdirectories of
8521             <file>/usr/lib/</file> and <file>/usr/share/</file> can be used
8522             instead. 
8523           </p>
8524
8525           <p>
8526             Packages should install any relevant files into the
8527             directories <file>/usr/include/X11/</file> and
8528             <file>/usr/lib/X11/</file>, but if they do so, they must
8529             pre-depend on <tt>x11-common (&gt;=
8530             1:7.0.0)</tt><footnote>
8531               <p>
8532                 These libraries used to be all symbolic
8533                 links. However, with <tt>X11R7</tt>,
8534                 <tt>/usr/include/X11</tt> and <tt>/usr/lib/X11</tt>
8535                 are now real directories, and packages
8536                 <strong>should</strong> ship their files here instead
8537                 of in <tt>/usr/X11R6/{include,lib}/X11</tt>.
8538                 <tt>x11-common (&gt;= 1:7.0.0) </tt> is the package
8539                 responsible for converting these symlinks into
8540                 directories.
8541               </p>
8542             </footnote>
8543           </p>
8544         </sect1>
8545
8546         <sect1>
8547           <heading>The OSF/Motif and OpenMotif libraries</heading>
8548
8549           <p>
8550             <em>Programs that require the non-DFSG-compliant OSF/Motif or
8551               OpenMotif libraries</em><footnote>
8552                 OSF/Motif and OpenMotif are collectively referred to as
8553                 "Motif" in this policy document.
8554             </footnote>
8555             should be compiled against and tested with LessTif (a free
8556             re-implementation of Motif) instead.  If the maintainer
8557             judges that the program or programs do not work
8558             sufficiently well with LessTif to be distributed and
8559             supported, but do so when compiled against Motif, then two
8560             versions of the package should be created; one linked
8561             statically against Motif and with <tt>-smotif</tt>
8562             appended to the package name, and one linked dynamically
8563             against Motif and with <tt>-dmotif</tt> appended to the
8564             package name.
8565           </p>
8566
8567           <p>
8568             Both Motif-linked versions are dependent
8569             upon non-DFSG-compliant software and thus cannot be
8570             uploaded to the <em>main</em> distribution; if the
8571             software is itself DFSG-compliant it may be uploaded to
8572             the <em>contrib</em> distribution.  While known existing
8573             versions of Motif permit unlimited redistribution of
8574             binaries linked against the library (whether statically or
8575             dynamically), it is the package maintainer's
8576             responsibility to determine whether this is permitted by
8577             the license of the copy of Motif in their possession.
8578           </p>
8579         </sect1>
8580       </sect>
8581
8582       <sect id="perl">
8583         <heading>Perl programs and modules</heading>
8584
8585         <p>
8586           Perl programs and modules should follow the current Perl policy.
8587         </p>
8588
8589         <p>
8590           The Perl policy can be found in the <tt>perl-policy</tt>
8591           files in the <tt>debian-policy</tt> package.
8592           It is also available from the Debian web mirrors at
8593           <tt><url name="/doc/packaging-manuals/perl-policy/"
8594                 id="http://www.debian.org/doc/packaging-manuals/perl-policy/"></tt>.
8595         </p>
8596       </sect>
8597
8598       <sect id="emacs">
8599         <heading>Emacs lisp programs</heading>
8600
8601         <p>
8602           Please refer to the "Debian Emacs Policy" for details of how to
8603           package emacs lisp programs.
8604         </p>
8605
8606         <p>
8607           The Emacs policy is available in
8608           <file>debian-emacs-policy.gz</file> of the
8609           <package>emacsen-common</package> package.
8610           It is also available from the Debian web mirrors at
8611           <tt><url name="/doc/packaging-manuals/debian-emacs-policy"
8612                 id="http://www.debian.org/doc/packaging-manuals/debian-emacs-policy"></tt>.
8613         </p>
8614       </sect>
8615
8616       <sect>
8617         <heading>Games</heading>
8618
8619         <p>
8620           The permissions on <file>/var/games</file> are mode 755, owner
8621           <tt>root</tt> and group <tt>root</tt>.
8622         </p>
8623
8624         <p>
8625           Each game decides on its own security policy.</p>
8626
8627         <p>
8628           Games which require protected, privileged access to
8629           high-score files, saved games, etc., may be made
8630           set-<em>group</em>-id (mode 2755) and owned by
8631           <tt>root:games</tt>, and use files and directories with
8632           appropriate permissions (770 <tt>root:games</tt>, for
8633           example).  They must not be made
8634           set-<em>user</em>-id, as this causes security problems. (If
8635           an attacker can subvert any set-user-id game they can
8636           overwrite the executable of any other, causing other players
8637           of these games to run a Trojan horse program.  With a
8638           set-group-id game the attacker only gets access to less
8639           important game data, and if they can get at the other
8640           players' accounts at all it will take considerably more
8641           effort.)</p>
8642
8643         <p>
8644           Some packages, for example some fortune cookie programs, are
8645           configured by the upstream authors to install with their
8646           data files or other static information made unreadable so
8647           that they can only be accessed through set-id programs
8648           provided.  You should not do this in a Debian package: anyone can
8649           download the <file>.deb</file> file and read the data from it,
8650           so there is no point making the files unreadable.  Not
8651           making the files unreadable also means that you don't have
8652           to make so many programs set-id, which reduces the risk of a
8653           security hole.</p>
8654
8655         <p>
8656           As described in the FHS, binaries of games should be
8657           installed in the directory <file>/usr/games</file>. This also
8658           applies to games that use the X Window System. Manual pages
8659           for games (X and non-X games) should be installed in
8660           <file>/usr/share/man/man6</file>.</p>
8661       </sect>
8662     </chapt>
8663
8664
8665     <chapt id="docs">
8666       <heading>Documentation</heading>
8667
8668       <sect>
8669         <heading>Manual pages</heading>
8670
8671         <p>
8672           You should install manual pages in <prgn>nroff</prgn> source
8673           form, in appropriate places under <file>/usr/share/man</file>.
8674           You should only use sections 1 to 9 (see the FHS for more
8675           details).  You must not install a pre-formatted "cat page".
8676         </p>
8677
8678         <p>
8679           Each program, utility, and function should have an
8680           associated manual page included in the same package. It is
8681           suggested that all configuration files also have a manual
8682           page included as well. Manual pages for protocols and other
8683           auxiliary things are optional.
8684         </p>
8685
8686         <p>
8687           If no manual page is available, this is considered as a bug
8688           and should be reported to the Debian Bug Tracking System (the
8689           maintainer of the package is allowed to write this bug report
8690           themselves, if they so desire).  Do not close the bug report
8691           until a proper man page is available.<footnote>
8692               It is not very hard to write a man page. See the
8693               <url id="http://www.schweikhardt.net/man_page_howto.html"
8694                 name="Man-Page-HOWTO">,
8695               <manref name="man" section="7">, the examples
8696               created by <prgn>debmake</prgn> or <prgn>dh_make</prgn>,
8697               the helper programs <prgn>help2man</prgn>, or the
8698               directory <file>/usr/share/doc/man-db/examples</file>.
8699           </footnote>
8700         </p>
8701
8702         <p>
8703           You may forward a complaint about a missing man page to the
8704           upstream authors, and mark the bug as forwarded in the
8705           Debian bug tracking system.  Even though the GNU Project do
8706           not in general consider the lack of a man page to be a bug,
8707           we do; if they tell you that they don't consider it a bug
8708           you should leave the bug in our bug tracking system open
8709           anyway.
8710         </p>
8711
8712         <p>
8713           Manual pages should be installed compressed using <tt>gzip -9</tt>.
8714         </p>
8715
8716         <p>
8717           If one man page needs to be accessible via several names it
8718           is better to use a symbolic link than the <file>.so</file>
8719           feature, but there is no need to fiddle with the relevant
8720           parts of the upstream source to change from <file>.so</file> to
8721           symlinks: don't do it unless it's easy.  You should not
8722           create hard links in the manual page directories, nor put
8723           absolute filenames in <file>.so</file> directives.  The filename
8724           in a <file>.so</file> in a man page should be relative to the
8725           base of the man page tree (usually
8726           <file>/usr/share/man</file>). If you do not create any links
8727           (whether symlinks, hard links, or <tt>.so</tt> directives)
8728           in the file system to the alternate names of the man page,
8729           then you should not rely on <prgn>man</prgn> finding your
8730           man page under those names based solely on the information in
8731           the man page's header.<footnote>
8732               Supporting this in <prgn>man</prgn> often requires
8733               unreasonable processing time to find a manual page or to
8734               report that none exists, and moves knowledge into man's
8735               database that would be better left in the file system.
8736               This support is therefore deprecated and will cease to
8737               be present in the future.
8738           </footnote>
8739         </p>
8740
8741         <p>
8742           Manual pages in locale-specific subdirectories of
8743           <file>/usr/share/man</file> should use either UTF-8 or the usual
8744           legacy encoding for that language (normally the one corresponding
8745           to the shortest relevant locale name in
8746           <file>/usr/share/i18n/SUPPORTED</file>). For example, pages under
8747           <file>/usr/share/man/fr</file> should use either UTF-8 or
8748           ISO-8859-1.<footnote>
8749             <prgn>man</prgn> will automatically detect whether UTF-8 is in
8750             use. In future, all manual pages will be required to use
8751             UTF-8.
8752           </footnote>
8753         </p>
8754
8755         <p>
8756           A country name (the <tt>DE</tt> in <tt>de_DE</tt>) should not be
8757           included in the subdirectory name unless it indicates a
8758           significant difference in the language, as this excludes
8759           speakers of the language in other countries.<footnote>
8760             At the time of writing, Chinese and Portuguese are the main
8761             languages with such differences, so <file>pt_BR</file>,
8762             <file>zh_CN</file>, and <file>zh_TW</file> are all allowed.
8763           </footnote>
8764         </p>
8765
8766         <p>
8767           Due to limitations in current implementations, all characters
8768           in the manual page source should be representable in the usual
8769           legacy encoding for that language, even if the file is
8770           actually encoded in UTF-8. Safe alternative ways to write many
8771           characters outside that range may be found in
8772           <manref name="groff_char" section="7">.
8773         </p>
8774       </sect>
8775
8776       <sect>
8777         <heading>Info documents</heading>
8778
8779         <p>
8780           Info documents should be installed in <file>/usr/share/info</file>.
8781           They should be compressed with <tt>gzip -9</tt>.
8782         </p>
8783
8784         <p>
8785           Your package should call <prgn>install-info</prgn> to update
8786           the Info <file>dir</file> file in its <prgn>postinst</prgn>
8787           script when called with a <tt>configure</tt> argument, for
8788           example:
8789           <example compact="compact">
8790 install-info --quiet --section Development Development \
8791   /usr/share/info/foobar.info
8792           </example></p>
8793
8794         <p>
8795           It is a good idea to specify a section for the location of
8796           your program; this is done with the <tt>--section</tt>
8797           switch.  To determine which section to use, you should look
8798           at <file>/usr/share/info/dir</file> on your system and choose the most
8799           relevant (or create a new section if none of the current
8800           sections are relevant).  Note that the <tt>--section</tt>
8801           flag takes two arguments; the first is a regular expression
8802           to match (case-insensitively) against an existing section,
8803           the second is used when creating a new one.</p>
8804
8805         <p>
8806           You should remove the entries in the <prgn>prerm</prgn>
8807           script when called with a <tt>remove</tt> argument:
8808           <example compact="compact">
8809 install-info --quiet --remove /usr/share/info/foobar.info
8810           </example></p>
8811
8812         <p>
8813           If <prgn>install-info</prgn> cannot find a description entry
8814           in the Info file you must supply one.  See <manref
8815           name="install-info" section="8"> for details.</p>
8816       </sect>
8817
8818       <sect>
8819         <heading>Additional documentation</heading>
8820
8821         <p>
8822           Any additional documentation that comes with the package may
8823           be installed at the discretion of the package maintainer.
8824           Plain text documentation should be installed in the directory
8825           <file>/usr/share/doc/<var>package</var></file>, where
8826           <var>package</var> is the name of the package, and
8827           compressed with <tt>gzip -9</tt> unless it is small.
8828         </p>
8829
8830         <p>
8831           If a package comes with large amounts of documentation which
8832           many users of the package will not require you should create
8833           a separate binary package to contain it, so that it does not
8834           take up disk space on the machines of users who do not need
8835           or want it installed.</p>
8836
8837         <p>
8838           It is often a good idea to put text information files
8839           (<file>README</file>s, changelogs, and so forth) that come with
8840           the source package in <file>/usr/share/doc/<var>package</var></file>
8841           in the binary package.  However, you don't need to install
8842           the instructions for building and installing the package, of
8843           course!</p>
8844
8845         <p>
8846           Packages must not require the existence of any files in
8847           <file>/usr/share/doc/</file> in order to function
8848           <footnote>
8849               The system administrator should be able to
8850               delete files in <file>/usr/share/doc/</file> without causing
8851               any programs to break.
8852           </footnote>.
8853           Any files that are referenced by programs but are also
8854           useful as stand alone documentation should be installed under
8855           <file>/usr/share/<var>package</var>/</file> with symbolic links from
8856           <file>/usr/share/doc/<var>package</var></file>.
8857         </p>
8858
8859         <p>
8860           <file>/usr/share/doc/<var>package</var></file> may be a symbolic
8861           link to another directory in <file>/usr/share/doc</file> only if
8862           the two packages both come from the same source and the
8863           first package Depends on the second.<footnote>
8864             <p>
8865               Please note that this does not override the section on
8866               changelog files below, so the file 
8867               <file>/usr/share/<var>package</var>/changelog.Debian.gz</file>
8868               must refer to the changelog for the current version of
8869               <var>package</var> in question. In practice, this means
8870               that the sources of the target and the destination of the
8871               symlink must be the same (same source package and
8872               version). 
8873             </p>
8874           </footnote>
8875         </p>
8876
8877         <p>
8878           Former Debian releases placed all additional documentation
8879           in <file>/usr/doc/<var>package</var></file>.  This has been
8880           changed to <file>/usr/share/doc/<var>package</var></file>,
8881           and packages must not put documentation in the directory
8882           <file>/usr/doc/<var>package</var></file>. <footnote>
8883             At this phase of the transition, we no longer require a
8884             symbolic link in <file>/usr/doc/</file>. At a later point,
8885             policy shall change to make the symbolic links a bug.
8886           </footnote>
8887         </p>
8888       </sect>
8889
8890       <sect>
8891         <heading>Preferred documentation formats</heading>
8892
8893         <p>
8894           The unification of Debian documentation is being carried out
8895           via HTML.</p>
8896
8897         <p>
8898           If your package comes with extensive documentation in a
8899           markup format that can be converted to various other formats
8900           you should if possible ship HTML versions in a binary
8901           package, in the directory
8902           <file>/usr/share/doc/<var>appropriate-package</var></file> or
8903           its subdirectories.<footnote>
8904               The rationale: The important thing here is that HTML
8905               docs should be available in <em>some</em> package, not
8906               necessarily in the main binary package.
8907           </footnote>
8908         </p>
8909
8910         <p>
8911           Other formats such as PostScript may be provided at the
8912           package maintainer's discretion.
8913         </p>
8914       </sect>
8915
8916       <sect id="copyrightfile">
8917         <heading>Copyright information</heading>
8918
8919         <p>
8920           Every package must be accompanied by a verbatim copy of its
8921           copyright and distribution license in the file
8922           <file>/usr/share/doc/<var>package</var>/copyright</file>. This
8923           file must neither be compressed nor be a symbolic link.
8924         </p>
8925
8926         <p>
8927           In addition, the copyright file must say where the upstream
8928           sources (if any) were obtained.  It should name the original
8929           authors of the package and the Debian maintainer(s) who were
8930           involved with its creation.
8931         </p>
8932
8933         <p>
8934           Packages in the <em>contrib</em> or <em>non-free</em> categories
8935           should state in the copyright file that the package is not part
8936           of the Debian GNU/Linux distribution and briefly explain why.
8937         </p>
8938
8939         <p>
8940           A copy of the file which will be installed in
8941           <file>/usr/share/doc/<var>package</var>/copyright</file> should
8942           be in <file>debian/copyright</file> in the source package.
8943         </p>
8944
8945         <p>
8946           <file>/usr/share/doc/<var>package</var></file> may be a symbolic
8947           link to another directory in <file>/usr/share/doc</file> only if
8948           the two packages both come from the same source and the
8949           first package Depends on the second.  These rules are
8950           important because copyrights must be extractable by
8951           mechanical means.
8952         </p>
8953
8954         <p>
8955           Packages distributed under the UCB BSD license, the Apache
8956           license (version 2.0), the Artistic license, the GNU GPL
8957           (version 2 or 3), the GNU LGPL (versions 2, 2.1, or 3), and
8958           the GNU FDL (version 1.2) should refer to the corresponding
8959           files under <file>/usr/share/common-licenses</file>,<footnote>
8960             <p>
8961               In particular,
8962               <file>/usr/share/common-licenses/BSD</file>,
8963               <file>/usr/share/common-licenses/Apache-2.0</file>,
8964               <file>/usr/share/common-licenses/Artistic</file>,
8965               <file>/usr/share/common-licenses/GPL-2</file>,
8966               <file>/usr/share/common-licenses/GPL-3</file>,
8967               <file>/usr/share/common-licenses/LGPL-2</file>,
8968               <file>/usr/share/common-licenses/LGPL-2.1</file>,
8969               <file>/usr/share/common-licenses/LGPL-3</file>, and
8970               <file>/usr/share/common-licenses/GFDL-1.2</file>
8971               respectively.
8972             </p>
8973           </footnote> rather than quoting them in the copyright
8974           file. 
8975         </p>
8976
8977         <p>
8978           You should not use the copyright file as a general <file>README</file>
8979           file.  If your package has such a file it should be
8980           installed in <file>/usr/share/doc/<var>package</var>/README</file> or
8981           <file>README.Debian</file> or some other appropriate place.</p>
8982       </sect>
8983
8984       <sect>
8985         <heading>Examples</heading>
8986
8987         <p>
8988           Any examples (configurations, source files, whatever),
8989           should be installed in a directory
8990           <file>/usr/share/doc/<var>package</var>/examples</file>.  These
8991           files should not be referenced by any program: they're there
8992           for the benefit of the system administrator and users as
8993           documentation only.  Architecture-specific example files
8994           should be installed in a directory
8995           <file>/usr/lib/<var>package</var>/examples</file> with symbolic
8996           links to them from
8997           <file>/usr/share/doc/<var>package</var>/examples</file>, or the
8998           latter directory itself may be a symbolic link to the
8999           former.
9000         </p>
9001
9002         <p>
9003           If the purpose of a package is to provide examples, then the
9004           example files may be installed into
9005           <file>/usr/share/doc/<var>package</var></file>.
9006         </p>
9007       </sect>
9008
9009       <sect id="changelogs">
9010         <heading>Changelog files</heading>
9011
9012         <p>
9013           Packages that are not Debian-native must contain a
9014           compressed copy of the <file>debian/changelog</file> file from
9015           the Debian source tree in
9016           <file>/usr/share/doc/<var>package</var></file> with the name
9017           <file>changelog.Debian.gz</file>.
9018         </p>
9019
9020         <p>
9021           If an upstream changelog is available, it should be accessible as
9022           <file>/usr/share/doc/<var>package</var>/changelog.gz</file> in
9023           plain text.  If the upstream changelog is distributed in
9024           HTML, it should be made available in that form as
9025           <file>/usr/share/doc/<var>package</var>/changelog.html.gz</file>
9026           and a plain text <file>changelog.gz</file> should be generated
9027           from it using, for example, <tt>lynx -dump -nolist</tt>.  If
9028           the upstream changelog files do not already conform to this
9029           naming convention, then this may be achieved either by
9030           renaming the files, or by adding a symbolic link, at the
9031           maintainer's discretion.<footnote>
9032               Rationale: People should not have to look in places for
9033               upstream changelogs merely because they are given
9034               different names or are distributed in HTML format.
9035           </footnote>
9036         </p>
9037
9038         <p>
9039           All of these files should be installed compressed using
9040           <tt>gzip -9</tt>, as they will become large with time even
9041           if they start out small.
9042         </p>
9043
9044         <p>
9045           If the package has only one changelog which is used both as
9046           the Debian changelog and the upstream one because there is
9047           no separate upstream maintainer then that changelog should
9048           usually be installed as
9049           <file>/usr/share/doc/<var>package</var>/changelog.gz</file>; if
9050           there is a separate upstream maintainer, but no upstream
9051           changelog, then the Debian changelog should still be called
9052           <file>changelog.Debian.gz</file>.
9053         </p>
9054
9055         <p>
9056           For details about the format and contents of the Debian
9057           changelog file, please see <ref id="dpkgchangelog">.
9058         </p>
9059       </sect>
9060     </chapt>
9061
9062     <appendix id="pkg-scope">
9063       <heading>Introduction and scope of these appendices</heading>
9064
9065       <p>
9066         These appendices are taken essentially verbatim from the
9067         now-deprecated Packaging Manual, version 3.2.1.0.  They are
9068         the chapters which are likely to be of use to package
9069         maintainers and which have not already been included in the
9070         policy document itself. Most of these sections are very likely
9071         not relevant to policy; they should be treated as
9072         documentation for the packaging system. Please note that these
9073         appendices are included for convenience, and for historical
9074         reasons: they used to be part of policy package, and they have
9075         not yet been incorporated into dpkg documentation. However,
9076         they still have value, and hence they are presented here.
9077       </p>
9078
9079       <p>
9080         They have not yet been checked to ensure that they are
9081         compatible with the contents of policy, and if there are any
9082         contradictions, the version in the main policy document takes
9083         precedence.  The remaining chapters of the old Packaging
9084         Manual have also not been read in detail to ensure that there
9085         are not parts which have been left out.  Both of these will be
9086         done in due course.
9087       </p>
9088
9089       <p>
9090         Certain parts of the Packaging manual were integrated into the
9091         Policy Manual proper, and removed from the appendices. Links
9092         have been placed from the old locations to the new ones.
9093       </p>
9094
9095       <p>
9096         <prgn>dpkg</prgn> is a suite of programs for creating binary
9097         package files and installing and removing them on Unix
9098         systems.<footnote>
9099             <prgn>dpkg</prgn> is targeted primarily at Debian
9100             GNU/Linux, but may work on or be ported to other
9101             systems.
9102         </footnote>
9103       </p>
9104
9105       <p>
9106         The binary packages are designed for the management of
9107         installed executable programs (usually compiled binaries) and
9108         their associated data, though source code examples and
9109         documentation are provided as part of some packages.</p>
9110
9111       <p>
9112         This manual describes the technical aspects of creating Debian
9113         binary packages (<file>.deb</file> files).  It documents the
9114         behavior of the package management programs
9115         <prgn>dpkg</prgn>, <prgn>dselect</prgn> et al. and the way
9116         they interact with packages.</p>
9117
9118       <p>
9119         It also documents the interaction between
9120         <prgn>dselect</prgn>'s core and the access method scripts it
9121         uses to actually install the selected packages, and describes
9122         how to create a new access method.</p>
9123
9124       <p>
9125         This manual does not go into detail about the options and
9126         usage of the package building and installation tools.  It
9127         should therefore be read in conjunction with those programs'
9128         man pages.
9129       </p>
9130
9131       <p>
9132         The utility programs which are provided with <prgn>dpkg</prgn>
9133         for managing various system configuration and similar issues,
9134         such as <prgn>update-rc.d</prgn> and
9135         <prgn>install-info</prgn>, are not described in detail here -
9136         please see their man pages.
9137       </p>
9138
9139       <p>
9140         It is assumed that the reader is reasonably familiar with the
9141         <prgn>dpkg</prgn> System Administrators' manual.
9142         Unfortunately this manual does not yet exist.
9143       </p>
9144
9145       <p>
9146         The Debian version of the FSF's GNU hello program is provided
9147         as an example for people wishing to create Debian
9148         packages. The Debian <prgn>debmake</prgn> package is
9149         recommended as a very helpful tool in creating and maintaining
9150         Debian packages. However, while the tools and examples are
9151         helpful, they do not replace the need to read and follow the
9152         Policy and Programmer's Manual.</p>
9153     </appendix>
9154
9155     <appendix id="pkg-binarypkg">
9156       <heading>Binary packages (from old Packaging Manual)</heading>
9157
9158       <p>
9159         The binary package has two main sections.  The first part
9160         consists of various control information files and scripts used
9161         by <prgn>dpkg</prgn> when installing and removing.  See <ref
9162         id="pkg-controlarea">.
9163       </p>
9164
9165       <p>
9166         The second part is an archive containing the files and
9167         directories to be installed.
9168       </p>
9169
9170       <p>
9171         In the future binary packages may also contain other
9172         components, such as checksums and digital signatures. The
9173         format for the archive is described in full in the
9174         <file>deb(5)</file> man page.
9175       </p>
9176
9177
9178       <sect id="pkg-bincreating"><heading>Creating package files -
9179       <prgn>dpkg-deb</prgn>
9180         </heading>
9181
9182         <p>
9183           All manipulation of binary package files is done by
9184           <prgn>dpkg-deb</prgn>; it's the only program that has
9185           knowledge of the format.  (<prgn>dpkg-deb</prgn> may be
9186           invoked by calling <prgn>dpkg</prgn>, as <prgn>dpkg</prgn>
9187           will spot that the options requested are appropriate to
9188           <prgn>dpkg-deb</prgn> and invoke that instead with the same
9189           arguments.)
9190         </p>
9191
9192         <p>
9193           In order to create a binary package you must make a
9194           directory tree which contains all the files and directories
9195           you want to have in the file system data part of the package.
9196           In Debian-format source packages this directory is usually
9197           <file>debian/tmp</file>, relative to the top of the package's
9198           source tree.
9199         </p>
9200
9201         <p>
9202           They should have the locations (relative to the root of the
9203           directory tree you're constructing) ownerships and
9204           permissions which you want them to have on the system when
9205           they are installed.
9206         </p>
9207
9208         <p>
9209           With current versions of <prgn>dpkg</prgn> the uid/username
9210           and gid/groupname mappings for the users and groups being
9211           used should be the same on the system where the package is
9212           built and the one where it is installed.
9213         </p>
9214
9215         <p>
9216           You need to add one special directory to the root of the
9217           miniature file system tree you're creating:
9218           <prgn>DEBIAN</prgn>.  It should contain the control
9219           information files, notably the binary package control file
9220           (see <ref id="pkg-controlfile">).
9221         </p>
9222
9223         <p>
9224           The <prgn>DEBIAN</prgn> directory will not appear in the
9225           file system archive of the package, and so won't be installed
9226           by <prgn>dpkg</prgn> when the package is installed.
9227         </p>
9228
9229         <p>
9230           When you've prepared the package, you should invoke:
9231           <example>
9232   dpkg --build <var>directory</var>
9233           </example>
9234         </p>
9235
9236         <p>
9237           This will build the package in
9238           <file><var>directory</var>.deb</file>.  (<prgn>dpkg</prgn> knows
9239           that <tt>--build</tt> is a <prgn>dpkg-deb</prgn> option, so
9240           it invokes <prgn>dpkg-deb</prgn> with the same arguments to
9241           build the package.)
9242         </p>
9243
9244         <p>
9245           See the man page <manref name="dpkg-deb" section="8"> for details of how
9246           to examine the contents of this newly-created file.  You may find the
9247           output of following commands enlightening:
9248           <example>
9249   dpkg-deb --info <var>filename</var>.deb
9250   dpkg-deb --contents <var>filename</var>.deb
9251   dpkg --contents <var>filename</var>.deb
9252           </example>
9253           To view the copyright file for a package you could use this command:
9254           <example>
9255   dpkg --fsys-tarfile <var>filename</var>.deb | tar xOf - \*/copyright | pager
9256           </example>
9257         </p>
9258       </sect>
9259
9260       <sect id="pkg-controlarea">
9261         <heading>Package control information files</heading>
9262
9263         <p>
9264           The control information portion of a binary package is a
9265           collection of files with names known to <prgn>dpkg</prgn>.
9266           It will treat the contents of these files specially - some
9267           of them contain information used by <prgn>dpkg</prgn> when
9268           installing or removing the package; others are scripts which
9269           the package maintainer wants <prgn>dpkg</prgn> to run.
9270         </p>
9271
9272         <p>
9273           It is possible to put other files in the package control
9274           area, but this is not generally a good idea (though they
9275           will largely be ignored).
9276         </p>
9277
9278         <p>
9279           Here is a brief list of the control info files supported by
9280           <prgn>dpkg</prgn> and a summary of what they're used for.
9281         </p>
9282
9283         <p>
9284           <taglist>
9285             <tag><tt>control</tt>
9286             <item>
9287               <p>
9288                 This is the key description file used by
9289                 <prgn>dpkg</prgn>.  It specifies the package's name
9290                 and version, gives its description for the user,
9291                 states its relationships with other packages, and so
9292                 forth.  See <ref id="sourcecontrolfiles"> and
9293                 <ref id="binarycontrolfiles">.
9294               </p>
9295
9296               <p>
9297                 It is usually generated automatically from information
9298                 in the source package by the
9299                 <prgn>dpkg-gencontrol</prgn> program, and with
9300                 assistance from <prgn>dpkg-shlibdeps</prgn>.
9301                 See <ref id="pkg-sourcetools">.
9302               </p>
9303             </item>
9304
9305             <tag><tt>postinst</tt>, <tt>preinst</tt>, <tt>postrm</tt>,
9306                  <tt>prerm</tt>
9307             </tag>
9308             <item>
9309               <p>
9310                 These are executable files (usually scripts) which
9311                 <prgn>dpkg</prgn> runs during installation, upgrade
9312                 and removal of packages.  They allow the package to
9313                 deal with matters which are particular to that package
9314                 or require more complicated processing than that
9315                 provided by <prgn>dpkg</prgn>.  Details of when and
9316                 how they are called are in <ref id="maintainerscripts">.
9317               </p>
9318
9319               <p>
9320                 It is very important to make these scripts idempotent.
9321                 See <ref id="idempotency">.
9322               </p>
9323
9324               <p>
9325                 The maintainer scripts are guaranteed to run with a
9326                 controlling terminal and can interact with the user.
9327                 See <ref id="controllingterminal">.
9328               </p>
9329             </item>
9330
9331             <tag><tt>conffiles</tt>
9332             </tag>
9333             <item>
9334                 This file contains a list of configuration files which
9335                 are to be handled automatically by <prgn>dpkg</prgn>
9336                 (see <ref id="pkg-conffiles">).  Note that not necessarily
9337                 every configuration file should be listed here.
9338             </item>
9339
9340             <tag><tt>shlibs</tt>
9341             </tag>
9342             <item>
9343                 This file contains a list of the shared libraries
9344                 supplied by the package, with dependency details for
9345                 each.  This is used by <prgn>dpkg-shlibdeps</prgn>
9346                 when it determines what dependencies are required in a
9347                 package control file. The <tt>shlibs</tt> file format
9348                 is described on <ref id="shlibs">.
9349             </item>
9350           </taglist>
9351         </p>
9352
9353       <sect id="pkg-controlfile">
9354         <heading>The main control information file: <tt>control</tt></heading>
9355
9356         <p>
9357           The most important control information file used by
9358           <prgn>dpkg</prgn> when it installs a package is
9359           <tt>control</tt>.  It contains all the package's "vital
9360           statistics".
9361         </p>
9362
9363         <p>
9364           The binary package control files of packages built from
9365           Debian sources are made by a special tool,
9366           <prgn>dpkg-gencontrol</prgn>, which reads
9367           <file>debian/control</file> and <file>debian/changelog</file> to
9368           find the information it needs.  See <ref id="pkg-sourcepkg"> for
9369           more details.
9370         </p>
9371
9372         <p>
9373           The fields in binary package control files are listed in
9374           <ref id="binarycontrolfiles">.
9375         </p>
9376
9377         <p>
9378           A description of the syntax of control files and the purpose
9379           of the fields is available in <ref id="controlfields">.
9380         </p>
9381       </sect>
9382
9383       <sect>
9384         <heading>Time Stamps</heading>
9385
9386         <p>
9387           See <ref id="timestamps">.
9388         </p>
9389       </sect>
9390     </appendix>
9391
9392     <appendix id="pkg-sourcepkg">
9393       <heading>Source packages (from old Packaging Manual) </heading>
9394
9395       <p>
9396         The Debian binary packages in the distribution are generated
9397         from Debian sources, which are in a special format to assist
9398         the easy and automatic building of binaries.
9399       </p>
9400
9401       <sect id="pkg-sourcetools">
9402         <heading>Tools for processing source packages</heading>
9403
9404         <p>
9405           Various tools are provided for manipulating source packages;
9406           they pack and unpack sources and help build of binary
9407           packages and help manage the distribution of new versions.
9408         </p>
9409
9410         <p>
9411           They are introduced and typical uses described here; see
9412           <manref name="dpkg-source" section="1"> for full
9413           documentation about their arguments and operation.
9414         </p>
9415
9416         <p>
9417           For examples of how to construct a Debian source package,
9418           and how to use those utilities that are used by Debian
9419           source packages, please see the <prgn>hello</prgn> example
9420           package.
9421         </p>
9422
9423         <sect1 id="pkg-dpkg-source">
9424           <heading>
9425             <prgn>dpkg-source</prgn> - packs and unpacks Debian source
9426             packages
9427           </heading>
9428
9429           <p>
9430             This program is frequently used by hand, and is also
9431             called from package-independent automated building scripts
9432             such as <prgn>dpkg-buildpackage</prgn>.
9433           </p>
9434
9435           <p>
9436             To unpack a package it is typically invoked with
9437             <example>
9438   dpkg-source -x <var>.../path/to/filename</var>.dsc
9439             </example>
9440           </p>
9441
9442            <p>
9443             with the <file><var>filename</var>.tar.gz</file> and
9444             <file><var>filename</var>.diff.gz</file> (if applicable) in
9445             the same directory.  It unpacks into
9446             <file><var>package</var>-<var>version</var></file>, and if
9447             applicable
9448             <file><var>package</var>-<var>version</var>.orig</file>, in
9449             the current directory.
9450           </p>
9451
9452           <p>
9453             To create a packed source archive it is typically invoked:
9454             <example>
9455   dpkg-source -b <var>package</var>-<var>version</var>
9456           </example>
9457           </p>
9458
9459           <p>
9460             This will create the <file>.dsc</file>, <file>.tar.gz</file> and
9461             <file>.diff.gz</file> (if appropriate) in the current
9462             directory.  <prgn>dpkg-source</prgn> does not clean the
9463             source tree first - this must be done separately if it is
9464             required.
9465           </p>
9466
9467           <p>
9468             See also <ref id="pkg-sourcearchives">.</p>
9469         </sect1>
9470
9471
9472         <sect1 id="pkg-dpkg-buildpackage">
9473           <heading>
9474             <prgn>dpkg-buildpackage</prgn> - overall package-building
9475             control script
9476           </heading>
9477
9478           <p>
9479             <prgn>dpkg-buildpackage</prgn> is a script which invokes
9480             <prgn>dpkg-source</prgn>, the <file>debian/rules</file>
9481             targets <tt>clean</tt>, <tt>build</tt> and
9482             <tt>binary</tt>, <prgn>dpkg-genchanges</prgn> and
9483             <prgn>gpg</prgn> (or <prgn>pgp</prgn>) to build a signed
9484             source and binary package upload.
9485           </p>
9486
9487           <p>
9488             It is usually invoked by hand from the top level of the
9489             built or unbuilt source directory.  It may be invoked with
9490             no arguments; useful arguments include:
9491             <taglist compact="compact">
9492               <tag><tt>-uc</tt>, <tt>-us</tt></tag>
9493               <item>
9494                 <p>
9495                   Do not sign the <tt>.changes</tt> file or the
9496                   source package <tt>.dsc</tt> file, respectively.</p>
9497               </item>
9498               <tag><tt>-p<var>sign-command</var></tt></tag>
9499               <item>
9500                 <p>
9501                   Invoke <var>sign-command</var> instead of finding
9502                   <tt>gpg</tt> or <tt>pgp</tt> on the <prgn>PATH</prgn>.
9503                   <var>sign-command</var> must behave just like
9504                   <prgn>gpg</prgn> or <tt>pgp</tt>.</p>
9505               </item>
9506               <tag><tt>-r<var>root-command</var></tt></tag>
9507               <item>
9508                 <p>
9509                   When root privilege is required, invoke the command
9510                   <var>root-command</var>.  <var>root-command</var>
9511                   should invoke its first argument as a command, from
9512                   the <prgn>PATH</prgn> if necessary, and pass its
9513                   second and subsequent arguments to the command it
9514                   calls.  If no <var>root-command</var> is supplied
9515                   then <var>dpkg-buildpackage</var> will take no
9516                   special action to gain root privilege, so that for
9517                   most packages it will have to be invoked as root to
9518                   start with.</p>
9519               </item>
9520               <tag><tt>-b</tt>, <tt>-B</tt></tag>
9521               <item>
9522                 <p>
9523                   Two types of binary-only build and upload - see
9524                   <manref name="dpkg-source" section="1">.
9525                 </p>
9526               </item>
9527             </taglist>
9528           </p>
9529         </sect1>
9530
9531         <sect1 id="pkg-dpkg-gencontrol">
9532           <heading>
9533             <prgn>dpkg-gencontrol</prgn> - generates binary package
9534             control files
9535           </heading>
9536
9537           <p>
9538             This program is usually called from <file>debian/rules</file>
9539             (see <ref id="pkg-sourcetree">) in the top level of the source
9540             tree.
9541           </p>
9542
9543           <p>
9544             This is usually done just before the files and directories in the
9545             temporary directory tree where the package is being built have their
9546             permissions and ownerships set and the package is constructed using
9547             <prgn>dpkg-deb/</prgn>
9548               <footnote>
9549                 This is so that the control file which is produced has
9550                 the right permissions
9551             </footnote>.
9552           </p>
9553
9554           <p>
9555             <prgn>dpkg-gencontrol</prgn> must be called after all the
9556             files which are to go into the package have been placed in
9557             the temporary build directory, so that its calculation of
9558             the installed size of a package is correct.
9559           </p>
9560
9561           <p>
9562             It is also necessary for <prgn>dpkg-gencontrol</prgn> to
9563             be run after <prgn>dpkg-shlibdeps</prgn> so that the
9564             variable substitutions created by
9565             <prgn>dpkg-shlibdeps</prgn> in <file>debian/substvars</file>
9566             are available.
9567           </p>
9568
9569           <p>
9570             For a package which generates only one binary package, and
9571             which builds it in <file>debian/tmp</file> relative to the top
9572             of the source package, it is usually sufficient to call
9573             <prgn>dpkg-gencontrol</prgn>.
9574           </p>
9575
9576           <p>
9577             Sources which build several binaries will typically need
9578             something like:
9579             <example>
9580   dpkg-gencontrol -Pdebian/tmp-<var>pkg</var> -p<var>package</var>
9581             </example> The <tt>-P</tt> tells
9582             <prgn>dpkg-gencontrol</prgn> that the package is being
9583             built in a non-default directory, and the <tt>-p</tt>
9584             tells it which package's control file should be generated.
9585           </p>
9586
9587           <p>
9588             <prgn>dpkg-gencontrol</prgn> also adds information to the
9589             list of files in <file>debian/files</file>, for the benefit of
9590             (for example) a future invocation of
9591             <prgn>dpkg-genchanges</prgn>.</p>
9592         </sect1>
9593
9594         <sect1 id="pkg-dpkg-shlibdeps">
9595           <heading>
9596             <prgn>dpkg-shlibdeps</prgn> - calculates shared library
9597             dependencies
9598           </heading>
9599
9600           <p>
9601             This program is usually called from <file>debian/rules</file>
9602             just before <prgn>dpkg-gencontrol</prgn> (see <ref
9603             id="pkg-sourcetree">), in the top level of the source tree.
9604           </p>
9605
9606           <p>
9607             Its arguments are executables and shared libraries
9608             <footnote>
9609               <p>
9610                 They may be specified either in the locations in the
9611                 source tree where they are created or in the locations
9612                 in the temporary build tree where they are installed
9613                 prior to binary package creation.
9614               </p>
9615             </footnote> for which shared library dependencies should
9616             be included in the binary package's control file.
9617           </p>
9618
9619           <p>
9620             If some of the found shared libraries should only
9621             warrant a <tt>Recommends</tt> or <tt>Suggests</tt>, or if
9622             some warrant a <tt>Pre-Depends</tt>, this can be achieved
9623             by using the <tt>-d<var>dependency-field</var></tt> option
9624             before those executable(s).  (Each <tt>-d</tt> option
9625             takes effect until the next <tt>-d</tt>.)
9626           </p>
9627
9628           <p>
9629             <prgn>dpkg-shlibdeps</prgn> does not directly cause the
9630             output control file to be modified.  Instead by default it
9631             adds to the <file>debian/substvars</file> file variable
9632             settings like <tt>shlibs:Depends</tt>.  These variable
9633             settings must be referenced in dependency fields in the
9634             appropriate per-binary-package sections of the source
9635             control file.
9636           </p>
9637
9638           <p>
9639             For example, a package that generates an essential part
9640             which requires dependencies, and optional parts that 
9641             which only require a recommendation, would separate those
9642             two sets of dependencies into two different fields.<footnote>
9643                 At the time of writing, an example for this was the
9644                 <package/xmms/ package, with Depends used for the xmms
9645                 executable, Recommends for the plug-ins and Suggests for
9646                 even more optional features provided by unzip.
9647             </footnote>
9648             It can say in its <file>debian/rules</file>:
9649             <example>
9650   dpkg-shlibdeps -dDepends <var>program anotherprogram ...</var> \
9651                  -dRecommends <var>optionalpart anotheroptionalpart</var>
9652             </example>
9653             and then in its main control file <file>debian/control</file>:
9654             <example>
9655   <var>...</var>
9656   Depends: ${shlibs:Depends}
9657   Recommends: ${shlibs:Recommends}
9658   <var>...</var>
9659             </example>
9660           </p>
9661
9662           <p>
9663             Sources which produce several binary packages with
9664             different shared library dependency requirements can use
9665             the <tt>-p<var>varnameprefix</var></tt> option to override
9666             the default <tt>shlibs:</tt> prefix (one invocation of
9667             <prgn>dpkg-shlibdeps</prgn> per setting of this option).
9668             They can thus produce several sets of dependency
9669             variables, each of the form
9670             <tt><var>varnameprefix</var>:<var>dependencyfield</var></tt>,
9671             which can be referred to in the appropriate parts of the
9672             binary package control files.
9673           </p>
9674         </sect1>
9675
9676
9677         <sect1 id="pkg-dpkg-distaddfile">
9678           <heading>
9679             <prgn>dpkg-distaddfile</prgn> - adds a file to
9680             <file>debian/files</file>
9681           </heading>
9682
9683           <p>
9684             Some packages' uploads need to include files other than
9685             the source and binary package files.
9686           </p>
9687
9688           <p>
9689             <prgn>dpkg-distaddfile</prgn> adds a file to the
9690             <file>debian/files</file> file so that it will be included in
9691             the <file>.changes</file> file when
9692             <prgn>dpkg-genchanges</prgn> is run.
9693           </p>
9694
9695           <p>
9696             It is usually invoked from the <tt>binary</tt> target of
9697             <file>debian/rules</file>:
9698             <example>
9699   dpkg-distaddfile <var>filename</var> <var>section</var> <var>priority</var>
9700             </example>
9701             The <var>filename</var> is relative to the directory where
9702             <prgn>dpkg-genchanges</prgn> will expect to find it - this
9703             is usually the directory above the top level of the source
9704             tree.  The <file>debian/rules</file> target should put the
9705             file there just before or just after calling
9706             <prgn>dpkg-distaddfile</prgn>.
9707           </p>
9708
9709           <p>
9710             The <var>section</var> and <var>priority</var> are passed
9711             unchanged into the resulting <file>.changes</file> file.
9712           </p>
9713         </sect1>
9714
9715
9716         <sect1 id="pkg-dpkg-genchanges">
9717           <heading>
9718             <prgn>dpkg-genchanges</prgn> - generates a <file>.changes</file>
9719             upload control file
9720           </heading>
9721
9722           <p>
9723             This program is usually called by package-independent
9724             automatic building scripts such as
9725             <prgn>dpkg-buildpackage</prgn>, but it may also be called
9726             by hand.
9727           </p>
9728
9729           <p>
9730             It is usually called in the top level of a built source
9731             tree, and when invoked with no arguments will print out a
9732             straightforward <file>.changes</file> file based on the
9733             information in the source package's changelog and control
9734             file and the binary and source packages which should have
9735             been built.
9736           </p>
9737         </sect1>
9738
9739
9740         <sect1 id="pkg-dpkg-parsechangelog">
9741           <heading>
9742             <prgn>dpkg-parsechangelog</prgn> - produces parsed
9743             representation of a changelog
9744           </heading>
9745
9746           <p>
9747             This program is used internally by
9748             <prgn>dpkg-source</prgn> et al.  It may also occasionally
9749             be useful in <file>debian/rules</file> and elsewhere.  It
9750             parses a changelog, <file>debian/changelog</file> by default,
9751             and prints a control-file format representation of the
9752             information in it to standard output.
9753           </p>
9754         </sect1>
9755
9756         <sect1 id="pkg-dpkg-architecture">
9757           <heading>
9758             <prgn>dpkg-architecture</prgn> - information about the build and
9759             host system
9760           </heading>
9761
9762           <p>
9763             This program can be used manually, but is also invoked by
9764             <tt>dpkg-buildpackage</tt> or <file>debian/rules</file> to set
9765             environment or make variables which specify the build and host
9766             architecture for the package building process.
9767           </p>
9768         </sect1>
9769       </sect>
9770
9771       <sect id="pkg-sourcetree">
9772         <heading>The Debianised source tree</heading>
9773
9774         <p>
9775           The source archive scheme described later is intended to
9776           allow a Debianised source tree with some associated control
9777           information to be reproduced and transported easily.  The
9778           Debianised source tree is a version of the original program
9779           with certain files added for the benefit of the
9780           Debianisation process, and with any other changes required
9781           made to the rest of the source code and installation
9782           scripts.
9783         </p>
9784
9785         <p>
9786           The extra files created for Debian are in the subdirectory
9787           <file>debian</file> of the top level of the Debianised source
9788           tree.  They are described below.
9789         </p>
9790
9791         <sect1 id="pkg-debianrules">
9792           <heading><file>debian/rules</file> - the main building script</heading>
9793
9794           <p>
9795             See <ref id="debianrules">.
9796           </p>
9797         </sect1>
9798
9799
9800         <sect1 id="pkg-dpkgchangelog">
9801           <heading><file>debian/changelog</file></heading>
9802
9803           <p>
9804             See <ref id="dpkgchangelog">.
9805           </p>
9806
9807           <p>
9808             It is recommended that the entire changelog be encoded in the
9809             <url id="http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2279.html" name="UTF-8">
9810             encoding of
9811             <url id="http://www.unicode.org/"
9812             name="Unicode">.<footnote>
9813               <p>
9814                 I think it is fairly obvious that we need to
9815                 eventually transition to UTF-8 for our package
9816                 infrastructure; it is really the only sane char-set in
9817                 an international environment.  Now, we can't switch to
9818                 using UTF-8 for package control fields and the like
9819                 until dpkg has better support, but one thing we can
9820                 start doing today is requesting that Debian changelogs
9821                 are UTF-8 encoded. At some point in time, we can start
9822                 requiring them to do so. 
9823               </p>
9824               <p>
9825                 Checking for non-UTF8 characters in a changelog is
9826                 trivial.  Dump the file through 
9827                 <example>iconv -f utf-8 -t ucs-4</example>
9828                   discard the output, and check the return
9829                 value.  If there are any characters in the stream
9830                 which are invalid UTF-8 sequences, iconv will exit
9831                 with an error code; and this will be the case for the
9832                 vast majority of other character sets.
9833               </p>
9834             </footnote>
9835           </p>
9836
9837           <sect2><heading>Defining alternative changelog formats
9838             </heading>
9839
9840             <p>
9841               It is possible to use a different format to the standard
9842               one, by providing a parser for the format you wish to
9843               use.
9844             </p>
9845
9846             <p>
9847               In order to have <tt>dpkg-parsechangelog</tt> run your
9848               parser, you must include a line within the last 40 lines
9849               of your file matching the Perl regular expression:
9850               <tt>\schangelog-format:\s+([0-9a-z]+)\W</tt> The part in
9851               parentheses should be the name of the format.  For
9852               example, you might say:
9853               <example>
9854   @@@ changelog-format: joebloggs @@@
9855               </example>
9856               Changelog format names are non-empty strings of alphanumerics.
9857             </p>
9858
9859             <p>
9860               If such a line exists then <tt>dpkg-parsechangelog</tt>
9861               will look for the parser as
9862               <file>/usr/lib/dpkg/parsechangelog/<var>format-name</var></file>
9863               or
9864               <file>/usr/local/lib/dpkg/parsechangelog/<var>format-name</var></file>;
9865               it is an error for it not to find it, or for it not to
9866               be an executable program.  The default changelog format
9867               is <tt>dpkg</tt>, and a parser for it is provided with
9868               the <tt>dpkg</tt> package.
9869             </p>
9870
9871             <p>
9872               The parser will be invoked with the changelog open on
9873               standard input at the start of the file.  It should read
9874               the file (it may seek if it wishes) to determine the
9875               information required and return the parsed information
9876               to standard output in the form of a series of control
9877               fields in the standard format.  By default it should
9878               return information about only the most recent version in
9879               the changelog; it should accept a
9880               <tt>-v<var>version</var></tt> option to return changes
9881               information from all versions present <em>strictly
9882               after</em> <var>version</var>, and it should then be an
9883               error for <var>version</var> not to be present in the
9884               changelog.
9885             </p>
9886
9887             <p>
9888               The fields are:
9889               <list compact="compact">
9890                 <item><qref id="f-Source"><tt>Source</tt></qref></item>
9891                 <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
9892                 <item><qref id="f-Distribution"><tt>Distribution</tt></qref> (mandatory)</item>
9893                 <item><qref id="f-Urgency"><tt>Urgency</tt></qref> (mandatory)</item>
9894                 <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
9895                 <item><qref id="f-Date"><tt>Date</tt></qref></item>
9896                 <item><qref id="f-Changes"><tt>Changes</tt></qref> (mandatory)</item>
9897               </list>
9898             </p>
9899
9900             <p>
9901               If several versions are being returned (due to the use
9902               of <tt>-v</tt>), the urgency value should be of the
9903               highest urgency code listed at the start of any of the
9904               versions requested followed by the concatenated
9905               (space-separated) comments from all the versions
9906               requested; the maintainer, version, distribution and
9907               date should always be from the most recent version.
9908             </p>
9909
9910             <p>
9911               For the format of the <tt>Changes</tt> field see
9912               <ref id="f-Changes">.
9913             </p>
9914
9915             <p>
9916               If the changelog format which is being parsed always or
9917               almost always leaves a blank line between individual
9918               change notes these blank lines should be stripped out,
9919               so as to make the resulting output compact.
9920             </p>
9921
9922             <p>
9923               If the changelog format does not contain date or package
9924               name information this information should be omitted from
9925               the output.  The parser should not attempt to synthesize
9926               it or find it from other sources.
9927             </p>
9928
9929             <p>
9930               If the changelog does not have the expected format the
9931               parser should exit with a nonzero exit status, rather
9932               than trying to muddle through and possibly generating
9933               incorrect output.
9934             </p>
9935
9936             <p>
9937               A changelog parser may not interact with the user at
9938               all.
9939             </p>
9940           </sect2>
9941         </sect1>
9942
9943         <sect1 id="pkg-srcsubstvars">
9944           <heading><file>debian/substvars</file> and variable substitutions</heading>
9945
9946           <p>
9947             See <ref id="substvars">.
9948           </p>
9949
9950         </sect1>
9951
9952         <sect1>
9953           <heading><file>debian/files</file></heading>
9954
9955           <p>
9956             See <ref id="debianfiles">.
9957           </p>
9958         </sect1>
9959
9960         <sect1><heading><file>debian/tmp</file>
9961           </heading>
9962
9963           <p>
9964             This is the canonical temporary location for the
9965             construction of binary packages by the <tt>binary</tt>
9966             target.  The directory <file>tmp</file> serves as the root of
9967             the file system tree as it is being constructed (for
9968             example, by using the package's upstream makefiles install
9969             targets and redirecting the output there), and it also
9970             contains the <tt>DEBIAN</tt> subdirectory.  See <ref
9971             id="pkg-bincreating">.
9972           </p>
9973
9974           <p>
9975             If several binary packages are generated from the same
9976             source tree it is usual to use several
9977             <file>debian/tmp<var>something</var></file> directories, for
9978             example <file>tmp-a</file> or <file>tmp-doc</file>.
9979           </p>
9980
9981           <p>
9982             Whatever <file>tmp</file> directories are created and used by
9983             <tt>binary</tt> must of course be removed by the
9984             <tt>clean</tt> target.</p></sect1>
9985       </sect>
9986
9987
9988       <sect id="pkg-sourcearchives"><heading>Source packages as archives
9989         </heading>
9990
9991         <p>
9992           As it exists on the FTP site, a Debian source package
9993           consists of three related files.  You must have the right
9994           versions of all three to be able to use them.
9995         </p>
9996
9997         <p>
9998           <taglist>
9999             <tag>Debian source control file - <tt>.dsc</tt></tag>
10000             <item>
10001                 This file is a control file used by <prgn>dpkg-source</prgn>
10002                 to extract a source package.
10003                 See <ref id="debiansourcecontrolfiles">.
10004             </item>
10005
10006             <tag>
10007               Original source archive -
10008               <file>
10009                 <var>package</var>_<var>upstream-version</var>.orig.tar.gz
10010               </file>
10011             </tag>
10012
10013             <item>
10014               <p>
10015                 This is a compressed (with <tt>gzip -9</tt>)
10016                 <prgn>tar</prgn> file containing the source code from
10017                 the upstream authors of the program.
10018               </p>
10019             </item>
10020
10021             <tag>
10022               Debianisation diff -
10023               <file>
10024                 <var>package</var>_<var>upstream_version-revision</var>.diff.gz
10025               </file>
10026             </tag>
10027             <item>
10028
10029               <p>
10030                 This is a unified context diff (<tt>diff -u</tt>)
10031                 giving the changes which are required to turn the
10032                 original source into the Debian source.  These changes
10033                 may only include editing and creating plain files.
10034                 The permissions of files, the targets of symbolic
10035                 links and the characteristics of special files or
10036                 pipes may not be changed and no files may be removed
10037                 or renamed.
10038               </p>
10039
10040               <p>
10041                 All the directories in the diff must exist, except the
10042                 <file>debian</file> subdirectory of the top of the source
10043                 tree, which will be created by
10044                 <prgn>dpkg-source</prgn> if necessary when unpacking.
10045               </p>
10046
10047               <p>
10048                 The <prgn>dpkg-source</prgn> program will
10049                 automatically make the <file>debian/rules</file> file
10050                 executable (see below).</p></item>
10051           </taglist>
10052         </p>
10053
10054         <p>
10055           If there is no original source code - for example, if the
10056           package is specially prepared for Debian or the Debian
10057           maintainer is the same as the upstream maintainer - the
10058           format is slightly different: then there is no diff, and the
10059           tarfile is named
10060           <file><var>package</var>_<var>version</var>.tar.gz</file>,
10061           and preferably contains a directory named
10062           <file><var>package</var>-<var>version</var></file>.
10063         </p>
10064       </sect>
10065
10066       <sect>
10067         <heading>Unpacking a Debian source package without <prgn>dpkg-source</prgn></heading>
10068
10069         <p>
10070           <tt>dpkg-source -x</tt> is the recommended way to unpack a
10071           Debian source package.  However, if it is not available it
10072           is possible to unpack a Debian source archive as follows:
10073         <enumlist compact="compact">
10074           <item>
10075             <p>
10076               Untar the tarfile, which will create a <file>.orig</file>
10077               directory.</p>
10078           </item>
10079           <item>
10080             <p>Rename the <file>.orig</file> directory to
10081               <file><var>package</var>-<var>version</var></file>.</p>
10082           </item>
10083             <item>
10084             <p>
10085               Create the subdirectory <file>debian</file> at the top of
10086               the source tree.</p>
10087           </item>
10088           <item><p>Apply the diff using <tt>patch -p0</tt>.</p>
10089           </item>
10090           <item><p>Untar the tarfile again if you want a copy of the original
10091               source code alongside the Debianised version.</p>
10092           </item>
10093         </enumlist>
10094
10095         <p>
10096           It is not possible to generate a valid Debian source archive
10097           without using <prgn>dpkg-source</prgn>.  In particular,
10098           attempting to use <prgn>diff</prgn> directly to generate the
10099           <file>.diff.gz</file> file will not work.
10100         </p>
10101
10102         <sect1>
10103           <heading>Restrictions on objects in source packages</heading>
10104
10105           <p>
10106             The source package may not contain any hard links
10107             <footnote>
10108                 This is not currently detected when building source
10109                 packages, but only when extracting
10110                 them.
10111             </footnote>
10112             <footnote>
10113                 Hard links may be permitted at some point in the
10114                 future, but would require a fair amount of
10115                 work.
10116             </footnote>, device special files, sockets or setuid or
10117             setgid files.
10118             <footnote>
10119                 Setgid directories are allowed.
10120             </footnote>
10121           </p>
10122
10123           <p>
10124             The source packaging tools manage the changes between the
10125             original and Debianised source using <prgn>diff</prgn> and
10126             <prgn>patch</prgn>.  Turning the original source tree as
10127             included in the <file>.orig.tar.gz</file> into the debianised
10128             source must not involve any changes which cannot be
10129             handled by these tools.  Problematic changes which cause
10130             <prgn>dpkg-source</prgn> to halt with an error when
10131             building the source package are:
10132             <list compact="compact">
10133               <item><p>Adding or removing symbolic links, sockets or pipes.</p>
10134               </item>
10135               <item><p>Changing the targets of symbolic links.</p>
10136               </item>
10137               <item><p>Creating directories, other than <file>debian</file>.</p>
10138               </item>
10139               <item><p>Changes to the contents of binary files.</p></item>
10140             </list> Changes which cause <prgn>dpkg-source</prgn> to
10141             print a warning but continue anyway are:
10142             <list compact="compact">
10143               <item>
10144                 <p>
10145                   Removing files, directories or symlinks.
10146                   <footnote>
10147                       Renaming a file is not treated specially - it is
10148                       seen as the removal of the old file (which
10149                       generates a warning, but is otherwise ignored),
10150                       and the creation of the new one.
10151                   </footnote>
10152                 </p>
10153               </item>
10154               <item>
10155                 <p>
10156                   Changed text files which are missing the usual final
10157                   newline (either in the original or the modified
10158                   source tree).
10159                 </p>
10160               </item>
10161             </list>
10162             Changes which are not represented, but which are not detected by
10163             <prgn>dpkg-source</prgn>, are:
10164             <list compact="compact">
10165               <item><p>Changing the permissions of files (other than
10166                   <file>debian/rules</file>) and directories.</p></item>
10167             </list>
10168           </p>
10169
10170           <p>
10171             The <file>debian</file> directory and <file>debian/rules</file>
10172             are handled specially by <prgn>dpkg-source</prgn> - before
10173             applying the changes it will create the <file>debian</file>
10174             directory, and afterwards it will make
10175             <file>debian/rules</file> world-executable.
10176           </p>
10177         </sect1>
10178       </sect>
10179     </appendix>
10180
10181     <appendix id="pkg-controlfields">
10182       <heading>Control files and their fields (from old Packaging Manual)</heading>
10183
10184       <p>
10185         Many of the tools in the <prgn>dpkg</prgn> suite manipulate
10186         data in a common format, known as control files.  Binary and
10187         source packages have control data as do the <file>.changes</file>
10188         files which control the installation of uploaded files, and
10189         <prgn>dpkg</prgn>'s internal databases are in a similar
10190         format.
10191       </p>
10192
10193       <sect>
10194         <heading>Syntax of control files</heading>
10195
10196         <p>
10197           See <ref id="controlsyntax">.
10198         </p>
10199
10200         <p>
10201           It is important to note that there are several fields which
10202           are optional as far as <prgn>dpkg</prgn> and the related
10203           tools are concerned, but which must appear in every Debian
10204           package, or whose omission may cause problems.
10205         </p>
10206       </sect>
10207
10208       <sect>
10209         <heading>List of fields</heading>
10210
10211         <p>
10212           See <ref id="controlfieldslist">.
10213         </p>
10214
10215         <p>
10216           This section now contains only the fields that didn't belong
10217           to the Policy manual.
10218         </p>
10219
10220         <sect1 id="pkg-f-Filename">
10221           <heading><tt>Filename</tt> and <tt>MSDOS-Filename</tt></heading>
10222
10223           <p>
10224             These fields in <tt>Packages</tt> files give the
10225             filename(s) of (the parts of) a package in the
10226             distribution directories, relative to the root of the
10227             Debian hierarchy.  If the package has been split into
10228             several parts the parts are all listed in order, separated
10229             by spaces.
10230           </p>
10231         </sect1>
10232
10233         <sect1 id="pkg-f-Size">
10234           <heading><tt>Size</tt> and <tt>MD5sum</tt></heading>
10235
10236           <p>
10237             These fields in <file>Packages</file> files give the size (in
10238             bytes, expressed in decimal) and MD5 checksum of the
10239             file(s) which make(s) up a binary package in the
10240             distribution.  If the package is split into several parts
10241             the values for the parts are listed in order, separated by
10242             spaces.
10243           </p>
10244         </sect1>
10245
10246         <sect1 id="pkg-f-Status">
10247           <heading><tt>Status</tt></heading>
10248
10249           <p>
10250             This field in <prgn>dpkg</prgn>'s status file records
10251             whether the user wants a package installed, removed or
10252             left alone, whether it is broken (requiring
10253             re-installation) or not and what its current state on the
10254             system is.  Each of these pieces of information is a
10255             single word.
10256           </p>
10257         </sect1>
10258
10259         <sect1 id="pkg-f-Config-Version">
10260           <heading><tt>Config-Version</tt></heading>
10261
10262           <p>
10263             If a package is not installed or not configured, this
10264             field in <prgn>dpkg</prgn>'s status file records the last
10265             version of the package which was successfully
10266             configured.
10267           </p>
10268         </sect1>
10269
10270         <sect1 id="pkg-f-Conffiles">
10271           <heading><tt>Conffiles</tt></heading>
10272
10273           <p>
10274             This field in <prgn>dpkg</prgn>'s status file contains
10275             information about the automatically-managed configuration
10276             files held by a package.  This field should <em>not</em>
10277             appear anywhere in a package!
10278           </p>
10279         </sect1>
10280
10281         <sect1>
10282           <heading>Obsolete fields</heading>
10283
10284           <p>
10285             These are still recognized by <prgn>dpkg</prgn> but should
10286             not appear anywhere any more.
10287
10288             <taglist compact="compact">
10289
10290               <tag><tt>Revision</tt></tag>
10291               <tag><tt>Package-Revision</tt></tag>
10292               <tag><tt>Package_Revision</tt></tag>
10293               <item>
10294                   The Debian revision part of the package version was
10295                   at one point in a separate control file field.  This
10296                   field went through several names.
10297               </item>
10298
10299               <tag><tt>Recommended</tt></tag>
10300               <item>Old name for <tt>Recommends</tt>.</item>
10301
10302               <tag><tt>Optional</tt></tag>
10303               <item>Old name for <tt>Suggests</tt>.</item>
10304
10305               <tag><tt>Class</tt></tag>
10306               <item>Old name for <tt>Priority</tt>.</item>
10307
10308             </taglist>
10309           </p>
10310         </sect1>
10311       </sect>
10312
10313     </appendix>
10314
10315     <appendix id="pkg-conffiles">
10316       <heading>Configuration file handling (from old Packaging Manual)</heading>
10317
10318       <p>
10319         <prgn>dpkg</prgn> can do a certain amount of automatic
10320         handling of package configuration files.
10321       </p>
10322
10323       <p>
10324         Whether this mechanism is appropriate depends on a number of
10325         factors, but basically there are two approaches to any
10326         particular configuration file.
10327       </p>
10328
10329       <p>
10330         The easy method is to ship a best-effort configuration in the
10331         package, and use <prgn>dpkg</prgn>'s conffile mechanism to
10332         handle updates.  If the user is unlikely to want to edit the
10333         file, but you need them to be able to without losing their
10334         changes, and a new package with a changed version of the file
10335         is only released infrequently, this is a good approach.
10336       </p>
10337
10338       <p>
10339         The hard method is to build the configuration file from
10340         scratch in the <prgn>postinst</prgn> script, and to take the
10341         responsibility for fixing any mistakes made in earlier
10342         versions of the package automatically.  This will be
10343         appropriate if the file is likely to need to be different on
10344         each system.
10345       </p>
10346
10347       <sect><heading>Automatic handling of configuration files by
10348       <prgn>dpkg</prgn>
10349         </heading>
10350
10351         <p>
10352           A package may contain a control area file called
10353           <tt>conffiles</tt>.  This file should be a list of filenames
10354           of configuration files needing automatic handling, separated
10355           by newlines.  The filenames should be absolute pathnames,
10356           and the files referred to should actually exist in the
10357           package.
10358         </p>
10359
10360         <p>
10361           When a package is upgraded <prgn>dpkg</prgn> will process
10362           the configuration files during the configuration stage,
10363           shortly before it runs the package's <prgn>postinst</prgn>
10364           script,
10365         </p>
10366
10367         <p>
10368           For each file it checks to see whether the version of the
10369           file included in the package is the same as the one that was
10370           included in the last version of the package (the one that is
10371           being upgraded from); it also compares the version currently
10372           installed on the system with the one shipped with the last
10373           version.
10374         </p>
10375
10376         <p>
10377           If neither the user nor the package maintainer has changed
10378           the file, it is left alone.  If one or the other has changed
10379           their version, then the changed version is preferred - i.e.,
10380           if the user edits their file, but the package maintainer
10381           doesn't ship a different version, the user's changes will
10382           stay, silently, but if the maintainer ships a new version
10383           and the user hasn't edited it the new version will be
10384           installed (with an informative message).  If both have
10385           changed their version the user is prompted about the problem
10386           and must resolve the differences themselves.
10387         </p>
10388
10389         <p>
10390           The comparisons are done by calculating the MD5 message
10391           digests of the files, and storing the MD5 of the file as it
10392           was included in the most recent version of the package.
10393         </p>
10394
10395         <p>
10396           When a package is installed for the first time
10397           <prgn>dpkg</prgn> will install the file that comes with it,
10398           unless that would mean overwriting a file already on the
10399           file system.
10400         </p>
10401
10402         <p>
10403           However, note that <prgn>dpkg</prgn> will <em>not</em>
10404           replace a conffile that was removed by the user (or by a
10405           script).  This is necessary because with some programs a
10406           missing file produces an effect hard or impossible to
10407           achieve in another way, so that a missing file needs to be
10408           kept that way if the user did it.
10409         </p>
10410
10411         <p>
10412           Note that a package should <em>not</em> modify a
10413           <prgn>dpkg</prgn>-handled conffile in its maintainer
10414           scripts.  Doing this will lead to <prgn>dpkg</prgn> giving
10415           the user confusing and possibly dangerous options for
10416           conffile update when the package is upgraded.</p>
10417       </sect>
10418
10419       <sect><heading>Fully-featured maintainer script configuration
10420       handling
10421         </heading>
10422
10423         <p>
10424           For files which contain site-specific information such as
10425           the hostname and networking details and so forth, it is
10426           better to create the file in the package's
10427           <prgn>postinst</prgn> script.
10428         </p>
10429
10430         <p>
10431           This will typically involve examining the state of the rest
10432           of the system to determine values and other information, and
10433           may involve prompting the user for some information which
10434           can't be obtained some other way.
10435         </p>
10436
10437         <p>
10438           When using this method there are a couple of important
10439           issues which should be considered:
10440         </p>
10441
10442         <p>
10443           If you discover a bug in the program which generates the
10444           configuration file, or if the format of the file changes
10445           from one version to the next, you will have to arrange for
10446           the postinst script to do something sensible - usually this
10447           will mean editing the installed configuration file to remove
10448           the problem or change the syntax.  You will have to do this
10449           very carefully, since the user may have changed the file,
10450           perhaps to fix the very problem that your script is trying
10451           to deal with - you will have to detect these situations and
10452           deal with them correctly.
10453         </p>
10454
10455         <p>
10456           If you do go down this route it's probably a good idea to
10457           make the program that generates the configuration file(s) a
10458           separate program in <file>/usr/sbin</file>, by convention called
10459           <file><var>package</var>config</file> and then run that if
10460           appropriate from the post-installation script.  The
10461           <tt><var>package</var>config</tt> program should not
10462           unquestioningly overwrite an existing configuration - if its
10463           mode of operation is geared towards setting up a package for
10464           the first time (rather than any arbitrary reconfiguration
10465           later) you should have it check whether the configuration
10466           already exists, and require a <tt>--force</tt> flag to
10467           overwrite it.</p></sect>
10468     </appendix>
10469
10470     <appendix id="pkg-alternatives"><heading>Alternative versions of
10471         an interface - <prgn>update-alternatives</prgn> (from old
10472     Packaging Manual)
10473       </heading>
10474
10475       <p>
10476         When several packages all provide different versions of the
10477         same program or file it is useful to have the system select a
10478         default, but to allow the system administrator to change it
10479         and have their decisions respected.
10480       </p>
10481
10482       <p>
10483         For example, there are several versions of the <prgn>vi</prgn>
10484         editor, and there is no reason to prevent all of them from
10485         being installed at once, each under their own name
10486         (<prgn>nvi</prgn>, <prgn>vim</prgn> or whatever).
10487         Nevertheless it is desirable to have the name <tt>vi</tt>
10488         refer to something, at least by default.
10489       </p>
10490
10491       <p>
10492         If all the packages involved cooperate, this can be done with
10493         <prgn>update-alternatives</prgn>.
10494       </p>
10495
10496       <p>
10497         Each package provides its own version under its own name, and
10498         calls <prgn>update-alternatives</prgn> in its postinst to
10499         register its version (and again in its prerm to deregister
10500         it).
10501       </p>
10502
10503       <p>
10504         See the man page <manref name="update-alternatives"
10505         section="8"> for details.
10506       </p>
10507
10508       <p>
10509         If <prgn>update-alternatives</prgn> does not seem appropriate
10510         you may wish to consider using diversions instead.</p>
10511     </appendix>
10512
10513     <appendix id="pkg-diversions"><heading>Diversions - overriding a
10514     package's version of a file (from old Packaging Manual)
10515       </heading>
10516
10517       <p>
10518         It is possible to have <prgn>dpkg</prgn> not overwrite a file
10519         when it reinstalls the package it belongs to, and to have it
10520         put the file from the package somewhere else instead.
10521       </p>
10522
10523       <p>
10524         This can be used locally to override a package's version of a
10525         file, or by one package to override another's version (or
10526         provide a wrapper for it).
10527       </p>
10528
10529       <p>
10530         Before deciding to use a diversion, read <ref
10531         id="pkg-alternatives"> to see if you really want a diversion
10532         rather than several alternative versions of a program.
10533       </p>
10534
10535       <p>
10536         There is a diversion list, which is read by <prgn>dpkg</prgn>,
10537         and updated by a special program <prgn>dpkg-divert</prgn>.
10538         Please see <manref name="dpkg-divert" section="8"> for full
10539         details of its operation.
10540       </p>
10541
10542       <p>
10543         When a package wishes to divert a file from another, it should
10544         call <prgn>dpkg-divert</prgn> in its preinst to add the
10545         diversion and rename the existing file.  For example,
10546         supposing that a <prgn>smailwrapper</prgn> package wishes to
10547         install a wrapper around <file>/usr/sbin/smail</file>:
10548         <example>
10549   if [ install = "$1"  ]; then
10550      dpkg-divert --package smailwrapper --add --rename \
10551         --divert /usr/sbin/smail.real /usr/sbin/smail
10552   fi
10553         </example> Testing <tt>$1</tt> is necessary so that the script
10554         doesn't try to add the diversion again when
10555         <prgn>smailwrapper</prgn> is upgraded.  The <tt>--package
10556         smailwrapper</tt> ensures that <prgn>smailwrapper</prgn>'s
10557         copy of <file>/usr/sbin/smail</file> can bypass the diversion and
10558         get installed as the true version.
10559       </p>
10560
10561       <p>
10562         The postrm has to do the reverse:
10563         <example>
10564   if [ remove = "$1" ]; then
10565      dpkg-divert --package smailwrapper --remove --rename \
10566         --divert /usr/sbin/smail.real /usr/sbin/smail
10567   fi
10568         </example>
10569       </p>
10570
10571       <p>
10572         Do not attempt to divert a file which is vitally important for
10573         the system's operation - when using <prgn>dpkg-divert</prgn>
10574         there is a time, after it has been diverted but before
10575         <prgn>dpkg</prgn> has installed the new version, when the file
10576         does not exist.</p>
10577     </appendix>
10578
10579   </book>
10580 </debiandoc>
10581 <!-- Local variables: -->
10582 <!-- indent-tabs-mode: t -->
10583 <!-- End: -->
10584 <!-- vim:set ai et sts=2 sw=2 tw=76: -->