]> git.donarmstrong.com Git - debian/debian-policy.git/blob - policy.sgml
Update maintainer script dependency language
[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 <!-- current Debian changes file format -->
6 <!entity changesversion "1.8">
7 ]>
8 <debiandoc>
9
10   <book>
11     <titlepag>
12       <title>Debian Policy Manual</title>
13       <author><qref id="authors">The Debian Policy Mailing List</qref></author>
14       <version>version &version;, &date;</version>
15
16       <abstract>
17         This manual describes the policy requirements for the Debian
18         GNU/Linux distribution.  This includes the structure and
19         contents of the Debian archive and several design issues of
20         the operating system, as well as technical requirements that
21         each package must satisfy to be included in the distribution.
22       </abstract>
23
24       <copyright>
25         <copyrightsummary>
26           Copyright &copy; 1996,1997,1998 Ian Jackson
27           and Christian Schwarz.
28         </copyrightsummary>
29         <p>
30           These are the copyright dates of the original Policy manual.
31           Since then, this manual has been updated by many others.  No
32           comprehensive collection of copyright notices for subsequent
33           work exists.
34         </p>
35
36         <p>
37           This manual is free software; you may redistribute it and/or
38           modify it under the terms of the GNU General Public License
39           as published by the Free Software Foundation; either version
40           2, or (at your option) any later version.
41         </p>
42
43         <p>
44           This is distributed in the hope that it will be useful, but
45           <em>without any warranty</em>; without even the implied
46           warranty of merchantability or fitness for a particular
47           purpose.  See the GNU General Public License for more
48           details.
49         </p>
50
51         <p>
52           A copy of the GNU General Public License is available as
53           <file>/usr/share/common-licenses/GPL</file> in the Debian GNU/Linux
54           distribution or on the World Wide Web at
55           <url id="http://www.gnu.org/copyleft/gpl.html"
56                name="the GNU General Public Licence">. You can also
57           obtain it by writing to the Free Software Foundation, Inc.,
58           51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
59         </p>
60       </copyright>
61     </titlepag>
62
63     <toc detail="sect1">
64
65     <chapt id="scope">
66       <heading>About this manual</heading>
67       <sect>
68         <heading>Scope</heading>
69         <p>
70           This manual describes the policy requirements for the Debian
71           GNU/Linux distribution. This includes the structure and
72           contents of the Debian archive and several design issues of the
73           operating system, as well as technical requirements that
74           each package must satisfy to be included in the
75           distribution.
76         </p>
77
78         <p>
79           This manual also describes Debian policy as it relates to
80           creating Debian packages. It is not a tutorial on how to build
81           packages, nor is it exhaustive where it comes to describing
82           the behavior of the packaging system. Instead, this manual
83           attempts to define the interface to the package management
84           system that the developers have to be conversant with.<footnote>
85               Informally, the criteria used for inclusion is that the
86               material meet one of the following requirements:
87               <taglist compact="compact">
88                 <tag>Standard interfaces</tag>
89                 <item>
90                     The material presented represents an interface to
91                     the packaging system that is mandated for use, and
92                     is used by, a significant number of packages, and
93                     therefore should not be changed without peer
94                     review. Package maintainers can then rely on this
95                     interface not changing, and the package management
96                     software authors need to ensure compatibility with
97                     this interface definition. (Control file and
98                     changelog file formats are examples.)
99                 </item>
100                 <tag>Chosen Convention</tag>
101                 <item>
102                     If there are a number of technically viable choices
103                     that can be made, but one needs to select one of
104                     these options for inter-operability. The version
105                     number format is one example.
106                 </item>
107               </taglist>
108               Please note that these are not mutually exclusive;
109               selected conventions often become parts of standard
110               interfaces.
111           </footnote>
112         </p>
113
114         <p>
115           The footnotes present in this manual are
116           merely informative, and are not part of Debian policy itself.
117         </p>
118
119         <p>
120           The appendices to this manual are not necessarily normative,
121           either. Please see <ref id="pkg-scope"> for more information.
122         </p>
123
124         <p>
125           In the normative part of this manual,
126           the words <em>must</em>, <em>should</em> and
127           <em>may</em>, and the adjectives <em>required</em>,
128           <em>recommended</em> and <em>optional</em>, are used to
129           distinguish the significance of the various guidelines in
130           this policy document. Packages that do not conform to the
131           guidelines denoted by <em>must</em> (or <em>required</em>)
132           will generally not be considered acceptable for the Debian
133           distribution. Non-conformance with guidelines denoted by
134           <em>should</em> (or <em>recommended</em>) will generally be
135           considered a bug, but will not necessarily render a package
136           unsuitable for distribution. Guidelines denoted by
137           <em>may</em> (or <em>optional</em>) are truly optional and
138           adherence is left to the maintainer's discretion.
139         </p>
140
141         <p>
142           These classifications are roughly equivalent to the bug
143           severities <em>serious</em> (for <em>must</em> or
144           <em>required</em> directive violations), <em>minor</em>,
145           <em>normal</em> or <em>important</em>
146           (for <em>should</em> or <em>recommended</em> directive
147           violations) and <em>wishlist</em> (for <em>optional</em>
148           items).
149           <footnote>
150                 Compare RFC 2119.  Note, however, that these words are
151                 used in a different way in this document.
152           </footnote>
153         </p>
154
155         <p>
156           Much of the information presented in this manual will be
157           useful even when building a package which is to be
158           distributed in some other way or is intended for local use
159           only.
160         </p>
161       </sect>
162
163       <sect>
164         <heading>New versions of this document</heading>
165
166         <p>
167           This manual is distributed via the Debian package
168           <package><url name="debian-policy"
169               id="http://packages.debian.org/debian-policy"></package> 
170           (<httpsite>packages.debian.org</httpsite> 
171           <httppath>/debian-policy</httppath>).
172         </p>
173
174         <p>
175           The current version of this document is also available from
176           the Debian web mirrors at
177           <tt><url name="/doc/debian-policy/"
178                 id="http://www.debian.org/doc/debian-policy/"></tt>.
179           (
180           <httpsite>www.debian.org</httpsite>
181           <httppath>/doc/debian-policy/</httppath>)
182           Also available from the same directory are several other
183           formats: <file>policy.html.tar.gz</file>
184           (<httppath>/doc/debian-policy/policy.html.tar.gz</httppath>),
185           <file>policy.pdf.gz</file> 
186           (<httppath>/doc/debian-policy/policy.pdf.gz</httppath>)
187           and <file>policy.ps.gz</file>
188           (<httppath>/doc/debian-policy/policy.ps.gz</httppath>).
189         </p>
190
191         <p>
192           The <package>debian-policy</package> package also includes the file
193           <file>upgrading-checklist.txt.gz</file> which indicates policy
194           changes between versions of this document.
195         </p>
196       </sect>
197
198       <sect id="authors">
199         <heading>Authors and Maintainers</heading>
200
201         <p>
202           Originally called "Debian GNU/Linux Policy Manual", this
203           manual was initially written in 1996 by Ian Jackson.
204           It was revised on November 27th, 1996 by David A. Morris.
205           Christian Schwarz added new sections on March 15th, 1997,
206           and reworked/restructured it in April-July 1997.
207           Christoph Lameter contributed the "Web Standard".
208           Julian Gilbey largely restructured it in 2001.
209         </p>
210
211         <p>
212           Since September 1998, the responsibility for the contents of
213           this document lies on the <url name="debian-policy mailing list"
214           id="mailto:debian-policy@lists.debian.org">. Proposals
215           are discussed there and inserted into policy after a certain
216           consensus is established.
217           <!-- insert shameless policy-process plug here eventually -->
218           The actual editing is done by a group of maintainers that have
219           no editorial powers. These are the current maintainers:
220
221           <enumlist>
222             <item>Julian Gilbey</item>
223             <item>Branden Robinson</item>
224             <item>Josip Rodin</item>
225             <item>Manoj Srivastava</item>
226           </enumlist>
227         </p>
228
229         <p>
230           While the authors of this document have tried hard to avoid
231           typos and other errors, these do still occur. If you discover
232           an error in this manual or if you want to give any
233           comments, suggestions, or criticisms please send an email to
234           the Debian Policy List,
235           <email>debian-policy@lists.debian.org</email>, or submit a
236           bug report against the <tt>debian-policy</tt> package.
237         </p>
238
239         <p>
240           Please do not try to reach the individual authors or maintainers
241           of the Policy Manual regarding changes to the Policy.
242         </p>
243       </sect>
244
245       <sect id="related">
246         <heading>Related documents</heading>
247
248         <p>
249           There are several other documents other than this Policy Manual
250           that are necessary to fully understand some Debian policies and
251           procedures.
252         </p>
253
254         <p>
255           The external "sub-policy" documents are referred to in:
256           <list compact="compact">
257             <item><ref id="fhs"></item>
258             <item><ref id="virtual_pkg"></item>
259             <item><ref id="menus"></item>
260             <item><ref id="mime"></item>
261             <item><ref id="perl"></item>
262             <item><ref id="maintscriptprompt"></item>
263             <item><ref id="emacs"></item>
264           </list>
265         </p>
266
267         <p>
268           In addition to those, which carry the weight of policy, there
269           is the Debian Developer's Reference. This document describes
270           procedures and resources for Debian developers, but it is
271           <em>not</em> normative; rather, it includes things that don't
272           belong in the Policy, such as best practices for developers.
273         </p>
274
275         <p>
276           The Developer's Reference is available in the
277           <package>developers-reference</package> package.
278           It's also available from the Debian web mirrors at
279           <tt><url name="/doc/developers-reference/"
280                 id="http://www.debian.org/doc/developers-reference/"></tt>.
281         </p>
282       </sect>
283
284       <sect id="definitions">
285         <heading>Definitions</heading>
286
287         <p>
288           The following terms are used in this Policy Manual:
289           <taglist>
290             <tag>ASCII</tag>
291             <item>
292               The character encoding specified by ANSI X3.4-1986 and its
293               predecessor standards, referred to in MIME as US-ASCII, and
294               corresponding to an encoding in eight bits per character of
295               the first 128 <url id="http://www.unicode.org/"
296               name="Unicode"> characters, with the eighth bit always zero.
297             </item>
298             <tag>UTF-8</tag>
299             <item>
300               The transformation format (sometimes called encoding) of
301               <url id="http://www.unicode.org/" name="Unicode"> defined by
302               <url id="http://www.rfc-editor.org/rfc/rfc3629.txt"
303               name="RFC 3629">.  UTF-8 has the useful property of having
304               ASCII as a subset, so any text encoded in ASCII is trivially
305               also valid UTF-8.
306             </item>
307           </taglist>
308         </p>
309       </sect>
310     </chapt>
311
312
313     <chapt id="archive">
314       <heading>The Debian Archive</heading>
315
316       <p>
317         The Debian GNU/Linux system is maintained and distributed as a
318         collection of <em>packages</em>. Since there are so many of
319         them (currently well over 15000), they are split into
320         <em>sections</em> and given <em>priorities</em> to simplify
321         the handling of them.
322       </p>
323
324       <p>
325         The effort of the Debian project is to build a free operating
326         system, but not every package we want to make accessible is
327         <em>free</em> in our sense (see the Debian Free Software
328         Guidelines, below), or may be imported/exported without
329         restrictions. Thus, the archive is split into areas<footnote>
330           The Debian archive software uses the term "component" internally
331           and in the Release file format to refer to the division of an
332           archive.  The Debian Social Contract simply refers to "areas."
333           This document uses terminology similar to the Social Contract.
334         </footnote> based on their licenses and other restrictions.
335       </p>
336
337       <p>
338         The aims of this are:
339
340         <list compact="compact">
341           <item>to allow us to make as much software available as we can</item>
342           <item>to allow us to encourage everyone to write free software,
343                 and</item>
344           <item>to allow us to make it easy for people to produce
345                 CD-ROMs of our system without violating any licenses,
346                 import/export restrictions, or any other laws.</item>
347         </list>
348       </p>
349
350       <p>
351         The <em>main</em> archive area forms the <em>Debian GNU/Linux
352         distribution</em>.
353       </p>
354
355       <p>
356         Packages in the other archive areas (<tt>contrib</tt>,
357         <tt>non-free</tt>) are not considered to be part of the Debian
358         distribution, although we support their use and provide
359         infrastructure for them (such as our bug-tracking system and
360         mailing lists). This Debian Policy Manual applies to these
361         packages as well.
362       </p>
363
364       <sect id="dfsg">
365         <heading>The Debian Free Software Guidelines</heading>
366         <p>
367           The Debian Free Software Guidelines (DFSG) form our
368           definition of "free software".  These are:
369             <taglist>
370               <tag>1. Free Redistribution
371               </tag>
372               <item>
373                   The license of a Debian component may not restrict any
374                   party from selling or giving away the software as a
375                   component of an aggregate software distribution
376                   containing programs from several different
377                   sources. The license may not require a royalty or
378                   other fee for such sale.
379               </item>
380               <tag>2. Source Code
381               </tag>
382               <item>
383                   The program must include source code, and must allow
384                   distribution in source code as well as compiled form.
385               </item>
386               <tag>3. Derived Works
387               </tag>
388               <item>
389                   The license must allow modifications and derived
390                   works, and must allow them to be distributed under the
391                   same terms as the license of the original software.
392               </item>
393               <tag>4. Integrity of The Author's Source Code
394               </tag>
395               <item>
396                   The license may restrict source-code from being
397                   distributed in modified form <em>only</em> if the
398                   license allows the distribution of "patch files"
399                   with the source code for the purpose of modifying the
400                   program at build time. The license must explicitly
401                   permit distribution of software built from modified
402                   source code. The license may require derived works to
403                   carry a different name or version number from the
404                   original software.  (This is a compromise. The Debian
405                   Project encourages all authors to not restrict any
406                   files, source or binary, from being modified.)
407               </item>
408               <tag>5. No Discrimination Against Persons or Groups
409               </tag>
410               <item>
411                   The license must not discriminate against any person
412                   or group of persons.
413               </item>
414               <tag>6. No Discrimination Against Fields of Endeavor
415               </tag>
416               <item>
417                   The license must not restrict anyone from making use
418                   of the program in a specific field of endeavor. For
419                   example, it may not restrict the program from being
420                   used in a business, or from being used for genetic
421                   research.
422               </item>
423               <tag>7. Distribution of License
424               </tag>
425               <item>
426                   The rights attached to the program must apply to all
427                   to whom the program is redistributed without the need
428                   for execution of an additional license by those
429                   parties.
430               </item>
431               <tag>8. License Must Not Be Specific to Debian
432               </tag>
433               <item>
434                   The rights attached to the program must not depend on
435                   the program's being part of a Debian system. If the
436                   program is extracted from Debian and used or
437                   distributed without Debian but otherwise within the
438                   terms of the program's license, all parties to whom
439                   the program is redistributed must have the same
440                   rights as those that are granted in conjunction with
441                   the Debian system.
442               </item>
443               <tag>9. License Must Not Contaminate Other Software
444               </tag>
445               <item>
446                   The license must not place restrictions on other
447                   software that is distributed along with the licensed
448                   software. For example, the license must not insist
449                   that all other programs distributed on the same medium
450                   must be free software.
451               </item>
452               <tag>10. Example Licenses
453               </tag>
454               <item>
455                   The "GPL," "BSD," and "Artistic" licenses are examples of
456                   licenses that we consider <em>free</em>.
457               </item>
458             </taglist>
459         </p>
460       </sect>
461
462       <sect id="sections">
463         <heading>Archive areas</heading>
464
465         <sect1 id="main">
466           <heading>The main archive area</heading>
467
468           <p>
469             Every package in <em>main</em> must comply with the DFSG
470             (Debian Free Software Guidelines).
471           </p>
472
473           <p>
474             In addition, the packages in <em>main</em>
475             <list compact="compact">
476               <item>
477                   must not require a package outside of <em>main</em>
478                   for compilation or execution (thus, the package must
479                   not declare a "Depends", "Recommends", or
480                   "Build-Depends" relationship on a non-<em>main</em>
481                   package),
482               </item>
483               <item>
484                   must not be so buggy that we refuse to support them,
485                   and
486               </item>
487               <item>
488                   must meet all policy requirements presented in this
489                   manual.
490               </item>
491             </list>
492           </p>
493
494         </sect1>
495
496         <sect1 id="contrib">
497           <heading>The contrib archive area</heading>
498
499           <p>
500             Every package in <em>contrib</em> must comply with the DFSG.
501           </p>
502
503           <p>
504             In addition, the packages in <em>contrib</em>
505             <list compact="compact">
506               <item>
507                   must not be so buggy that we refuse to support them,
508                   and
509               </item>
510               <item>
511                   must meet all policy requirements presented in this
512                   manual.
513               </item>
514             </list>
515           </p>
516
517
518           <p>
519             Examples of packages which would be included in
520             <em>contrib</em> are:
521             <list compact="compact">
522               <item>
523                   free packages which require <em>contrib</em>,
524                   <em>non-free</em> packages or packages which are not
525                   in our archive at all for compilation or execution,
526                   and
527               </item>
528               <item>
529                   wrapper packages or other sorts of free accessories for
530                   non-free programs.
531               </item>
532             </list>
533           </p>
534         </sect1>
535
536         <sect1 id="non-free">
537           <heading>The non-free archive area</heading>
538
539           <p>
540             Packages must be placed in <em>non-free</em> if they are
541             not compliant with the DFSG or are encumbered by patents
542             or other legal issues that make their distribution
543             problematic.
544           </p>
545
546           <p>
547             In addition, the packages in <em>non-free</em>
548             <list compact="compact">
549               <item>
550                   must not be so buggy that we refuse to support them,
551                   and
552               </item>
553               <item>
554                   must meet all policy requirements presented in this
555                   manual that it is possible for them to meet.
556                   <footnote>
557                       It is possible that there are policy
558                       requirements which the package is unable to
559                       meet, for example, if the source is
560                       unavailable.  These situations will need to be
561                       handled on a case-by-case basis.
562                   </footnote>
563               </item>
564             </list>
565           </p>
566         </sect1>
567
568       </sect>
569
570       <sect id="pkgcopyright">
571         <heading>Copyright considerations</heading>
572
573         <p>
574           Every package must be accompanied by a verbatim copy of its
575           copyright information and distribution license in the file
576           <file>/usr/share/doc/<var>package</var>/copyright</file>
577           (see <ref id="copyrightfile"> for further details).
578         </p>
579
580         <p>
581           We reserve the right to restrict files from being included
582           anywhere in our archives if
583           <list compact="compact">
584             <item>
585                   their use or distribution would break a law,
586             </item>
587             <item>
588                   there is an ethical conflict in their distribution or
589                   use,
590             </item>
591             <item>
592                   we would have to sign a license for them, or
593             </item>
594             <item>
595                   their distribution would conflict with other project
596                   policies.
597             </item>
598           </list>
599         </p>
600
601         <p>
602           Programs whose authors encourage the user to make
603           donations are fine for the main distribution, provided
604           that the authors do not claim that not donating is
605           immoral, unethical, illegal or something similar; in such
606           a case they must go in <em>non-free</em>.
607         </p>
608
609         <p>
610           Packages whose copyright permission notices (or patent
611           problems) do not even allow redistribution of binaries
612           only, and where no special permission has been obtained,
613           must not be placed on the Debian FTP site and its mirrors
614           at all.
615         </p>
616
617         <p>
618           Note that under international copyright law (this applies
619           in the United States, too), <em>no</em> distribution or
620           modification of a work is allowed without an explicit
621           notice saying so.  Therefore a program without a copyright
622           notice <em>is</em> copyrighted and you may not do anything
623           to it without risking being sued! Likewise if a program
624           has a copyright notice but no statement saying what is
625           permitted then nothing is permitted.
626         </p>
627
628         <p>
629           Many authors are unaware of the problems that restrictive
630           copyrights (or lack of copyright notices) can cause for
631           the users of their supposedly-free software.  It is often
632           worthwhile contacting such authors diplomatically to ask
633           them to modify their license terms. However, this can be a
634           politically difficult thing to do and you should ask for
635           advice on the <tt>debian-legal</tt> mailing list first, as
636           explained below.
637         </p>
638
639         <p>
640           When in doubt about a copyright, send mail to
641           <email>debian-legal@lists.debian.org</email>.  Be prepared
642           to provide us with the copyright statement.  Software
643           covered by the GPL, public domain software and BSD-like
644           copyrights are safe; be wary of the phrases "commercial
645           use prohibited" and "distribution restricted".
646         </p>
647       </sect>
648
649       <sect id="subsections">
650         <heading>Sections</heading>
651
652         <p>
653           The packages in the archive areas <em>main</em>,
654           <em>contrib</em> and <em>non-free</em> are grouped further into
655           <em>sections</em> to simplify handling.
656         </p>
657
658         <p>
659           The archive area and section for each package should be
660           specified in the package's <tt>Section</tt> control record (see
661           <ref id="f-Section">).  However, the maintainer of the Debian
662           archive may override this selection to ensure the consistency of
663           the Debian distribution.  The <tt>Section</tt> field should be
664           of the form:
665           <list compact="compact">
666             <item>
667                   <em>section</em> if the package is in the
668                   <em>main</em> archive area,
669             </item>
670             <item>
671                   <em>area/section</em> if the package is in
672                   the <em>contrib</em> or <em>non-free</em>
673                   archive areas.
674             </item>
675           </list>
676         </p>
677
678         <p>
679           The Debian archive maintainers provide the authoritative
680           list of sections.  At present, they are:
681           <em>admin</em>, <em>cli-mono</em>, <em>comm</em>, <em>database</em>,
682           <em>devel</em>, <em>debug</em>, <em>doc</em>, <em>editors</em>,
683           <em>electronics</em>, <em>embedded</em>, <em>fonts</em>,
684           <em>games</em>, <em>gnome</em>, <em>graphics</em>, <em>gnu-r</em>,
685           <em>gnustep</em>, <em>hamradio</em>, <em>haskell</em>,
686           <em>httpd</em>, <em>interpreters</em>, <em>java</em>, <em>kde</em>,
687           <em>kernel</em>, <em>libs</em>, <em>libdevel</em>, <em>lisp</em>,
688           <em>localization</em>, <em>mail</em>, <em>math</em>, <em>misc</em>,
689           <em>net</em>, <em>news</em>, <em>ocaml</em>, <em>oldlibs</em>,
690           <em>otherosfs</em>, <em>perl</em>, <em>php</em>, <em>python</em>,
691           <em>ruby</em>, <em>science</em>, <em>shells</em>, <em>sound</em>,
692           <em>tex</em>, <em>text</em>, <em>utils</em>, <em>vcs</em>,
693           <em>video</em>, <em>web</em>, <em>x11</em>, <em>xfce</em>,
694           <em>zope</em>.  The additional section <em>debian-installer</em>
695           contains special packages used by the installer and is not used
696           for normal Debian packages.
697         </p>
698
699         <p>
700           For more information about the sections and their definitions,
701           see the <url id="http://packages.debian.org/unstable/"
702                        name="list of sections in unstable">.
703         </p>
704       </sect>
705
706       <sect id="priorities">
707         <heading>Priorities</heading>
708
709         <p>
710           Each package should have a <em>priority</em> value, which is
711           included in the package's <em>control record</em>
712           (see <ref id="f-Priority">).
713           This information is used by the Debian package management tools to
714           separate high-priority packages from less-important packages.
715         </p>
716
717         <p>
718           The following <em>priority levels</em> are recognized by the
719           Debian package management tools.
720           <taglist>
721             <tag><tt>required</tt></tag>
722             <item>
723                 Packages which are necessary for the proper
724                 functioning of the system (usually, this means that
725                 dpkg functionality depends on these packages).
726                 Removing a <tt>required</tt> package may cause your
727                 system to become totally broken and you may not even
728                 be able to use <prgn>dpkg</prgn> to put things back,
729                 so only do so if you know what you are doing.  Systems
730                 with only the <tt>required</tt> packages are probably
731                 unusable, but they do have enough functionality to
732                 allow the sysadmin to boot and install more software.
733             </item>
734             <tag><tt>important</tt></tag>
735             <item>
736                 Important programs, including those which one would
737                 expect to find on any Unix-like system.  If the
738                 expectation is that an experienced Unix person who
739                 found it missing would say "What on earth is going on,
740                 where is <prgn>foo</prgn>?", it must be an
741                 <tt>important</tt> package.<footnote>
742                     This is an important criterion because we are
743                     trying to produce, amongst other things, a free
744                     Unix.
745                 </footnote>
746                 Other packages without which the system will not run
747                 well or be usable must also have priority
748                 <tt>important</tt>.  This does
749                 <em>not</em> include Emacs, the X Window System, TeX
750                 or any other large applications.  The
751                 <tt>important</tt> packages are just a bare minimum of
752                 commonly-expected and necessary tools.
753             </item>
754             <tag><tt>standard</tt></tag>
755             <item>
756                 These packages provide a reasonably small but not too
757                 limited character-mode system.  This is what will be
758                 installed by default if the user doesn't select anything
759                 else.  It doesn't include many large applications.
760             </item>
761             <tag><tt>optional</tt></tag>
762             <item>
763                 (In a sense everything that isn't required is
764                 optional, but that's not what is meant here.) This is
765                 all the software that you might reasonably want to
766                 install if you didn't know what it was and don't have
767                 specialized requirements. This is a much larger system
768                 and includes the X Window System, a full TeX
769                 distribution, and many applications. Note that
770                 optional packages should not conflict with each other.
771             </item>
772             <tag><tt>extra</tt></tag>
773             <item>
774                 This contains all packages that conflict with others
775                 with required, important, standard or optional
776                 priorities, or are only likely to be useful if you
777                 already know what they are or have specialized
778                 requirements (such as packages containing only detached
779                 debugging symbols).
780             </item>
781           </taglist>
782         </p>
783
784         <p>
785           Packages must not depend on packages with lower priority
786           values (excluding build-time dependencies).  In order to
787           ensure this, the priorities of one or more packages may need
788           to be adjusted.
789         </p>
790       </sect>
791
792     </chapt>
793
794
795     <chapt id="binary">
796       <heading>Binary packages</heading>
797
798       <p>
799         The Debian GNU/Linux distribution is based on the Debian
800         package management system, called <prgn>dpkg</prgn>. Thus,
801         all packages in the Debian distribution must be provided
802         in the <tt>.deb</tt> file format.
803       </p>
804
805       <p>
806         A <tt>.deb</tt> package contains two sets of files: a set of files
807         to install on the system when the package is installed, and a set
808         of files that provide additional metadata about the package or
809         which are executed when the package is installed or removed.  This
810         second set of files is called <em>control information files</em>.
811         Among those files are the package maintainer scripts
812         and <file>control</file>, the <qref id="binarycontrolfiles">binary
813         package control file</qref> that contains the control fields for
814         the package.  Other control information files
815         include <qref id="sharedlibs-shlibdeps">the <file>shlibs</file>
816         file</qref> used to store shared library dependency information
817         and the <file>conffiles</file> file that lists the package's
818         configuration files (described in <ref id="config-files">).
819       </p>
820
821       <p>
822         There is unfortunately a collision of terminology here between
823         control information files and files in the Debian control file
824         format.  Throughout this document, a <em>control file</em> refers
825         to a file in the Debian control file format.  These files are
826         documented in <ref id="controlfields">.  Only files referred to
827         specifically as <em>control information files</em> are the files
828         included in the control information file member of
829         the <file>.deb</file> file format used by binary packages.  Most
830         control information files are not in the Debian control file
831         format.
832       </p>
833
834       <sect>
835         <heading>The package name</heading>
836
837         <p>
838           Every package must have a name that's unique within the Debian
839           archive.
840         </p>
841
842         <p>
843           The package name is included in the control field
844           <tt>Package</tt>, the format of which is described
845           in <ref id="f-Package">.
846           The package name is also included as a part of the file name
847           of the <tt>.deb</tt> file.
848         </p>
849       </sect>
850
851       <sect id="versions">
852         <heading>The version of a package</heading>
853
854         <p>
855           Every package has a version number recorded in its
856           <tt>Version</tt> control file field, described in
857           <ref id="f-Version">.
858         </p>
859
860         <p>
861           The package management system imposes an ordering on version
862           numbers, so that it can tell whether packages are being up- or
863           downgraded and so that package system front end applications
864           can tell whether a package it finds available is newer than
865           the one installed on the system.  The version number format
866           has the most significant parts (as far as comparison is
867           concerned) at the beginning.
868         </p>
869
870         <p>
871           If an upstream package has problematic version numbers they
872           should be converted to a sane form for use in the
873           <tt>Version</tt> field.
874         </p>
875
876         <sect1>
877           <heading>Version numbers based on dates</heading>
878
879           <p>
880             In general, Debian packages should use the same version
881             numbers as the upstream sources.  However, upstream version
882             numbers based on some date formats (sometimes used for
883             development or "snapshot" releases) will not be ordered
884             correctly by the package management software.  For
885             example, <prgn>dpkg</prgn> will consider "96May01" to be
886             greater than "96Dec24".
887           </p>
888
889           <p>
890             To prevent having to use epochs for every new upstream
891             version, the date-based portion of any upstream version number
892             should be given in a way that sorts correctly: four-digit year
893             first, followed by a two-digit numeric month, followed by a
894             two-digit numeric date, possibly with punctuation between the
895             components.
896           </p>
897
898           <p>
899             Native Debian packages (i.e., packages which have been written
900             especially for Debian) whose version numbers include dates
901             should also follow these rules.  If punctuation is desired
902             between the date components, remember that hyphen (<tt>-</tt>)
903             cannot be used in native package versions.  Period
904             (<tt>.</tt>) is normally a good choice.
905           </p>
906         </sect1>
907
908       </sect>
909
910       <sect id="maintainer">
911         <heading>The maintainer of a package</heading>
912
913         <p>
914           Every package must have a maintainer, except for orphaned
915           packages as described below.  The maintainer may be one person
916           or a group of people reachable from a common email address, such
917           as a mailing list.  The maintainer is responsible for
918           maintaining the Debian packaging files, evaluating and
919           responding appropriately to reported bugs, uploading new
920           versions of the package (either directly or through a sponsor),
921           ensuring that the package is placed in the appropriate archive
922           area and included in Debian releases as appropriate for the
923           stability and utility of the package, and requesting removal of
924           the package from the Debian distribution if it is no longer
925           useful or maintainable.
926         </p>
927
928         <p>
929           The maintainer must be specified in the <tt>Maintainer</tt>
930           control field with their correct name and a working email
931           address.  The email address given in the <tt>Maintainer</tt>
932           control field must accept mail from those role accounts in
933           Debian used to send automated mails regarding the package.  This
934           includes non-spam mail from the bug-tracking system, all mail
935           from the Debian archive maintenance software, and other role
936           accounts or automated processes that are commonly agreed on by
937           the project.<footnote>
938             A sample implementation of such a whitelist written for the
939             Mailman mailing list management software is used for mailing
940             lists hosted by alioth.debian.org.
941           </footnote>
942           If one person or team maintains several packages, they should
943           use the same form of their name and email address in
944           the <tt>Maintainer</tt> fields of those packages.
945         </p>
946
947         <p>
948           The format of the <tt>Maintainer</tt> control field is
949           described in <ref id="f-Maintainer">.
950         </p>
951
952         <p>
953           If the maintainer of the package is a team of people with a
954           shared email address, the <tt>Uploaders</tt> control field must
955           be present and must contain at least one human with their
956           personal email address.  See <ref id="f-Uploaders"> for the
957           syntax of that field.
958         </p>
959
960         <p>
961           An orphaned package is one with no current maintainer.  Orphaned
962           packages should have their <tt>Maintainer</tt> control field set
963           to <tt>Debian QA Group &lt;packages@qa.debian.org&gt;</tt>.
964           These packages are considered maintained by the Debian project
965           as a whole until someone else volunteers to take over
966           maintenance.<footnote>
967             The detailed procedure for gracefully orphaning a package can
968             be found in the Debian Developer's Reference
969             (see <ref id="related">).
970           </footnote>
971         </p>
972       </sect>
973
974       <sect id="descriptions">
975         <heading>The description of a package</heading>
976
977         <p>
978           Every Debian package must have a <tt>Description</tt> control
979           field which contains a synopsis and extended description of the
980           package.  Technical information about the format of the
981           <tt>Description</tt> field is in <ref id="f-Description">.
982         </p>
983
984         <p>
985           The description should describe the package (the program) to a
986           user (system administrator) who has never met it before so that
987           they have enough information to decide whether they want to
988           install it. This description should not just be copied verbatim
989           from the program's documentation.
990         </p>
991
992         <p>
993           Put important information first, both in the synopsis and
994           extended description.  Sometimes only the first part of the
995           synopsis or of the description will be displayed.  You can
996           assume that there will usually be a way to see the whole
997           extended description.
998         </p>
999
1000         <p>
1001           The description should also give information about the
1002           significant dependencies and conflicts between this package
1003           and others, so that the user knows why these dependencies and
1004           conflicts have been declared.
1005         </p>
1006
1007         <p>
1008           Instructions for configuring or using the package should
1009           not be included (that is what installation scripts,
1010           manual pages, info files, etc., are for).  Copyright
1011           statements and other administrivia should not be included
1012           either (that is what the copyright file is for).
1013         </p>
1014
1015         <sect1 id="synopsis"><heading>The single line synopsis</heading>
1016
1017           <p>
1018             The single line synopsis should be kept brief - certainly
1019             under 80 characters.
1020           </p>
1021
1022           <p>
1023             Do not include the package name in the synopsis line.  The
1024             display software knows how to display this already, and you
1025             do not need to state it.  Remember that in many situations
1026             the user may only see the synopsis line - make it as
1027             informative as you can.
1028           </p>
1029
1030         </sect1>
1031
1032         <sect1 id="extendeddesc"><heading>The extended description</heading>
1033
1034           <p>
1035             Do not try to continue the single line synopsis into the
1036             extended description.  This will not work correctly when
1037             the full description is displayed, and makes no sense
1038             where only the summary (the single line synopsis) is
1039             available.
1040           </p>
1041
1042           <p>
1043             The extended description should describe what the package
1044             does and how it relates to the rest of the system (in terms
1045             of, for example, which subsystem it is which part of).
1046           </p>
1047
1048           <p>
1049             The description field needs to make sense to anyone, even
1050             people who have no idea about any of the things the
1051             package deals with.<footnote>
1052                 The blurb that comes with a program in its
1053                 announcements and/or <prgn>README</prgn> files is
1054                 rarely suitable for use in a description.  It is
1055                 usually aimed at people who are already in the
1056                 community where the package is used.
1057             </footnote>
1058           </p>
1059
1060         </sect1>
1061
1062       </sect>
1063
1064       <sect>
1065         <heading>Dependencies</heading>
1066
1067         <p>
1068           Every package must specify the dependency information
1069           about other packages that are required for the first to
1070           work correctly.
1071         </p>
1072
1073         <p>
1074           For example, a dependency entry must be provided for any
1075           shared libraries required by a dynamically-linked executable
1076           binary in a package.
1077         </p>
1078
1079         <p>
1080           Packages are not required to declare any dependencies they
1081           have on other packages which are marked <tt>Essential</tt>
1082           (see below), and should not do so unless they depend on a
1083           particular version of that package.<footnote>
1084             <p>
1085               Essential is needed in part to avoid unresolvable dependency
1086               loops on upgrade.  If packages add unnecessary dependencies
1087               on packages in this set, the chances that there
1088               <strong>will</strong> be an unresolvable dependency loop
1089               caused by forcing these Essential packages to be configured
1090               first before they need to be is greatly increased.  It also
1091               increases the chances that frontends will be unable to
1092               <strong>calculate</strong> an upgrade path, even if one
1093               exists.
1094             </p>
1095             <p>
1096               Also, functionality is rarely ever removed from the
1097               Essential set, but <em>packages</em> have been removed from
1098               the Essential set when the functionality moved to a
1099               different package. So depending on these packages <em>just
1100               in case</em> they stop being essential does way more harm
1101               than good.
1102             </p>
1103           </footnote>
1104         </p>
1105
1106         <p>
1107           Sometimes, unpacking one package requires that another package
1108           be first unpacked <em>and</em> configured.  In this case, the
1109           depending package must specify this dependency in
1110           the <tt>Pre-Depends</tt> control field.
1111         </p>
1112
1113         <p>
1114           You should not specify a <tt>Pre-Depends</tt> entry for a
1115           package before this has been discussed on the
1116           <tt>debian-devel</tt> mailing list and a consensus about
1117           doing that has been reached.
1118         </p>
1119
1120         <p>
1121           The format of the package interrelationship control fields is
1122           described in <ref id="relationships">.
1123         </p>
1124       </sect>
1125
1126       <sect id="virtual_pkg">
1127         <heading>Virtual packages</heading>
1128
1129         <p>
1130           Sometimes, there are several packages which offer
1131           more-or-less the same functionality. In this case, it's
1132           useful to define a <em>virtual package</em> whose name
1133           describes that common functionality.  (The virtual
1134           packages only exist logically, not physically; that's why
1135           they are called <em>virtual</em>.) The packages with this
1136           particular function will then <em>provide</em> the virtual
1137           package. Thus, any other package requiring that function
1138           can simply depend on the virtual package without having to
1139           specify all possible packages individually.
1140         </p>
1141
1142         <p>
1143           All packages should use virtual package names where
1144           appropriate, and arrange to create new ones if necessary.
1145           They should not use virtual package names (except privately,
1146           amongst a cooperating group of packages) unless they have
1147           been agreed upon and appear in the list of virtual package
1148           names. (See also <ref id="virtual">)
1149         </p>
1150
1151         <p>
1152           The latest version of the authoritative list of virtual
1153           package names can be found in the <tt>debian-policy</tt> package.
1154           It is also available from the Debian web mirrors at
1155           <tt><url name="/doc/packaging-manuals/virtual-package-names-list.txt"
1156                 id="http://www.debian.org/doc/packaging-manuals/virtual-package-names-list.txt"></tt>.
1157         </p>
1158
1159         <p>
1160           The procedure for updating the list is described in the preface
1161           to the list.
1162         </p>
1163
1164       </sect>
1165
1166       <sect>
1167         <heading>Base system</heading>
1168
1169         <p>
1170           The <tt>base system</tt> is a minimum subset of the Debian
1171           GNU/Linux system that is installed before everything else
1172           on a new system. Only very few packages are allowed to form
1173           part of the base system, in order to keep the required disk
1174           usage very small.
1175         </p>
1176
1177         <p>
1178           The base system consists of all those packages with priority
1179           <tt>required</tt> or <tt>important</tt>. Many of them will
1180           be tagged <tt>essential</tt> (see below).
1181         </p>
1182       </sect>
1183
1184       <sect>
1185         <heading>Essential packages</heading>
1186
1187         <p>
1188           Essential is defined as the minimal set of functionality that
1189           must be available and usable on the system at all times, even
1190           when packages are in an unconfigured (but unpacked) state.
1191           Packages are tagged <tt>essential</tt> for a system using the
1192           <tt>Essential</tt> control field.  The format of the
1193           <tt>Essential</tt> control field is described in <ref
1194           id="f-Essential">.
1195         </p>
1196
1197         <p>
1198           Since these packages cannot be easily removed (one has to
1199           specify an extra <em>force option</em> to
1200           <prgn>dpkg</prgn> to do so), this flag must not be used
1201           unless absolutely necessary.  A shared library package
1202           must not be tagged <tt>essential</tt>; dependencies will
1203           prevent its premature removal, and we need to be able to
1204           remove it when it has been superseded.
1205         </p>
1206
1207         <p>
1208           Since dpkg will not prevent upgrading of other packages
1209           while an <tt>essential</tt> package is in an unconfigured
1210             state, all <tt>essential</tt> packages must supply all of
1211             their core functionality even when unconfigured. If the
1212             package cannot satisfy this requirement it must not be
1213             tagged as essential, and any packages depending on this
1214             package must instead have explicit dependency fields as
1215             appropriate.
1216         </p>
1217
1218         <p>
1219           Maintainers should take great care in adding any programs,
1220           interfaces, or functionality to <tt>essential</tt> packages.
1221           Packages may assume that functionality provided by
1222           <tt>essential</tt> packages is always available without
1223           declaring explicit dependencies, which means that removing
1224           functionality from the Essential set is very difficult and is
1225           almost never done.  Any capability added to an
1226           <tt>essential</tt> package therefore creates an obligation to
1227           support that capability as part of the Essential set in
1228           perpetuity.
1229         </p>
1230
1231         <p>
1232           You must not tag any packages <tt>essential</tt> before
1233           this has been discussed on the <tt>debian-devel</tt>
1234           mailing list and a consensus about doing that has been
1235           reached.
1236         </p>
1237       </sect>
1238
1239       <sect id="maintscripts">
1240         <heading>Maintainer Scripts</heading>
1241
1242         <p>
1243           The package installation scripts should avoid producing
1244           output which is unnecessary for the user to see and
1245           should rely on <prgn>dpkg</prgn> to stave off boredom on
1246           the part of a user installing many packages.  This means,
1247           amongst other things, using the <tt>--quiet</tt> option on
1248           <prgn>install-info</prgn>.
1249         </p>
1250
1251         <p>
1252           Errors which occur during the execution of an installation
1253           script must be checked and the installation must not
1254           continue after an error.
1255         </p>
1256
1257         <p>
1258           Note that in general <ref id="scripts"> applies to package
1259           maintainer scripts, too.
1260         </p>
1261
1262         <p>
1263           You should not use <prgn>dpkg-divert</prgn> on a file belonging
1264           to another package without consulting the maintainer of that
1265           package first.  When adding or removing diversions, package
1266           maintainer scripts must provide the <tt>--package</tt> flag
1267           to <prgn>dpkg-divert</prgn> and must not use <tt>--local</tt>.
1268         </p>
1269
1270         <p>
1271           All packages which supply an instance of a common command
1272           name (or, in general, filename) should generally use
1273           <prgn>update-alternatives</prgn>, so that they may be
1274           installed together.  If <prgn>update-alternatives</prgn>
1275           is not used, then each package must use
1276           <tt>Conflicts</tt> to ensure that other packages are
1277           de-installed.  (In this case, it may be appropriate to
1278           specify a conflict against earlier versions of something
1279           that previously did not use
1280           <prgn>update-alternatives</prgn>; this is an exception to
1281           the usual rule that versioned conflicts should be
1282           avoided.)
1283         </p>
1284
1285         <sect1 id="maintscriptprompt">
1286           <heading>Prompting in maintainer scripts</heading>
1287           <p>
1288             Package maintainer scripts may prompt the user if
1289             necessary. Prompting must be done by communicating
1290             through a program, such as <prgn>debconf</prgn>, which
1291             conforms to the Debian Configuration Management
1292             Specification, version 2 or higher.
1293           </p>
1294
1295           <p>
1296             Packages which are essential, or which are dependencies of
1297             essential packages, may fall back on another prompting method
1298             if no such interface is available when they are executed.
1299           </p>
1300
1301           <p>
1302             The Debian Configuration Management Specification is included
1303             in the <file>debconf_specification</file> files in the
1304             <package>debian-policy</package> package.
1305             It is also available from the Debian web mirrors at
1306             <tt><url name="/doc/packaging-manuals/debconf_specification.html"
1307                 id="http://www.debian.org/doc/packaging-manuals/debconf_specification.html"></tt>.
1308           </p>
1309
1310           <p>
1311             Packages which use the Debian Configuration Management
1312             Specification may contain the additional control information
1313             files <file>config</file>
1314             and <file>templates</file>.  <file>config</file> is an
1315             additional maintainer script used for package configuration,
1316             and <file>templates</file> contains templates used for user
1317             prompting.  The <prgn>config</prgn> script might be run before
1318             the <prgn>preinst</prgn> script and before the package is
1319             unpacked or any of its dependencies or pre-dependencies are
1320             satisfied.  Therefore it must work using only the tools
1321             present in <em>essential</em> packages.<footnote>
1322                   <package>Debconf</package> or another tool that
1323                   implements the Debian Configuration Management
1324                   Specification will also be installed, and any
1325                   versioned dependencies on it will be satisfied
1326                   before preconfiguration begins.
1327             </footnote>
1328           </p>
1329
1330           <p>
1331             Packages which use the Debian Configuration Management
1332             Specification must allow for translation of their user-visible
1333             messages by using a gettext-based system such as the one
1334             provided by the <package>po-debconf</package> package.
1335           </p>
1336
1337           <p>
1338             Packages should try to minimize the amount of prompting
1339             they need to do, and they should ensure that the user
1340             will only ever be asked each question once.  This means
1341             that packages should try to use appropriate shared
1342             configuration files (such as <file>/etc/papersize</file> and
1343             <file>/etc/news/server</file>), and shared
1344             <package>debconf</package> variables rather than each
1345             prompting for their own list of required pieces of
1346             information.
1347           </p>
1348
1349           <p>
1350             It also means that an upgrade should not ask the same
1351             questions again, unless the user has used
1352             <tt>dpkg --purge</tt> to remove the package's configuration.
1353             The answers to configuration questions should be stored in an
1354             appropriate place in <file>/etc</file> so that the user can
1355             modify them, and how this has been done should be
1356             documented.
1357           </p>
1358
1359           <p>
1360             If a package has a vitally important piece of
1361             information to pass to the user (such as "don't run me
1362             as I am, you must edit the following configuration files
1363             first or you risk your system emitting badly-formatted
1364             messages"), it should display this in the
1365             <prgn>config</prgn> or <prgn>postinst</prgn> script and
1366             prompt the user to hit return to acknowledge the
1367             message.  Copyright messages do not count as vitally
1368             important (they belong in
1369             <file>/usr/share/doc/<var>package</var>/copyright</file>);
1370             neither do instructions on how to use a program (these
1371             should be in on-line documentation, where all the users
1372             can see them).
1373           </p>
1374
1375           <p>
1376             Any necessary prompting should almost always be confined
1377             to the <prgn>config</prgn> or <prgn>postinst</prgn>
1378             script. If it is done in the <prgn>postinst</prgn>, it
1379             should be protected with a conditional so that
1380             unnecessary prompting doesn't happen if a package's
1381             installation fails and the <prgn>postinst</prgn> is
1382             called with <tt>abort-upgrade</tt>,
1383             <tt>abort-remove</tt> or <tt>abort-deconfigure</tt>.
1384           </p>
1385         </sect1>
1386
1387       </sect>
1388
1389     </chapt>
1390
1391
1392     <chapt id="source">
1393       <heading>Source packages</heading>
1394
1395       <sect id="standardsversion">
1396         <heading>Standards conformance</heading>
1397
1398         <p>
1399           Source packages should specify the most recent version number
1400           of this policy document with which your package complied
1401           when it was last updated.
1402         </p>
1403
1404         <p>
1405           This information may be used to file bug reports
1406           automatically if your package becomes too much out of date.
1407         </p>
1408
1409         <p>
1410           The version is specified in the <tt>Standards-Version</tt>
1411           control field.
1412           The format of the <tt>Standards-Version</tt> field is
1413           described in <ref id="f-Standards-Version">.
1414         </p>
1415
1416         <p>
1417           You should regularly, and especially if your package has
1418           become out of date, check for the newest Policy Manual
1419           available and update your package, if necessary. When your
1420           package complies with the new standards you should update the
1421           <tt>Standards-Version</tt> source package field and
1422           release it.<footnote>
1423                 See the file <file>upgrading-checklist</file> for
1424                 information about policy which has changed between
1425                 different versions of this document.
1426           </footnote>
1427         </p>
1428
1429       </sect>
1430
1431       <sect id="pkg-relations">
1432         <heading>Package relationships</heading>
1433
1434         <p>
1435           Source packages should specify which binary packages they
1436           require to be installed or not to be installed in order to
1437           build correctly.  For example, if building a package
1438           requires a certain compiler, then the compiler should be
1439           specified as a build-time dependency.
1440         </p>
1441
1442         <p>
1443           It is not necessary to explicitly specify build-time
1444           relationships on a minimal set of packages that are always
1445           needed to compile, link and put in a Debian package a
1446           standard "Hello World!" program written in C or C++.  The
1447           required packages are called <em>build-essential</em>, and
1448           an informational list can be found in
1449           <file>/usr/share/doc/build-essential/list</file> (which is
1450           contained in the <tt>build-essential</tt>
1451           package).<footnote>
1452             Rationale:
1453                 <list compact="compact">
1454                   <item>
1455                       This allows maintaining the list separately
1456                       from the policy documents (the list does not
1457                       need the kind of control that the policy
1458                       documents do).
1459                   </item>
1460                   <item>
1461                       Having a separate package allows one to install
1462                       the build-essential packages on a machine, as
1463                       well as allowing other packages such as tasks to
1464                       require installation of the build-essential
1465                       packages using the depends relation.
1466                   </item>
1467                   <item>
1468                       The separate package allows bug reports against
1469                       the list to be categorized separately from
1470                       the policy management process in the BTS.
1471                   </item>
1472                 </list>
1473           </footnote>
1474         </p>
1475
1476         <p>
1477           When specifying the set of build-time dependencies, one
1478           should list only those packages explicitly required by the
1479           build.  It is not necessary to list packages which are
1480           required merely because some other package in the list of
1481           build-time dependencies depends on them.<footnote>
1482                 The reason for this is that dependencies change, and
1483                 you should list all those packages, and <em>only</em>
1484                 those packages that <em>you</em> need directly.  What
1485                 others need is their business.  For example, if you
1486                 only link against <file>libimlib</file>, you will need to
1487                 build-depend on <package>libimlib2-dev</package> but
1488                 not against any <tt>libjpeg*</tt> packages, even
1489                 though <tt>libimlib2-dev</tt> currently depends on
1490                 them: installation of <package>libimlib2-dev</package>
1491                 will automatically ensure that all of its run-time
1492                 dependencies are satisfied.
1493           </footnote>
1494         </p>
1495
1496         <p>
1497           If build-time dependencies are specified, it must be
1498           possible to build the package and produce working binaries
1499           on a system with only essential and build-essential
1500           packages installed and also those required to satisfy the
1501           build-time relationships (including any implied
1502           relationships).  In particular, this means that version
1503           clauses should be used rigorously in build-time
1504           relationships so that one cannot produce bad or
1505           inconsistently configured packages when the relationships
1506           are properly satisfied.
1507         </p>
1508
1509         <p>
1510           <ref id="relationships"> explains the technical details.
1511         </p>
1512       </sect>
1513
1514       <sect>
1515         <heading>Changes to the upstream sources</heading>
1516
1517         <p>
1518           If changes to the source code are made that are not
1519           specific to the needs of the Debian system, they should be
1520           sent to the upstream authors in whatever form they prefer
1521           so as to be included in the upstream version of the
1522           package.
1523         </p>
1524
1525         <p>
1526           If you need to configure the package differently for
1527           Debian or for Linux, and the upstream source doesn't
1528           provide a way to do so, you should add such configuration
1529           facilities (for example, a new <prgn>autoconf</prgn> test
1530           or <tt>#define</tt>) and send the patch to the upstream
1531           authors, with the default set to the way they originally
1532           had it.  You can then easily override the default in your
1533           <file>debian/rules</file> or wherever is appropriate.
1534         </p>
1535
1536         <p>
1537           You should make sure that the <prgn>configure</prgn> utility
1538           detects the correct architecture specification string
1539           (refer to <ref id="arch-spec"> for details).
1540         </p>
1541
1542         <p>
1543           If you need to edit a <prgn>Makefile</prgn> where GNU-style
1544           <prgn>configure</prgn> scripts are used, you should edit the
1545           <file>.in</file> files rather than editing the
1546           <prgn>Makefile</prgn> directly.  This allows the user to
1547           reconfigure the package if necessary.  You should
1548           <em>not</em> configure the package and edit the generated
1549           <prgn>Makefile</prgn>!  This makes it impossible for someone
1550           else to later reconfigure the package without losing the
1551           changes you made.
1552         </p>
1553
1554       </sect>
1555
1556       <sect id="dpkgchangelog">
1557         <heading>Debian changelog: <file>debian/changelog</file></heading>
1558
1559         <p>
1560           Changes in the Debian version of the package should be
1561           briefly explained in the Debian changelog file
1562           <file>debian/changelog</file>.<footnote>
1563             <p>
1564               Mistakes in changelogs are usually best rectified by
1565               making a new changelog entry rather than "rewriting
1566               history" by editing old changelog entries.
1567             </p>
1568           </footnote>
1569           This includes modifications
1570           made in the Debian package compared to the upstream one
1571           as well as other changes and updates to the package.
1572           <footnote>
1573               Although there is nothing stopping an author who is also
1574               the Debian maintainer from using this changelog for all
1575               their changes, it will have to be renamed if the Debian
1576               and upstream maintainers become different people. In such
1577               a case, however, it might be better to maintain the package
1578               as a non-native package.
1579           </footnote>
1580         </p>
1581
1582         <p>
1583           The format of the <file>debian/changelog</file> allows the
1584           package building tools to discover which version of the package
1585           is being built and find out other release-specific information.
1586         </p>
1587
1588         <p>
1589           That format is a series of entries like this:
1590
1591 <example compact="compact">
1592 <var>package</var> (<var>version</var>) <var>distribution(s)</var>; urgency=<var>urgency</var>
1593             <var>
1594               [optional blank line(s), stripped]
1595             </var>
1596   * <var>change details</var>
1597     <var>more change details</var>
1598             <var>
1599               [blank line(s), included in output of dpkg-parsechangelog]
1600             </var>
1601   * <var>even more change details</var>
1602             <var>
1603               [optional blank line(s), stripped]
1604             </var>
1605  -- <var>maintainer name</var> &lt;<var>email address</var>&gt;<var>[two spaces]</var>  <var>date</var>
1606 </example>
1607         </p>
1608
1609         <p>
1610           <var>package</var> and <var>version</var> are the source
1611           package name and version number.
1612         </p>
1613
1614         <p>
1615           <var>distribution(s)</var> lists the distributions where
1616           this version should be installed when it is uploaded - it
1617           is copied to the <tt>Distribution</tt> field in the
1618           <file>.changes</file> file.  See <ref id="f-Distribution">.
1619         </p>
1620
1621         <p>
1622           <var>urgency</var> is the value for the <tt>Urgency</tt>
1623           field in the <file>.changes</file> file for the upload
1624           (see <ref id="f-Urgency">). It is not possible to specify
1625           an urgency containing commas; commas are used to separate
1626           <tt><var>keyword</var>=<var>value</var></tt> settings in the
1627           <prgn>dpkg</prgn> changelog format (though there is
1628           currently only one useful <var>keyword</var>,
1629           <tt>urgency</tt>).
1630         </p>
1631
1632         <p>
1633           The change details may in fact be any series of lines
1634           starting with at least two spaces, but conventionally each
1635           change starts with an asterisk and a separating space and
1636           continuation lines are indented so as to bring them in
1637           line with the start of the text above.  Blank lines may be
1638           used here to separate groups of changes, if desired.
1639         </p>
1640
1641         <p>
1642           If this upload resolves bugs recorded in the Bug Tracking
1643           System (BTS), they may be automatically closed on the
1644           inclusion of this package into the Debian archive by
1645           including the string: <tt>closes: Bug#<var>nnnnn</var></tt>
1646           in the change details.<footnote>
1647               To be precise, the string should match the following
1648               Perl regular expression:
1649               <example>
1650 /closes:\s*(?:bug)?\#?\s?\d+(?:,\s*(?:bug)?\#?\s?\d+)*/i
1651               </example>
1652               Then all of the bug numbers listed will be closed by the
1653               archive maintenance script (<prgn>katie</prgn>) using the
1654               <var>version</var> of the changelog entry.
1655           </footnote>
1656           This information is conveyed via the <tt>Closes</tt> field
1657           in the <tt>.changes</tt> file (see <ref id="f-Closes">).
1658         </p>
1659
1660         <p>
1661           The maintainer name and email address used in the changelog
1662           should be the details of the person uploading <em>this</em>
1663           version.  They are <em>not</em> necessarily those of the
1664           usual package maintainer.<footnote>
1665             If the developer uploading the package is not one of the usual
1666             maintainers of the package (as listed in
1667             the <qref id="f-Maintainer"><tt>Maintainer</tt></qref>
1668             or <qref id="f-Uploaders"><tt>Uploaders</tt></qref> control
1669             fields of the package), the first line of the changelog is
1670             conventionally used to explain why a non-maintainer is
1671             uploading the package.  The Debian Developer's Reference
1672             (see <ref id="related">) documents the conventions
1673             used.</footnote>
1674           The information here will be copied to the <tt>Changed-By</tt>
1675           field in the <tt>.changes</tt> file
1676           (see <ref id="f-Changed-By">), and then later used to send an
1677           acknowledgement when the upload has been installed.
1678         </p>
1679
1680         <p>
1681           The <var>date</var> has the following format<footnote>
1682               This is the same as the format generated by <tt>date
1683               -R</tt>.
1684           </footnote> (compatible and with the same semantics of
1685           RFC 2822 and RFC 5322):
1686           <example>day-of-week, dd month yyyy hh:mm:ss +zzzz</example>
1687           where:
1688           <list compact="compact">
1689             <item>
1690               day-of week is one of: Mon, Tue, Wed, Thu, Fri, Sat, Sun
1691             </item>
1692             <item>
1693               dd is a one- or two-digit day of the month (01-31)
1694             </item>
1695             <item>
1696               month is one of: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug,
1697               Sep, Oct, Nov, Dec
1698             </item>
1699             <item>yyyy is the four-digit year (e.g. 2010)</item>
1700             <item>hh is the two-digit hour (00-23)</item>
1701             <item>mm is the two-digit minutes (00-59)</item>
1702             <item>ss is the two-digit seconds (00-60)</item>
1703             <item>
1704               +zzzz or -zzzz is the the time zone offset from Coordinated
1705               Universal Time (UTC).  "+" indicates that the time is ahead
1706               of (i.e., east of) UTC and "-" indicates that the time is
1707               behind (i.e., west of) UTC.  The first two digits indicate
1708               the hour difference from UTC and the last two digits
1709               indicate the number of additional minutes difference from
1710               UTC.  The last two digits must be in the range 00-59.
1711             </item>
1712           </list>
1713         </p>
1714
1715         <p>
1716           The first "title" line with the package name must start
1717           at the left hand margin.  The "trailer" line with the
1718           maintainer and date details must be preceded by exactly
1719           one space.  The maintainer details and the date must be
1720           separated by exactly two spaces.
1721         </p>
1722
1723         <p>
1724           The entire changelog must be encoded in UTF-8.
1725         </p>
1726
1727         <p>
1728           For more information on placement of the changelog files
1729           within binary packages, please see <ref id="changelogs">.
1730         </p>
1731       </sect>
1732
1733       <sect id="dpkgcopyright">
1734         <heading>Copyright: <file>debian/copyright</file></heading>
1735         <p>
1736           Every package must be accompanied by a verbatim copy of its
1737           copyright information and distribution license in the file
1738           <file>/usr/share/doc/<var>package</var>/copyright</file>
1739           (see <ref id="copyrightfile"> for further details). Also see
1740           <ref id="pkgcopyright"> for further considerations related
1741           to copyrights for packages.
1742         </p>
1743       </sect>
1744       <sect>
1745         <heading>Error trapping in makefiles</heading>
1746
1747         <p>
1748           When <prgn>make</prgn> invokes a command in a makefile
1749           (including your package's upstream makefiles and
1750           <file>debian/rules</file>), it does so using <prgn>sh</prgn>.  This
1751           means that <prgn>sh</prgn>'s usual bad error handling
1752           properties apply: if you include a miniature script as one
1753           of the commands in your makefile you'll find that if you
1754           don't do anything about it then errors are not detected
1755           and <prgn>make</prgn> will blithely continue after
1756           problems.
1757         </p>
1758
1759         <p>
1760           Every time you put more than one shell command (this
1761           includes using a loop) in a makefile command you
1762           must make sure that errors are trapped.  For
1763           simple compound commands, such as changing directory and
1764           then running a program, using <tt>&amp;&amp;</tt> rather
1765           than semicolon as a command separator is sufficient.  For
1766           more complex commands including most loops and
1767           conditionals you should include a separate <tt>set -e</tt>
1768           command at the start of every makefile command that's
1769           actually one of these miniature shell scripts.
1770         </p>
1771       </sect>
1772
1773       <sect id="timestamps">
1774         <heading>Time Stamps</heading>
1775         <p>
1776           Maintainers should preserve the modification times of the
1777           upstream source files in a package, as far as is reasonably
1778           possible.<footnote>
1779               The rationale is that there is some information conveyed
1780               by knowing the age of the file, for example, you could
1781               recognize that some documentation is very old by looking
1782               at the modification time, so it would be nice if the
1783               modification time of the upstream source would be
1784               preserved.
1785           </footnote>
1786         </p>
1787       </sect>
1788
1789       <sect id="restrictions">
1790         <heading>Restrictions on objects in source packages</heading>
1791
1792         <p>
1793           The source package may not contain any hard links<footnote>
1794             <p>
1795               This is not currently detected when building source
1796               packages, but only when extracting
1797               them.
1798             </p>
1799             <p>
1800               Hard links may be permitted at some point in the
1801               future, but would require a fair amount of
1802               work.
1803             </p>
1804           </footnote>, device special files, sockets or setuid or
1805           setgid files.<footnote>
1806               Setgid directories are allowed.
1807           </footnote>
1808         </p>
1809       </sect>
1810
1811       <sect id="debianrules">
1812         <heading>Main building script: <file>debian/rules</file></heading>
1813
1814         <p>
1815           This file must be an executable makefile, and contains the
1816           package-specific recipes for compiling the package and
1817           building binary package(s) from the source.
1818         </p>
1819
1820         <p>
1821           It must start with the line <tt>#!/usr/bin/make -f</tt>,
1822           so that it can be invoked by saying its name rather than
1823           invoking <prgn>make</prgn> explicitly. That is, invoking
1824           either of <tt>make -f debian/rules <em>args...</em></tt>
1825           or <tt>./debian/rules <em>args...</em></tt> must result in
1826           identical behavior.
1827         </p>
1828
1829         <p>
1830           Since an interactive <file>debian/rules</file> script makes it
1831           impossible to auto-compile that package and also makes it
1832           hard for other people to reproduce the same binary
1833           package, all <em>required targets</em> must be
1834           non-interactive. At a minimum, required targets are the
1835           ones called by <prgn>dpkg-buildpackage</prgn>, namely,
1836           <em>clean</em>, <em>binary</em>, <em>binary-arch</em>,
1837           <em>binary-indep</em>, and <em>build</em>. It also follows
1838           that any target that these targets depend on must also be
1839           non-interactive.
1840         </p>
1841
1842         <p>
1843           The targets are as follows (required unless stated otherwise):
1844           <taglist>
1845             <tag><tt>build</tt></tag>
1846             <item>
1847               <p>
1848                 The <tt>build</tt> target should perform all the
1849                 configuration and compilation of the package.
1850                 If a package has an interactive pre-build
1851                 configuration routine, the Debian source package
1852                 must either be built after this has taken place (so
1853                 that the binary package can be built without rerunning
1854                 the configuration) or the configuration routine
1855                 modified to become non-interactive.  (The latter is
1856                 preferable if there are architecture-specific features
1857                 detected by the configuration routine.)
1858               </p>
1859
1860               <p>
1861                 For some packages, notably ones where the same
1862                 source tree is compiled in different ways to produce
1863                 two binary packages, the <tt>build</tt> target
1864                 does not make much sense.  For these packages it is
1865                 good enough to provide two (or more) targets
1866                 (<tt>build-a</tt> and <tt>build-b</tt> or whatever)
1867                 for each of the ways of building the package, and a
1868                 <tt>build</tt> target that does nothing.  The
1869                 <tt>binary</tt> target will have to build the
1870                 package in each of the possible ways and make the
1871                 binary package out of each.
1872               </p>
1873
1874               <p>
1875                 The <tt>build</tt> target must not do anything
1876                 that might require root privilege.
1877               </p>
1878
1879               <p>
1880                 The <tt>build</tt> target may need to run the
1881                 <tt>clean</tt> target first - see below.
1882               </p>
1883
1884               <p>
1885                 When a package has a configuration and build routine
1886                 which takes a long time, or when the makefiles are
1887                 poorly designed, or when <tt>build</tt> needs to
1888                 run <tt>clean</tt> first, it is a good idea to
1889                 <tt>touch build</tt> when the build process is
1890                 complete.  This will ensure that if <tt>debian/rules
1891                 build</tt> is run again it will not rebuild the whole
1892                 program.<footnote>
1893                     Another common way to do this is for <tt>build</tt>
1894                     to depend on <prgn>build-stamp</prgn> and to do
1895                     nothing else, and for the <prgn>build-stamp</prgn>
1896                     target to do the building and to <tt>touch
1897                     build-stamp</tt> on completion.  This is
1898                     especially useful if the build routine creates a
1899                     file or directory called <tt>build</tt>; in such a
1900                     case, <tt>build</tt> will need to be listed as
1901                     a phony target (i.e., as a dependency of the
1902                     <tt>.PHONY</tt> target).  See the documentation of
1903                     <prgn>make</prgn> for more information on phony
1904                     targets.
1905                 </footnote>
1906               </p>
1907             </item>
1908
1909             <tag><tt>build-arch</tt> (optional),
1910                  <tt>build-indep</tt> (optional)
1911             </tag>
1912             <item>
1913               <p>
1914                 A package may also provide both of the targets
1915                 <tt>build-arch</tt> and <tt>build-indep</tt>.
1916                 The <tt>build-arch</tt> target, if provided, should
1917                 perform all the configuration and compilation required for
1918                 producing all architecture-dependant binary packages
1919                 (those packages for which the body of the
1920                 <tt>Architecture</tt> field in <tt>debian/control</tt> is
1921                 not <tt>all</tt>).  Similarly, the <tt>build-indep</tt>
1922                 target, if provided, should perform all the configuration
1923                 and compilation required for producing all
1924                 architecture-independent binary packages (those packages
1925                 for which the body of the <tt>Architecture</tt> field
1926                 in <tt>debian/control</tt> is <tt>all</tt>).
1927                 The <tt>build</tt> target should depend on those of the
1928                 targets <tt>build-arch</tt> and <tt>build-indep</tt> that
1929                 are provided in the rules file.<footnote>
1930                   The intent of this split is so that binary-only builds
1931                   need not install the dependencies required for
1932                   the <tt>build-indep</tt> target.  However, this is not
1933                   yet used in practice since <tt>dpkg-buildpackage
1934                   -B</tt>, and therefore the autobuilders,
1935                   invoke <tt>build</tt> rather than <tt>build-arch</tt>
1936                   due to the difficulties in determining whether the
1937                   optional <tt>build-arch</tt> target exists.
1938                 </footnote>
1939               </p>
1940
1941               <p>
1942                 If one or both of the targets <tt>build-arch</tt> and
1943                 <tt>build-indep</tt> are not provided, then invoking
1944                 <file>debian/rules</file> with one of the not-provided
1945                 targets as arguments should produce a exit status code
1946                 of 2.  Usually this is provided automatically by make
1947                 if the target is missing.
1948               </p>
1949
1950               <p>
1951                 The <tt>build-arch</tt> and <tt>build-indep</tt> targets
1952                 must not do anything that might require root privilege.
1953               </p>
1954             </item>
1955
1956             <tag><tt>binary</tt>, <tt>binary-arch</tt>,
1957               <tt>binary-indep</tt>
1958             </tag>
1959             <item>
1960               <p>
1961                 The <tt>binary</tt> target must be all that is
1962                 necessary for the user to build the binary package(s)
1963                 produced from this source package.  It is
1964                 split into two parts: <prgn>binary-arch</prgn> builds
1965                 the binary packages which are specific to a particular
1966                 architecture, and <tt>binary-indep</tt> builds
1967                 those which are not.
1968               </p>
1969               <p>
1970                 <tt>binary</tt> may be (and commonly is) a target with
1971                 no commands which simply depends on
1972                 <tt>binary-arch</tt> and <tt>binary-indep</tt>.
1973               </p>
1974               <p>
1975                 Both <tt>binary-*</tt> targets should depend on the
1976                 <tt>build</tt> target, or on the appropriate
1977                 <tt>build-arch</tt> or <tt>build-indep</tt> target, if
1978                 provided, so that the package is built if it has not
1979                 been already.  It should then create the relevant
1980                 binary package(s), using <prgn>dpkg-gencontrol</prgn> to
1981                 make their control files and <prgn>dpkg-deb</prgn> to
1982                 build them and place them in the parent of the top
1983                 level directory.
1984               </p>
1985
1986               <p>
1987                 Both the <tt>binary-arch</tt> and
1988                 <tt>binary-indep</tt> targets <em>must</em> exist.
1989                 If one of them has nothing to do (which will always be
1990                 the case if the source generates only a single binary
1991                 package, whether architecture-dependent or not), it
1992                 must still exist and must always succeed.
1993               </p>
1994
1995               <p>
1996                 The <tt>binary</tt> targets must be invoked as
1997                 root.<footnote>
1998                     The <prgn>fakeroot</prgn> package often allows one
1999                     to build a package correctly even without being
2000                     root.
2001                 </footnote>
2002               </p>
2003             </item>
2004
2005             <tag><tt>clean</tt></tag>
2006             <item>
2007               <p>
2008                 This must undo any effects that the <tt>build</tt>
2009                 and <tt>binary</tt> targets may have had, except
2010                 that it should leave alone any output files created in
2011                 the parent directory by a run of a <tt>binary</tt>
2012                 target.
2013               </p>
2014
2015               <p>
2016                 If a <tt>build</tt> file is touched at the end of
2017                 the <tt>build</tt> target, as suggested above, it
2018                 should be removed as the first action that
2019                 <tt>clean</tt> performs, so that running
2020                 <tt>build</tt> again after an interrupted
2021                 <tt>clean</tt> doesn't think that everything is
2022                 already done.
2023               </p>
2024
2025               <p>
2026                 The <tt>clean</tt> target may need to be
2027                 invoked as root if <tt>binary</tt> has been
2028                 invoked since the last <tt>clean</tt>, or if
2029                 <tt>build</tt> has been invoked as root (since
2030                 <tt>build</tt> may create directories, for
2031                 example).
2032               </p>
2033             </item>
2034
2035             <tag><tt>get-orig-source</tt> (optional)</tag>
2036             <item>
2037               <p>
2038                 This target fetches the most recent version of the
2039                 original source package from a canonical archive site
2040                 (via FTP or WWW, for example), does any necessary
2041                 rearrangement to turn it into the original source
2042                 tar file format described below, and leaves it in the
2043                 current directory.
2044               </p>
2045
2046               <p>
2047                 This target may be invoked in any directory, and
2048                 should take care to clean up any temporary files it
2049                 may have left.
2050               </p>
2051
2052               <p>
2053                 This target is optional, but providing it if
2054                 possible is a good idea.
2055               </p>
2056             </item>
2057
2058             <tag><tt>patch</tt> (optional)</tag>
2059             <item>
2060               <p>
2061                 This target performs whatever additional actions are
2062                 required to make the source ready for editing (unpacking
2063                 additional upstream archives, applying patches, etc.).
2064                 It is recommended to be implemented for any package where
2065                 <tt>dpkg-source -x</tt> does not result in source ready
2066                 for additional modification.  See
2067                 <ref id="readmesource">.
2068               </p>
2069             </item>
2070           </taglist>
2071
2072         <p>
2073           The <tt>build</tt>, <tt>binary</tt> and
2074           <tt>clean</tt> targets must be invoked with the current
2075           directory being the package's top-level directory.
2076         </p>
2077
2078
2079         <p>
2080           Additional targets may exist in <file>debian/rules</file>,
2081           either as published or undocumented interfaces or for the
2082           package's internal use.
2083         </p>
2084
2085         <p>
2086           The architectures we build on and build for are determined
2087           by <prgn>make</prgn> variables using the
2088           utility <qref id="pkg-dpkg-architecture"><prgn>dpkg-architecture</prgn></qref>.
2089           You can determine the Debian architecture and the GNU style
2090           architecture specification string for the build architecture as
2091           well as for the host architecture.  The build architecture is
2092           the architecture on which <file>debian/rules</file> is run and
2093           the package build is performed.  The host architecture is the
2094           architecture on which the resulting package will be installed
2095           and run.  These are normally the same, but may be different in
2096           the case of cross-compilation (building packages for one
2097           architecture on machines of a different architecture).
2098         </p>
2099
2100         <p>
2101           Here is a list of supported <prgn>make</prgn> variables:
2102           <list compact="compact">
2103             <item>
2104                 <tt>DEB_*_ARCH</tt> (the Debian architecture)
2105             </item>
2106             <item>
2107                 <tt>DEB_*_ARCH_CPU</tt> (the Debian CPU name)
2108             </item>
2109             <item>
2110                 <tt>DEB_*_ARCH_OS</tt> (the Debian System name)
2111             </item>
2112             <item>
2113                 <tt>DEB_*_GNU_TYPE</tt> (the GNU style architecture
2114                 specification string)
2115             </item>
2116             <item>
2117                 <tt>DEB_*_GNU_CPU</tt> (the CPU part of
2118                 <tt>DEB_*_GNU_TYPE</tt>)
2119             </item>
2120             <item>
2121                 <tt>DEB_*_GNU_SYSTEM</tt> (the System part of
2122                 <tt>DEB_*_GNU_TYPE</tt>)
2123           </list>
2124           where <tt>*</tt> is either <tt>BUILD</tt> for specification of
2125           the build architecture or <tt>HOST</tt> for specification of the
2126           host architecture.
2127         </p>
2128
2129         <p>
2130           Backward compatibility can be provided in the rules file
2131           by setting the needed variables to suitable default
2132           values; please refer to the documentation of
2133           <prgn>dpkg-architecture</prgn> for details.
2134         </p>
2135
2136         <p>
2137           It is important to understand that the <tt>DEB_*_ARCH</tt>
2138           string only determines which Debian architecture we are
2139           building on or for. It should not be used to get the CPU
2140           or system information; the <tt>DEB_*_ARCH_CPU</tt> and
2141           <tt>DEB_*_ARCH_OS</tt> variables should be used for that.
2142           GNU style variables should generally only be used with upstream
2143           build systems.
2144         </p>
2145
2146         <sect1 id="debianrules-options">
2147           <heading><file>debian/rules</file> and
2148             <tt>DEB_BUILD_OPTIONS</tt></heading>
2149
2150           <p>
2151             Supporting the standardized environment variable
2152             <tt>DEB_BUILD_OPTIONS</tt> is recommended.  This variable can
2153             contain several flags to change how a package is compiled and
2154             built.  Each flag must be in the form <var>flag</var> or
2155             <var>flag</var>=<var>options</var>.  If multiple flags are
2156             given, they must be separated by whitespace.<footnote>
2157               Some packages support any delimiter, but whitespace is the
2158               easiest to parse inside a makefile and avoids ambiguity with
2159               flag values that contain commas.
2160             </footnote>
2161             <var>flag</var> must start with a lowercase letter
2162             (<tt>a-z</tt>) and consist only of lowercase letters,
2163             numbers (<tt>0-9</tt>), and the characters
2164             <tt>-</tt> and <tt>_</tt> (hyphen and underscore).
2165             <var>options</var> must not contain whitespace.  The same
2166             tag should not be given multiple times with conflicting
2167             values.  Package maintainers may assume that
2168             <tt>DEB_BUILD_OPTIONS</tt> will not contain conflicting tags.
2169           </p>
2170
2171           <p>
2172             The meaning of the following tags has been standardized:
2173             <taglist>
2174               <tag>nocheck</tag>
2175               <item>
2176                   This tag says to not run any build-time test suite
2177                   provided by the package.
2178               </item>
2179               <tag>noopt</tag>
2180               <item>
2181                   The presence of this tag means that the package should
2182                   be compiled with a minimum of optimization.  For C
2183                   programs, it is best to add <tt>-O0</tt> to
2184                   <tt>CFLAGS</tt> (although this is usually the default).
2185                   Some programs might fail to build or run at this level
2186                   of optimization; it may be necessary to use
2187                   <tt>-O1</tt>, for example.
2188               </item>
2189               <tag>nostrip</tag>
2190               <item>
2191                   This tag means that the debugging symbols should not be
2192                   stripped from the binary during installation, so that
2193                   debugging information may be included in the package.
2194               </item>
2195               <tag>parallel=n</tag>
2196               <item>
2197                   This tag means that the package should be built using up
2198                   to <tt>n</tt> parallel processes if the package build
2199                   system supports this.<footnote>
2200                       Packages built with <tt>make</tt> can often implement
2201                       this by passing the <tt>-j</tt><var>n</var> option to
2202                       <tt>make</tt>.
2203                   </footnote>
2204                   If the package build system does not support parallel
2205                   builds, this string must be ignored.  If the package
2206                   build system only supports a lower level of concurrency
2207                   than <var>n</var>, the package should be built using as
2208                   many parallel processes as the package build system
2209                   supports.  It is up to the package maintainer to decide
2210                   whether the package build times are long enough and the
2211                   package build system is robust enough to make supporting
2212                   parallel builds worthwhile.
2213                </item>
2214             </taglist>
2215           </p>
2216
2217           <p>
2218             Unknown flags must be ignored by <file>debian/rules</file>.
2219           </p>
2220
2221           <p>
2222             The following makefile snippet is an example of how one may
2223             implement the build options; you will probably have to
2224             massage this example in order to make it work for your
2225             package.
2226             <example compact="compact">
2227 CFLAGS = -Wall -g
2228 INSTALL = install
2229 INSTALL_FILE    = $(INSTALL) -p    -o root -g root  -m  644
2230 INSTALL_PROGRAM = $(INSTALL) -p    -o root -g root  -m  755
2231 INSTALL_SCRIPT  = $(INSTALL) -p    -o root -g root  -m  755
2232 INSTALL_DIR     = $(INSTALL) -p -d -o root -g root  -m  755
2233
2234 ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
2235     CFLAGS += -O0
2236 else
2237     CFLAGS += -O2
2238 endif
2239 ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
2240     INSTALL_PROGRAM += -s
2241 endif
2242 ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
2243     NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
2244     MAKEFLAGS += -j$(NUMJOBS)
2245 endif
2246
2247 build:
2248         # ...
2249 ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
2250         # Code to run the package test suite.
2251 endif
2252             </example>
2253           </p>
2254         </sect1>
2255       </sect>
2256
2257 <!-- FIXME: section pkg-srcsubstvars is the same as substvars -->
2258       <sect id="substvars">
2259         <heading>Variable substitutions: <file>debian/substvars</file></heading>
2260
2261         <p>
2262           When <prgn>dpkg-gencontrol</prgn>
2263           generates <qref id="binarycontrolfiles">binary package control
2264           files</qref> (<file>DEBIAN/control</file>), it performs variable
2265           substitutions on its output just before writing it.  Variable
2266           substitutions have the form <tt>${<var>variable</var>}</tt>.
2267           The optional file <file>debian/substvars</file> contains
2268           variable substitutions to be used; variables can also be set
2269           directly from <file>debian/rules</file> using the <tt>-V</tt>
2270           option to the source packaging commands, and certain predefined
2271           variables are also available.
2272         </p>
2273
2274         <p>
2275           The <file>debian/substvars</file> file is usually generated and
2276           modified dynamically by <file>debian/rules</file> targets, in
2277           which case it must be removed by the <tt>clean</tt> target.
2278         </p>
2279
2280         <p>
2281           See <manref name="deb-substvars" section="5"> for full
2282           details about source variable substitutions, including the
2283           format of <file>debian/substvars</file>.</p>
2284       </sect>
2285
2286       <sect id="debianwatch">
2287         <heading>Optional upstream source location: <file>debian/watch</file></heading>
2288
2289         <p>
2290           This is an optional, recommended configuration file for the
2291           <tt>uscan</tt> utility which defines how to automatically scan
2292           ftp or http sites for newly available updates of the
2293           package. This is used
2294           by <url id="http://dehs.alioth.debian.org/"> and other Debian QA
2295           tools to help with quality control and maintenance of the
2296           distribution as a whole.
2297         </p>
2298
2299       </sect>
2300
2301       <sect id="debianfiles">
2302         <heading>Generated files list: <file>debian/files</file></heading>
2303
2304         <p>
2305           This file is not a permanent part of the source tree; it
2306           is used while building packages to record which files are
2307           being generated.  <prgn>dpkg-genchanges</prgn> uses it
2308           when it generates a <file>.changes</file> file.
2309         </p>
2310
2311         <p>
2312           It should not exist in a shipped source package, and so it
2313           (and any backup files or temporary files such as
2314           <file>files.new</file><footnote>
2315               <file>files.new</file> is used as a temporary file by
2316               <prgn>dpkg-gencontrol</prgn> and
2317               <prgn>dpkg-distaddfile</prgn> - they write a new
2318               version of <tt>files</tt> here before renaming it,
2319               to avoid leaving a corrupted copy if an error
2320               occurs.
2321           </footnote>) should be removed by the
2322           <tt>clean</tt> target.  It may also be wise to
2323           ensure a fresh start by emptying or removing it at the
2324           start of the <tt>binary</tt> target.
2325         </p>
2326
2327         <p>
2328           When <prgn>dpkg-gencontrol</prgn> is run for a binary
2329           package, it adds an entry to <file>debian/files</file> for the
2330           <file>.deb</file> file that will be created when <tt>dpkg-deb
2331           --build</tt> is run for that binary package.  So for most
2332           packages all that needs to be done with this file is to
2333           delete it in the <tt>clean</tt> target.
2334         </p>
2335
2336         <p>
2337           If a package upload includes files besides the source
2338           package and any binary packages whose control files were
2339           made with <prgn>dpkg-gencontrol</prgn> then they should be
2340           placed in the parent of the package's top-level directory
2341           and <prgn>dpkg-distaddfile</prgn> should be called to add
2342           the file to the list in <file>debian/files</file>.</p>
2343       </sect>
2344
2345       <sect id="embeddedfiles">
2346         <heading>Convenience copies of code</heading>
2347
2348         <p>
2349           Some software packages include in their distribution convenience
2350           copies of code from other software packages, generally so that
2351           users compiling from source don't have to download multiple
2352           packages.  Debian packages should not make use of these
2353           convenience copies unless the included package is explicitly
2354           intended to be used in this way.<footnote>
2355             For example, parts of the GNU build system work like this.
2356           </footnote>
2357           If the included code is already in the Debian archive in the
2358           form of a library, the Debian packaging should ensure that
2359           binary packages reference the libraries already in Debian and
2360           the convenience copy is not used.  If the included code is not
2361           already in Debian, it should be packaged separately as a
2362           prerequisite if possible.
2363           <footnote>
2364             Having multiple copies of the same code in Debian is
2365             inefficient, often creates either static linking or shared
2366             library conflicts, and, most importantly, increases the
2367             difficulty of handling security vulnerabilities in the
2368             duplicated code.
2369           </footnote>
2370         </p>
2371       </sect>
2372
2373       <sect id="readmesource">
2374         <heading>Source package handling:
2375           <file>debian/README.source</file></heading>
2376
2377         <p>
2378           If running <prgn>dpkg-source -x</prgn> on a source package
2379           doesn't produce the source of the package, ready for editing,
2380           and allow one to make changes and run
2381           <prgn>dpkg-buildpackage</prgn> to produce a modified package
2382           without taking any additional steps, creating a
2383           <file>debian/README.source</file> documentation file is
2384           recommended.  This file should explain how to do all of the
2385           following:
2386             <enumlist>
2387               <item>Generate the fully patched source, in a form ready for
2388               editing, that would be built to create Debian
2389               packages.  Doing this with a <tt>patch</tt> target in
2390               <file>debian/rules</file> is recommended; see
2391               <ref id="debianrules">.</item>
2392               <item>Modify the source and save those modifications so that
2393               they will be applied when building the package.</item>
2394               <item>Remove source modifications that are currently being
2395               applied when building the package.</item>
2396               <item>Optionally, document what steps are necessary to
2397               upgrade the Debian source package to a new upstream version,
2398               if applicable.</item>
2399             </enumlist>
2400           This explanation should include specific commands and mention
2401           any additional required Debian packages.  It should not assume
2402           familiarity with any specific Debian packaging system or patch
2403           management tools.
2404         </p>
2405
2406         <p>
2407           This explanation may refer to a documentation file installed by
2408           one of the package's build dependencies provided that the
2409           referenced documentation clearly explains these tasks and is not
2410           a general reference manual.
2411         </p>
2412
2413         <p>
2414           <file>debian/README.source</file> may also include any other
2415           information that would be helpful to someone modifying the
2416           source package.  Even if the package doesn't fit the above
2417           description, maintainers are encouraged to document in a
2418           <file>debian/README.source</file> file any source package with a
2419           particularly complex or unintuitive source layout or build
2420           system (for example, a package that builds the same source
2421           multiple times to generate different binary packages).
2422         </p>
2423       </sect>
2424     </chapt>
2425
2426
2427     <chapt id="controlfields">
2428       <heading>Control files and their fields</heading>
2429
2430       <p>
2431         The package management system manipulates data represented in
2432         a common format, known as <em>control data</em>, stored in
2433         <em>control files</em>.
2434         Control files are used for source packages, binary packages and
2435         the <file>.changes</file> files which control the installation
2436         of uploaded files<footnote>
2437             <prgn>dpkg</prgn>'s internal databases are in a similar
2438             format.
2439         </footnote>.
2440       </p>
2441
2442       <sect id="controlsyntax">
2443         <heading>Syntax of control files</heading>
2444
2445         <p>
2446           A control file consists of one or more paragraphs of
2447           fields<footnote>
2448                 The paragraphs are also sometimes referred to as stanzas.
2449           </footnote>.
2450           The paragraphs are separated by blank lines.  Some control
2451           files allow only one paragraph; others allow several, in
2452           which case each paragraph usually refers to a different
2453           package.  (For example, in source packages, the first
2454           paragraph refers to the source package, and later paragraphs
2455           refer to binary packages generated from the source.)
2456         </p>
2457
2458         <p>
2459           Each paragraph consists of a series of data fields; each
2460           field consists of the field name, followed by a colon and
2461           then the data/value associated with that field.  It ends at
2462           the end of the (logical) line.  Horizontal whitespace
2463           (spaces and tabs) may occur immediately before or after the
2464           value and is ignored there; it is conventional to put a
2465           single space after the colon.  For example, a field might
2466           be:
2467           <example compact="compact">
2468 Package: libc6
2469           </example>
2470           the field name is <tt>Package</tt> and the field value
2471           <tt>libc6</tt>.
2472         </p>
2473
2474         <p>
2475           A paragraph must not contain more than one instance of a
2476           particular field name.
2477         </p>
2478
2479         <p>
2480           Many fields' values may span several lines; in this case
2481           each continuation line must start with a space or a tab.
2482           Any trailing spaces or tabs at the end of individual
2483           lines of a field value are ignored. 
2484         </p>
2485
2486         <p>
2487           In fields where it is specified that lines may not wrap,
2488           only a single line of data is allowed and whitespace is not
2489           significant in a field body. Whitespace must not appear
2490           inside names (of packages, architectures, files or anything
2491           else) or version numbers, or between the characters of
2492           multi-character version relationships.
2493         </p>
2494
2495         <p>
2496           Field names are not case-sensitive, but it is usual to
2497           capitalize the field names using mixed case as shown below.
2498           Field values are case-sensitive unless the description of the
2499           field says otherwise.
2500         </p>
2501
2502         <p>
2503           Blank lines, or lines consisting only of spaces and tabs,
2504           are not allowed within field values or between fields - that
2505           would mean a new paragraph.
2506         </p>
2507
2508         <p>
2509           All control files must be encoded in UTF-8.
2510         </p>
2511       </sect>
2512
2513       <sect id="sourcecontrolfiles">
2514         <heading>Source package control files -- <file>debian/control</file></heading>
2515
2516         <p>
2517           The <file>debian/control</file> file contains the most vital
2518           (and version-independent) information about the source package
2519           and about the binary packages it creates.
2520         </p>
2521
2522         <p>
2523           The first paragraph of the control file contains information about
2524           the source package in general. The subsequent sets each describe a
2525           binary package that the source tree builds.
2526         </p>
2527
2528         <p>
2529           The fields in the general paragraph (the first one, for the source
2530           package) are:
2531
2532           <list compact="compact">
2533             <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2534             <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2535             <item><qref id="f-Uploaders"><tt>Uploaders</tt></qref></item>
2536             <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2537             <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2538             <item><qref id="sourcebinarydeps"><tt>Build-Depends</tt> et al</qref></item>
2539             <item><qref id="f-Standards-Version"><tt>Standards-Version</tt></qref> (recommended)</item>
2540             <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2541           </list>
2542         </p>
2543
2544         <p>
2545           The fields in the binary package paragraphs are:
2546
2547           <list compact="compact">
2548             <item><qref id="f-Package"><tt>Package</tt></qref> (mandatory)</item>
2549             <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2550             <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2551             <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2552             <item><qref id="f-Essential"><tt>Essential</tt></qref></item>
2553             <item><qref id="binarydeps"><tt>Depends</tt> et al</qref></item>
2554             <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2555             <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2556           </list>
2557         </p>
2558
2559         <p>
2560           The syntax and semantics of the fields are described below.
2561         </p>
2562
2563         <p>
2564           These fields are used by <prgn>dpkg-gencontrol</prgn> to
2565           generate control files for binary packages (see below), by
2566           <prgn>dpkg-genchanges</prgn> to generate the
2567           <file>.changes</file> file to accompany the upload, and by
2568           <prgn>dpkg-source</prgn> when it creates the
2569           <file>.dsc</file> source control file as part of a source
2570           archive. Many fields are permitted to span multiple lines in
2571           <file>debian/control</file> but not in any other control
2572           file. These tools are responsible for removing the line
2573           breaks from such fields when using fields from
2574           <file>debian/control</file> to generate other control files.
2575         </p>
2576
2577         <p>
2578           The fields here may contain variable references - their
2579           values will be substituted by <prgn>dpkg-gencontrol</prgn>,
2580           <prgn>dpkg-genchanges</prgn> or <prgn>dpkg-source</prgn>
2581           when they generate output control files.
2582           See <ref id="substvars"> for details.
2583         </p>
2584
2585         <p>
2586           In addition to the control file syntax described <qref
2587           id="controlsyntax">above</qref>, this file may also contain
2588           comment lines starting with <tt>#</tt> without any preceding
2589           whitespace.  All such lines are ignored, even in the middle of
2590           continuation lines for a multiline field, and do not end a
2591           multiline field.
2592         </p>
2593
2594       </sect>
2595
2596       <sect id="binarycontrolfiles">
2597         <heading>Binary package control files -- <file>DEBIAN/control</file></heading>
2598
2599         <p>
2600           The <file>DEBIAN/control</file> file contains the most vital
2601           (and version-dependent) information about a binary package.  It
2602           consists of a single paragraph.
2603         </p>
2604
2605         <p>
2606           The fields in this file are:
2607
2608           <list compact="compact">
2609             <item><qref id="f-Package"><tt>Package</tt></qref> (mandatory)</item>
2610             <item><qref id="f-Source"><tt>Source</tt></qref></item>
2611             <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2612             <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2613             <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2614             <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2615             <item><qref id="f-Essential"><tt>Essential</tt></qref></item>
2616             <item><qref id="binarydeps"><tt>Depends</tt> et al</qref></item>
2617             <item><qref id="f-Installed-Size"><tt>Installed-Size</tt></qref></item>
2618             <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2619             <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2620             <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2621           </list>
2622         </p>
2623       </sect>
2624
2625       <sect id="debiansourcecontrolfiles">
2626         <heading>Debian source control files -- <tt>.dsc</tt></heading>
2627
2628         <p>
2629           This file consists of a single paragraph, possibly surrounded by
2630           a PGP signature. The fields of that paragraph are listed below.
2631           Their syntax is described above, in <ref id="pkg-controlfields">.
2632
2633         <list compact="compact">
2634           <item><qref id="f-Format"><tt>Format</tt></qref> (mandatory)</item>
2635           <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2636           <item><qref id="f-Binary"><tt>Binary</tt></qref></item>
2637           <item><qref id="f-Architecture"><tt>Architecture</tt></qref></item>
2638           <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2639           <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2640           <item><qref id="f-Uploaders"><tt>Uploaders</tt></qref></item>
2641           <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2642           <item><qref id="f-Standards-Version"><tt>Standards-Version</tt></qref> (recommended)</item>
2643           <item><qref id="sourcebinarydeps"><tt>Build-Depends</tt> et al</qref></item>
2644           <item><qref id="f-Checksums"><tt>Checksums-Sha1</tt>
2645               and <tt>Checksums-Sha256</tt></qref> (recommended)</item>
2646           <item><qref id="f-Files"><tt>Files</tt></qref> (mandatory)</item>
2647         </list>
2648         </p>
2649
2650         <p>
2651           The source package control file is generated by
2652           <prgn>dpkg-source</prgn> when it builds the source
2653           archive, from other files in the source package,
2654           described above.  When unpacking, it is checked against
2655           the files and directories in the other parts of the
2656           source package.
2657         </p>
2658
2659       </sect>
2660
2661       <sect id="debianchangesfiles">
2662         <heading>Debian changes files -- <file>.changes</file></heading>
2663
2664         <p>
2665           The <file>.changes</file> files are used by the Debian archive
2666           maintenance software to process updates to packages. They
2667           consist of a single paragraph, possibly surrounded by a PGP
2668           signature. That paragraph contains information from the
2669           <file>debian/control</file> file and other data about the
2670           source package gathered via <file>debian/changelog</file>
2671           and <file>debian/rules</file>.
2672         </p>
2673
2674         <p>
2675           <file>.changes</file> files have a format version that is
2676           incremented whenever the documented fields or their meaning
2677           change.  This document describes format &changesversion;.
2678         </p>
2679
2680         <p>
2681           The fields in this file are:
2682
2683           <list compact="compact">
2684             <item><qref id="f-Format"><tt>Format</tt></qref> (mandatory)</item>
2685             <item><qref id="f-Date"><tt>Date</tt></qref> (mandatory)</item>
2686             <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2687             <item><qref id="f-Binary"><tt>Binary</tt></qref> (mandatory)</item>
2688             <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2689             <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2690             <item><qref id="f-Distribution"><tt>Distribution</tt></qref> (mandatory)</item>
2691             <item><qref id="f-Urgency"><tt>Urgency</tt></qref> (recommended)</item>
2692             <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2693             <item><qref id="f-Changed-By"><tt>Changed-By</tt></qref></item>
2694             <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2695             <item><qref id="f-Closes"><tt>Closes</tt></qref></item>
2696             <item><qref id="f-Changes"><tt>Changes</tt></qref> (mandatory)</item>
2697             <item><qref id="f-Checksums"><tt>Checksums-Sha1</tt>
2698                 and <tt>Checksums-Sha256</tt></qref> (recommended)</item>
2699             <item><qref id="f-Files"><tt>Files</tt></qref> (mandatory)</item>
2700           </list>
2701         </p>
2702       </sect>
2703
2704       <sect id="controlfieldslist">
2705         <heading>List of fields</heading>
2706
2707         <sect1 id="f-Source">
2708           <heading><tt>Source</tt></heading>
2709
2710           <p>
2711             This field identifies the source package name.
2712           </p>
2713
2714           <p>
2715             In <file>debian/control</file> or a <file>.dsc</file> file,
2716             this field must contain only the name of the source package.
2717           </p>
2718
2719           <p>
2720             In a binary package control file or a <file>.changes</file>
2721             file, the source package name may be followed by a version
2722             number in parentheses<footnote>
2723                 It is customary to leave a space after the package name
2724                 if a version number is specified.
2725             </footnote>.
2726             This version number may be omitted (and is, by
2727             <prgn>dpkg-gencontrol</prgn>) if it has the same value as
2728             the <tt>Version</tt> field of the binary package in
2729             question.  The field itself may be omitted from a binary
2730             package control file when the source package has the same
2731             name and version as the binary package.
2732           </p>
2733
2734           <p>
2735             Package names (both source and binary,
2736             see <ref id="f-Package">) must consist only of lower case
2737             letters (<tt>a-z</tt>), digits (<tt>0-9</tt>), plus
2738             (<tt>+</tt>) and minus (<tt>-</tt>) signs, and periods
2739             (<tt>.</tt>).  They must be at least two characters long and
2740             must start with an alphanumeric character.
2741           </p>
2742         </sect1>
2743
2744         <sect1 id="f-Maintainer">
2745           <heading><tt>Maintainer</tt></heading>
2746
2747           <p>
2748             The package maintainer's name and email address.  The name
2749             must come first, then the email address inside angle
2750             brackets <tt>&lt;&gt;</tt> (in RFC822 format).
2751           </p>
2752
2753           <p>
2754             If the maintainer's name contains a full stop then the
2755             whole field will not work directly as an email address due
2756             to a misfeature in the syntax specified in RFC822; a
2757             program using this field as an address must check for this
2758             and correct the problem if necessary (for example by
2759             putting the name in round brackets and moving it to the
2760             end, and bringing the email address forward).
2761           </p>
2762
2763           <p>
2764             See <ref id="maintainer"> for additional requirements and
2765             information about package maintainers.
2766           </p>
2767         </sect1>
2768
2769         <sect1 id="f-Uploaders">
2770           <heading><tt>Uploaders</tt></heading>
2771
2772           <p>
2773             List of the names and email addresses of co-maintainers of the
2774             package, if any. If the package has other maintainers besides
2775             the one named in the <qref id="f-Maintainer">Maintainer
2776             field</qref>, their names and email addresses should be listed
2777             here. The format of each entry is the same as that of the
2778             Maintainer field, and multiple entries must be comma
2779             separated.
2780           </p>
2781
2782           <p>
2783             This is normally an optional field, but if
2784             the <tt>Maintainer</tt> control field names a group of people
2785             and a shared email address, the <tt>Uploaders</tt> field must
2786             be present and must contain at least one human with their
2787             personal email address.
2788           </p>
2789
2790           <p>
2791             Any parser that interprets the Uploaders field in
2792             <file>debian/control</file> must permit it to span multiple
2793             lines.  Line breaks in an Uploaders field that spans multiple
2794             lines are not significant and the semantics of the field are
2795             the same as if the line breaks had not been present.
2796           </p>
2797         </sect1>
2798
2799         <sect1 id="f-Changed-By">
2800           <heading><tt>Changed-By</tt></heading>
2801
2802           <p>
2803             The name and email address of the person who prepared this
2804             version of the package, usually a maintainer.  The syntax is
2805             the same as for the <qref id="f-Maintainer">Maintainer
2806             field</qref>.
2807           </p>
2808         </sect1>
2809
2810         <sect1 id="f-Section">
2811           <heading><tt>Section</tt></heading>
2812
2813           <p>
2814             This field specifies an application area into which the package
2815             has been classified. See <ref id="subsections">.
2816           </p>
2817
2818           <p>
2819             When it appears in the <file>debian/control</file> file,
2820             it gives the value for the subfield of the same name in
2821             the <tt>Files</tt> field of the <file>.changes</file> file.
2822             It also gives the default for the same field in the binary
2823             packages.
2824           </p>
2825         </sect1>
2826
2827         <sect1 id="f-Priority">
2828           <heading><tt>Priority</tt></heading>
2829
2830           <p>
2831             This field represents how important it is that the user
2832             have the package installed. See <ref id="priorities">.
2833           </p>
2834
2835           <p>
2836             When it appears in the <file>debian/control</file> file,
2837             it gives the value for the subfield of the same name in
2838             the <tt>Files</tt> field of the <file>.changes</file> file.
2839             It also gives the default for the same field in the binary
2840             packages.
2841           </p>
2842         </sect1>
2843
2844         <sect1 id="f-Package">
2845           <heading><tt>Package</tt></heading>
2846
2847           <p>
2848             The name of the binary package.
2849           </p>
2850
2851           <p>
2852             Binary package names must follow the same syntax and
2853             restrictions as source package names.  See <ref id="f-Source">
2854             for the details.
2855           </p>
2856         </sect1>
2857
2858         <sect1 id="f-Architecture">
2859           <heading><tt>Architecture</tt></heading>
2860
2861           <p>
2862             Depending on context and the control file used, the
2863             <tt>Architecture</tt> field can include the following sets of
2864             values:
2865             <list>
2866                 <item>
2867                   A unique single word identifying a Debian machine
2868                   architecture as described in <ref id="arch-spec">.
2869                 </item>
2870                 <item>
2871                   An architecture wildcard identifying a set of Debian
2872                   machine architectures, see <ref id="arch-wildcard-spec">.
2873                   <tt>any</tt> matches all Debian machine architectures
2874                   and is the most frequently used.
2875                 </item>
2876                 <item>
2877                   <tt>all</tt>, which indicates an
2878                   architecture-independent package.
2879                 </item>
2880                 <item>
2881                   <tt>source</tt>, which indicates a source package.
2882                 </item>
2883             </list>
2884           </p>
2885
2886           <p>
2887             In the main <file>debian/control</file> file in the source
2888             package, this field may contain the special
2889             value <tt>all</tt>, the special architecture
2890             wildcard <tt>any</tt>, or a list of specific and wildcard
2891             architectures separated by spaces.  If <tt>all</tt>
2892             or <tt>any</tt> appears, that value must be the entire
2893             contents of the field.  Most packages will use
2894             either <tt>all</tt> or <tt>any</tt>.
2895           </p>
2896
2897           <p>
2898             Specifying a specific list of architectures indicates that the
2899             source will build an architecture-dependent package only on
2900             architectures included in the list.  Specifying a list of
2901             architecture wildcards indicates that the source will build an
2902             architecture-dependent package on only those architectures
2903             that match any of the specified architecture wildcards.
2904             Specifying a list of architectures or architecture wildcards
2905             other than <tt>any</tt> is for the minority of cases where a
2906             program is not portable or is not useful on some
2907             architectures.  Where possible, the program should be made
2908             portable instead.
2909           </p>
2910
2911           <p>
2912             In the source package control file <file>.dsc</file>, this
2913             field may contain either the architecture
2914             wildcard <tt>any</tt> or a list of architectures and
2915             architecture wildcards separated by spaces. If a list is
2916             given, it may include (or consist solely of) the special
2917             value <tt>all</tt>.  In other words, in <file>.dsc</file>
2918             files unlike the <file>debian/control</file>, <tt>all</tt> may
2919             occur in combination with specific architectures.
2920             The <tt>Architecture</tt> field in the source package control
2921             file <file>.dsc</file> is generally constructed from
2922             the <tt>Architecture</tt> fields in
2923             the <file>debian/control</file> in the source package.
2924           </p>
2925
2926           <p>
2927             Specifying <tt>any</tt> indicates that the source package
2928             isn't dependent on any particular architecture and should
2929             compile fine on any one. The produced binary package(s)
2930             will either be specific to whatever the current build
2931             architecture is or will be architecture-independent.
2932           </p>
2933
2934           <p>
2935             Specifying only <tt>all</tt> indicates that the source package
2936             will only build architecture-independent packages.  If this is
2937             the case, <tt>all</tt> must be used rather than <tt>any</tt>;
2938             <tt>any</tt> implies that the source package will build at
2939             least one architecture-dependent package.
2940           </p>
2941
2942           <p>
2943             Specifying a list of architectures or architecture wildcards
2944             indicates that the source will build an architecture-dependent
2945             package, and will only work correctly on the listed or
2946             matching architectures.  If the source package also builds at
2947             least one architecture-independent package, <tt>all</tt> will
2948             also be included in the list.
2949           </p>
2950
2951           <p>
2952             In a <file>.changes</file> file, the <tt>Architecture</tt>
2953             field lists the architecture(s) of the package(s) currently
2954             being uploaded.  This will be a list; if the source for the
2955             package is also being uploaded, the special
2956             entry <tt>source</tt> is also present.  <tt>all</tt> will be
2957             present if any architecture-independent packages are being
2958             uploaded.  Architecture wildcards such as <tt>any</tt> must
2959             never occur in the <tt>Architecture</tt> field in
2960             the <file>.changes</file> file.
2961           </p>
2962
2963           <p>
2964             See <ref id="debianrules"> for information on how to get
2965             the architecture for the build process.
2966           </p>
2967         </sect1>
2968
2969         <sect1 id="f-Essential">
2970           <heading><tt>Essential</tt></heading>
2971
2972           <p>
2973             This is a boolean field which may occur only in the
2974             control file of a binary package or in a per-package fields
2975             paragraph of a main source control data file.
2976           </p>
2977
2978           <p>
2979             If set to <tt>yes</tt> then the package management system
2980             will refuse to remove the package (upgrading and replacing
2981             it is still possible). The other possible value is <tt>no</tt>,
2982             which is the same as not having the field at all.
2983           </p>
2984         </sect1>
2985
2986         <sect1>
2987           <heading>Package interrelationship fields:
2988             <tt>Depends</tt>, <tt>Pre-Depends</tt>,
2989             <tt>Recommends</tt>, <tt>Suggests</tt>,
2990             <tt>Breaks</tt>, <tt>Conflicts</tt>,
2991             <tt>Provides</tt>, <tt>Replaces</tt>, <tt>Enhances</tt>
2992           </heading>
2993
2994           <p>
2995             These fields describe the package's relationships with
2996             other packages.  Their syntax and semantics are described
2997             in <ref id="relationships">.</p>
2998         </sect1>
2999
3000         <sect1 id="f-Standards-Version">
3001           <heading><tt>Standards-Version</tt></heading>
3002
3003           <p>
3004             The most recent version of the standards (the policy
3005             manual and associated texts) with which the package
3006             complies.
3007           </p>
3008
3009           <p>
3010             The version number has four components: major and minor
3011             version number and major and minor patch level.  When the
3012             standards change in a way that requires every package to
3013             change the major number will be changed.  Significant
3014             changes that will require work in many packages will be
3015             signaled by a change to the minor number.  The major patch
3016             level will be changed for any change to the meaning of the
3017             standards, however small; the minor patch level will be
3018             changed when only cosmetic, typographical or other edits
3019             are made which neither change the meaning of the document
3020             nor affect the contents of packages.
3021           </p>
3022
3023           <p>
3024             Thus only the first three components of the policy version
3025             are significant in the <em>Standards-Version</em> control
3026             field, and so either these three components or all four
3027             components may be specified.<footnote>
3028                 In the past, people specified the full version number
3029                 in the Standards-Version field, for example "2.3.0.0".
3030                 Since minor patch-level changes don't introduce new
3031                 policy, it was thought it would be better to relax
3032                 policy and only require the first 3 components to be
3033                 specified, in this example "2.3.0".  All four
3034                 components may still be used if someone wishes to do so.
3035             </footnote>
3036           </p>
3037
3038         </sect1>
3039
3040         <sect1 id="f-Version">
3041           <heading><tt>Version</tt></heading>
3042
3043           <p>
3044             The version number of a package. The format is:
3045             [<var>epoch</var><tt>:</tt>]<var>upstream_version</var>[<tt>-</tt><var>debian_revision</var>]
3046           </p>
3047
3048           <p>
3049             The three components here are:
3050             <taglist>
3051               <tag><var>epoch</var></tag>
3052               <item>
3053                 <p>
3054                   This is a single (generally small) unsigned integer.  It
3055                   may be omitted, in which case zero is assumed.  If it is
3056                   omitted then the <var>upstream_version</var> may not
3057                   contain any colons.
3058                 </p>
3059
3060                 <p>
3061                   It is provided to allow mistakes in the version numbers
3062                   of older versions of a package, and also a package's
3063                   previous version numbering schemes, to be left behind.
3064                 </p>
3065               </item>
3066
3067               <tag><var>upstream_version</var></tag>
3068               <item>
3069                 <p>
3070                   This is the main part of the version number.  It is
3071                   usually the version number of the original ("upstream")
3072                   package from which the <file>.deb</file> file has been made,
3073                   if this is applicable.  Usually this will be in the same
3074                   format as that specified by the upstream author(s);
3075                   however, it may need to be reformatted to fit into the
3076                   package management system's format and comparison
3077                   scheme.
3078                 </p>
3079
3080                 <p>
3081                   The comparison behavior of the package management system
3082                   with respect to the <var>upstream_version</var> is
3083                   described below.  The <var>upstream_version</var>
3084                   portion of the version number is mandatory.
3085                 </p>
3086
3087                 <p>
3088                   The <var>upstream_version</var> may contain only
3089                   alphanumerics<footnote>
3090                         Alphanumerics are <tt>A-Za-z0-9</tt> only.
3091                   </footnote>
3092                   and the characters <tt>.</tt> <tt>+</tt> <tt>-</tt>
3093                   <tt>:</tt> <tt>~</tt> (full stop, plus, hyphen, colon,
3094                   tilde) and should start with a digit.  If there is no
3095                   <var>debian_revision</var> then hyphens are not allowed;
3096                   if there is no <var>epoch</var> then colons are not
3097                   allowed.
3098                 </p>
3099               </item>
3100
3101               <tag><var>debian_revision</var></tag>
3102               <item>
3103                 <p>
3104                   This part of the version number specifies the version of
3105                   the Debian package based on the upstream version.  It
3106                   may contain only alphanumerics and the characters
3107                   <tt>+</tt> <tt>.</tt> <tt>~</tt> (plus, full stop,
3108                   tilde) and is compared in the same way as the
3109                   <var>upstream_version</var> is.
3110                 </p>
3111
3112                 <p>
3113                   It is optional; if it isn't present then the
3114                   <var>upstream_version</var> may not contain a hyphen.
3115                   This format represents the case where a piece of
3116                   software was written specifically to be a Debian
3117                   package, where the Debian package source must always
3118                   be identical to the pristine source and therefore no
3119                   revision indication is required.
3120                 </p>
3121
3122                 <p>
3123                   It is conventional to restart the
3124                   <var>debian_revision</var> at <tt>1</tt> each time the
3125                   <var>upstream_version</var> is increased.
3126                 </p>
3127
3128                 <p>
3129                   The package management system will break the version
3130                   number apart at the last hyphen in the string (if there
3131                   is one) to determine the <var>upstream_version</var> and
3132                   <var>debian_revision</var>.  The absence of a
3133                   <var>debian_revision</var> is equivalent to a
3134                   <var>debian_revision</var> of <tt>0</tt>.
3135                 </p>
3136               </item>
3137             </taglist>
3138           </p>
3139
3140           <p>
3141             When comparing two version numbers, first the <var>epoch</var>
3142             of each are compared, then the <var>upstream_version</var> if
3143             <var>epoch</var> is equal, and then <var>debian_revision</var>
3144             if <var>upstream_version</var> is also equal.
3145             <var>epoch</var> is compared numerically.  The
3146             <var>upstream_version</var> and <var>debian_revision</var>
3147             parts are compared by the package management system using the
3148             following algorithm:
3149           </p>
3150
3151           <p>
3152             The strings are compared from left to right.
3153           </p>
3154
3155           <p>
3156             First the initial part of each string consisting entirely of
3157             non-digit characters is determined.  These two parts (one of
3158             which may be empty) are compared lexically.  If a difference
3159             is found it is returned.  The lexical comparison is a
3160             comparison of ASCII values modified so that all the letters
3161             sort earlier than all the non-letters and so that a tilde
3162             sorts before anything, even the end of a part.  For example,
3163             the following parts are in sorted order from earliest to
3164             latest: <tt>~~</tt>, <tt>~~a</tt>, <tt>~</tt>, the empty part,
3165             <tt>a</tt>.<footnote>
3166               One common use of <tt>~</tt> is for upstream pre-releases.
3167               For example, <tt>1.0~beta1~svn1245</tt> sorts earlier than
3168               <tt>1.0~beta1</tt>, which sorts earlier than <tt>1.0</tt>.
3169             </footnote>
3170           </p>
3171
3172           <p>
3173             Then the initial part of the remainder of each string which
3174             consists entirely of digit characters is determined.  The
3175             numerical values of these two parts are compared, and any
3176             difference found is returned as the result of the comparison.
3177             For these purposes an empty string (which can only occur at
3178             the end of one or both version strings being compared) counts
3179             as zero.
3180           </p>
3181
3182           <p>
3183             These two steps (comparing and removing initial non-digit
3184             strings and initial digit strings) are repeated until a
3185             difference is found or both strings are exhausted.
3186           </p>
3187
3188           <p>
3189             Note that the purpose of epochs is to allow us to leave behind
3190             mistakes in version numbering, and to cope with situations
3191             where the version numbering scheme changes.  It is
3192             <em>not</em> intended to cope with version numbers containing
3193             strings of letters which the package management system cannot
3194             interpret (such as <tt>ALPHA</tt> or <tt>pre-</tt>), or with
3195             silly orderings.<footnote>
3196               The author of this manual has heard of a package whose
3197               versions went <tt>1.1</tt>, <tt>1.2</tt>, <tt>1.3</tt>,
3198               <tt>1</tt>, <tt>2.1</tt>, <tt>2.2</tt>, <tt>2</tt> and so
3199               forth.
3200             </footnote>
3201           </p>
3202         </sect1>
3203
3204         <sect1 id="f-Description">
3205           <heading><tt>Description</tt></heading>
3206
3207           <p>
3208             In a source or binary control file, the <tt>Description</tt>
3209             field contains a description of the binary package, consisting
3210             of two parts, the synopsis or the short description, and the
3211             long description. The field's format is as follows:
3212           </p>
3213
3214           <p>
3215 <example>
3216         Description: &lt;single line synopsis&gt;
3217          &lt;extended description over several lines&gt;
3218 </example>
3219           </p>
3220
3221           <p>
3222             The lines in the extended description can have these formats:
3223           </p>
3224
3225           <p><list>
3226
3227             <item>
3228               Those starting with a single space are part of a paragraph.
3229               Successive lines of this form will be word-wrapped when
3230               displayed. The leading space will usually be stripped off.
3231             </item>
3232
3233             <item>
3234               Those starting with two or more spaces. These will be
3235               displayed verbatim. If the display cannot be panned
3236               horizontally, the displaying program will line wrap them "hard"
3237               (i.e., without taking account of word breaks). If it can they
3238               will be allowed to trail off to the right. None, one or two
3239               initial spaces may be deleted, but the number of spaces
3240               deleted from each line will be the same (so that you can have
3241               indenting work correctly, for example).
3242             </item>
3243
3244             <item>
3245               Those containing a single space followed by a single full stop
3246               character. These are rendered as blank lines. This is the
3247               <em>only</em> way to get a blank line<footnote>
3248                 Completely empty lines will not be rendered as blank lines.
3249                 Instead, they will cause the parser to think you're starting
3250                 a whole new record in the control file, and will therefore
3251                 likely abort with an error.
3252               </footnote>.
3253             </item>
3254
3255             <item>
3256               Those containing a space, a full stop and some more characters.
3257               These are for future expansion. Do not use them.
3258             </item>
3259
3260           </list></p>
3261
3262           <p>
3263             Do not use tab characters.  Their effect is not predictable.
3264           </p>
3265
3266           <p>
3267             See <ref id="descriptions"> for further information on this.
3268           </p>
3269
3270           <p>
3271             In a <file>.changes</file> file, the <tt>Description</tt>
3272             field contains a summary of the descriptions for the packages
3273             being uploaded.  For this case, the first line of the field
3274             value (the part on the same line as <tt>Description:</tt>) is
3275             always empty.  The content of the field is expressed as
3276             continuation lines, one line per package.  Each line is
3277             indented by one space and contains the name of a binary
3278             package, a space, a hyphen (<tt>-</tt>), a space, and the
3279             short description line from that package.
3280           </p>
3281         </sect1>
3282
3283         <sect1 id="f-Distribution">
3284           <heading><tt>Distribution</tt></heading>
3285
3286           <p>
3287             In a <file>.changes</file> file or parsed changelog output
3288             this contains the (space-separated) name(s) of the
3289             distribution(s) where this version of the package should
3290             be installed.  Valid distributions are determined by the
3291             archive maintainers.<footnote>
3292               Example distribution names in the Debian archive used in
3293               <file>.changes</file> files are:
3294                 <taglist compact="compact">
3295                   <tag><em>unstable</em></tag>
3296                   <item>
3297                     This distribution value refers to the
3298                     <em>developmental</em> part of the Debian distribution
3299                     tree.  Most new packages, new upstream versions of
3300                     packages and bug fixes go into the <em>unstable</em>
3301                     directory tree.
3302                   </item>
3303
3304                   <tag><em>experimental</em></tag>
3305                   <item>
3306                     The packages with this distribution value are deemed
3307                     by their maintainers to be high risk.  Oftentimes they
3308                     represent early beta or developmental packages from
3309                     various sources that the maintainers want people to
3310                     try, but are not ready to be a part of the other parts
3311                     of the Debian distribution tree.
3312                   </item>
3313                 </taglist>
3314
3315                 <p>
3316                   Others are used for updating stable releases or for
3317                   security uploads.  More information is available in the
3318                   Debian Developer's Reference, section "The Debian
3319                   archive".
3320                 </p>
3321             </footnote>
3322             The Debian archive software only supports listing a single
3323             distribution.  Migration of packages to other distributions is
3324             handled outside of the upload process.
3325           </p>
3326         </sect1>
3327
3328         <sect1 id="f-Date">
3329           <heading><tt>Date</tt></heading>
3330
3331           <p>
3332             This field includes the date the package was built or last
3333             edited.  It must be in the same format as the <var>date</var>
3334             in a <file>debian/changelog</file> entry.
3335           </p>
3336
3337           <p>
3338             The value of this field is usually extracted from the
3339             <file>debian/changelog</file> file - see
3340             <ref id="dpkgchangelog">).
3341           </p>
3342         </sect1>
3343
3344         <sect1 id="f-Format">
3345           <heading><tt>Format</tt></heading>
3346
3347           <p>
3348             In <qref id="debianchangesfiles"><file>.changes</file></qref>
3349             files, this field declares the format version of that file.
3350             The syntax of the field value is the same as that of
3351             a <qref id="f-Version">package version number</qref> except
3352             that no epoch or Debian revision is allowed.  The format
3353             described in this document is <tt>&changesversion;</tt>.
3354           </p>
3355
3356           <p>
3357             In <qref id="debiansourcecontrolfiles"><file>.dsc</file>
3358             Debian source control</qref> files, this field declares the
3359             format of the source package.  The field value is used by
3360             programs acting on a source package to interpret the list of
3361             files in the source package and determine how to unpack it.
3362             The syntax of the field value is a numeric major revision, a
3363             period, a numeric minor revision, and then an optional subtype
3364             after whitespace, which if specified is an alphanumeric word
3365             in parentheses.  The subtype is optional in the syntax but may
3366             be mandatory for particular source format revisions.
3367             <footnote>
3368               The source formats currently supported by the Debian archive
3369               software are <tt>1.0</tt>, <tt>3.0 (native)</tt>,
3370               and <tt>3.0 (quilt)</tt>.
3371             </footnote>
3372           </p>
3373         </sect1>
3374
3375         <sect1 id="f-Urgency">
3376           <heading><tt>Urgency</tt></heading>
3377
3378           <p>
3379             This is a description of how important it is to upgrade to
3380             this version from previous ones.  It consists of a single
3381             keyword taking one of the values <tt>low</tt>,
3382             <tt>medium</tt>, <tt>high</tt>, <tt>emergency</tt>, or
3383             <tt>critical</tt><footnote>
3384               Other urgency values are supported with configuration
3385               changes in the archive software but are not used in Debian.
3386               The urgency affects how quickly a package will be considered
3387               for inclusion into the <tt>testing</tt> distribution and
3388               gives an indication of the importance of any fixes included
3389               in the upload.  <tt>Emergency</tt> and <tt>critical</tt> are
3390               treated as synonymous.
3391             </footnote> (not case-sensitive) followed by an optional
3392             commentary (separated by a space) which is usually in
3393             parentheses.  For example:
3394
3395             <example>
3396   Urgency: low (HIGH for users of diversions)
3397             </example>
3398
3399           </p>
3400
3401           <p>
3402             The value of this field is usually extracted from the
3403             <file>debian/changelog</file> file - see
3404             <ref id="dpkgchangelog">.
3405           </p>
3406         </sect1>
3407
3408         <sect1 id="f-Changes">
3409           <heading><tt>Changes</tt></heading>
3410
3411           <p>
3412             This field contains the human-readable changes data, describing
3413             the differences between the last version and the current one.
3414           </p>
3415
3416           <p>
3417             The first line of the field value (the part on the same line
3418             as <tt>Changes:</tt>) is always empty.  The content of the
3419             field is expressed as continuation lines, with each line
3420             indented by at least one space.  Blank lines must be
3421             represented by a line consisting only of a space and a full
3422             stop (<tt>.</tt>).
3423           </p>
3424
3425           <p>
3426             The value of this field is usually extracted from the
3427             <file>debian/changelog</file> file - see
3428             <ref id="dpkgchangelog">).
3429           </p>
3430
3431           <p>
3432             Each version's change information should be preceded by a
3433             "title" line giving at least the version, distribution(s)
3434             and urgency, in a human-readable way.
3435           </p>
3436
3437           <p>
3438             If data from several versions is being returned the entry
3439             for the most recent version should be returned first, and
3440             entries should be separated by the representation of a
3441             blank line (the "title" line may also be followed by the
3442             representation of a blank line).
3443           </p>
3444         </sect1>
3445
3446         <sect1 id="f-Binary">
3447           <heading><tt>Binary</tt></heading>
3448
3449           <p>
3450             This field is a list of binary packages.  Its syntax and
3451             meaning varies depending on the control file in which it
3452             appears.
3453           </p>
3454
3455           <p>
3456             When it appears in the <file>.dsc</file> file, it lists binary
3457             packages which a source package can produce, separated by
3458             commas<footnote>
3459                 A space after each comma is conventional.
3460             </footnote>.  It may span multiple lines.  The source package
3461             does not necessarily produce all of these binary packages for
3462             every architecture.  The source control file doesn't contain
3463             details of which architectures are appropriate for which of
3464             the binary packages.
3465           </p>
3466
3467           <p>
3468             When it appears in a <file>.changes</file> file, it lists the
3469             names of the binary packages being uploaded, separated by
3470             whitespace (not commas).  It may span multiple lines.
3471           </p>
3472         </sect1>
3473
3474         <sect1 id="f-Installed-Size">
3475           <heading><tt>Installed-Size</tt></heading>
3476
3477           <p>
3478             This field appears in the control files of binary packages,
3479             and in the <file>Packages</file> files.  It gives an estimate
3480             of the total amount of disk space required to install the
3481             named package.  Actual installed size may vary based on block
3482             size, file system properties, or actions taken by package
3483             maintainer scripts.
3484           </p>
3485
3486           <p>
3487             The disk space is given as the integer value of the estimated
3488             installed size in bytes, divided by 1024 and rounded up.
3489           </p>
3490         </sect1>
3491
3492         <sect1 id="f-Files">
3493           <heading><tt>Files</tt></heading>
3494
3495           <p>
3496             This field contains a list of files with information about
3497             each one.  The exact information and syntax varies with
3498             the context.
3499           </p>
3500
3501           <p>
3502             In all cases, Files is a multiline field.  The first line of
3503             the field value (the part on the same line as <tt>Files:</tt>)
3504             is always empty.  The content of the field is expressed as
3505             continuation lines, one line per file.  Each line must be
3506             indented by one space and contain a number of sub-fields,
3507             separated by spaces, as described below.
3508           </p>
3509
3510           <p>
3511             In the <file>.dsc</file> file, each line contains the MD5
3512             checksum, size and filename of the tar file and (if
3513             applicable) diff file which make up the remainder of the
3514             source package<footnote>
3515               That is, the parts which are not the <tt>.dsc</tt>.
3516             </footnote>.  For example:
3517             <example>
3518 Files:
3519  c6f698f19f2a2aa07dbb9bbda90a2754 571925 example_1.2.orig.tar.gz
3520  938512f08422f3509ff36f125f5873ba 6220 example_1.2-1.diff.gz
3521             </example>
3522             The exact forms of the filenames are described
3523             in <ref id="pkg-sourcearchives">.
3524           </p>
3525
3526           <p>
3527             In the <file>.changes</file> file this contains one line per
3528             file being uploaded.  Each line contains the MD5 checksum,
3529             size, section and priority and the filename.  For example:
3530             <example>
3531 Files:
3532  4c31ab7bfc40d3cf49d7811987390357 1428 text extra example_1.2-1.dsc
3533  c6f698f19f2a2aa07dbb9bbda90a2754 571925 text extra example_1.2.orig.tar.gz
3534  938512f08422f3509ff36f125f5873ba 6220 text extra example_1.2-1.diff.gz
3535  7c98fe853b3bbb47a00e5cd129b6cb56 703542 text extra example_1.2-1_i386.deb
3536             </example>
3537             The <qref id="f-Section">section</qref>
3538             and <qref id="f-Priority">priority</qref> are the values of
3539             the corresponding fields in the main source control file.  If
3540             no section or priority is specified then <tt>-</tt> should be
3541             used, though section and priority values must be specified for
3542             new packages to be installed properly.
3543           </p>
3544
3545           <p>
3546             The special value <tt>byhand</tt> for the section in a
3547             <tt>.changes</tt> file indicates that the file in question
3548             is not an ordinary package file and must by installed by
3549             hand by the distribution maintainers.  If the section is
3550             <tt>byhand</tt> the priority should be <tt>-</tt>.
3551           </p>
3552
3553           <p>
3554             If a new Debian revision of a package is being shipped and
3555             no new original source archive is being distributed the
3556             <tt>.dsc</tt> must still contain the <tt>Files</tt> field
3557             entry for the original source archive
3558             <file><var>package</var>_<var>upstream-version</var>.orig.tar.gz</file>,
3559             but the <file>.changes</file> file should leave it out.  In
3560             this case the original source archive on the distribution
3561             site must match exactly, byte-for-byte, the original
3562             source archive which was used to generate the
3563             <file>.dsc</file> file and diff which are being uploaded.</p>
3564         </sect1>
3565
3566         <sect1 id="f-Closes">
3567           <heading><tt>Closes</tt></heading>
3568
3569           <p>
3570             A space-separated list of bug report numbers that the upload
3571             governed by the .changes file closes.
3572           </p>
3573         </sect1>
3574
3575         <sect1 id="f-Homepage">
3576           <heading><tt>Homepage</tt></heading>
3577
3578           <p>
3579             The URL of the web site for this package, preferably (when
3580             applicable) the site from which the original source can be
3581             obtained and any additional upstream documentation or
3582             information may be found.  The content of this field is a
3583             simple URL without any surrounding characters such as
3584             <tt>&lt;&gt;</tt>.
3585           </p>
3586         </sect1>
3587
3588         <sect1 id="f-Checksums">
3589           <heading><tt>Checksums-Sha1</tt>
3590             and <tt>Checksums-Sha256</tt></heading>
3591
3592           <p>
3593             These fields contain a list of files with a checksum and size
3594             for each one.  Both <tt>Checksums-Sha1</tt>
3595             and <tt>Checksums-Sha256</tt> have the same syntax and differ
3596             only in the checksum algorithm used: SHA-1
3597             for <tt>Checksums-Sha1</tt> and SHA-256
3598             for <tt>Checksums-Sha256</tt>.
3599           </p>
3600
3601           <p>
3602             <tt>Checksums-Sha1</tt> and <tt>Checksums-Sha256</tt> are
3603             multiline fields.  The first line of the field value (the part
3604             on the same line as <tt>Checksums-Sha1:</tt>
3605             or <tt>Checksums-Sha256:</tt>) is always empty.  The content
3606             of the field is expressed as continuation lines, one line per
3607             file.  Each line consists of the checksum, a space, the file
3608             size, a space, and the file name.  For example (from
3609             a <file>.changes</file> file):
3610             <example>
3611 Checksums-Sha1:
3612  1f418afaa01464e63cc1ee8a66a05f0848bd155c 1276 example_1.0-1.dsc
3613  a0ed1456fad61116f868b1855530dbe948e20f06 171602 example_1.0.orig.tar.gz
3614  5e86ecf0671e113b63388dac81dd8d00e00ef298 6137 example_1.0-1.debian.tar.gz
3615  71a0ff7da0faaf608481195f9cf30974b142c183 548402 example_1.0-1_i386.deb
3616 Checksums-Sha256:
3617  ac9d57254f7e835bed299926fd51bf6f534597cc3fcc52db01c4bffedae81272 1276 example_1.0-1.dsc
3618  0d123be7f51e61c4bf15e5c492b484054be7e90f3081608a5517007bfb1fd128 171602 example_1.0.orig.tar.gz
3619  f54ae966a5f580571ae7d9ef5e1df0bd42d63e27cb505b27957351a495bc6288 6137 example_1.0-1.debian.tar.gz
3620  3bec05c03974fdecd11d020fc2e8250de8404867a8a2ce865160c250eb723664 548402 example_1.0-1_i386.deb
3621             </example>
3622           </p>
3623
3624           <p>
3625             In the <file>.dsc</file> file, these fields should list all
3626             files that make up the source package.  In
3627             the <file>.changes</file> file, these fields should list all
3628             files being uploaded.  The list of files in these fields
3629             must match the list of files in the <tt>Files</tt> field.
3630           </p>
3631         </sect1>
3632       </sect>
3633
3634       <sect>
3635         <heading>User-defined fields</heading>
3636
3637         <p>
3638           Additional user-defined fields may be added to the
3639           source package control file.  Such fields will be
3640           ignored, and not copied to (for example) binary or
3641           source package control files or upload control files.
3642         </p>
3643
3644         <p>
3645           If you wish to add additional unsupported fields to
3646           these output files you should use the mechanism
3647           described here.
3648         </p>
3649
3650         <p>
3651           Fields in the main source control information file with
3652           names starting <tt>X</tt>, followed by one or more of
3653           the letters <tt>BCS</tt> and a hyphen <tt>-</tt>, will
3654           be copied to the output files.  Only the part of the
3655           field name after the hyphen will be used in the output
3656           file.  Where the letter <tt>B</tt> is used the field
3657           will appear in binary package control files, where the
3658           letter <tt>S</tt> is used in source package control
3659           files and where <tt>C</tt> is used in upload control
3660           (<tt>.changes</tt>) files.
3661         </p>
3662
3663         <p>
3664           For example, if the main source information control file
3665           contains the field
3666           <example>
3667   XBS-Comment: I stand between the candle and the star.
3668           </example>
3669           then the binary and source package control files will contain the
3670           field
3671           <example>
3672   Comment: I stand between the candle and the star.
3673           </example>
3674         </p>
3675
3676       </sect>
3677
3678     </chapt>
3679
3680
3681     <chapt id="maintainerscripts">
3682       <heading>Package maintainer scripts and installation procedure</heading>
3683
3684       <sect>
3685         <heading>Introduction to package maintainer scripts</heading>
3686
3687         <p>
3688           It is possible to supply scripts as part of a package which
3689           the package management system will run for you when your
3690           package is installed, upgraded or removed.
3691         </p>
3692
3693         <p>
3694           These scripts are the control information
3695           files <prgn>preinst</prgn>, <prgn>postinst</prgn>, <prgn>prerm</prgn>
3696           and <prgn>postrm</prgn>.  They must be proper executable files;
3697           if they are scripts (which is recommended), they must start with
3698           the usual <tt>#!</tt> convention.  They should be readable and
3699           executable by anyone, and must not be world-writable.
3700         </p>
3701
3702         <p>
3703           The package management system looks at the exit status from
3704           these scripts.  It is important that they exit with a
3705           non-zero status if there is an error, so that the package
3706           management system can stop its processing.  For shell
3707           scripts this means that you <em>almost always</em> need to
3708           use <tt>set -e</tt> (this is usually true when writing shell
3709           scripts, in fact).  It is also important, of course, that
3710           they exit with a zero status if everything went well.
3711         </p>
3712
3713         <p>
3714           Additionally, packages interacting with users
3715           using <prgn>debconf</prgn> in the <prgn>postinst</prgn> script
3716           should install a <prgn>config</prgn> script as a control
3717           information file.  See <ref id="maintscriptprompt"> for details.
3718         </p>
3719
3720         <p>
3721           When a package is upgraded a combination of the scripts from
3722           the old and new packages is called during the upgrade
3723           procedure.  If your scripts are going to be at all
3724           complicated you need to be aware of this, and may need to
3725           check the arguments to your scripts.
3726         </p>
3727
3728         <p>
3729           Broadly speaking the <prgn>preinst</prgn> is called before
3730           (a particular version of) a package is unpacked, and the
3731           <prgn>postinst</prgn> afterwards; the <prgn>prerm</prgn>
3732           before (a version of) a package is removed and the
3733           <prgn>postrm</prgn> afterwards.
3734         </p>
3735
3736         <p>
3737           Programs called from maintainer scripts should not normally
3738           have a path prepended to them. Before installation is
3739           started, the package management system checks to see if the
3740           programs <prgn>ldconfig</prgn>,
3741           <prgn>start-stop-daemon</prgn>, <prgn>install-info</prgn>,
3742           and <prgn>update-rc.d</prgn> can be found via the
3743           <tt>PATH</tt> environment variable. Those programs, and any
3744           other program that one would expect to be in the
3745           <tt>PATH</tt>, should thus be invoked without an absolute
3746           pathname. Maintainer scripts should also not reset the
3747           <tt>PATH</tt>, though they might choose to modify it by
3748           prepending or appending package-specific directories. These
3749           considerations really apply to all shell scripts.</p>
3750       </sect>
3751
3752       <sect id="idempotency">
3753         <heading>Maintainer scripts idempotency</heading>
3754
3755         <p>
3756           It is necessary for the error recovery procedures that the
3757           scripts be idempotent.  This means that if it is run
3758           successfully, and then it is called again, it doesn't bomb
3759           out or cause any harm, but just ensures that everything is
3760           the way it ought to be.  If the first call failed, or
3761           aborted half way through for some reason, the second call
3762           should merely do the things that were left undone the first
3763           time, if any, and exit with a success status if everything
3764           is OK.<footnote>
3765               This is so that if an error occurs, the user interrupts
3766               <prgn>dpkg</prgn> or some other unforeseen circumstance
3767               happens you don't leave the user with a badly-broken
3768               package when <prgn>dpkg</prgn> attempts to repeat the
3769               action.
3770           </footnote>
3771         </p>
3772       </sect>
3773
3774       <sect id="controllingterminal">
3775         <heading>Controlling terminal for maintainer scripts</heading>
3776
3777         <p>
3778           Maintainer scripts are not guaranteed to run with a controlling
3779           terminal and may not be able to interact with the user.  They
3780           must be able to fall back to noninteractive behavior if no
3781           controlling terminal is available.  Maintainer scripts that
3782           prompt via a program conforming to the Debian Configuration
3783           Management Specification (see <ref id="maintscriptprompt">) may
3784           assume that program will handle falling back to noninteractive
3785           behavior.
3786         </p>
3787
3788         <p>
3789           For high-priority prompts without a reasonable default answer,
3790           maintainer scripts may abort if there is no controlling
3791           terminal.  However, this situation should be avoided if at all
3792           possible, since it prevents automated or unattended installs.
3793           In most cases, users will consider this to be a bug in the
3794           package.
3795         </p>
3796       </sect>
3797
3798       <sect id="exitstatus">
3799         <heading>Exit status</heading>
3800
3801         <p>
3802           Each script must return a zero exit status for
3803           success, or a nonzero one for failure, since the package
3804           management system looks for the exit status of these scripts
3805           and determines what action to take next based on that datum.
3806         </p>
3807       </sect>
3808
3809       <sect id="mscriptsinstact"><heading>Summary of ways maintainer
3810           scripts are called
3811         </heading>
3812
3813         <p>
3814           What follows is a summary of all the ways in which maintainer
3815           scripts may be called along with what facilities those scripts
3816           may rely on being available at that time.  Script names preceded
3817           by <var>new-</var> are the scripts from the new version of a
3818           package being installed, upgraded to, or downgraded to.  Script
3819           names preceded by <var>old-</var> are the scripts from the old
3820           version of a package that is being upgraded from or downgraded
3821           from.
3822         </p>
3823
3824         <p>
3825           The <prgn>preinst</prgn> script may be called in the following
3826           ways:
3827           <taglist>
3828             <tag><var>new-preinst</var> <tt>install</tt></tag>
3829             <tag><var>new-preinst</var> <tt>install</tt>
3830               <var>old-version</var></tag>
3831             <tag><var>new-preinst</var> <tt>upgrade</tt>
3832               <var>old-version</var></tag>
3833             <item>
3834               The package will not yet be unpacked, so
3835               the <prgn>preinst</prgn> script cannot rely on any files
3836               included in its package.  Only essential packages and
3837               pre-dependencies (<tt>Pre-Depends</tt>) may be assumed to be
3838               available.  Pre-dependencies will have been configured at
3839               least once, but at the time the <prgn>preinst</prgn> is
3840               called they may only be in an unpacked or "Half-Configured"
3841               state if a previous version of the pre-dependency was
3842               completely configured and has not been removed since then.
3843             </item>
3844
3845             <tag><var>old-preinst</var> <tt>abort-upgrade</tt>
3846               <var>new-version</var></tag>
3847             <item>
3848               Called during error handling of an upgrade that failed after
3849               unpacking the new package because the <tt>postrm
3850               upgrade</tt> action failed.  The unpacked files may be
3851               partly from the new version or partly missing, so the script
3852               cannot rely on files included in the package.  Package
3853               dependencies may not be available.  Pre-dependencies will be
3854               at least unpacked following the same rules as above, except
3855               they may be only "Half-Installed" if an upgrade of the
3856               pre-dependency failed.<footnote>
3857                 This can happen if the new version of the package no
3858                 longer pre-depends on a package that had been partially
3859                 upgraded.
3860               </footnote>
3861             </item>
3862           </taglist>
3863         </p>
3864
3865         <p>
3866           The <prgn>postinst</prgn> script may be called in the following
3867           ways:
3868           <taglist>
3869             <tag><var>postinst</var> <tt>configure</tt>
3870               <var>most-recently-configured-version</var></tag>
3871             <item>
3872               The files contained in the package will be unpacked.  All
3873               package dependencies will at least be unpacked.  If there
3874               are no circular dependencies involved, all package
3875               dependencies will be configured.  For behavior in the case
3876               of circular dependencies, see the discussion
3877               in <ref id="binarydeps">.
3878             </item>
3879
3880             <tag><var>old-postinst</var> <tt>abort-upgrade</tt>
3881               <var>new-version</var></tag>
3882             <tag><var>conflictor's-postinst</var> <tt>abort-remove</tt>
3883               <tt>in-favour</tt> <var>package</var>
3884               <var>new-version</var></tag>
3885             <tag><var>postinst</var> <tt>abort-remove</tt></tag>
3886             <tag><var>deconfigured's-postinst</var>
3887               <tt>abort-deconfigure</tt> <tt>in-favour</tt>
3888               <var>failed-install-package</var> <var>version</var>
3889               [<tt>removing</tt> <var>conflicting-package</var>
3890               <var>version</var>]</tag>
3891             <item>
3892               The files contained in the package will be unpacked.  All
3893               package dependencies will at least be "Half-Installed" and
3894               will have previously been configured and not removed.
3895               However, dependencies may not be configured or even fully
3896               unpacked in some error situations.<footnote>
3897                 For example, suppose packages foo and bar are installed
3898                 with foo depending on bar.  If an upgrade of bar were
3899                 started and then aborted, and then an attempt to remove
3900                 foo failed because its <prgn>prerm</prgn> script failed,
3901                 foo's <tt>postinst abort-remove</tt> would be called with
3902                 bar only "Half-Installed".
3903               </footnote>
3904               The <prgn>postinst</prgn> should still attempt any actions
3905               for which its dependencies are required, since they will
3906               normally be available, but consider the correct error
3907               handling approach if those actions fail.  Aborting
3908               the <prgn>postinst</prgn> action if commands or facilities
3909               from the package dependencies are not available is often the
3910               best approach.
3911             </item>
3912           </taglist>
3913         </p>
3914
3915         <p>
3916           The <prgn>prerm</prgn> script may be called in the following
3917           ways:
3918           <taglist>
3919             <tag><var>prerm</var> <tt>remove</tt></tag>
3920             <tag><var>old-prerm</var>
3921               <tt>upgrade</tt><var>new-version</var></tag>
3922             <tag><var>conflictor's-prerm</var> <tt>remove</tt>
3923               <tt>in-favour</tt> <var>package</var>
3924               <var>new-version</var></tag>
3925             <tag><var>deconfigured's-prerm</var> <tt>deconfigure</tt>
3926               <tt>in-favour</tt> <var>package-being-installed</var>
3927               <var>version</var> [<tt>removing</tt>
3928               <var>conflicting-package</var> <var>version</var>]</tag>
3929             <item>
3930               The package whose <prgn>prerm</prgn> is being called will be
3931               at least "Half-Installed".  All package dependencies will at
3932               least be "Half-Installed" and will have previously been
3933               configured and not removed.  If there was no error, all
3934               dependencies will at least be unpacked, but these actions
3935               may be called in various error states where dependencies are
3936               only "Half-Installed" due to a partial upgrade.
3937             </item>
3938
3939             <tag><var>new-prerm</var> <tt>failed-upgrade</tt>
3940               <var>old-version</var></tag>
3941             <item>
3942               Called during error handling when <tt>prerm upgrade</tt>
3943               fails.  The new package will not yet be unpacked, and all
3944               the same constraints as for <tt>preinst upgrade</tt> apply.
3945             </item>
3946           </taglist>
3947         </p>
3948
3949         <p>
3950           The <prgn>postrm</prgn> script may be called in the following
3951           ways:
3952           <taglist>
3953             <tag><var>postrm</var> <tt>remove</tt></tag>
3954             <tag><var>postrm</var> <tt>purge</tt></tag>
3955             <tag><var>old-postrm</var> <tt>upgrade</tt>
3956               <var>new-version</var></tag>
3957             <tag><var>disappearer's-postrm</var> <tt>disappear</tt>
3958                 <var>overwriter</var> <var>overwriter-version</var></tag>
3959             <item>
3960               The <prgn>postrm</prgn> script is called after the package's
3961               files have been removed or replaced.  The package
3962               whose <prgn>postrm</prgn> is being called may have
3963               previously been deconfigured and only be unpacked, at which
3964               point subsequent package changes do not consider its
3965               dependencies.  Therefore, all <prgn>postrm</prgn> actions
3966               may only rely on essential packages and must gracefully skip
3967               any actions that require the package's dependencies if those
3968               dependencies are unavailable.<footnote>
3969                 This is often done by checking whether the command or
3970                 facility the <prgn>postrm</prgn> intends to call is
3971                 available before calling it.  For example:
3972 <example>
3973 if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
3974         . /usr/share/debconf/confmodule
3975         db_purge
3976 fi
3977 </example>
3978                 in <prgn>postrm</prgn> purges the <prgn>debconf</prgn>
3979                 configuration for the package
3980                 if <package>debconf</package> is installed.
3981               </foonote>
3982             </item>
3983
3984             <tag><var>new-postrm</var> <tt>failed-upgrade</tt>
3985               <var>old-version</var></tag>
3986             <item>
3987               Called when the old <tt>postrm upgrade</tt> action fails.
3988               The new package will be unpacked, but only essential
3989               packages and pre-dependencies can be relied on.
3990               Pre-dependencies will either be configured or will be
3991               "Unpacked" or "Half-Configured" but previously had been
3992               configured and was never removed.
3993             </item>
3994
3995             <tag><var>new-postrm</var> <tt>abort-install</tt></tag>
3996             <tag><var>new-postrm</var> <tt>abort-install</tt>
3997               <var>old-version</var></tag>
3998             <tag><var>new-postrm</var> <tt>abort-upgrade</tt>
3999               <var>old-version</var></tag>
4000             <item>
4001               Called before unpacking the new package as part of the
4002               error handling of <prgn>preinst</prgn> failures.  May assume
4003               the same state as <prgn>preinst</prgn> can assume.
4004             </item>
4005           </taglist>
4006         </p>
4007       </sect>
4008
4009       <sect id="unpackphase">
4010         <heading>Details of unpack phase of installation or upgrade</heading>
4011
4012         <p>
4013           The procedure on installation/upgrade/overwrite/disappear
4014           (i.e., when running <tt>dpkg --unpack</tt>, or the unpack
4015           stage of <tt>dpkg --install</tt>) is as follows.  In each
4016           case, if a major error occurs (unless listed below) the
4017           actions are, in general, run backwards - this means that the
4018           maintainer scripts are run with different arguments in
4019           reverse order.  These are the "error unwind" calls listed
4020           below.
4021
4022           <enumlist>
4023             <item>
4024                 <enumlist>
4025                   <item>
4026                       If a version of the package is already installed, call
4027                       <example compact="compact">
4028 <var>old-prerm</var> upgrade <var>new-version</var>
4029                       </example>
4030                   </item>
4031                   <item>
4032                       If the script runs but exits with a non-zero
4033                       exit status, <prgn>dpkg</prgn> will attempt:
4034                       <example compact="compact">
4035 <var>new-prerm</var> failed-upgrade <var>old-version</var>
4036                       </example>
4037                       If this works, the upgrade continues. If this
4038                       does not work, the error unwind:
4039                       <example compact="compact">
4040 <var>old-postinst</var> abort-upgrade <var>new-version</var>
4041                       </example>
4042                       If this works, then the old-version is
4043                       "Installed", if not, the old version is in a
4044                       "Half-Configured" state.
4045                   </item>
4046                 </enumlist>
4047             </item>
4048
4049             <item>
4050                 If a "conflicting" package is being removed at the same time,
4051                 or if any package will be broken (due to <tt>Breaks</tt>):
4052                 <enumlist>
4053                   <item>
4054                       If <tt>--auto-deconfigure</tt> is
4055                       specified, call, for each package to be deconfigured
4056                       due to <tt>Breaks</tt>:
4057                       <example compact="compact">
4058 <var>deconfigured's-prerm</var> deconfigure \
4059   in-favour <var>package-being-installed</var> <var>version</var>
4060                       </example>
4061                       Error unwind:
4062                       <example compact="compact">
4063 <var>deconfigured's-postinst</var> abort-deconfigure \
4064   in-favour <var>package-being-installed-but-failed</var> <var>version</var>
4065                       </example>
4066                       The deconfigured packages are marked as
4067                       requiring configuration, so that if
4068                       <tt>--install</tt> is used they will be
4069                       configured again if possible.
4070                   </item>
4071                   <item>
4072                       If any packages depended on a conflicting
4073                       package being removed and <tt>--auto-deconfigure</tt> is
4074                       specified, call, for each such package:
4075                       <example compact="compact">
4076 <var>deconfigured's-prerm</var> deconfigure \
4077   in-favour <var>package-being-installed</var> <var>version</var> \
4078     removing <var>conflicting-package</var> <var>version</var>
4079                       </example>
4080                       Error unwind:
4081                       <example compact="compact">
4082 <var>deconfigured's-postinst</var> abort-deconfigure \
4083   in-favour <var>package-being-installed-but-failed</var> <var>version</var> \
4084     removing <var>conflicting-package</var> <var>version</var>
4085                       </example>
4086                       The deconfigured packages are marked as
4087                       requiring configuration, so that if
4088                       <tt>--install</tt> is used they will be
4089                       configured again if possible.
4090                   </item>
4091                   <item>
4092                       To prepare for removal of each conflicting package, call:
4093                       <example compact="compact">
4094 <var>conflictor's-prerm</var> remove \
4095   in-favour <var>package</var> <var>new-version</var>
4096                       </example>
4097                       Error unwind:
4098                       <example compact="compact">
4099 <var>conflictor's-postinst</var> abort-remove \
4100   in-favour <var>package</var> <var>new-version</var>
4101                       </example>
4102                   </item>
4103                 </enumlist>
4104             </item>
4105
4106             <item>
4107                 <enumlist>
4108                   <item>
4109                       If the package is being upgraded, call:
4110                       <example compact="compact">
4111 <var>new-preinst</var> upgrade <var>old-version</var>
4112                       </example>
4113                       If this fails, we call:
4114                       <example>
4115 <var>new-postrm</var> abort-upgrade <var>old-version</var>
4116                       </example>
4117                       <enumlist>
4118                         <item>
4119                           <p>
4120                             If that works, then
4121                             <example>
4122 <var>old-postinst</var> abort-upgrade <var>new-version</var>
4123                             </example>
4124                             is called. If this works, then the old version
4125                             is in an "Installed" state, or else it is left
4126                             in an "Unpacked" state.
4127                           </p>
4128                         </item>
4129                         <item>
4130                           <p>
4131                             If it fails, then the old version is left
4132                             in an "Half-Installed" state.
4133                           </p>
4134                         </item>
4135                       </enumlist>
4136                       
4137                   </item>
4138                   <item>
4139                       Otherwise, if the package had some configuration
4140                       files from a previous version installed (i.e., it
4141                       is in the "configuration files only" state):
4142                       <example compact="compact">
4143 <var>new-preinst</var> install <var>old-version</var>
4144                       </example>
4145                       Error unwind:
4146                       <example>
4147 <var>new-postrm</var> abort-install <var>old-version</var>
4148                       </example>
4149                       If this fails, the package is left in a
4150                       "Half-Installed" state, which requires a
4151                       reinstall. If it works, the packages is left in
4152                       a "Config-Files" state.
4153                   </item>
4154                   <item>
4155                       Otherwise (i.e., the package was completely purged):
4156                       <example compact="compact">
4157 <var>new-preinst</var> install
4158                       </example>
4159                       Error unwind:
4160                       <example compact="compact">
4161 <var>new-postrm</var> abort-install
4162                       </example>
4163                       If the error-unwind fails, the package is in a
4164                       "Half-Installed" phase, and requires a
4165                       reinstall. If the error unwind works, the
4166                       package is in a not installed state.
4167                   </item>
4168                 </enumlist>
4169             </item>
4170
4171             <item>
4172               <p>
4173                 The new package's files are unpacked, overwriting any
4174                 that may be on the system already, for example any
4175                 from the old version of the same package or from
4176                 another package.  Backups of the old files are kept
4177                 temporarily, and if anything goes wrong the package
4178                 management system will attempt to put them back as
4179                 part of the error unwind.
4180               </p>
4181
4182               <p>
4183                 It is an error for a package to contain files which
4184                 are on the system in another package, unless
4185                 <tt>Replaces</tt> is used (see <ref id="replaces">).
4186                 <!--
4187                 The following paragraph is not currently the case:
4188                 Currently the <tt>- - force-overwrite</tt> flag is
4189                 enabled, downgrading it to a warning, but this may not
4190                 always be the case.
4191                 -->
4192               </p>
4193
4194               <p>
4195                 It is a more serious error for a package to contain a
4196                 plain file or other kind of non-directory where another
4197                 package has a directory (again, unless
4198                 <tt>Replaces</tt> is used).  This error can be
4199                 overridden if desired using
4200                 <tt>--force-overwrite-dir</tt>, but this is not
4201                 advisable.
4202               </p>
4203
4204               <p>
4205                 Packages which overwrite each other's files produce
4206                 behavior which, though deterministic, is hard for the
4207                 system administrator to understand.  It can easily
4208                 lead to "missing" programs if, for example, a package
4209                 is unpacked which overwrites a file from another
4210                 package, and is then removed again.<footnote>
4211                     Part of the problem is due to what is arguably a
4212                     bug in <prgn>dpkg</prgn>.
4213                 </footnote>
4214               </p>
4215
4216               <p>
4217                 A directory will never be replaced by a symbolic link
4218                 to a directory or vice versa; instead, the existing
4219                 state (symlink or not) will be left alone and
4220                 <prgn>dpkg</prgn> will follow the symlink if there is
4221                 one.
4222               </p>
4223             </item>
4224
4225             <item>
4226               <p>
4227                 <enumlist>
4228                   <item>
4229                       If the package is being upgraded, call
4230                       <example compact="compact">
4231 <var>old-postrm</var> upgrade <var>new-version</var>
4232                       </example>
4233                   </item>
4234                   <item>
4235                       If this fails, <prgn>dpkg</prgn> will attempt:
4236                       <example compact="compact">
4237 <var>new-postrm</var> failed-upgrade <var>old-version</var>
4238                       </example>
4239                       If this works, installation continues. If not, 
4240                       Error unwind:
4241                       <example compact="compact">
4242 <var>old-preinst</var> abort-upgrade <var>new-version</var>
4243                       </example>
4244                       If this fails, the old version is left in a
4245                       "Half-Installed" state. If it works, dpkg now
4246                       calls:
4247                       <example compact="compact">
4248 <var>new-postrm</var> abort-upgrade <var>old-version</var>
4249                       </example>
4250                       If this fails, the old version is left in a
4251                       "Half-Installed" state. If it works, dpkg now
4252                       calls:
4253                       <example compact="compact">
4254 <var>old-postinst</var> abort-upgrade <var>new-version</var>
4255                       </example>
4256                       If this fails, the old version is in an
4257                       "Unpacked" state.
4258                   </item>
4259                 </enumlist>
4260               </p>
4261
4262               <p>
4263                 This is the point of no return - if
4264                 <prgn>dpkg</prgn> gets this far, it won't back off
4265                 past this point if an error occurs.  This will
4266                 leave the package in a fairly bad state, which
4267                 will require a successful re-installation to clear
4268                 up, but it's when <prgn>dpkg</prgn> starts doing
4269                 things that are irreversible.
4270               </p>
4271             </item>
4272
4273             <item>
4274                 Any files which were in the old version of the package
4275                 but not in the new are removed.
4276             </item>
4277
4278             <item>
4279                 The new file list replaces the old.
4280             </item>
4281
4282             <item>
4283                 The new maintainer scripts replace the old.
4284             </item>
4285
4286             <item>
4287                 Any packages all of whose files have been overwritten
4288                 during the installation, and which aren't required for
4289                 dependencies, are considered to have been removed.
4290                 For each such package
4291                 <enumlist>
4292                   <item>
4293                       <prgn>dpkg</prgn> calls:
4294                       <example compact="compact">
4295 <var>disappearer's-postrm</var> disappear \
4296   <var>overwriter</var> <var>overwriter-version</var>
4297                       </example>
4298                   </item>
4299                   <item>
4300                       The package's maintainer scripts are removed.
4301                   </item>
4302                   <item>
4303                       It is noted in the status database as being in a
4304                       sane state, namely not installed (any conffiles
4305                       it may have are ignored, rather than being
4306                       removed by <prgn>dpkg</prgn>).  Note that
4307                       disappearing packages do not have their prerm
4308                       called, because <prgn>dpkg</prgn> doesn't know
4309                       in advance that the package is going to
4310                       vanish.
4311                   </item>
4312                 </enumlist>
4313             </item>
4314
4315             <item>
4316                 Any files in the package we're unpacking that are also
4317                 listed in the file lists of other packages are removed
4318                 from those lists.  (This will lobotomize the file list
4319                 of the "conflicting" package if there is one.)
4320             </item>
4321
4322             <item>
4323                 The backup files made during installation, above, are
4324                 deleted.
4325             </item>
4326
4327             <item>
4328               <p>
4329                 The new package's status is now sane, and recorded as
4330                 "unpacked".
4331               </p>
4332
4333               <p>
4334                 Here is another point of no return - if the
4335                 conflicting package's removal fails we do not unwind
4336                 the rest of the installation; the conflicting package
4337                 is left in a half-removed limbo.
4338               </p>
4339             </item>
4340
4341             <item>
4342                 If there was a conflicting package we go and do the
4343                 removal actions (described below), starting with the
4344                 removal of the conflicting package's files (any that
4345                 are also in the package being unpacked have already
4346                 been removed from the conflicting package's file list,
4347                 and so do not get removed now).
4348             </item>
4349           </enumlist>
4350         </p>
4351       </sect>
4352
4353       <sect id="configdetails"><heading>Details of configuration</heading>
4354
4355         <p>
4356           When we configure a package (this happens with <tt>dpkg
4357             --install</tt> and <tt>dpkg --configure</tt>), we first
4358           update any <tt>conffile</tt>s and then call:
4359           <example compact="compact">
4360 <var>postinst</var> configure <var>most-recently-configured-version</var>
4361           </example>
4362         </p>
4363
4364         <p>
4365           No attempt is made to unwind after errors during
4366           configuration. If the configuration fails, the package is in
4367           a "Failed Config" state, and an error message is generated.
4368         </p>
4369
4370         <p>
4371           If there is no most recently configured version
4372           <prgn>dpkg</prgn> will pass a null argument.
4373           <footnote>
4374             <p>
4375               Historical note: Truly ancient (pre-1997) versions of
4376               <prgn>dpkg</prgn> passed <tt>&lt;unknown&gt;</tt>
4377               (including the angle brackets) in this case.  Even older
4378               ones did not pass a second argument at all, under any
4379               circumstance.  Note that upgrades using such an old dpkg
4380               version are unlikely to work for other reasons, even if
4381               this old argument behavior is handled by your postinst script.
4382             </p>
4383           </footnote>     
4384         </p>
4385       </sect>
4386
4387       <sect id="removedetails"><heading>Details of removal and/or
4388       configuration purging</heading>
4389
4390         <p>
4391           <enumlist>
4392             <item>
4393               <p>
4394                 <example compact="compact">
4395 <var>prerm</var> remove
4396                 </example>
4397               </p>
4398               <p>
4399                 If prerm fails during replacement due to conflict
4400                 <example>
4401 <var>conflictor's-postinst</var> abort-remove \
4402   in-favour <var>package</var> <var>new-version</var>
4403                 </example>
4404                 Or else we call:
4405                 <example>
4406 <var>postinst</var> abort-remove
4407                 </example>
4408               </p>
4409               <p>
4410                 If this fails, the package is in a "Half-Configured"
4411                 state, or else it remains "Installed".
4412               </p>
4413             </item>
4414             <item>
4415                 The package's files are removed (except <tt>conffile</tt>s).
4416             </item>
4417             <item>
4418                 <example compact="compact">
4419 <var>postrm</var> remove
4420                 </example>
4421
4422               <p>
4423                 If it fails, there's no error unwind, and the package is in
4424                 an "Half-Installed" state.
4425               </p>
4426             </item>
4427             <item>
4428               <p>
4429                 All the maintainer scripts except the <prgn>postrm</prgn>
4430                 are removed.
4431               </p>
4432
4433               <p>
4434                 If we aren't purging the package we stop here.  Note
4435                 that packages which have no <prgn>postrm</prgn> and no
4436                 <tt>conffile</tt>s are automatically purged when
4437                 removed, as there is no difference except for the
4438                 <prgn>dpkg</prgn> status.
4439               </p>
4440             </item>
4441             <item>
4442                 The <tt>conffile</tt>s and any backup files
4443                 (<tt>~</tt>-files, <tt>#*#</tt> files,
4444                 <tt>%</tt>-files, <tt>.dpkg-{old,new,tmp}</tt>, etc.)
4445                 are removed.
4446             </item>
4447             <item>
4448               <p>
4449                 <example compact="compact">
4450 <var>postrm</var> purge
4451                 </example>
4452               </p>
4453               <p>
4454                 If this fails, the package remains in a "Config-Files"
4455                 state.
4456               </p>
4457             </item>
4458             <item>
4459                 The package's file list is removed.
4460             </item>
4461           </enumlist>
4462
4463         </p>
4464       </sect>
4465     </chapt>
4466
4467
4468     <chapt id="relationships">
4469       <heading>Declaring relationships between packages</heading>
4470
4471       <sect id="depsyntax">
4472         <heading>Syntax of relationship fields</heading>
4473
4474         <p>
4475           These fields all have a uniform syntax.  They are a list of
4476           package names separated by commas.
4477         </p>
4478
4479         <p>
4480           In the <tt>Depends</tt>, <tt>Recommends</tt>,
4481           <tt>Suggests</tt>, <tt>Pre-Depends</tt>,
4482           <tt>Build-Depends</tt> and <tt>Build-Depends-Indep</tt>
4483           control fields of the package, which declare
4484           dependencies on other packages, the package names listed may
4485           also include lists of alternative package names, separated
4486           by vertical bar (pipe) symbols <tt>|</tt>.  In such a case,
4487           if any one of the alternative packages is installed, that
4488           part of the dependency is considered to be satisfied.
4489         </p>
4490
4491         <p>
4492           All of the fields except for <tt>Provides</tt> may restrict
4493           their applicability to particular versions of each named
4494           package.  This is done in parentheses after each individual
4495           package name; the parentheses should contain a relation from
4496           the list below followed by a version number, in the format
4497           described in <ref id="f-Version">.
4498         </p>
4499
4500         <p>
4501           The relations allowed are <tt>&lt;&lt;</tt>, <tt>&lt;=</tt>,
4502           <tt>=</tt>, <tt>&gt;=</tt> and <tt>&gt;&gt;</tt> for
4503           strictly earlier, earlier or equal, exactly equal, later or
4504           equal and strictly later, respectively.  The deprecated
4505           forms <tt>&lt;</tt> and <tt>&gt;</tt> were used to mean
4506           earlier/later or equal, rather than strictly earlier/later,
4507           so they should not appear in new packages (though
4508           <prgn>dpkg</prgn> still supports them).
4509         </p>
4510
4511         <p>
4512           Whitespace may appear at any point in the version
4513           specification subject to the rules in <ref
4514           id="controlsyntax">, and must appear where it's necessary to
4515           disambiguate; it is not otherwise significant.  All of the
4516           relationship fields may span multiple lines.  For
4517           consistency and in case of future changes to
4518           <prgn>dpkg</prgn> it is recommended that a single space be
4519           used after a version relationship and before a version
4520           number; it is also conventional to put a single space after
4521           each comma, on either side of each vertical bar, and before
4522           each open parenthesis.  When wrapping a relationship field, it
4523           is conventional to do so after a comma and before the space
4524           following that comma.
4525         </p>
4526
4527         <p>
4528           For example, a list of dependencies might appear as:
4529           <example compact="compact">
4530 Package: mutt
4531 Version: 1.3.17-1
4532 Depends: libc6 (>= 2.2.1), exim | mail-transport-agent
4533           </example>
4534         </p>
4535
4536         <p>
4537           Relationships may be restricted to a certain set of
4538           architectures.  This is indicated in brackets after each
4539           individual package name and the optional version specification.
4540           The brackets enclose a list of Debian architecture names
4541           separated by whitespace.  Exclamation marks may be prepended to
4542           each of the names.  (It is not permitted for some names to be
4543           prepended with exclamation marks while others aren't.)
4544         </p>
4545
4546         <p>
4547           For build relationship fields
4548           (<tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
4549           <tt>Build-Conflicts</tt> and <tt>Build-Conflicts-Indep</tt>), if
4550           the current Debian host architecture is not in this list and
4551           there are no exclamation marks in the list, or it is in the list
4552           with a prepended exclamation mark, the package name and the
4553           associated version specification are ignored completely for the
4554           purposes of defining the relationships.
4555         </p>
4556
4557         <p>
4558           For example:
4559           <example compact="compact">
4560 Source: glibc
4561 Build-Depends-Indep: texinfo
4562 Build-Depends: kernel-headers-2.2.10 [!hurd-i386],
4563   hurd-dev [hurd-i386], gnumach-dev [hurd-i386]
4564           </example>
4565           requires <tt>kernel-headers-2.2.10</tt> on all architectures
4566           other than hurd-i386 and requires <tt>hurd-dev</tt> and
4567           <tt>gnumach-dev</tt> only on hurd-i386.
4568         </p>
4569
4570         <p>
4571           For binary relationship fields, the architecture restriction
4572           syntax is only supported in the source package control
4573           file <file>debian/control</file>.  When the corresponding binary
4574           package control file is generated, the relationship will either
4575           be omitted or included without the architecture restriction
4576           based on the architecture of the binary package.  This means
4577           that architecture restrictions must not be used in binary
4578           relationship fields for architecture-independent packages
4579           (<tt>Architecture: all</tt>).
4580         </p>
4581
4582         <p>
4583           For example:
4584           <example compact="compact">
4585 Depends: foo [i386], bar [amd64]
4586           </example>
4587           becomes <tt>Depends: foo</tt> when the package is built on
4588           the <tt>i386</tt> architecture, <tt>Depends: bar</tt> when the
4589           package is built on the <tt>amd64</tt> architecture, and omitted
4590           entirely in binary packages built on all other architectures.
4591         </p>
4592
4593         <p>
4594           If the architecture-restricted dependency is part of a set of
4595           alternatives using <tt>|</tt>, that alternative is ignored
4596           completely on architectures that do not match the restriction.
4597           For example:
4598           <example compact="compact">
4599 Build-Depends: foo [!i386] | bar [!amd64]
4600           </example>
4601           is equivalent to <tt>bar</tt> on the i386 architecture, to
4602           <tt>foo</tt> on the amd64 architecture, and to <tt>foo |
4603           bar</tt> on all other architectures.
4604         </p>
4605
4606         <p>
4607           Relationships may also be restricted to a certain set of
4608           architectures using architecture wildcards.  The syntax for
4609           declaring such restrictions is the same as declaring
4610           restrictions using a certain set of architectures without
4611           architecture wildcards.  For example:
4612           <example compact="compact">
4613 Build-Depends: foo [linux-any], bar [any-i386], baz [!linux-any]
4614           </example>
4615           is equivalent to <tt>foo</tt> on architectures using the Linux
4616           kernel and any cpu, <tt>bar</tt> on architectures using any
4617           kernel and an i386 cpu, and <tt>baz</tt> on any architecture
4618           using a kernel other than Linux.
4619         </p>
4620
4621         <p>
4622           Note that the binary package relationship fields such as
4623           <tt>Depends</tt> appear in one of the binary package
4624           sections of the control file, whereas the build-time
4625           relationships such as <tt>Build-Depends</tt> appear in the
4626           source package section of the control file (which is the
4627           first section).
4628         </p>
4629       </sect>
4630
4631       <sect id="binarydeps">
4632         <heading>Binary Dependencies - <tt>Depends</tt>,
4633           <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4634           <tt>Pre-Depends</tt>
4635         </heading>
4636
4637         <p>
4638           Packages can declare in their control file that they have
4639           certain relationships to other packages - for example, that
4640           they may not be installed at the same time as certain other
4641           packages, and/or that they depend on the presence of others.
4642         </p>
4643
4644         <p>
4645           This is done using the <tt>Depends</tt>, <tt>Pre-Depends</tt>,
4646           <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4647           <tt>Breaks</tt> and <tt>Conflicts</tt> control fields.
4648           <tt>Breaks</tt> is described in <ref id="breaks">, and
4649           <tt>Conflicts</tt> is described in <ref id="conflicts">.  The
4650           rest are described below.
4651         </p>
4652
4653         <p>
4654           These seven fields are used to declare a dependency
4655           relationship by one package on another.  Except for
4656           <tt>Enhances</tt> and <tt>Breaks</tt>, they appear in the
4657           depending (binary) package's control file.
4658           (<tt>Enhances</tt> appears in the recommending package's
4659           control file, and <tt>Breaks</tt> appears in the version of
4660           depended-on package which causes the named package to
4661           break).
4662         </p>
4663
4664         <p>
4665           A <tt>Depends</tt> field takes effect <em>only</em> when a
4666           package is to be configured.  It does not prevent a package
4667           being on the system in an unconfigured state while its
4668           dependencies are unsatisfied, and it is possible to replace
4669           a package whose dependencies are satisfied and which is
4670           properly installed with a different version whose
4671           dependencies are not and cannot be satisfied; when this is
4672           done the depending package will be left unconfigured (since
4673           attempts to configure it will give errors) and will not
4674           function properly.  If it is necessary, a
4675           <tt>Pre-Depends</tt> field can be used, which has a partial
4676           effect even when a package is being unpacked, as explained
4677           in detail below.  (The other three dependency fields,
4678           <tt>Recommends</tt>, <tt>Suggests</tt> and
4679           <tt>Enhances</tt>, are only used by the various front-ends
4680           to <prgn>dpkg</prgn> such as <prgn>apt-get</prgn>,
4681           <prgn>aptitude</prgn>, and <prgn>dselect</prgn>.)
4682         </p>
4683
4684         <p>
4685           Since <tt>Depends</tt> only places requirements on the order in
4686           which packages are configured, packages in an installation run
4687           are usually all unpacked first and all configured later.
4688           <footnote>
4689             This approach makes dependency resolution easier.  If two
4690             packages A and B are being upgraded, the installed package A
4691             depends on exactly the installed package B, and the new
4692             package A depends on exactly the new package B (a common
4693             situation when upgrading shared libraries and their
4694             corresponding development packages), satisfying the
4695             dependencies at every stage of the upgrade would be
4696             impossible.  This relaxed restriction means that both new
4697             packages can be unpacked together and then configured in their
4698             dependency order.
4699           </footnote>
4700         </p>
4701
4702         <p>
4703           If there is a circular dependency among packages being installed
4704           or removed, installation or removal order honoring the
4705           dependency order is impossible, requiring the dependency loop be
4706           broken at some point and the dependency requirements violated
4707           for at least one package.  Packages involved in circular
4708           dependencies may not be able to rely on their dependencies being
4709           configured before they themselves are configured, depending on
4710           which side of the break of the circular dependency loop they
4711           happen to be on.  If one of the packages in the loop has
4712           no <prgn>postinst</prgn> script, then the cycle will be broken
4713           at that package; this ensures that all <prgn>postinst</prgn>
4714           scripts are run with their dependencies properly configured if
4715           this is possible.  Otherwise the breaking point is arbitrary.
4716           Packages should therefore avoid circular dependencies where
4717           possible, particularly if they have <prgn>postinst</prgn>
4718           scripts.
4719         </p>
4720
4721         <p>
4722           The meaning of the five dependency fields is as follows:
4723           <taglist>
4724             <tag><tt>Depends</tt></tag>
4725             <item>
4726               <p>
4727                 This declares an absolute dependency.  A package will
4728                 not be configured unless all of the packages listed in
4729                 its <tt>Depends</tt> field have been correctly
4730                 configured (unless there is a circular dependency as
4731                 described above).
4732               </p>
4733
4734               <p>
4735                 The <tt>Depends</tt> field should be used if the
4736                 depended-on package is required for the depending
4737                 package to provide a significant amount of
4738                 functionality.
4739               </p>
4740
4741               <p>
4742                 The <tt>Depends</tt> field should also be used if the
4743                 <prgn>postinst</prgn> or <prgn>prerm</prgn> scripts
4744                 require the depended-on package to be unpacked or
4745                 configured in order to run, or if the dependend-on package
4746                 is desirable for cleanup done by <prgn>postrm</prgn>.  In
4747                 the case of <tt>postinst configure</tt>, the depended-on
4748                 packages will be unpacked and configured first.  (If both
4749                 packages are involved in a dependency loop, this might not
4750                 work as expected; see the explanation a few paragraphs
4751                 back.)  In the case of <prgn>prerm</prgn> or
4752                 other <prgn>postinst</prgn> actions, the package
4753                 dependencies will normally be at least unpacked, but they
4754                 may be only "Half-Installed" if a previous upgrade of the
4755                 dependency failed.  In the case of <prgn>postrm</prgn>,
4756                 there are no guarantees, but the depended-on package is
4757                 more likely to be available if the package declares a
4758                 dependency (particularly for <tt>postrm remove</tt>).
4759                 The <prgn>postrm</prgn> script must cleanly skip actions
4760                 that require a dependency if that dependency isn't
4761                 available.
4762               </p>
4763             </item>
4764
4765             <tag><tt>Recommends</tt></tag>
4766             <item>
4767               <p>
4768                 This declares a strong, but not absolute, dependency.
4769               </p>
4770
4771               <p>
4772                 The <tt>Recommends</tt> field should list packages
4773                 that would be found together with this one in all but
4774                 unusual installations.
4775               </p>
4776             </item>
4777
4778             <tag><tt>Suggests</tt></tag>
4779             <item>
4780                 This is used to declare that one package may be more
4781                 useful with one or more others.  Using this field
4782                 tells the packaging system and the user that the
4783                 listed packages are related to this one and can
4784                 perhaps enhance its usefulness, but that installing
4785                 this one without them is perfectly reasonable.
4786             </item>
4787
4788             <tag><tt>Enhances</tt></tag>
4789             <item>
4790                 This field is similar to Suggests but works in the
4791                 opposite direction. It is used to declare that a
4792                 package can enhance the functionality of another
4793                 package.
4794             </item>
4795
4796             <tag><tt>Pre-Depends</tt></tag>
4797             <item>
4798               <p>
4799                 This field is like <tt>Depends</tt>, except that it
4800                 also forces <prgn>dpkg</prgn> to complete installation
4801                 of the packages named before even starting the
4802                 installation of the package which declares the
4803                 pre-dependency, as follows:
4804               </p>
4805
4806               <p>
4807                 When a package declaring a pre-dependency is about to
4808                 be <em>unpacked</em> the pre-dependency can be
4809                 satisfied if the depended-on package is either fully
4810                 configured, <em>or even if</em> the depended-on
4811                 package(s) are only unpacked or in the "Half-Configured"
4812                 state, provided that they have been configured
4813                 correctly at some point in the past (and not removed
4814                 or partially removed since).  In this case, both the
4815                 previously-configured and currently unpacked or
4816                 "Half-Configured" versions must satisfy any version
4817                 clause in the <tt>Pre-Depends</tt> field.
4818               </p>
4819
4820               <p>
4821                 When the package declaring a pre-dependency is about to
4822                 be <em>configured</em>, the pre-dependency will be treated
4823                 as a normal <tt>Depends</tt>.  It will be considered
4824                 satisfied only if the depended-on package has been
4825                 correctly configured.  However, unlike
4826                 with <tt>Depends</tt>, <tt>Pre-Depends</tt> does not
4827                 permit circular dependencies to be broken.  If a circular
4828                 dependency is encountered while attempting to honor
4829                 <tt>Pre-Depends</tt>, the installation will be aborted.
4830               </p>
4831
4832               <p>
4833                 <tt>Pre-Depends</tt> are also required if the
4834                 <prgn>preinst</prgn> script depends on the named package.
4835                 It is best to avoid this situation if possible.
4836               </p>
4837
4838               <p>
4839                 <tt>Pre-Depends</tt> should be used sparingly,
4840                 preferably only by packages whose premature upgrade or
4841                 installation would hamper the ability of the system to
4842                 continue with any upgrade that might be in progress.
4843               </p>
4844             </item>
4845           </taglist>
4846         </p>
4847
4848         <p>
4849           When selecting which level of dependency to use you should
4850           consider how important the depended-on package is to the
4851           functionality of the one declaring the dependency.  Some
4852           packages are composed of components of varying degrees of
4853           importance.  Such a package should list using
4854           <tt>Depends</tt> the package(s) which are required by the
4855           more important components.  The other components'
4856           requirements may be mentioned as Suggestions or
4857           Recommendations, as appropriate to the components' relative
4858           importance.
4859         </p>
4860       </sect>
4861
4862       <sect id="breaks">
4863         <heading>Packages which break other packages - <tt>Breaks</tt></heading>
4864
4865         <p>
4866           When one binary package declares that it breaks another,
4867           <prgn>dpkg</prgn> will refuse to allow the package which
4868           declares <tt>Breaks</tt> to be unpacked unless the broken
4869           package is deconfigured first, and it will refuse to
4870           allow the broken package to be reconfigured.
4871         </p>
4872
4873         <p>
4874           A package will not be regarded as causing breakage merely
4875           because its configuration files are still installed; it must
4876           be at least "Half-Installed".
4877         </p>
4878
4879         <p>
4880           A special exception is made for packages which declare that
4881           they break their own package name or a virtual package which
4882           they provide (see below): this does not count as a real
4883           breakage.
4884         </p>
4885
4886         <p>
4887           Normally a <tt>Breaks</tt> entry will have an "earlier than"
4888           version clause; such a <tt>Breaks</tt> is introduced in the
4889           version of an (implicit or explicit) dependency which violates
4890           an assumption or reveals a bug in earlier versions of the broken
4891           package, or which takes over a file from earlier versions of the
4892           package named in <tt>Breaks</tt>.  This use of <tt>Breaks</tt>
4893           will inform higher-level package management tools that the
4894           broken package must be upgraded before the new one.
4895         </p>
4896
4897         <p>
4898           If the breaking package also overwrites some files from the
4899           older package, it should use <tt>Replaces</tt> to ensure this
4900           goes smoothly.  See <ref id="replaces"> for a full discussion
4901           of taking over files from other packages, including how to
4902           use <tt>Breaks</tt> in those cases.
4903         </p>
4904
4905         <p>
4906           Many of the cases where <tt>Breaks</tt> should be used were
4907           previously handled with <tt>Conflicts</tt>
4908           because <tt>Breaks</tt> did not yet exist.
4909           Many <tt>Conflicts</tt> fields should now be <tt>Breaks</tt>.
4910           See <ref id="conflicts"> for more information about the
4911           differences.
4912         </p>
4913       </sect>
4914
4915       <sect id="conflicts">
4916         <heading>Conflicting binary packages - <tt>Conflicts</tt></heading>
4917
4918         <p>
4919           When one binary package declares a conflict with another using
4920           a <tt>Conflicts</tt> field, <prgn>dpkg</prgn> will refuse to
4921           allow them to be unpacked on the system at the same time.  This
4922           is a stronger restriction than <tt>Breaks</tt>, which prevents
4923           the broken package from being configured while the breaking
4924           package is in the "Unpacked" state but allows both packages to
4925           be unpacked at the same time.
4926         </p>
4927
4928         <p>
4929           If one package is to be unpacked, the other must be removed
4930           first.  If the package being unpacked is marked as replacing
4931           (see <ref id="replaces">, but note that <tt>Breaks</tt> should
4932           normally be used in this case) the one on the system, or the one
4933           on the system is marked as deselected, or both packages are
4934           marked <tt>Essential</tt>, then <prgn>dpkg</prgn> will
4935           automatically remove the package which is causing the conflict.
4936           Otherwise, it will halt the installation of the new package with
4937           an error.  This mechanism is specifically designed to produce an
4938           error when the installed package is <tt>Essential</tt>, but the
4939           new package is not.
4940         </p>
4941
4942         <p>
4943           A package will not cause a conflict merely because its
4944           configuration files are still installed; it must be at least
4945           "Half-Installed".
4946         </p>
4947
4948         <p>
4949           A special exception is made for packages which declare a
4950           conflict with their own package name, or with a virtual
4951           package which they provide (see below): this does not
4952           prevent their installation, and allows a package to conflict
4953           with others providing a replacement for it.  You use this
4954           feature when you want the package in question to be the only
4955           package providing some feature.
4956         </p>
4957
4958         <p>
4959           Normally, <tt>Breaks</tt> should be used instead
4960           of <tt>Conflicts</tt> since <tt>Conflicts</tt> imposes a
4961           stronger restriction on the ordering of package installation or
4962           upgrade and can make it more difficult for the package manager
4963           to find a correct solution to an upgrade or installation
4964           problem.  <tt>Breaks</tt> should be used
4965           <list>
4966             <item>when moving a file from one package to another (see
4967               <ref id="replaces">),</item>
4968             <item>when splitting a package (a special case of the previous
4969               one), or</item>
4970             <item>when the breaking package exposes a bug in or interacts
4971               badly with particular versions of the broken
4972               package.</item>
4973           </list>
4974           <tt>Conflicts</tt> should be used
4975           <list>
4976             <item>when two packages provide the same file and will
4977               continue to do so,</item>
4978             <item>in conjunction with <tt>Provides</tt> when only one
4979               package providing a given virtual facility may be unpacked
4980               at a time (see <ref id="virtual">),</item>
4981             <item>in other cases where one must prevent simultaneous
4982               installation of two packages for reasons that are ongoing
4983               (not fixed in a later version of one of the packages) or
4984               that must prevent both packages from being unpacked at the
4985               same time, not just configured.</item>
4986           </list>
4987           Be aware that adding <tt>Conflicts</tt> is normally not the best
4988           solution when two packages provide the same files.  Depending on
4989           the reason for that conflict, using alternatives or renaming the
4990           files is often a better approach.  See, for
4991           example, <ref id="binaries">.
4992         </p>
4993
4994         <p>
4995           Neither <tt>Breaks</tt> nor <tt>Conflicts</tt> should be used
4996           unless two packages cannot be installed at the same time or
4997           installing them both causes one of them to be broken or
4998           unusable.  Having similar functionality or performing the same
4999           tasks as another package is not sufficient reason to
5000           declare <tt>Breaks</tt> or <tt>Conflicts</tt> with that package.
5001         </p>
5002
5003         <p>
5004           A <tt>Conflicts</tt> entry may have an "earlier than" version
5005           clause if the reason for the conflict is corrected in a later
5006           version of one of the packages.  However, normally the presence
5007           of an "earlier than" version clause is a sign
5008           that <tt>Breaks</tt> should have been used instead.  An "earlier
5009           than" version clause in <tt>Conflicts</tt>
5010           prevents <prgn>dpkg</prgn> from upgrading or installing the
5011           package which declares such a conflict until the upgrade or
5012           removal of the conflicted-with package has been completed, which
5013           is a strong restriction.
5014         </p>
5015       </sect>
5016
5017       <sect id="virtual"><heading>Virtual packages - <tt>Provides</tt>
5018         </heading>
5019
5020         <p>
5021           As well as the names of actual ("concrete") packages, the
5022           package relationship fields <tt>Depends</tt>,
5023           <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
5024           <tt>Pre-Depends</tt>, <tt>Breaks</tt>, <tt>Conflicts</tt>,
5025           <tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
5026           <tt>Build-Conflicts</tt> and <tt>Build-Conflicts-Indep</tt>
5027           may mention "virtual packages".
5028         </p>
5029
5030         <p>
5031           A <em>virtual package</em> is one which appears in the
5032           <tt>Provides</tt> control field of another package.  The effect
5033           is as if the package(s) which provide a particular virtual
5034           package name had been listed by name everywhere the virtual
5035           package name appears. (See also <ref id="virtual_pkg">)
5036         </p>
5037
5038         <p>
5039           If there are both concrete and virtual packages of the same
5040           name, then the dependency may be satisfied (or the conflict
5041           caused) by either the concrete package with the name in
5042           question or any other concrete package which provides the
5043           virtual package with the name in question.  This is so that,
5044           for example, supposing we have
5045           <example compact="compact">
5046 Package: foo
5047 Depends: bar
5048           </example> and someone else releases an enhanced version of
5049           the <tt>bar</tt> package they can say:
5050           <example compact="compact">
5051 Package: bar-plus
5052 Provides: bar
5053           </example>
5054           and the <tt>bar-plus</tt> package will now also satisfy the
5055           dependency for the <tt>foo</tt> package.
5056         </p>
5057
5058         <p>
5059           If a relationship field has a version number attached, only real
5060           packages will be considered to see whether the relationship is
5061           satisfied (or the prohibition violated, for a conflict or
5062           breakage).  In other words, if a version number is specified,
5063           this is a request to ignore all <tt>Provides</tt> for that
5064           package name and consider only real packages.  The package
5065           manager will assume that a package providing that virtual
5066           package is not of the "right" version.  A <tt>Provides</tt>
5067           field may not contain version numbers, and the version number of
5068           the concrete package which provides a particular virtual package
5069           will not be considered when considering a dependency on or
5070           conflict with the virtual package name.<footnote>
5071             It is possible that a future release of <prgn>dpkg</prgn> may
5072             add the ability to specify a version number for each virtual
5073             package it provides.  This feature is not yet present,
5074             however, and is expected to be used only infrequently.
5075           </footnote>
5076         </p>
5077
5078         <p>
5079           To specify which of a set of real packages should be the default
5080           to satisfy a particular dependency on a virtual package, list
5081           the real package as an alternative before the virtual one.
5082         </p>
5083
5084         <p>
5085           If the virtual package represents a facility that can only be
5086           provided by one real package at a time, such as
5087           the <package>mail-transport-agent</package> virtual package that
5088           requires installation of a binary that would conflict with all
5089           other providers of that virtual package (see
5090           <ref id="mail-transport-agents">), all packages providing that
5091           virtual package should also declare a conflict with it
5092           using <tt>Conflicts</tt>.  This will ensure that at most one
5093           provider of that virtual package is unpacked or installed at a
5094           time.
5095         </p>
5096       </sect>
5097
5098       <sect id="replaces"><heading>Overwriting files and replacing
5099           packages - <tt>Replaces</tt></heading>
5100
5101         <p>
5102           Packages can declare in their control file that they should
5103           overwrite files in certain other packages, or completely replace
5104           other packages. The <tt>Replaces</tt> control field has these
5105           two distinct purposes.
5106         </p>
5107
5108         <sect1><heading>Overwriting files in other packages</heading>
5109
5110           <p>
5111             It is usually an error for a package to contain files which
5112             are on the system in another package.  However, if the
5113             overwriting package declares that it <tt>Replaces</tt> the one
5114             containing the file being overwritten, then <prgn>dpkg</prgn>
5115             will replace the file from the old package with that from the
5116             new.  The file will no longer be listed as "owned" by the old
5117             package and will be taken over by the new package.
5118             Normally, <tt>Breaks</tt> should be used in conjunction
5119             with <tt>Replaces</tt>.<footnote>
5120               To see why <tt>Breaks</tt> is normally needed in addition
5121               to <tt>Replaces</tt>, consider the case of a file in the
5122               package <package>foo</package> being taken over by the
5123               package <package>foo-data</package>.
5124               <tt>Replaces</tt> will allow <package>foo-data</package> to
5125               be installed and take over that file.  However,
5126               without <tt>Breaks</tt>, nothing
5127               requires <package>foo</package> to be upgraded to a newer
5128               version that knows it does not include that file and instead
5129               depends on <package>foo-data</package>.  Nothing would
5130               prevent the new <package>foo-data</package> package from
5131               being installed and then removed, removing the file that it
5132               took over from <package>foo</package>.  After that
5133               operation, the package manager would think the system was in
5134               a consistent state, but the <package>foo</package> package
5135               would be missing one of its files.
5136             </footnote>
5137           </p>
5138
5139           <p>
5140             For example, if a package <package>foo</package> is split
5141             into <package>foo</package> and <package>foo-data</package>
5142             starting at version 1.2-3, <package>foo-data</package> would
5143             have the fields
5144             <example compact="compact">
5145 Replaces: foo (&lt;&lt; 1.2-3)
5146 Breaks: foo (&lt;&lt; 1.2-3)
5147             </example>
5148             in its control file.  The new version of the
5149             package <package>foo</package> would normally have the field
5150             <example compact="compact">
5151 Depends: foo-data (&gt;= 1.2-3)
5152             </example>
5153             (or possibly <tt>Recommends</tt> or even <tt>Suggests</tt> if
5154             the files moved into <package>foo-data</package> are not
5155             required for normal operation).
5156           </p>
5157
5158           <p>
5159             If a package is completely replaced in this way, so that
5160             <prgn>dpkg</prgn> does not know of any files it still
5161             contains, it is considered to have "disappeared".  It will
5162             be marked as not wanted on the system (selected for
5163             removal) and not installed.  Any <tt>conffile</tt>s
5164             details noted for the package will be ignored, as they
5165             will have been taken over by the overwriting package.  The
5166             package's <prgn>postrm</prgn> script will be run with a
5167             special argument to allow the package to do any final
5168             cleanup required.  See <ref id="mscriptsinstact">.
5169             <footnote>
5170               Replaces is a one way relationship.  You have to install
5171               the replacing package after the replaced package.
5172             </footnote>
5173           </p>
5174
5175           <p>
5176             For this usage of <tt>Replaces</tt>, virtual packages (see
5177             <ref id="virtual">) are not considered when looking at a
5178             <tt>Replaces</tt> field.  The packages declared as being
5179             replaced must be mentioned by their real names.
5180           </p>
5181
5182           <p>
5183             This usage of <tt>Replaces</tt> only takes effect when both
5184             packages are at least partially on the system at once.  It is
5185             not relevant if the packages conflict unless the conflict has
5186             been overridden.
5187           </p>
5188         </sect1>
5189
5190         <sect1><heading>Replacing whole packages, forcing their
5191             removal</heading>
5192
5193           <p>
5194             Second, <tt>Replaces</tt> allows the packaging system to
5195             resolve which package should be removed when there is a
5196             conflict (see <ref id="conflicts">).  This usage only takes
5197             effect when the two packages <em>do</em> conflict, so that the
5198             two usages of this field do not interfere with each other.
5199           </p>
5200
5201           <p>
5202             In this situation, the package declared as being replaced
5203             can be a virtual package, so for example, all mail
5204             transport agents (MTAs) would have the following fields in
5205             their control files:
5206             <example compact="compact">
5207 Provides: mail-transport-agent
5208 Conflicts: mail-transport-agent
5209 Replaces: mail-transport-agent
5210             </example>
5211             ensuring that only one MTA can be unpacked at any one
5212             time.  See <ref id="virtual"> for more information about this
5213             example.
5214         </sect1>
5215       </sect>
5216
5217       <sect id="sourcebinarydeps">
5218         <heading>Relationships between source and binary packages -
5219           <tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
5220           <tt>Build-Conflicts</tt>, <tt>Build-Conflicts-Indep</tt>
5221         </heading>
5222
5223         <p>
5224           Source packages that require certain binary packages to be
5225           installed or absent at the time of building the package
5226           can declare relationships to those binary packages.
5227         </p>
5228
5229         <p>
5230           This is done using the <tt>Build-Depends</tt>,
5231           <tt>Build-Depends-Indep</tt>, <tt>Build-Conflicts</tt> and
5232           <tt>Build-Conflicts-Indep</tt> control fields.
5233         </p>
5234
5235         <p>
5236           Build-dependencies on "build-essential" binary packages can be
5237           omitted. Please see <ref id="pkg-relations"> for more information.
5238         </p>
5239
5240         <p>
5241           The dependencies and conflicts they define must be satisfied
5242           (as defined earlier for binary packages) in order to invoke
5243           the targets in <tt>debian/rules</tt>, as follows:<footnote>
5244             <p>
5245               There is no Build-Depends-Arch; this role is essentially
5246               met with Build-Depends.  Anyone building the
5247               <tt>build-indep</tt> and <tt>binary-indep</tt> targets is
5248               assumed to be building the whole package, and therefore
5249               installation of all build dependencies is required.
5250             </p>
5251             <p>
5252               The autobuilders use <tt>dpkg-buildpackage -B</tt>, which
5253               calls <tt>build</tt>, not <tt>build-arch</tt> since it does
5254               not yet know how to check for its existence, and
5255               <tt>binary-arch</tt>.  The purpose of the original split
5256               between <tt>Build-Depends</tt> and
5257               <tt>Build-Depends-Indep</tt> was so that the autobuilders
5258               wouldn't need to install extra packages needed only for the
5259               binary-indep targets.  But without a build-arch/build-indep
5260               split, this didn't work, since most of the work is done in
5261               the build target, not in the binary target.
5262             </p>
5263           </footnote>
5264           <taglist>
5265             <tag><tt>clean</tt>, <tt>build-arch</tt>, and
5266               <tt>binary-arch</tt></tag>
5267             <item>
5268               Only the <tt>Build-Depends</tt> and <tt>Build-Conflicts</tt>
5269               fields must be satisfied when these targets are invoked.
5270             </item>
5271             <tag><tt>build</tt>, <tt>build-indep</tt>, <tt>binary</tt>,
5272               and <tt>binary-indep</tt></tag>
5273             <item>
5274               The <tt>Build-Depends</tt>, <tt>Build-Conflicts</tt>,
5275               <tt>Build-Depends-Indep</tt>, and
5276               <tt>Build-Conflicts-Indep</tt> fields must be satisfied when
5277               these targets are invoked.
5278             </item>
5279           </taglist>
5280         </p>
5281       </sect>
5282     </chapt>
5283
5284
5285     <chapt id="sharedlibs"><heading>Shared libraries</heading>
5286
5287       <p>
5288         Packages containing shared libraries must be constructed with
5289         a little care to make sure that the shared library is always
5290         available.  This is especially important for packages whose
5291         shared libraries are vitally important, such as the C library
5292         (currently <tt>libc6</tt>).
5293       </p>
5294
5295       <p>
5296         This section deals only with public shared libraries: shared
5297         libraries that are placed in directories searched by the dynamic
5298         linker by default or which are intended to be linked against
5299         normally and possibly used by other, independent packages.  Shared
5300         libraries that are internal to a particular package or that are
5301         only loaded as dynamic modules are not covered by this section and
5302         are not subject to its requirements.
5303       </p>
5304
5305       <p>
5306         A shared library is identified by the <tt>SONAME</tt> attribute
5307         stored in its dynamic section.  When a binary is linked against a
5308         shared library, the <tt>SONAME</tt> of the shared library is
5309         recorded in the binary's <tt>NEEDED</tt> section so that the
5310         dynamic linker knows that library must be loaded at runtime.  The
5311         shared library file's full name (which usually contains additional
5312         version information not needed in the <tt>SONAME</tt>) is
5313         therefore normally not referenced directly.  Instead, the shared
5314         library is loaded by its <tt>SONAME</tt>, which exists on the file
5315         system as a symlink pointing to the full name of the shared
5316         library.  This symlink must be provided by the
5317         package.  <ref id="sharedlibs-runtime"> describes how to do this.
5318         <footnote>
5319           This is a convention of shared library versioning, but not a
5320           requirement.  Some libraries use the <tt>SONAME</tt> as the full
5321           library file name instead and therefore do not need a symlink.
5322           Most, however, encode additional information about
5323           backwards-compatible revisions as a minor version number in the
5324           file name.  The <tt>SONAME</tt> itself only changes when
5325           binaries linked with the earlier version of the shared library
5326           may no longer work, but the filename may change with each
5327           release of the library.  See <ref id="sharedlibs-runtime"> for
5328           more information.
5329         </footnote>
5330       </p>
5331
5332       <p>
5333         When linking a binary or another shared library against a shared
5334         library, the <tt>SONAME</tt> for that shared library is not yet
5335         known.  Instead, the shared library is found by looking for a file
5336         matching the library name with <tt>.so</tt> appended.  This file
5337         exists on the file system as a symlink pointing to the shared
5338         library.
5339       </p>
5340
5341       <p>
5342         Shared libraries are normally split into several binary packages.
5343         The <tt>SONAME</tt> symlink is installed by the runtime shared
5344         library package, and the bare <tt>.so</tt> symlink is installed in
5345         the development package since it's only used when linking binaries
5346         or shared libraries.  However, there are some exceptions for
5347         unusual shared libraries or for shared libraries that are also
5348         loaded as dynamic modules by other programs.
5349       </p>
5350
5351       <p>
5352         This section is primarily concerned with how the separation of
5353         shared libraries into multiple packages should be done and how
5354         dependencies on and between shared library binary packages are
5355         managed in Debian.  <ref id="libraries"> should be read in
5356         conjunction with this section and contains additional rules for
5357         the files contained in the shared library packages.
5358       </p>
5359
5360       <sect id="sharedlibs-runtime">
5361         <heading>Run-time shared libraries</heading>
5362
5363         <p>
5364           The run-time shared library must be placed in a package
5365           whose name changes whenever the <tt>SONAME</tt> of the shared
5366           library changes.  This allows several versions of the shared
5367           library to be installed at the same time, allowing installation
5368           of the new version of the shared library without immediately
5369           breaking binaries that depend on the old version.  Normally, the
5370           run-time shared library and its <tt>SONAME</tt> symlink should
5371           be placed in a package named
5372           <package><var>libraryname</var><var>soversion</var></package>,
5373           where <var>soversion</var> is the version number in
5374           the <tt>SONAME</tt> of the shared library.
5375           See <ref id="shlibs"> for detailed information on how to
5376           determine this version.  Alternatively, if it would be confusing
5377           to directly append <var>soversion</var>
5378           to <var>libraryname</var> (if, for example, <var>libraryname</var>
5379           itself ends in a number), you should use
5380           <package><var>libraryname</var>-<var>soversion</var></package>
5381           instead.
5382         </p>
5383
5384         <p>
5385           If you have several shared libraries built from the same source
5386           tree, you may lump them all together into a single shared
5387           library package provided that all of their <tt>SONAME</tt>s will
5388           always change together.  Be aware that this is not normally the
5389           case, and if the <tt>SONAME</tt>s do not change together,
5390           upgrading such a merged shared library package will be
5391           unnecessarily difficult because of file conflicts with the old
5392           version of the package.  When in doubt, always split shared
5393           library packages so that each binary package installs a single
5394           shared library.
5395         </p>
5396
5397         <p>
5398           Every time the shared library ABI changes in a way that may
5399           break binaries linked against older versions of the shared
5400           library, the <tt>SONAME</tt> of the library and the
5401           corresponding name for the binary package containing the runtime
5402           shared library should change.  Normally, this means
5403           the <tt>SONAME</tt> should change any time an interface is
5404           removed from the shared library or the signature of an interface
5405           (the number of parameters or the types of parameters that it
5406           takes, for example) is changed.  This practice is vital to
5407           allowing clean upgrades from older versions of the package and
5408           clean transitions between the old ABI and new ABI without having
5409           to upgrade every affected package simultaneously.
5410         </p>
5411
5412         <p>
5413           The <tt>SONAME</tt> and binary package name need not, and indeed
5414           normally should not, change if new interfaces are added but none
5415           are removed or changed, since this will not break binaries
5416           linked against the old shared library.  Correct versioning of
5417           dependencies on the newer shared library by binaries that use
5418           the new interfaces is handled via
5419           the <qref id="sharedlibs-shlibdeps"><tt>shlibs</tt>
5420           system</qref> or via symbols files (see
5421           <manref name="deb-symbols" section="5">).
5422         </p>
5423
5424       <p>
5425         The package should install the shared libraries under
5426         their normal names.  For example, the <package>libgdbm3</package>
5427         package should install <file>libgdbm.so.3.0.0</file> as
5428         <file>/usr/lib/libgdbm.so.3.0.0</file>.  The files should not be
5429         renamed or re-linked by any <prgn>prerm</prgn> or
5430         <prgn>postrm</prgn> scripts; <prgn>dpkg</prgn> will take care
5431         of renaming things safely without affecting running programs,
5432         and attempts to interfere with this are likely to lead to
5433         problems.
5434       </p>
5435
5436       <p>
5437         Shared libraries should not be installed executable, since
5438         the dynamic linker does not require this and trying to
5439         execute a shared library usually results in a core dump.
5440       </p>
5441
5442       <p>
5443         The run-time library package should include the symbolic link for
5444         the <tt>SONAME</tt> that <prgn>ldconfig</prgn> would create for
5445         the shared libraries.  For example,
5446         the <package>libgdbm3</package> package should include a symbolic
5447         link from <file>/usr/lib/libgdbm.so.3</file> to
5448         <file>libgdbm.so.3.0.0</file>.  This is needed so that the dynamic
5449         linker (for example <prgn>ld.so</prgn> or
5450         <prgn>ld-linux.so.*</prgn>) can find the library between the
5451         time that <prgn>dpkg</prgn> installs it and the time that
5452         <prgn>ldconfig</prgn> is run in the <prgn>postinst</prgn>
5453         script.<footnote>
5454             The package management system requires the library to be
5455             placed before the symbolic link pointing to it in the
5456             <file>.deb</file> file.  This is so that when
5457             <prgn>dpkg</prgn> comes to install the symlink
5458             (overwriting the previous symlink pointing at an older
5459             version of the library), the new shared library is already
5460             in place.  In the past, this was achieved by creating the
5461             library in the temporary packaging directory before
5462             creating the symlink.  Unfortunately, this was not always
5463             effective, since the building of the tar file in the
5464             <file>.deb</file> depended on the behavior of the underlying
5465             file system.  Some file systems (such as reiserfs) reorder
5466             the files so that the order of creation is forgotten.
5467             Since version 1.7.0, <prgn>dpkg</prgn>
5468             reorders the files itself as necessary when building a
5469             package.  Thus it is no longer important to concern
5470             oneself with the order of file creation.
5471         </footnote>
5472       </p>
5473
5474         <sect1 id="ldconfig">
5475           <heading><tt>ldconfig</tt></heading>
5476
5477         <p>
5478           Any package installing shared libraries in one of the default
5479           library directories of the dynamic linker (which are currently
5480           <file>/usr/lib</file> and <file>/lib</file>) or a directory that is
5481           listed in <file>/etc/ld.so.conf</file><footnote>
5482             These are currently
5483             <list compact="compact">
5484               <item>/usr/local/lib</item>
5485               <item>/usr/lib/libc5-compat</item>
5486               <item>/lib/libc5-compat</item>
5487             </list>
5488           </footnote>
5489           must use <prgn>ldconfig</prgn> to update the shared library
5490           system.
5491         </p>
5492
5493         <p>
5494             The package maintainer scripts must only call
5495             <prgn>ldconfig</prgn> under these circumstances:
5496             <list compact="compact">
5497               <item>When the <prgn>postinst</prgn> script is run with a
5498                   first argument of <tt>configure</tt>, the script must call
5499                   <prgn>ldconfig</prgn>, and may optionally invoke
5500                   <prgn>ldconfig</prgn> at other times.
5501               </item>
5502               <item>When the <prgn>postrm</prgn> script is run with a
5503                   first argument of <tt>remove</tt>, the script should call
5504                   <prgn>ldconfig</prgn>.
5505               </item>
5506             </list>
5507          <footnote>
5508             <p>
5509               During install or upgrade, the preinst is called before
5510               the new files are unpacked, so calling "ldconfig" is
5511               pointless.  The preinst of an existing package can also be
5512               called if an upgrade fails.  However, this happens during
5513               the critical time when a shared libs may exist on-disk
5514               under a temporary name.  Thus, it is dangerous and
5515               forbidden by current policy to call "ldconfig" at this
5516               time.
5517             </p>
5518
5519             <p>
5520               When a package is installed or upgraded, "postinst
5521               configure" runs after the new files are safely on-disk.
5522               Since it is perfectly safe to invoke ldconfig
5523               unconditionally in a postinst, it is OK for a package to
5524               simply put ldconfig in its postinst without checking the
5525               argument.  The postinst can also be called to recover from
5526               a failed upgrade.  This happens before any new files are
5527               unpacked, so there is no reason to call "ldconfig" at this
5528               point.
5529             </p>
5530
5531             <p>
5532               For a package that is being removed, prerm is
5533               called with all the files intact, so calling ldconfig is
5534               useless.  The other calls to "prerm" happen in the case of
5535               upgrade at a time when all the files of the old package
5536               are on-disk, so again calling "ldconfig" is pointless.
5537             </p>
5538
5539             <p>
5540               postrm, on the other hand, is called with the "remove"
5541               argument just after the files are removed, so this is
5542               the proper time to call "ldconfig" to notify the system
5543               of the fact that the shared libraries from the package
5544               are removed.  The postrm can be called at several other
5545               times.  At the time of "postrm purge", "postrm
5546               abort-install", or "postrm abort-upgrade", calling
5547               "ldconfig" is useless because the shared lib files are
5548               not on-disk.  However, when "postrm" is invoked with
5549               arguments "upgrade", "failed-upgrade", or "disappear", a
5550               shared lib may exist on-disk under a temporary filename.
5551             </p>
5552           </footnote>
5553         </p>
5554         </sect1>
5555
5556       </sect>
5557
5558       <sect id="sharedlibs-support-files">
5559         <heading>Shared library support files</heading>
5560
5561         <p>
5562           If your package contains files whose names do not change with
5563           each change in the library shared object version, you must not
5564           put them in the shared library package.  Otherwise, several
5565           versions of the shared library cannot be installed at the same
5566           time without filename clashes, making upgrades and transitions
5567           unnecessarily difficult.
5568         </p>
5569
5570         <p>
5571           It is recommended that supporting files and run-time support
5572           programs that do not need to be invoked manually by users, but
5573           are nevertheless required for the package to function, be placed
5574           (if they are binary) in a subdirectory of <file>/usr/lib</file>,
5575           preferably under <file>/usr/lib/</file><var>package-name</var>.
5576           If the program or file is architecture independent, the
5577           recommendation is for it to be placed in a subdirectory of
5578           <file>/usr/share</file> instead, preferably under
5579           <file>/usr/share/</file><var>package-name</var>.  Following the
5580           <var>package-name</var> naming convention ensures that the file
5581           names change when the shared object version changes.
5582         </p>
5583
5584         <p>
5585           Run-time support programs that use the shared library but are
5586           not required for the library to function or files used by the
5587           shared library that can be used by any version of the shared
5588           library package should instead be put in a separate package.
5589           This package might typically be named
5590           <package><var>libraryname</var>-tools</package>; note the
5591           absence of the <var>soversion</var> in the package name.
5592         </p>
5593
5594         <p>
5595           Files and support programs only useful when compiling software
5596           against the library should be included in the development
5597           package for the library.<footnote>
5598             For example, a <file><var>package-name</var>-config</file>
5599             script or <package>pkg-config</package> configuration files.
5600           </footnote>
5601         </p>
5602       </sect>
5603
5604       <sect id="sharedlibs-static">
5605         <heading>Static libraries</heading>
5606
5607       <p>
5608         The static library (<file><var>libraryname.a</var></file>)
5609         is usually provided in addition to the shared version.
5610         It is placed into the development package (see below).
5611       </p>
5612
5613       <p>
5614         In some cases, it is acceptable for a library to be
5615         available in static form only; these cases include:
5616         <list>
5617           <item>libraries for languages whose shared library support
5618                 is immature or unstable</item>
5619           <item>libraries whose interfaces are in flux or under
5620                 development (commonly the case when the library's
5621                 major version number is zero, or where the ABI breaks
5622                 across patchlevels)</item>
5623           <item>libraries which are explicitly intended to be
5624                 available only in static form by their upstream
5625                 author(s)</item>
5626         </list>
5627       </p>
5628
5629       <sect id="sharedlibs-dev">
5630         <heading>Development files</heading>
5631
5632       <p>
5633         If there are development files associated with a shared library,
5634         the source package needs to generate a binary development package
5635         named <package><var>libraryname</var><var>soversion</var>-dev</package>,
5636         or if you prefer only to support one development version at a
5637         time, <package><var>libraryname</var>-dev</package>.  Installing
5638         the development package must result in installation of all the
5639         development files necessary for compiling programs against that
5640         shared library.<footnote>
5641           This wording allows the development files to be split into
5642           several packages, such as a separate architecture-independent
5643           <package><var>libraryname</var>-headers</package>, provided that
5644           the development package depends on all the required additional
5645           packages.
5646         </footnote>
5647       </p>
5648
5649       <p>
5650         In case several development versions of a library exist, you may
5651         need to use <prgn>dpkg</prgn>'s Conflicts mechanism (see
5652         <ref id="conflicts">) to ensure that the user only installs one
5653         development version at a time (as different development versions are
5654         likely to have the same header files in them, which would cause a
5655         filename clash if both were unpacked).
5656       </p>
5657
5658       <p>
5659         The development package should contain a symlink for the associated
5660         shared library without a version number. For example, the
5661         <package>libgdbm-dev</package> package should include a symlink
5662         from <file>/usr/lib/libgdbm.so</file> to
5663         <file>libgdbm.so.3.0.0</file>.  This symlink is needed by the linker
5664         (<prgn>ld</prgn>) when compiling packages, as it will only look for
5665         <file>libgdbm.so</file> when compiling dynamically.
5666       </p>
5667
5668       <p>
5669         If the package provides Ada Library Information
5670         (<file>*.ali</file>) files for use with GNAT, these files must be
5671         installed read-only (mode 0444) so that GNAT will not attempt to
5672         recompile them.  This overrides the normal file mode requirements
5673         given in <ref id="permissions-owners">.
5674       </p>
5675       </sect>
5676
5677       <sect id="sharedlibs-intradeps">
5678         <heading>Dependencies between the packages of the same library</heading>
5679
5680         <p>
5681           Typically the development version should have an exact
5682           version dependency on the runtime library, to make sure that
5683           compilation and linking happens correctly.  The
5684           <tt>${binary:Version}</tt> substitution variable can be
5685           useful for this purpose.
5686           <footnote>
5687             Previously, <tt>${Source-Version}</tt> was used, but its name
5688             was confusing and it has been deprecated since dpkg 1.13.19.
5689           </footnote>
5690         </p>
5691       </sect>
5692
5693       <sect id="sharedlibs-shlibdeps">
5694         <heading>Dependencies between the library and other packages -
5695         the <tt>shlibs</tt> system</heading>
5696
5697         <p>
5698           If a package contains a binary or library which links to a
5699           shared library, we must ensure that when the package is
5700           installed on the system, all of the libraries needed are
5701           also installed.  This requirement led to the creation of the
5702           <tt>shlibs</tt> system, which is very simple in its design:
5703           any package which <em>provides</em> a shared library also
5704           provides information on the package dependencies required to
5705           ensure the presence of this library, and any package which
5706           <em>uses</em> a shared library uses this information to
5707           determine the dependencies it requires.  The files which
5708           contain the mapping from shared libraries to the necessary
5709           dependency information are called <file>shlibs</file> files.
5710         </p>
5711
5712         <p>
5713           When a package is built which contains any shared libraries, it
5714           must provide a <file>shlibs</file> file for other packages to
5715           use.  When a package is built which contains any shared
5716           libraries or compiled binaries, it must run
5717           <qref id="pkg-dpkg-shlibdeps"><prgn>dpkg-shlibdeps</prgn></qref>
5718           on these to determine the libraries used and hence the
5719           dependencies needed by this package.<footnote>
5720             <p>
5721               <prgn>dpkg-shlibdeps</prgn> will use a program
5722               like <prgn>objdump</prgn> or <prgn>readelf</prgn> to find
5723               the libraries directly needed by the binaries or shared
5724               libraries in the package.
5725             </p>
5726
5727             <p>
5728               We say that a binary <tt>foo</tt> <em>directly</em> uses
5729               a library <tt>libbar</tt> if it is explicitly linked
5730               with that library (that is, the library is listed in the ELF
5731               <tt>NEEDED</tt> attribute, caused by adding <tt>-lbar</tt>
5732               to the link line when the binary is created).  Other
5733               libraries that are needed by <tt>libbar</tt> are linked
5734               <em>indirectly</em> to <tt>foo</tt>, and the dynamic
5735               linker will load them automatically when it loads
5736               <tt>libbar</tt>.  A package should depend on the libraries
5737               it directly uses, but not the libraries it indirectly uses.
5738               The dependencies for those libraries will automatically pull
5739               in the other libraries.
5740             </p>
5741
5742             <p>
5743               A good example of where this helps is the following.  We
5744               could update <tt>libimlib</tt> with a new version that
5745               supports a new graphics format called dgf (but retaining the
5746               same major version number) and depends on <tt>libdgf</tt>.
5747               If we used <prgn>ldd</prgn> to add dependencies for every
5748               library directly or indirectly linked with a binary, every
5749               package that uses <tt>libimlib</tt> would need to be
5750               recompiled so it would also depend on <tt>libdgf</tt> or it
5751               wouldn't run due to missing symbols.  Since dependencies are
5752               only added based on ELF <tt>NEEDED</tt> attribute, packages
5753               using <tt>libimlib</tt> can rely on <tt>libimlib</tt> itself
5754               having the dependency on <tt>libdgf</tt> and so they would
5755               not need rebuilding.
5756             </p>
5757           </footnote>
5758         </p>
5759
5760         <p>
5761           In the following sections, we will first describe where the
5762           various <tt>shlibs</tt> files are to be found, then how to
5763           use <prgn>dpkg-shlibdeps</prgn>, and finally the <tt>shlibs</tt>
5764           file format and how to create them if your package contains a
5765           shared library.
5766         </p>
5767
5768       <sect1>
5769         <heading>The <tt>shlibs</tt> files present on the system</heading>
5770
5771         <p>
5772           There are several places where <tt>shlibs</tt> files are
5773           found.  The following list gives them in the order in which
5774           they are read by
5775           <qref id="pkg-dpkg-shlibdeps"><prgn>dpkg-shlibdeps</prgn></qref>.
5776           (The first one which gives the required information is used.)
5777         </p>
5778
5779         <p>
5780           <list>
5781             <item>
5782               <p><file>debian/shlibs.local</file></p>
5783
5784               <p>
5785                 This lists overrides for this package.  This file should
5786                 normally not be used, but may be needed temporarily in
5787                 unusual situations to work around bugs in other packages,
5788                 or in unusual cases where the normally declared dependency
5789                 information in the installed <file>shlibs</file> file for
5790                 a library cannot be used.  This file overrides information
5791                 obtained from any other source.
5792               </p>
5793             </item>
5794
5795             <item>
5796               <p><file>/etc/dpkg/shlibs.override</file></p>
5797
5798               <p>
5799                 This lists global overrides.  This list is normally
5800                 empty.  It is maintained by the local system
5801                 administrator.
5802               </p>
5803             </item>
5804
5805             <item>
5806               <p><file>DEBIAN/shlibs</file> files in the "build directory"</p>
5807
5808               <p>
5809                 When packages are being built,
5810                 any <file>debian/shlibs</file> files are copied into the
5811                 control information file area of the temporary build
5812                 directory and given the name <file>shlibs</file>.  These
5813                 files give details of any shared libraries included in the
5814                 same package.<footnote>
5815                   An example may help here.  Let us say that the source
5816                   package <tt>foo</tt> generates two binary
5817                   packages, <tt>libfoo2</tt> and <tt>foo-runtime</tt>.
5818                   When building the binary packages, the two packages are
5819                   created in the directories <file>debian/libfoo2</file>
5820                   and <file>debian/foo-runtime</file> respectively.
5821                   (<file>debian/tmp</file> could be used instead of one of
5822                   these.)  Since <tt>libfoo2</tt> provides the
5823                   <tt>libfoo</tt> shared library, it will require a
5824                   <tt>shlibs</tt> file, which will be installed in
5825                   <file>debian/libfoo2/DEBIAN/shlibs</file>, eventually to
5826                   become <file>/var/lib/dpkg/info/libfoo2.shlibs</file>.
5827                   When <prgn>dpkg-shlibdeps</prgn> is run on the
5828                   executable <file>debian/foo-runtime/usr/bin/foo-prog</file>,
5829                   it will examine
5830                   the <file>debian/libfoo2/DEBIAN/shlibs</file> file to
5831                   determine whether <tt>foo-prog</tt>'s library
5832                   dependencies are satisfied by any of the libraries
5833                   provided by <tt>libfoo2</tt>.  For this reason,
5834                   <prgn>dpkg-shlibdeps</prgn> must only be run once all of
5835                   the individual binary packages' <tt>shlibs</tt> files
5836                   have been installed into the build directory.
5837                 </footnote>
5838               </p>
5839             </item>
5840
5841             <item>
5842               <p><file>/var/lib/dpkg/info/*.shlibs</file></p>
5843
5844               <p>
5845                 These are the <file>shlibs</file> files corresponding to
5846                 all of the packages installed on the system, and are
5847                 maintained by the relevant package maintainers.
5848               </p>
5849             </item>
5850
5851             <item>
5852               <p><file>/etc/dpkg/shlibs.default</file></p>
5853
5854               <p>
5855                 This file lists any shared libraries whose packages
5856                 have failed to provide correct <file>shlibs</file> files.
5857                 It was used when the <file>shlibs</file> setup was first
5858                 introduced, but it is now normally empty.  It is
5859                 maintained by the <tt>dpkg</tt> maintainer.
5860               </p>
5861             </item>
5862           </list>
5863         </p>
5864       </sect1>
5865
5866       <sect1>
5867         <heading>How to use <prgn>dpkg-shlibdeps</prgn> and the
5868             <file>shlibs</file> files</heading>
5869
5870         <p>
5871           Put a call to
5872           <qref id="pkg-dpkg-shlibdeps"><prgn>dpkg-shlibdeps</prgn></qref>
5873           into your <file>debian/rules</file> file.  If your package
5874           contains only compiled binaries and libraries (but no scripts),
5875           you can use a command such as:
5876           <example compact="compact">
5877 dpkg-shlibdeps debian/tmp/usr/bin/* debian/tmp/usr/sbin/* \
5878   debian/tmp/usr/lib/*
5879           </example>
5880           Otherwise, you will need to explicitly list the compiled
5881           binaries and libraries.<footnote>
5882             If you are using <tt>debhelper</tt>, the
5883             <prgn>dh_shlibdeps</prgn> program will do this work for you.
5884             It will also correctly handle multi-binary packages.
5885           </footnote>
5886         </p>
5887
5888         <p>
5889           This command puts the dependency information into the
5890           <file>debian/substvars</file> file, which is then used by
5891           <prgn>dpkg-gencontrol</prgn>.  You will need to place a
5892           <tt>${shlibs:Depends}</tt> variable in the <tt>Depends</tt>
5893           field in the control file for this to work.
5894         </p>
5895
5896         <p>
5897           If you have multiple binary packages, you will need to call
5898           <prgn>dpkg-shlibdeps</prgn> on each one which contains
5899           compiled libraries or binaries.  In such a case, you will
5900           need to use the <tt>-T</tt> option to the <tt>dpkg</tt>
5901           utilities to specify a different <file>substvars</file> file.
5902         </p>
5903
5904         <p>
5905           If you are creating a udeb for use in the Debian Installer,
5906           you will need to specify that <prgn>dpkg-shlibdeps</prgn>
5907           should use the dependency line of type <tt>udeb</tt> by
5908           adding the <tt>-tudeb</tt> option<footnote>
5909             <prgn>dh_shlibdeps</prgn> from the <tt>debhelper</tt> suite
5910             will automatically add this option if it knows it is
5911             processing a udeb.
5912           </footnote>. If there is no dependency line of
5913           type <tt>udeb</tt> in the <file>shlibs</file>
5914           file, <prgn>dpkg-shlibdeps</prgn> will fall back to the regular
5915           dependency line.
5916         </p>
5917
5918         <p>
5919           For more details on <prgn>dpkg-shlibdeps</prgn>, please see
5920           <ref id="pkg-dpkg-shlibdeps"> and
5921           <manref name="dpkg-shlibdeps" section="1">.
5922         </p>
5923       </sect1>
5924
5925       <sect1 id="shlibs">
5926         <heading>The <file>shlibs</file> File Format</heading>
5927
5928         <p>
5929           Each <file>shlibs</file> file has the same format.  Lines
5930           beginning with <tt>#</tt> are considered to be comments and
5931           are ignored.  Each line is of the form:
5932           <example compact="compact">
5933 [<var>type</var>: ]<var>library-name</var> <var>soname-version</var> <var>dependencies ...</var>
5934           </example>
5935         </p>
5936
5937         <p>
5938           We will explain this by reference to the example of the
5939           <tt>zlib1g</tt> package, which (at the time of writing)
5940           installs the shared library <file>/usr/lib/libz.so.1.1.3</file>.
5941         </p>
5942
5943         <p>
5944           <var>type</var> is an optional element that indicates the type
5945           of package for which the line is valid. The only type currently
5946           in use is <tt>udeb</tt>. The colon and space after the type are
5947           required.
5948         </p>
5949
5950         <p>
5951           <var>library-name</var> is the name of the shared library,
5952           in this case <tt>libz</tt>.  (This must match the name part
5953           of the soname, see below.)
5954         </p>
5955
5956         <p>
5957           <var>soname-version</var> is the version part of the soname of
5958           the library.  The soname is the thing that must exactly match
5959           for the library to be recognized by the dynamic linker, and is
5960           usually of the form
5961           <tt><var>name</var>.so.<var>major-version</var></tt>, in our
5962           example, <tt>libz.so.1</tt>.<footnote>
5963             This can be determined using the command
5964             <example compact="compact">
5965 objdump -p /usr/lib/libz.so.1.1.3 | grep SONAME
5966             </example>
5967           </footnote>
5968           The version part is the part which comes after
5969           <tt>.so.</tt>, so in our case, it is <tt>1</tt>.  The soname may
5970           instead be of the form
5971           <tt><var>name</var>-<var>major-version</var>.so</tt>, such
5972           as <tt>libdb-4.8.so</tt>, in which case the name would
5973           be <tt>libdb</tt> and the version would be <tt>4.8</tt>.
5974         </p>
5975
5976         <p>
5977           <var>dependencies</var> has the same syntax as a dependency
5978           field in a binary package control file.  It should give
5979           details of which packages are required to satisfy a binary
5980           built against the version of the library contained in the
5981           package.  See <ref id="depsyntax"> for details.
5982         </p>
5983
5984         <p>
5985           In our example, if the first version of the <tt>zlib1g</tt>
5986           package which contained a minor number of at least
5987           <tt>1.3</tt> was <var>1:1.1.3-1</var>, then the
5988           <tt>shlibs</tt> entry for this library could say:
5989           <example compact="compact">
5990 libz 1 zlib1g (>= 1:1.1.3)
5991           </example>
5992           The version-specific dependency is to avoid warnings from
5993           the dynamic linker about using older shared libraries with
5994           newer binaries.
5995         </p>
5996
5997         <p>
5998           As zlib1g also provides a udeb containing the shared library,
5999           there would also be a second line:
6000           <example compact="compact">
6001 udeb: libz 1 zlib1g-udeb (>= 1:1.1.3)
6002           </example>
6003         </p>
6004       </sect1>
6005
6006       <sect1>
6007         <heading>Providing a <file>shlibs</file> file</heading>
6008
6009         <p>
6010           If your package provides a shared library, you need to create
6011           a <file>shlibs</file> file following the format described above.
6012           It is usual to call this file <file>debian/shlibs</file> (but if
6013           you have multiple binary packages, you might want to call it
6014           <file>debian/shlibs.<var>package</var></file> instead).  Then
6015           let <file>debian/rules</file> install it in the control
6016           information file area:
6017           <example compact="compact">
6018 install -m644 debian/shlibs debian/tmp/DEBIAN
6019           </example>
6020           or, in the case of a multi-binary package:
6021           <example compact="compact">
6022 install -m644 debian/shlibs.<var>package</var> debian/<var>package</var>/DEBIAN/shlibs
6023           </example>
6024           An alternative way of doing this is to create the
6025           <file>shlibs</file> file in the control information file area
6026           directly from <file>debian/rules</file> without using
6027           a <file>debian/shlibs</file> file at all,<footnote>
6028             This is what <prgn>dh_makeshlibs</prgn> in
6029             the <package>debhelper</package> suite does. If your package
6030             also has a udeb that provides a shared
6031             library, <prgn>dh_makeshlibs</prgn> can automatically generate
6032             the <tt>udeb:</tt> lines if you specify the name of the udeb
6033             with the <tt>--add-udeb</tt> option.
6034           </footnote>
6035           since the <file>debian/shlibs</file> file itself is ignored by
6036           <prgn>dpkg-shlibdeps</prgn>.
6037         </p>
6038
6039         <p>
6040           As <prgn>dpkg-shlibdeps</prgn> reads the
6041           <file>DEBIAN/shlibs</file> files in all of the binary packages
6042           being built from this source package, all of the
6043           <file>DEBIAN/shlibs</file> files should be installed before
6044           <prgn>dpkg-shlibdeps</prgn> is called on any of the binary
6045           packages.
6046         </p>
6047       </sect1>
6048       </sect>
6049     </chapt>
6050
6051
6052     <chapt id="opersys"><heading>The Operating System</heading>
6053
6054       <sect>
6055         <heading>File system hierarchy</heading>
6056
6057
6058         <sect1 id="fhs">
6059           <heading>File System Structure</heading>
6060
6061           <p>
6062             The location of all installed files and directories must
6063             comply with the Filesystem Hierarchy Standard (FHS),
6064             version 2.3, with the exceptions noted below, and except
6065             where doing so would violate other terms of Debian
6066             Policy.  The following exceptions to the FHS apply:
6067
6068             <enumlist>
6069               <item>
6070                 <p>
6071                   The optional rules related to user specific
6072                   configuration files for applications are stored in
6073                   the user's home directory are relaxed.  It is
6074                   recommended that such files start with the
6075                   '<tt>.</tt>' character (a "dot file"), and if an
6076                   application needs to create more than one dot file
6077                   then the preferred placement is in a subdirectory
6078                   with a name starting with a '.' character, (a "dot
6079                   directory"). In this case it is recommended the
6080                   configuration files not start with the '.'
6081                   character.
6082                 </p>
6083               </item>
6084               <item>
6085                 <p>
6086                   The requirement for amd64 to use <file>/lib64</file>
6087                   for 64 bit binaries is removed.
6088                 </p>
6089               </item>
6090               <item>
6091                 <p>
6092                   The requirement for object files, internal binaries, and
6093                   libraries, including <file>libc.so.*</file>, to be located
6094                   directly under <file>/lib{,32}</file> and
6095                   <file>/usr/lib{,32}</file> is amended, permitting files
6096                   to instead be installed to
6097                   <file>/lib/<var>triplet</var></file> and
6098                   <file>/usr/lib/<var>triplet</var></file>, where
6099                   <tt><var>triplet</var></tt> is the value returned by
6100                   <tt>dpkg-architecture -qDEB_HOST_GNU_TYPE</tt> for the
6101                   architecture of the package.  Packages may <em>not</em>
6102                   install files to any <var>triplet</var> path other
6103                   than the one matching the architecture of that package;
6104                   for instance, an <tt>Architecture: amd64</tt> package
6105                   containing 32-bit x86 libraries may not install these
6106                   libraries to <file>/usr/lib/i486-linux-gnu</file>.
6107                   <footnote>
6108                     This is necessary in order to reserve the directories for
6109                     use in cross-installation of library packages from other
6110                     architectures, as part of the planned deployment of
6111                     <tt>multiarch</tt>.
6112                   </footnote>
6113                 </p>
6114                 <p>
6115                   Applications may also use a single subdirectory under
6116                   <file>/usr/lib/<var>triplet</var></file>.
6117                 </p>
6118                 <p>
6119                   The execution time linker/loader, ld*, must still be made
6120                   available in the existing location under /lib or /lib64
6121                   since this is part of the ELF ABI for the architecture.
6122                 </p>
6123               </item>
6124               <item>
6125                 <p>
6126                   The requirement that
6127                   <file>/usr/local/share/man</file> be "synonymous"
6128                   with <file>/usr/local/man</file> is relaxed to a
6129                   recommendation</p>
6130               </item>
6131               <item>
6132                 <p>
6133                   The requirement that windowmanagers with a single
6134                   configuration file call it <file>system.*wmrc</file>
6135                   is removed, as is the restriction that the window
6136                   manager subdirectory be named identically to the
6137                   window manager name itself.
6138                 </p>
6139               </item>
6140               <item>
6141                 <p>
6142                   The requirement that boot manager configuration
6143                   files live in <file>/etc</file>, or at least are
6144                   symlinked there, is relaxed to a recommendation.
6145                 </p>
6146               </item>
6147               <item>
6148                 <p>
6149                   The following directories in the root filesystem are
6150                   additionally allowed: <file>/sys</file> and
6151                   <file>/selinux</file>. <footnote>These directories
6152                   are used as mount points to mount virtual filesystems
6153                   to get access to kernel information.</footnote>
6154                 </p>
6155               </item>
6156             </enumlist>
6157
6158           </p>
6159           <p>
6160             The version of this document referred here can be
6161             found in the <tt>debian-policy</tt> package or on <url
6162             id="http://www.debian.org/doc/packaging-manuals/fhs/"
6163               name="FHS (Debian copy)"> alongside this manual (or, if
6164             you have the <package>debian-policy</package> installed,
6165             you can try <url
6166               id="file:///usr/share/doc/debian-policy/fhs/" name="FHS
6167               (local copy)">). The
6168             latest version, which may be a more recent version, may
6169             be found on
6170             <url id="http://www.pathname.com/fhs/" name="FHS (upstream)">.
6171             Specific questions about following the standard may be
6172             asked on the <tt>debian-devel</tt> mailing list, or
6173             referred to the FHS mailing list (see the
6174             <url id="http://www.pathname.com/fhs/" name="FHS web site"> for
6175             more information).
6176           </p>
6177         </sect1>
6178
6179         <sect1>
6180           <heading>Site-specific programs</heading>
6181
6182           <p>
6183             As mandated by the FHS, packages must not place any
6184             files in <file>/usr/local</file>, either by putting them in
6185             the file system archive to be unpacked by <prgn>dpkg</prgn>
6186             or by manipulating them in their maintainer scripts.
6187           </p>
6188
6189           <p>
6190             However, the package may create empty directories below
6191             <file>/usr/local</file> so that the system administrator knows
6192             where to place site-specific files.  These are not
6193             directories <em>in</em> <file>/usr/local</file>, but are
6194             children of directories in <file>/usr/local</file>.  These
6195             directories (<file>/usr/local/*/dir/</file>)
6196             should be removed on package removal if they are
6197             empty.
6198           </p>
6199
6200           <p>
6201             Note that this applies only to
6202             directories <em>below</em> <file>/usr/local</file>,
6203             not <em>in</em> <file>/usr/local</file>.  Packages must
6204             not create sub-directories in the
6205             directory <file>/usr/local</file> itself, except those
6206             listed in FHS, section 4.5.  However, you may create
6207             directories below them as you wish. You must not remove
6208             any of the directories listed in 4.5, even if you created
6209             them.
6210           </p>
6211
6212           <p>
6213             Since <file>/usr/local</file> can be mounted read-only from a
6214             remote server, these directories must be created and
6215             removed by the <prgn>postinst</prgn> and <prgn>prerm</prgn>
6216             maintainer scripts and not be included in the
6217             <file>.deb</file> archive.  These scripts must not fail if
6218             either of these operations fail.
6219           </p>
6220
6221           <p>
6222             For example, the <tt>emacsen-common</tt> package could
6223             contain something like
6224             <example compact="compact">
6225 if [ ! -e /usr/local/share/emacs ]
6226 then
6227   if mkdir /usr/local/share/emacs 2>/dev/null
6228   then
6229     chown root:staff /usr/local/share/emacs
6230     chmod 2775 /usr/local/share/emacs
6231   fi
6232 fi
6233             </example>
6234             in its <prgn>postinst</prgn> script, and
6235             <example compact="compact">
6236 rmdir /usr/local/share/emacs/site-lisp 2>/dev/null || true
6237 rmdir /usr/local/share/emacs 2>/dev/null || true
6238             </example>
6239             in the <prgn>prerm</prgn> script.  (Note that this form is
6240             used to ensure that if the script is interrupted, the
6241             directory <file>/usr/local/share/emacs</file> will still be
6242             removed.)
6243           </p>
6244
6245           <p>
6246             If you do create a directory in <file>/usr/local</file> for
6247             local additions to a package, you should ensure that
6248             settings in <file>/usr/local</file> take precedence over the
6249             equivalents in <file>/usr</file>.
6250           </p>
6251
6252           <p>
6253             However, because <file>/usr/local</file> and its contents are
6254             for exclusive use of the local administrator, a package
6255             must not rely on the presence or absence of files or
6256             directories in <file>/usr/local</file> for normal operation.
6257           </p>
6258
6259           <p>
6260             The <file>/usr/local</file> directory itself and all the
6261             subdirectories created by the package should (by default) have
6262             permissions 2775 (group-writable and set-group-id) and be
6263             owned by <tt>root:staff</tt>.
6264           </p>
6265         </sect1>
6266
6267         <sect1>
6268           <heading>The system-wide mail directory</heading>
6269           <p>
6270             The system-wide mail directory
6271             is <file>/var/mail</file>. This directory is part of the
6272             base system and should not be owned by any particular mail
6273             agents.  The use of the old
6274             location <file>/var/spool/mail</file> is deprecated, even
6275             though the spool may still be physically located there.
6276           </p>
6277         </sect1>
6278       </sect>
6279
6280       <sect>
6281         <heading>Users and groups</heading>
6282
6283         <sect1>
6284           <heading>Introduction</heading>
6285           <p>
6286             The Debian system can be configured to use either plain or
6287             shadow passwords.
6288           </p>
6289
6290           <p>
6291             Some user ids (UIDs) and group ids (GIDs) are reserved
6292             globally for use by certain packages.  Because some
6293             packages need to include files which are owned by these
6294             users or groups, or need the ids compiled into binaries,
6295             these ids must be used on any Debian system only for the
6296             purpose for which they are allocated. This is a serious
6297             restriction, and we should avoid getting in the way of
6298             local administration policies. In particular, many sites
6299             allocate users and/or local system groups starting at 100.
6300           </p>
6301
6302           <p>
6303             Apart from this we should have dynamically allocated ids,
6304             which should by default be arranged in some sensible
6305             order, but the behavior should be configurable.
6306           </p>
6307
6308           <p>
6309             Packages other than <tt>base-passwd</tt> must not modify
6310             <file>/etc/passwd</file>, <file>/etc/shadow</file>,
6311             <file>/etc/group</file> or <file>/etc/gshadow</file>.
6312           </p>
6313         </sect1>
6314
6315         <sect1>
6316           <heading>UID and GID classes</heading>
6317           <p>
6318             The UID and GID numbers are divided into classes as
6319             follows:
6320             <taglist>
6321               <tag>0-99:</tag>
6322               <item>
6323                 <p>
6324                   Globally allocated by the Debian project, the same
6325                   on every Debian system.  These ids will appear in
6326                   the <file>passwd</file> and <file>group</file> files of all
6327                   Debian systems, new ids in this range being added
6328                   automatically as the <tt>base-passwd</tt> package is
6329                   updated.
6330                 </p>
6331
6332                 <p>
6333                   Packages which need a single statically allocated
6334                   uid or gid should use one of these; their
6335                   maintainers should ask the <tt>base-passwd</tt>
6336                   maintainer for ids.
6337                 </p>
6338               </item>
6339
6340               <tag>100-999:</tag>
6341               <item>
6342                 <p>
6343                   Dynamically allocated system users and groups.
6344                   Packages which need a user or group, but can have
6345                   this user or group allocated dynamically and
6346                   differently on each system, should use <tt>adduser
6347                   --system</tt> to create the group and/or user.
6348                   <prgn>adduser</prgn> will check for the existence of
6349                   the user or group, and if necessary choose an unused
6350                   id based on the ranges specified in
6351                   <file>adduser.conf</file>.
6352                 </p>
6353               </item>
6354
6355               <tag>1000-59999:</tag>
6356               <item>
6357                 <p>
6358                   Dynamically allocated user accounts.  By default
6359                   <prgn>adduser</prgn> will choose UIDs and GIDs for
6360                   user accounts in this range, though
6361                   <file>adduser.conf</file> may be used to modify this
6362                   behavior.
6363                 </p>
6364               </item>
6365
6366               <tag>60000-64999:</tag>
6367               <item>
6368                 <p>
6369                   Globally allocated by the Debian project, but only
6370                   created on demand. The ids are allocated centrally
6371                   and statically, but the actual accounts are only
6372                   created on users' systems on demand.
6373                 </p>
6374
6375                 <p>
6376                   These ids are for packages which are obscure or
6377                   which require many statically-allocated ids.  These
6378                   packages should check for and create the accounts in
6379                   <file>/etc/passwd</file> or <file>/etc/group</file> (using
6380                   <prgn>adduser</prgn> if it has this facility) if
6381                   necessary.  Packages which are likely to require
6382                   further allocations should have a "hole" left after
6383                   them in the allocation, to give them room to
6384                   grow.
6385                 </p>
6386               </item>
6387
6388               <tag>65000-65533:</tag>
6389               <item>
6390                 <p>Reserved.</p>
6391               </item>
6392
6393               <tag>65534:</tag>
6394               <item>
6395                 <p>
6396                   User <tt>nobody</tt>. The corresponding gid refers
6397                   to the group <tt>nogroup</tt>.
6398                 </p>
6399               </item>
6400
6401               <tag>65535:</tag>
6402               <item>
6403                 <p>
6404                   <tt>(uid_t)(-1) == (gid_t)(-1)</tt> <em>must
6405                   not</em> be used, because it is the error return
6406                   sentinel value.
6407                 </p>
6408               </item>
6409             </taglist>
6410           </p>
6411         </sect1>
6412       </sect>
6413
6414       <sect id="sysvinit">
6415         <heading>System run levels and <file>init.d</file> scripts</heading>
6416
6417         <sect1 id="/etc/init.d">
6418           <heading>Introduction</heading>
6419
6420           <p>
6421             The <file>/etc/init.d</file> directory contains the scripts
6422             executed by <prgn>init</prgn> at boot time and when the
6423             init state (or "runlevel") is changed (see <manref
6424             name="init" section="8">).
6425           </p>
6426
6427           <p>
6428             There are at least two different, yet functionally
6429             equivalent, ways of handling these scripts.  For the sake
6430             of simplicity, this document describes only the symbolic
6431             link method. However, it must not be assumed by maintainer
6432             scripts that this method is being used, and any automated
6433             manipulation of the various runlevel behaviors by
6434             maintainer scripts must be performed using
6435             <prgn>update-rc.d</prgn> as described below and not by
6436             manually installing or removing symlinks.  For information
6437             on the implementation details of the other method,
6438             implemented in the <tt>file-rc</tt> package, please refer
6439             to the documentation of that package.
6440           </p>
6441
6442           <p>
6443             These scripts are referenced by symbolic links in the
6444             <file>/etc/rc<var>n</var>.d</file> directories.  When changing
6445             runlevels, <prgn>init</prgn> looks in the directory
6446             <file>/etc/rc<var>n</var>.d</file> for the scripts it should
6447             execute, where <tt><var>n</var></tt> is the runlevel that
6448             is being changed to, or <tt>S</tt> for the boot-up
6449             scripts.
6450           </p>
6451
6452           <p>
6453             The names of the links all have the form
6454             <file>S<var>mm</var><var>script</var></file> or
6455             <file>K<var>mm</var><var>script</var></file> where
6456             <var>mm</var> is a two-digit number and <var>script</var>
6457             is the name of the script (this should be the same as the
6458             name of the actual script in <file>/etc/init.d</file>).
6459           </p>
6460
6461           <p>
6462             When <prgn>init</prgn> changes runlevel first the targets
6463             of the links whose names start with a <tt>K</tt> are
6464             executed, each with the single argument <tt>stop</tt>,
6465             followed by the scripts prefixed with an <tt>S</tt>, each
6466             with the single argument <tt>start</tt>.  (The links are
6467             those in the <file>/etc/rc<var>n</var>.d</file> directory
6468             corresponding to the new runlevel.)  The <tt>K</tt> links
6469             are responsible for killing services and the <tt>S</tt>
6470             link for starting services upon entering the runlevel.
6471           </p>
6472
6473           <p>
6474             For example, if we are changing from runlevel 2 to
6475             runlevel 3, init will first execute all of the <tt>K</tt>
6476             prefixed scripts it finds in <file>/etc/rc3.d</file>, and then
6477             all of the <tt>S</tt> prefixed scripts in that directory.
6478             The links starting with <tt>K</tt> will cause the
6479             referred-to file to be executed with an argument of
6480             <tt>stop</tt>, and the <tt>S</tt> links with an argument
6481             of <tt>start</tt>.
6482           </p>
6483
6484           <p>
6485             The two-digit number <var>mm</var> is used to determine
6486             the order in which to run the scripts: low-numbered links
6487             have their scripts run first.  For example, the
6488             <tt>K20</tt> scripts will be executed before the
6489             <tt>K30</tt> scripts.  This is used when a certain service
6490             must be started before another.  For example, the name
6491             server <prgn>bind</prgn> might need to be started before
6492             the news server <prgn>inn</prgn> so that <prgn>inn</prgn>
6493             can set up its access lists.  In this case, the script
6494             that starts <prgn>bind</prgn> would have a lower number
6495             than the script that starts <prgn>inn</prgn> so that it
6496             runs first:
6497             <example compact="compact">
6498 /etc/rc2.d/S17bind
6499 /etc/rc2.d/S70inn
6500             </example>
6501           </p>
6502
6503           <p>
6504             The two runlevels 0 (halt) and 6 (reboot) are slightly
6505             different.  In these runlevels, the links with an
6506             <tt>S</tt> prefix are still called after those with a
6507             <tt>K</tt> prefix, but they too are called with the single
6508             argument <tt>stop</tt>.
6509           </p>
6510         </sect1>
6511
6512         <sect1 id="writing-init">
6513           <heading>Writing the scripts</heading>
6514
6515           <p>
6516             Packages that include daemons for system services should
6517             place scripts in <file>/etc/init.d</file> to start or stop
6518             services at boot time or during a change of runlevel.
6519             These scripts should be named
6520             <file>/etc/init.d/<var>package</var></file>, and they should
6521             accept one argument, saying what to do:
6522
6523             <taglist>
6524               <tag><tt>start</tt></tag>
6525               <item>start the service,</item>
6526
6527               <tag><tt>stop</tt></tag>
6528               <item>stop the service,</item>
6529
6530               <tag><tt>restart</tt></tag>
6531               <item>stop and restart the service if it's already running,
6532                   otherwise start the service</item>
6533
6534               <tag><tt>reload</tt></tag>
6535               <item><p>cause the configuration of the service to be
6536                   reloaded without actually stopping and restarting
6537                   the service,</item>
6538
6539               <tag><tt>force-reload</tt></tag>
6540               <item>cause the configuration to be reloaded if the
6541                   service supports this, otherwise restart the
6542                   service.</item>
6543             </taglist>
6544
6545             The <tt>start</tt>, <tt>stop</tt>, <tt>restart</tt>, and
6546             <tt>force-reload</tt> options should be supported by all
6547             scripts in <file>/etc/init.d</file>, the <tt>reload</tt>
6548             option is optional.
6549           </p>
6550
6551           <p>
6552             The <file>init.d</file> scripts must ensure that they will
6553             behave sensibly (i.e., returning success and not starting
6554             multiple copies of a service) if invoked with <tt>start</tt>
6555             when the service is already running, or with <tt>stop</tt>
6556             when it isn't, and that they don't kill unfortunately-named
6557             user processes.  The best way to achieve this is usually to
6558             use <prgn>start-stop-daemon</prgn> with the <tt>--oknodo</tt>
6559             option.
6560           </p>
6561
6562           <p>
6563             Be careful of using <tt>set -e</tt> in <file>init.d</file>
6564             scripts.  Writing correct <file>init.d</file> scripts requires
6565             accepting various error exit statuses when daemons are already
6566             running or already stopped without aborting
6567             the <file>init.d</file> script, and common <file>init.d</file>
6568             function libraries are not safe to call with <tt>set -e</tt>
6569             in effect<footnote>
6570               <tt>/lib/lsb/init-functions</tt>, which assists in writing
6571               LSB-compliant init scripts, may fail if <tt>set -e</tt> is
6572               in effect and echoing status messages to the console fails,
6573               for example.
6574             </footnote>.  For <tt>init.d</tt> scripts, it's often easier
6575             to not use <tt>set -e</tt> and instead check the result of
6576             each command separately.
6577           </p>
6578
6579           <p>
6580             If a service reloads its configuration automatically (as
6581             in the case of <prgn>cron</prgn>, for example), the
6582             <tt>reload</tt> option of the <file>init.d</file> script
6583             should behave as if the configuration has been reloaded
6584             successfully.
6585           </p>
6586
6587           <p>
6588             The <file>/etc/init.d</file> scripts must be treated as
6589             configuration files, either (if they are present in the
6590             package, that is, in the .deb file) by marking them as
6591             <tt>conffile</tt>s, or, (if they do not exist in the .deb)
6592             by managing them correctly in the maintainer scripts (see
6593             <ref id="config-files">).  This is important since we want
6594             to give the local system administrator the chance to adapt
6595             the scripts to the local system, e.g., to disable a
6596             service without de-installing the package, or to specify
6597             some special command line options when starting a service,
6598             while making sure their changes aren't lost during the next
6599             package upgrade.
6600           </p>
6601
6602           <p>
6603             These scripts should not fail obscurely when the
6604             configuration files remain but the package has been
6605             removed, as configuration files remain on the system after
6606             the package has been removed.  Only when <prgn>dpkg</prgn>
6607             is executed with the <tt>--purge</tt> option will
6608             configuration files be removed.  In particular, as the
6609             <file>/etc/init.d/<var>package</var></file> script itself is
6610             usually a <tt>conffile</tt>, it will remain on the system
6611             if the package is removed but not purged.  Therefore, you
6612             should include a <tt>test</tt> statement at the top of the
6613             script, like this:
6614             <example compact="compact">
6615 test -f <var>program-executed-later-in-script</var> || exit 0
6616             </example>
6617           </p>
6618
6619           <p>
6620             Often there are some variables in the <file>init.d</file>
6621             scripts whose values control the behavior of the scripts,
6622             and which a system administrator is likely to want to
6623             change.  As the scripts themselves are frequently
6624             <tt>conffile</tt>s, modifying them requires that the
6625             administrator merge in their changes each time the package
6626             is upgraded and the <tt>conffile</tt> changes.  To ease
6627             the burden on the system administrator, such configurable
6628             values should not be placed directly in the script.
6629             Instead, they should be placed in a file in
6630             <file>/etc/default</file>, which typically will have the same
6631             base name as the <file>init.d</file> script.  This extra file
6632             should be sourced by the script when the script runs.  It
6633             must contain only variable settings and comments in SUSv3
6634             <prgn>sh</prgn> format.  It may either be a
6635             <tt>conffile</tt> or a configuration file maintained by
6636             the package maintainer scripts.  See <ref id="config-files">
6637             for more details.
6638           </p>
6639
6640           <p>
6641             To ensure that vital configurable values are always
6642             available, the <file>init.d</file> script should set default
6643             values for each of the shell variables it uses, either
6644             before sourcing the <file>/etc/default/</file> file or
6645             afterwards using something like the <tt>:
6646             ${VAR:=default}</tt> syntax.  Also, the <file>init.d</file>
6647             script must behave sensibly and not fail if the
6648             <file>/etc/default</file> file is deleted.
6649           </p>
6650
6651           <p>
6652             <file>/var/run</file> and <file>/var/lock</file> may be mounted
6653             as temporary filesystems<footnote>
6654                 For example, using the <tt>RAMRUN</tt> and <tt>RAMLOCK</tt>
6655                 options in <file>/etc/default/rcS</file>.
6656             </footnote>, so the <file>init.d</file> scripts must handle this
6657             correctly. This will typically amount to creating any required
6658             subdirectories dynamically when the <file>init.d</file> script
6659             is run, rather than including them in the package and relying on
6660             <prgn>dpkg</prgn> to create them.
6661           </p>
6662         </sect1>
6663
6664         <sect1>
6665           <heading>Interfacing with the initscript system</heading>
6666
6667           <p>
6668             Maintainers should use the abstraction layer provided by
6669             the <prgn>update-rc.d</prgn> and <prgn>invoke-rc.d</prgn>
6670             programs to deal with initscripts in their packages'
6671             scripts such as <prgn>postinst</prgn>, <prgn>prerm</prgn>
6672             and <prgn>postrm</prgn>.
6673           </p>
6674
6675           <p>
6676             Directly managing the /etc/rc?.d links and directly
6677             invoking the <file>/etc/init.d/</file> initscripts should
6678             be done only by packages providing the initscript
6679             subsystem (such as <prgn>sysv-rc</prgn> and
6680             <prgn>file-rc</prgn>).
6681           </p>
6682
6683           <sect2>
6684             <heading>Managing the links</heading>
6685
6686             <p>
6687               The program <prgn>update-rc.d</prgn> is provided for
6688               package maintainers to arrange for the proper creation and
6689               removal of <file>/etc/rc<var>n</var>.d</file> symbolic links,
6690               or their functional equivalent if another method is being
6691               used.  This may be used by maintainers in their packages'
6692               <prgn>postinst</prgn> and <prgn>postrm</prgn> scripts.
6693             </p>
6694
6695             <p>
6696               You must not include any <file>/etc/rc<var>n</var>.d</file>
6697               symbolic links in the actual archive or manually create or
6698               remove the symbolic links in maintainer scripts; you must
6699               use the <prgn>update-rc.d</prgn> program instead.  (The
6700               former will fail if an alternative method of maintaining
6701               runlevel information is being used.)  You must not include
6702               the <file>/etc/rc<var>n</var>.d</file> directories themselves
6703               in the archive either.  (Only the <tt>sysvinit</tt>
6704               package may do so.)
6705             </p>
6706
6707             <p>
6708               By default <prgn>update-rc.d</prgn> will start services in
6709               each of the multi-user state runlevels (2, 3, 4, and 5)
6710               and stop them in the halt runlevel (0), the single-user
6711               runlevel (1) and the reboot runlevel (6).  The system
6712               administrator will have the opportunity to customize
6713               runlevels by simply adding, moving, or removing the
6714               symbolic links in <file>/etc/rc<var>n</var>.d</file> if
6715               symbolic links are being used, or by modifying
6716               <file>/etc/runlevel.conf</file> if the <tt>file-rc</tt> method
6717               is being used.
6718             </p>
6719
6720             <p>
6721               To get the default behavior for your package, put in your
6722               <prgn>postinst</prgn> script
6723               <example compact="compact">
6724                 update-rc.d <var>package</var> defaults
6725               </example>
6726               and in your <prgn>postrm</prgn>
6727               <example compact="compact">
6728                 if [ "$1" = purge ]; then
6729                 update-rc.d <var>package</var> remove
6730                 fi
6731               </example>. Note that if your package changes runlevels
6732               or priority, you may have to remove and recreate the links,
6733               since otherwise the old links may persist. Refer to the
6734               documentation of <prgn>update-rc.d</prgn>.
6735             </p>
6736
6737             <p>
6738               This will use a default sequence number of 20.  If it does
6739               not matter when or in which order the <file>init.d</file>
6740               script is run, use this default.  If it does, then you
6741               should talk to the maintainer of the <prgn>sysvinit</prgn>
6742               package or post to <tt>debian-devel</tt>, and they will
6743               help you choose a number.
6744             </p>
6745
6746             <p>
6747               For more information about using <tt>update-rc.d</tt>,
6748               please consult its man page <manref name="update-rc.d"
6749                 section="8">.
6750             </p>
6751           </sect2>
6752
6753           <sect2>
6754             <heading>Running initscripts</heading>
6755             <p>
6756               The program <prgn>invoke-rc.d</prgn> is provided to make
6757               it easier for package maintainers to properly invoke an
6758               initscript, obeying runlevel and other locally-defined
6759               constraints that might limit a package's right to start,
6760               stop and otherwise manage services. This program may be
6761               used by maintainers in their packages' scripts.
6762             </p>
6763
6764             <p>
6765               The package maintainer scripts must use
6766               <prgn>invoke-rc.d</prgn> to invoke the
6767               <file>/etc/init.d/*</file> initscripts, instead of
6768               calling them directly.
6769             </p>
6770
6771             <p>
6772               By default, <prgn>invoke-rc.d</prgn> will pass any
6773               action requests (start, stop, reload, restart...) to the
6774               <file>/etc/init.d</file> script, filtering out requests
6775               to start or restart a service out of its intended
6776               runlevels.
6777             </p>
6778
6779             <p>
6780               Most packages will simply need to change:
6781               <example compact="compact">/etc/init.d/&lt;package&gt;
6782               &lt;action&gt;</example> in their <prgn>postinst</prgn>
6783               and <prgn>prerm</prgn> scripts to:
6784               <example compact="compact">
6785         if which invoke-rc.d >/dev/null 2>&1; then
6786                 invoke-rc.d <var>package</var> &lt;action&gt;
6787         else
6788                 /etc/init.d/<var>package</var> &lt;action&gt;
6789         fi
6790               </example>
6791             </p>
6792
6793             <p>
6794               A package should register its initscript services using
6795               <prgn>update-rc.d</prgn> before it tries to invoke them
6796               using <prgn>invoke-rc.d</prgn>. Invocation of
6797               unregistered services may fail.
6798             </p>
6799
6800             <p>
6801               For more information about using
6802               <prgn>invoke-rc.d</prgn>, please consult its man page
6803               <manref name="invoke-rc.d" section="8">.
6804             </p>
6805           </sect2>
6806         </sect1>
6807
6808         <sect1>
6809           <heading>Boot-time initialization</heading>
6810
6811           <p>
6812             There used to be another directory, <file>/etc/rc.boot</file>,
6813             which contained scripts which were run once per machine
6814             boot. This has been deprecated in favour of links from
6815             <file>/etc/rcS.d</file> to files in <file>/etc/init.d</file> as
6816             described in <ref id="/etc/init.d">.  Packages must not
6817             place files in <file>/etc/rc.boot</file>.
6818           </p>
6819         </sect1>
6820
6821         <sect1>
6822           <heading>Example</heading>
6823
6824           <p>
6825             An example on which you can base your
6826             <file>/etc/init.d</file> scripts is found in
6827             <file>/etc/init.d/skeleton</file>.
6828           </p>
6829
6830         </sect1>
6831       </sect>
6832
6833       <sect>
6834         <heading>Console messages from <file>init.d</file> scripts</heading>
6835
6836         <p>
6837           This section describes the formats to be used for messages
6838           written to standard output by the <file>/etc/init.d</file>
6839           scripts.  The intent is to improve the consistency of
6840           Debian's startup and shutdown look and feel.  For this
6841           reason, please look very carefully at the details.  We want
6842           the messages to have the same format in terms of wording,
6843           spaces, punctuation and case of letters.
6844         </p>
6845
6846         <p>
6847           Here is a list of overall rules that should be used for
6848           messages generated by <file>/etc/init.d</file> scripts.  
6849         </p>
6850
6851         <p>
6852           <list>
6853             <item>
6854                 The message should fit in one line (fewer than 80
6855                 characters), start with a capital letter and end with
6856                 a period (<tt>.</tt>) and line feed (<tt>"\n"</tt>).
6857             </item>
6858
6859             <item>
6860               If the script is performing some time consuming task in
6861               the background (not merely starting or stopping a
6862               program, for instance), an ellipsis (three dots:
6863               <tt>...</tt>) should be output to the screen, with no
6864               leading or tailing whitespace or line feeds.
6865             </item>
6866
6867             <item>
6868               The messages should appear as if the computer is telling
6869               the user what it is doing (politely :-), but should not
6870                 mention "it" directly.  For example, instead of:
6871                 <example compact="compact">
6872 I'm starting network daemons: nfsd mountd.
6873                 </example>
6874                 the message should say
6875                 <example compact="compact">
6876 Starting network daemons: nfsd mountd.
6877                 </example>
6878             </item>
6879           </list>
6880         </p>
6881
6882         <p>
6883           <tt>init.d</tt> script should use the following  standard
6884           message formats for the situations enumerated below.
6885         </p>
6886
6887         <p>
6888           <list>
6889             <item>
6890               <p>When daemons are started</p>
6891
6892               <p>
6893                 If the script starts one or more daemons, the output
6894                 should look like this (a single line, no leading
6895                 spaces):
6896                 <example compact="compact">
6897 Starting <var>description</var>: <var>daemon-1</var> ... <var>daemon-n</var>.
6898                 </example>
6899                 The <var>description</var> should describe the
6900                 subsystem the daemon or set of daemons are part of,
6901                 while <var>daemon-1</var> up to <var>daemon-n</var>
6902                 denote each daemon's name (typically the file name of
6903                 the program).
6904               </p>
6905
6906               <p>
6907                 For example, the output of <file>/etc/init.d/lpd</file>
6908                 would look like:
6909                 <example compact="compact">
6910 Starting printer spooler: lpd.
6911                 </example>
6912               </p>
6913
6914               <p>
6915                 This can be achieved by saying
6916                 <example compact="compact">
6917 echo -n "Starting printer spooler: lpd"
6918 start-stop-daemon --start --quiet --exec /usr/sbin/lpd
6919 echo "."
6920                 </example>
6921                 in the script. If there are more than one daemon to
6922                 start, the output should look like this:
6923                 <example compact="compact">
6924 echo -n "Starting remote file system services:"
6925 echo -n " nfsd"; start-stop-daemon --start --quiet nfsd
6926 echo -n " mountd"; start-stop-daemon --start --quiet mountd
6927 echo -n " ugidd"; start-stop-daemon --start --quiet ugidd
6928 echo "."
6929                 </example>
6930                 This makes it possible for the user to see what is
6931                 happening and when the final daemon has been started.
6932                 Care should be taken in the placement of white spaces:
6933                 in the example above the system administrators can
6934                 easily comment out a line if they don't want to start
6935                 a specific daemon, while the displayed message still
6936                 looks good.
6937               </p>
6938             </item>
6939
6940             <item>
6941               <p>When a system parameter is being set</p>
6942
6943               <p>
6944                 If you have to set up different system parameters
6945                 during the system boot, you should use this format:
6946                 <example compact="compact">
6947 Setting <var>parameter</var> to "<var>value</var>".
6948                 </example>
6949               </p>
6950
6951               <p>
6952                 You can use a statement such as the following to get
6953                 the quotes right:
6954                 <example compact="compact">
6955 echo "Setting DNS domainname to \"$domainname\"."
6956                 </example>
6957               </p>
6958
6959               <p>
6960                 Note that the same symbol (<tt>"</tt>) <!-- " --> is used
6961                 for the left and right quotation marks.  A grave accent
6962                 (<tt>`</tt>) is not a quote character; neither is an
6963                 apostrophe (<tt>'</tt>).
6964               </p>
6965             </item>
6966
6967             <item>
6968               <p>When a daemon is stopped or restarted</p>
6969
6970               <p>
6971                 When you stop or restart a daemon, you should issue a
6972                 message identical to the startup message, except that
6973                 <tt>Starting</tt> is replaced with <tt>Stopping</tt>
6974                 or <tt>Restarting</tt> respectively.
6975               </p>
6976
6977               <p>
6978                 For example, stopping the printer daemon will look like
6979                 this:
6980                 <example compact="compact">
6981 Stopping printer spooler: lpd.
6982                 </example>
6983               </p>
6984             </item>
6985
6986             <item>
6987               <p>When something is executed</p>
6988
6989               <p>
6990                 There are several examples where you have to run a
6991                 program at system startup or shutdown to perform a
6992                 specific task, for example, setting the system's clock
6993                 using <prgn>netdate</prgn> or killing all processes
6994                 when the system shuts down.  Your message should look
6995                 like this:
6996                 <example compact="compact">
6997 Doing something very useful...done.
6998                 </example>
6999                 You should print the <tt>done.</tt> immediately after
7000                 the job has been completed, so that the user is
7001                 informed why they have to wait.  You can get this
7002                 behavior by saying
7003                 <example compact="compact">
7004 echo -n "Doing something very useful..."
7005 do_something
7006 echo "done."
7007                 </example>
7008                 in your script.
7009               </p>
7010             </item>
7011
7012             <item>
7013               <p>When the configuration is reloaded</p>
7014
7015               <p>
7016                 When a daemon is forced to reload its configuration
7017                 files you should use the following format:
7018                 <example compact="compact">
7019 Reloading <var>description</var> configuration...done.
7020                 </example>
7021                 where <var>description</var> is the same as in the
7022                 daemon starting message.
7023               </p>
7024             </item>
7025           </list>
7026         </p>
7027       </sect>
7028
7029       <sect>
7030         <heading>Cron jobs</heading>
7031
7032         <p>
7033           Packages must not modify the configuration file
7034           <file>/etc/crontab</file>, and they must not modify the files in
7035           <file>/var/spool/cron/crontabs</file>.</p>
7036
7037         <p>
7038           If a package wants to install a job that has to be executed
7039           via cron, it should place a file with the name of the
7040           package in one or more of the following directories:
7041           <example compact="compact">
7042 /etc/cron.hourly
7043 /etc/cron.daily
7044 /etc/cron.weekly
7045 /etc/cron.monthly
7046           </example>
7047           As these directory names imply, the files within them are
7048           executed on an hourly, daily, weekly, or monthly basis,
7049           respectively. The exact times are listed in
7050           <file>/etc/crontab</file>.</p>
7051
7052         <p>
7053           All files installed in any of these directories must be
7054           scripts (e.g., shell scripts or Perl scripts) so that they
7055           can easily be modified by the local system administrator.
7056           In addition, they must be treated as configuration files.
7057         </p>
7058
7059         <p>
7060           If a certain job has to be executed at some other frequency or
7061           at a specific time, the package should install a file
7062           <file>/etc/cron.d/<var>package</var></file>. This file uses the
7063           same syntax as <file>/etc/crontab</file> and is processed by
7064           <prgn>cron</prgn> automatically. The file must also be
7065           treated as a configuration file. (Note that entries in the
7066           <file>/etc/cron.d</file> directory are not handled by
7067           <prgn>anacron</prgn>. Thus, you should only use this
7068           directory for jobs which may be skipped if the system is not
7069           running.)</p>
7070         <p>
7071           Unlike <file>crontab</file> files described in the IEEE Std
7072           1003.1-2008 (POSIX.1) available from
7073           <url id="http://www.opengroup.org/onlinepubs/9699919799/"
7074                name="The Open Group">, the files in
7075           <file>/etc/cron.d</file> and the file
7076           <file>/etc/crontab</file> have seven fields; namely:
7077           <enumlist>
7078             <item>Minute [0,59]</item>
7079             <item>Hour [0,23]</item>
7080             <item>Day of the month [1,31]</item>
7081             <item>Month of the year [1,12]</item>
7082             <item>Day of the week ([0,6] with 0=Sunday)</item>
7083             <item>Username</item>
7084             <item>Command to be run</item>
7085           </enumlist>
7086           Ranges of numbers are allowed.  Ranges are two numbers
7087           separated with a hyphen.  The specified range is inclusive.
7088           Lists are allowed.  A list is a set of numbers (or ranges)
7089           separated by commas. Step values can be used in conjunction
7090           with ranges.
7091         </p>
7092
7093         <p>
7094           The scripts or <tt>crontab</tt> entries in these directories should
7095           check if all necessary programs are installed before they
7096           try to execute them. Otherwise, problems will arise when a
7097           package was removed but not purged since configuration files
7098           are kept on the system in this situation.
7099         </p>
7100
7101         <p>
7102           Any <tt>cron</tt> daemon must provide
7103           <file>/usr/bin/crontab</file> and support normal
7104           <tt>crontab</tt> entries as specified in POSIX. The daemon
7105           must also support names for days and months, ranges, and
7106           step values. It has to support <file>/etc/crontab</file>,
7107           and correctly execute the scripts in
7108           <file>/etc/cron.d</file>. The daemon must also correctly
7109           execute scripts in
7110           <file>/etc/cron.{hourly,daily,weekly,monthly}</file>.
7111         </p>
7112       </sect>
7113
7114       <sect id="menus">
7115         <heading>Menus</heading>
7116
7117         <p>
7118           The Debian <tt>menu</tt> package provides a standard
7119           interface between packages providing applications and
7120           <em>menu programs</em> (either X window managers or
7121           text-based menu programs such as <prgn>pdmenu</prgn>).
7122         </p>
7123
7124         <p>
7125           All packages that provide applications that need not be
7126           passed any special command line arguments for normal
7127           operation should register a menu entry for those
7128           applications, so that users of the <tt>menu</tt> package
7129           will automatically get menu entries in their window
7130           managers, as well in shells like <tt>pdmenu</tt>.
7131         </p>
7132
7133         <p>
7134           Menu entries should follow the current menu policy.
7135         </p>
7136
7137         <p>
7138           The menu policy can be found in the <tt>menu-policy</tt>
7139           files in the <tt>debian-policy</tt> package.
7140           It is also available from the Debian web mirrors at
7141           <tt><url name="/doc/packaging-manuals/menu-policy/"
7142                 id="http://www.debian.org/doc/packaging-manuals/menu-policy/"></tt>.
7143         </p>
7144
7145         <p>
7146           Please also refer to the <em>Debian Menu System</em>
7147           documentation that comes with the <package>menu</package>
7148           package for information about how to register your
7149           applications.
7150         </p>
7151       </sect>
7152
7153       <sect id="mime">
7154         <heading>Multimedia handlers</heading>
7155
7156         <p>
7157           MIME (Multipurpose Internet Mail Extensions, RFCs 2045-2049)
7158           is a mechanism for encoding files and data streams and
7159           providing meta-information about them, in particular their
7160           type (e.g.  audio or video) and format (e.g. PNG, HTML,
7161           MP3).
7162         </p>
7163
7164         <p>
7165           Registration of MIME type handlers allows programs like mail
7166           user agents and web browsers to invoke these handlers to
7167           view, edit or display MIME types they don't support directly.
7168         </p>
7169
7170         <p>
7171           Packages which provide the ability to view/show/play,
7172           compose, edit or print MIME types should register themselves
7173           as such following the current MIME support policy.
7174         </p>
7175
7176         <p>
7177           The MIME support policy can be found in the <tt>mime-policy</tt>
7178           files in the <tt>debian-policy</tt> package.
7179           It is also available from the Debian web mirrors at
7180           <tt><url name="/doc/packaging-manuals/mime-policy/"
7181                 id="http://www.debian.org/doc/packaging-manuals/mime-policy/"></tt>.
7182         </p>
7183
7184       </sect>
7185
7186       <sect>
7187         <heading>Keyboard configuration</heading>
7188
7189         <p>
7190           To achieve a consistent keyboard configuration so that all
7191           applications interpret a keyboard event the same way, all
7192           programs in the Debian distribution must be configured to
7193           comply with the following guidelines.
7194         </p>
7195
7196         <p>
7197           The following keys must have the specified interpretations:
7198
7199           <taglist>
7200             <tag><tt>&lt;--</tt></tag>
7201             <item>delete the character to the left of the cursor</item>
7202
7203             <tag><tt>Delete</tt></tag>
7204             <item>delete the character to the right of the cursor</item>
7205
7206             <tag><tt>Control+H</tt></tag>
7207             <item>emacs: the help prefix</item>
7208           </taglist>
7209
7210           The interpretation of any keyboard events should be
7211           independent of the terminal that is used, be it a virtual
7212           console, an X terminal emulator, an rlogin/telnet session,
7213           etc.
7214         </p>
7215
7216         <p>
7217           The following list explains how the different programs
7218           should be set up to achieve this:
7219         </p>
7220
7221         <p>
7222           <list>
7223             <item>
7224                 <tt>&lt;--</tt> generates <tt>KB_BackSpace</tt> in X.
7225             </item>
7226
7227             <item>
7228                 <tt>Delete</tt> generates <tt>KB_Delete</tt> in X.
7229             </item>
7230
7231             <item>
7232                 X translations are set up to make
7233                 <tt>KB_Backspace</tt> generate ASCII DEL, and to make
7234                 <tt>KB_Delete</tt> generate <tt>ESC [ 3 ~</tt> (this
7235                 is the vt220 escape code for the "delete character"
7236                 key).  This must be done by loading the X resources
7237                 using <prgn>xrdb</prgn> on all local X displays, not
7238                 using the application defaults, so that the
7239                 translation resources used correspond to the
7240                 <prgn>xmodmap</prgn> settings.
7241             </item>
7242
7243             <item>
7244                 The Linux console is configured to make
7245                 <tt>&lt;--</tt> generate DEL, and <tt>Delete</tt>
7246                 generate <tt>ESC [ 3 ~</tt>.
7247             </item>
7248
7249             <item>
7250                 X applications are configured so that <tt>&lt;</tt>
7251                 deletes left, and <tt>Delete</tt> deletes right.  Motif
7252                 applications already work like this.
7253             </item>
7254
7255             <item>
7256                 Terminals should have <tt>stty erase ^?</tt> .
7257             </item>
7258
7259             <item>
7260                 The <tt>xterm</tt> terminfo entry should have <tt>ESC
7261                 [ 3 ~</tt> for <tt>kdch1</tt>, just as for
7262                 <tt>TERM=linux</tt> and <tt>TERM=vt220</tt>.
7263             </item>
7264
7265             <item>
7266                 Emacs is programmed to map <tt>KB_Backspace</tt> or
7267                 the <tt>stty erase</tt> character to
7268                 <tt>delete-backward-char</tt>, and <tt>KB_Delete</tt>
7269                 or <tt>kdch1</tt> to <tt>delete-forward-char</tt>, and
7270                 <tt>^H</tt> to <tt>help</tt> as always.
7271             </item>
7272
7273             <item>
7274                 Other applications use the <tt>stty erase</tt>
7275                 character and <tt>kdch1</tt> for the two delete keys,
7276                 with ASCII DEL being "delete previous character" and
7277                 <tt>kdch1</tt> being "delete character under
7278                 cursor".
7279             </item>
7280
7281           </list>
7282         </p>
7283
7284         <p>
7285           This will solve the problem except for the following
7286           cases:
7287         </p>
7288
7289         <p>
7290           <list>
7291             <item>
7292                 Some terminals have a <tt>&lt;--</tt> key that cannot
7293                 be made to produce anything except <tt>^H</tt>.  On
7294                 these terminals Emacs help will be unavailable on
7295                 <tt>^H</tt> (assuming that the <tt>stty erase</tt>
7296                 character takes precedence in Emacs, and has been set
7297                 correctly).  <tt>M-x help</tt> or <tt>F1</tt> (if
7298                 available) can be used instead.
7299             </item>
7300
7301             <item>
7302                 Some operating systems use <tt>^H</tt> for <tt>stty
7303                 erase</tt>.  However, modern telnet versions and all
7304                 rlogin versions propagate <tt>stty</tt> settings, and
7305                 almost all UNIX versions honour <tt>stty erase</tt>.
7306                 Where the <tt>stty</tt> settings are not propagated
7307                 correctly, things can be made to work by using
7308                 <tt>stty</tt> manually.
7309             </item>
7310
7311             <item>
7312                 Some systems (including previous Debian versions) use
7313                 <prgn>xmodmap</prgn> to arrange for both
7314                 <tt>&lt;--</tt> and <tt>Delete</tt> to generate
7315                 <tt>KB_Delete</tt>.  We can change the behavior of
7316                 their X clients using the same X resources that we use
7317                 to do it for our own clients, or configure our clients
7318                 using their resources when things are the other way
7319                 around.  On displays configured like this
7320                 <tt>Delete</tt> will not work, but <tt>&lt;--</tt>
7321                 will.
7322             </item>
7323
7324             <item>
7325                 Some operating systems have different <tt>kdch1</tt>
7326                 settings in their <tt>terminfo</tt> database for
7327                 <tt>xterm</tt> and others.  On these systems the
7328                 <tt>Delete</tt> key will not work correctly when you
7329                 log in from a system conforming to our policy, but
7330                 <tt>&lt;--</tt> will.
7331             </item>
7332           </list>
7333         </p>
7334       </sect>
7335
7336       <sect>
7337         <heading>Environment variables</heading>
7338
7339         <p>
7340           A program must not depend on environment variables to get
7341           reasonable defaults.  (That's because these environment
7342           variables would have to be set in a system-wide
7343           configuration file like <file>/etc/profile</file>, which is not
7344           supported by all shells.)
7345         </p>
7346
7347         <p>
7348           If a program usually depends on environment variables for its
7349           configuration, the program should be changed to fall back to
7350           a reasonable default configuration if these environment
7351           variables are not present. If this cannot be done easily
7352           (e.g., if the source code of a non-free program is not
7353           available), the program must be replaced by a small
7354           "wrapper" shell script which sets the environment variables
7355           if they are not already defined, and calls the original program.
7356         </p>
7357
7358         <p>
7359           Here is an example of a wrapper script for this purpose:
7360
7361           <example compact="compact">
7362 #!/bin/sh
7363 BAR=${BAR:-/var/lib/fubar}
7364 export BAR
7365 exec /usr/lib/foo/foo "$@"
7366           </example>
7367         </p>
7368
7369         <p>
7370           Furthermore, as <file>/etc/profile</file> is a configuration
7371           file of the <prgn>base-files</prgn> package, other packages must
7372           not put any environment variables or other commands into that
7373           file.
7374         </p>
7375       </sect>
7376
7377       <sect id="doc-base">
7378         <heading>Registering Documents using doc-base</heading>
7379
7380         <p>
7381           The <package>doc-base</package> package implements a
7382           flexible mechanism for handling and presenting
7383           documentation. The recommended practice is for every Debian
7384           package that provides online documentation (other than just
7385           manual pages) to register these documents with
7386           <package>doc-base</package> by installing a
7387           <package>doc-base</package> control file via the
7388           <prgn/install-docs/ script at installation time and
7389           de-register the manuals again when the package is removed.
7390         </p> 
7391         <p>
7392           Please refer to the documentation that comes with the
7393           <package>doc-base</package>  package for information and
7394           details. 
7395         </p>
7396       </sect>
7397
7398     </chapt>
7399
7400
7401     <chapt id="files">
7402       <heading>Files</heading>
7403
7404       <sect id="binaries">
7405         <heading>Binaries</heading>
7406
7407         <p>
7408           Two different packages must not install programs with
7409           different functionality but with the same filenames.  (The
7410           case of two programs having the same functionality but
7411           different implementations is handled via "alternatives" or
7412           the "Conflicts" mechanism.  See <ref id="maintscripts"> and
7413           <ref id="conflicts"> respectively.)  If this case happens,
7414           one of the programs must be renamed.  The maintainers should
7415           report this to the <tt>debian-devel</tt> mailing list and
7416           try to find a consensus about which program will have to be
7417           renamed.  If a consensus cannot be reached, <em>both</em>
7418           programs must be renamed.
7419         </p>
7420
7421         <p>
7422          By default, when a package is being built, any binaries
7423          created should include debugging information, as well as
7424          being compiled with optimization.  You should also turn on
7425          as many reasonable compilation warnings as possible; this
7426          makes life easier for porters, who can then look at build
7427          logs for possible problems.  For the C programming language,
7428          this means the following compilation parameters should be
7429          used:
7430           <example compact="compact">
7431 CC = gcc
7432 CFLAGS = -O2 -g -Wall # sane warning options vary between programs
7433 LDFLAGS = # none
7434 INSTALL = install -s # (or use strip on the files in debian/tmp)
7435           </example>
7436         </p>
7437
7438         <p>
7439           Note that by default all installed binaries should be stripped,
7440           either by using the <tt>-s</tt> flag to
7441           <prgn>install</prgn>, or by calling <prgn>strip</prgn> on
7442           the binaries after they have been copied into
7443           <file>debian/tmp</file> but before the tree is made into a
7444           package.
7445         </p>
7446
7447         <p>
7448           Although binaries in the build tree should be compiled with
7449           debugging information by default, it can often be difficult to
7450           debug programs if they are also subjected to compiler
7451           optimization.  For this reason, it is recommended to support the
7452           standardized environment variable <tt>DEB_BUILD_OPTIONS</tt>
7453           (see <ref id="debianrules-options">).  This variable can contain
7454           several flags to change how a package is compiled and built.
7455         </p>
7456
7457         <p>
7458           It is up to the package maintainer to decide what
7459           compilation options are best for the package.  Certain
7460           binaries (such as computationally-intensive programs) will
7461           function better with certain flags (<tt>-O3</tt>, for
7462           example); feel free to use them.  Please use good judgment
7463           here.  Don't use flags for the sake of it; only use them
7464           if there is good reason to do so.  Feel free to override
7465           the upstream author's ideas about which compilation
7466           options are best: they are often inappropriate for our
7467           environment.
7468         </p>
7469       </sect>
7470
7471
7472       <sect id="libraries">
7473         <heading>Libraries</heading>
7474
7475         <p>
7476           If the package is <strong>architecture: any</strong>, then
7477           the shared library compilation and linking flags must have
7478           <tt>-fPIC</tt>, or the package shall not build on some of
7479           the supported architectures<footnote>
7480             <p>
7481               If you are using GCC, <tt>-fPIC</tt> produces code with
7482               relocatable position independent code, which is required for
7483               most architectures to create a shared library, with i386 and
7484               perhaps some others where non position independent code is
7485               permitted in a shared library.
7486             </p>
7487             <p>
7488               Position independent code may have a performance penalty,
7489               especially on <tt>i386</tt>. However, in most cases the
7490               speed penalty must be measured against the memory wasted on
7491               the few architectures where non position independent code is
7492               even possible.
7493             </p>
7494           </footnote>. Any exception to this rule must be discussed on
7495           the mailing list <em>debian-devel@lists.debian.org</em>, and
7496           a rough consensus obtained.  The reasons for not compiling
7497           with <tt>-fPIC</tt> flag must be recorded in the file
7498           <tt>README.Debian</tt>, and care must be taken to either
7499           restrict the architecture or arrange for <tt>-fPIC</tt> to
7500           be used on architectures where it is required.<footnote>
7501             <p>
7502               Some of the reasons why this might be required is if the
7503               library contains hand crafted assembly code that is not
7504               relocatable, the speed penalty is excessive for compute
7505               intensive libs, and similar reasons.
7506             </p>
7507           </footnote>
7508         </p>
7509         <p>
7510           As to the static libraries, the common case is not to have
7511           relocatable code, since there is no benefit, unless in specific
7512           cases; therefore the static version must not be compiled
7513           with the <tt>-fPIC</tt> flag. Any exception to this rule
7514           should be discussed on the mailing list
7515           <em>debian-devel@lists.debian.org</em>,  and the reasons for
7516           compiling with the <tt>-fPIC</tt> flag must be recorded in
7517           the file <tt>README.Debian</tt>. <footnote>
7518             <p>
7519               Some of the reasons for linking static libraries with
7520               the <tt>-fPIC</tt> flag are if, for example, one needs a
7521               Perl API for a library that is under rapid development,
7522               and has an unstable API, so shared libraries are
7523               pointless at this phase of the library's development. In
7524               that case, since Perl needs a library with relocatable
7525               code, it may make sense to create a static library with
7526               relocatable code. Another reason cited is if you are
7527               distilling various libraries into a common shared
7528               library, like <tt>mklibs</tt> does in the Debian
7529               installer project.
7530             </p>
7531           </footnote>
7532         </p>
7533         <p>
7534           In other words, if both a shared and a static library is
7535           being built, each source unit (<tt>*.c</tt>, for example,
7536           for C files) will need to be compiled twice, for the normal
7537           case. 
7538         </p>
7539
7540         <p>
7541           Libraries should be built with threading support and to be
7542           thread-safe if the library supports this.
7543         </p>
7544
7545         <p>
7546           Although not enforced by the build tools, shared libraries
7547           must be linked against all libraries that they use symbols from
7548           in the same way that binaries are.  This ensures the correct
7549           functioning of the <qref id="sharedlibs-shlibdeps">shlibs</qref>
7550           system and guarantees that all libraries can be safely opened
7551           with <tt>dlopen()</tt>.  Packagers may wish to use the gcc
7552           option <tt>-Wl,-z,defs</tt> when building a shared library.
7553           Since this option enforces symbol resolution at build time,
7554           a missing library reference will be caught early as a fatal
7555           build error.
7556         </p>
7557
7558         <p>
7559           All installed shared libraries should be stripped with
7560           <example compact="compact">
7561 strip --strip-unneeded <var>your-lib</var>
7562           </example>
7563           (The option <tt>--strip-unneeded</tt> makes
7564           <prgn>strip</prgn> remove only the symbols which aren't
7565           needed for relocation processing.)  Shared libraries can
7566           function perfectly well when stripped, since the symbols for
7567           dynamic linking are in a separate part of the ELF object
7568           file.<footnote>
7569               You might also want to use the options
7570               <tt>--remove-section=.comment</tt> and
7571               <tt>--remove-section=.note</tt> on both shared libraries
7572               and executables, and <tt>--strip-debug</tt> on static
7573               libraries.
7574           </footnote>
7575         </p>
7576
7577         <p>
7578           Note that under some circumstances it may be useful to
7579           install a shared library unstripped, for example when
7580           building a separate package to support debugging.
7581         </p>
7582
7583         <p>
7584           Shared object files (often <file>.so</file> files) that are not
7585           public libraries, that is, they are not meant to be linked
7586           to by third party executables (binaries of other packages),
7587           should be installed in subdirectories of the
7588           <file>/usr/lib</file> directory.  Such files are exempt from the
7589           rules that govern ordinary shared libraries, except that
7590           they must not be installed executable and should be
7591           stripped.<footnote>
7592               A common example are the so-called "plug-ins",
7593               internal shared objects that are dynamically loaded by
7594               programs using <manref name="dlopen" section="3">.
7595           </footnote>
7596         </p>
7597
7598         <p>
7599           Packages that use <prgn>libtool</prgn> to create and install
7600           their shared libraries install a file containing additional
7601           metadata (ending in <file>.la</file>) alongside the library.
7602           For public libraries intended for use by other packages, these
7603           files normally should not be included in the Debian package,
7604           since the information they include is not necessary to link with
7605           the shared library on Debian and can add unnecessary additional
7606           dependencies to other programs or libraries.<footnote>
7607             These files store, among other things, all libraries on which
7608             that shared library depends.  Unfortunately, if
7609             the <file>.la</file> file is present and contains that
7610             dependency information, using <prgn>libtool</prgn> when
7611             linking against that library will cause the resulting program
7612             or library to be linked against those dependencies as well,
7613             even if this is unnecessary.  This can create unneeded
7614             dependencies on shared library packages that would otherwise
7615             be hidden behind the library ABI, and can make library
7616             transitions to new SONAMEs unnecessarily complicated and
7617             difficult to manage.
7618           </footnote>
7619           If the <file>.la</file> file is required for that library (if,
7620           for instance, it's loaded via <tt>libltdl</tt> in a way that
7621           requires that meta-information), the <tt>dependency_libs</tt>
7622           setting in the <file>.la</file> file should normally be set to
7623           the empty string.  If the shared library development package has
7624           historically included the <file>.la</file>, it must be retained
7625           in the development package (with <tt>dependency_libs</tt>
7626           emptied) until all libraries that depend on it have removed or
7627           emptied <tt>dependency_libs</tt> in their <file>.la</file>
7628           files to prevent linking with those other libraries
7629           using <prgn>libtool</prgn> from failing.
7630         </p>
7631
7632         <p>
7633           If the <file>.la</file> must be included, it should be included
7634           in the development (<tt>-dev</tt>) package, unless the library
7635           will be loaded by <prgn>libtool</prgn>'s <tt>libltdl</tt>
7636           library.  If it is intended for use with <tt>libltdl</tt>,
7637           the <file>.la</file> files must go in the run-time library
7638           package.
7639         </p>
7640
7641         <p>
7642           These requirements for handling of <file>.la</file> files do not
7643           apply to loadable modules or libraries not installed in
7644           directories searched by default by the dynamic linker.  Packages
7645           installing loadable modules will frequently need to install
7646           the <file>.la</file> files alongside the modules so that they
7647           can be loaded by <tt>libltdl</tt>.  <tt>dependency_libs</tt>
7648           does not need to be modified for libraries or modules that are
7649           not installed in directories searched by the dynamic linker by
7650           default and not intended for use by other packages.
7651         </p>
7652
7653         <p>
7654           You must make sure that you use only released versions of
7655           shared libraries to build your packages; otherwise other
7656           users will not be able to run your binaries
7657           properly. Producing source packages that depend on
7658           unreleased compilers is also usually a bad
7659           idea.
7660         </p>
7661       </sect>
7662
7663
7664       <sect>
7665         <heading>Shared libraries</heading>
7666         <p>
7667           This section has moved to <ref id="sharedlibs">.
7668         </p>
7669       </sect>
7670
7671
7672       <sect id="scripts">
7673         <heading>Scripts</heading>
7674
7675         <p>
7676           All command scripts, including the package maintainer
7677           scripts inside the package and used by <prgn>dpkg</prgn>,
7678           should have a <tt>#!</tt> line naming the shell to be used
7679           to interpret them.
7680         </p>
7681
7682         <p>
7683           In the case of Perl scripts this should be
7684           <tt>#!/usr/bin/perl</tt>.
7685         </p>
7686
7687         <p>
7688           When scripts are installed into a directory in the system
7689           PATH, the script name should not include an extension such
7690           as <tt>.sh</tt> or <tt>.pl</tt> that denotes the scripting
7691           language currently used to implement it.
7692         </p>
7693         <p>
7694           Shell scripts (<prgn>sh</prgn> and <prgn>bash</prgn>) other than
7695           <file>init.d</file> scripts should almost certainly start
7696           with <tt>set -e</tt> so that errors are detected.
7697           <file>init.d</file> scripts are something of a special case, due
7698           to how frequently they need to call commands that are allowed to
7699           fail, and it may instead be easier to check the exit status of
7700           commands directly.  See <ref id="writing-init"> for more
7701           information about writing <file>init.d</file> scripts.
7702         </p>
7703         <p>
7704           Every script should use <tt>set -e</tt> or check the exit status
7705           of <em>every</em> command.
7706         </p>
7707         <p>
7708           Scripts may assume that <file>/bin/sh</file> implements the
7709           SUSv3 Shell Command Language<footnote>
7710             Single UNIX Specification, version 3, which is also IEEE
7711             1003.1-2004 (POSIX), and is available on the World Wide Web
7712             from <url id="http://www.unix.org/version3/online.html"
7713                       name="The Open Group"> after free
7714             registration.</footnote>
7715           plus the following additional features not mandated by
7716           SUSv3:<footnote>
7717             These features are in widespread use in the Linux community
7718             and are implemented in all of bash, dash, and ksh, the most
7719             common shells users may wish to use as <file>/bin/sh</file>.
7720           </footnote>
7721           <list>
7722             <item><tt>echo -n</tt>, if implemented as a shell built-in,
7723               must not generate a newline.</item>
7724             <item><tt>test</tt>, if implemented as a shell built-in, must
7725               support <tt>-a</tt> and <tt>-o</tt> as binary logical
7726               operators.</item>
7727             <item><tt>local</tt> to create a scoped variable must be
7728               supported, including listing multiple variables in a single
7729               local command and assigning a value to a variable at the
7730               same time as localizing it.  <tt>local</tt> may or
7731               may not preserve the variable value from an outer scope if
7732               no assignment is present.  Uses such as:
7733 <example compact>
7734 fname () {
7735     local a b c=delta d
7736     # ... use a, b, c, d ...
7737 }
7738 </example>
7739               must be supported and must set the value of <tt>c</tt> to
7740               <tt>delta</tt>.
7741             </item>
7742             <item>The XSI extension to <prgn>kill</prgn> allowing <tt>kill
7743               -<var>signal</var></tt>, where <var>signal</var> is either
7744               the name of a signal or one of the numeric signals listed in
7745               the XSI extension (0, 1, 2, 3, 6, 9, 14, and 15), must be
7746               supported if <prgn>kill</prgn> is implemented as a shell
7747               built-in.
7748             </item>
7749             <item>The XSI extension to <prgn>trap</prgn> allowing numeric
7750               signals must be supported.  In addition to the signal
7751               numbers listed in the extension, which are the same as for
7752               <prgn>kill</prgn> above, 13 (SIGPIPE) must be allowed.
7753             </item>
7754           </list>
7755           If a shell script requires non-SUSv3 features from the shell
7756           interpreter other than those listed above, the appropriate shell
7757           must be specified in the first line of the script (e.g.,
7758           <tt>#!/bin/bash</tt>) and the package must depend on the package
7759           providing the shell (unless the shell package is marked
7760           "Essential", as in the case of <prgn>bash</prgn>).
7761         </p>
7762
7763         <p>
7764           You may wish to restrict your script to SUSv3 features plus the
7765           above set when possible so that it may use <file>/bin/sh</file>
7766           as its interpreter. If your script works with <prgn>dash</prgn>
7767           (originally called <prgn>ash</prgn>), it probably complies with
7768           the above requirements, but if you are in doubt, use
7769           <file>/bin/bash</file>.
7770         </p>
7771
7772         <p>
7773           Perl scripts should check for errors when making any
7774           system calls, including <tt>open</tt>, <tt>print</tt>,
7775           <tt>close</tt>, <tt>rename</tt> and <tt>system</tt>.
7776         </p>
7777
7778         <p>
7779           <prgn>csh</prgn> and <prgn>tcsh</prgn> should be avoided as
7780           scripting languages.  See <em>Csh Programming Considered
7781           Harmful</em>, one of the <tt>comp.unix.*</tt> FAQs, which
7782           can be found at <url id="http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/">.
7783           If an upstream package comes with <prgn>csh</prgn> scripts
7784           then you must make sure that they start with
7785           <tt>#!/bin/csh</tt> and make your package depend on the
7786           <prgn>c-shell</prgn> virtual package.
7787         </p>
7788
7789         <p>
7790           Any scripts which create files in world-writeable
7791           directories (e.g., in <file>/tmp</file>) must use a
7792           mechanism which will fail atomically if a file with the same
7793           name already exists.
7794         </p>
7795
7796         <p>
7797           The Debian base system provides the <prgn>tempfile</prgn>
7798           and <prgn>mktemp</prgn> utilities for use by scripts for
7799           this purpose.
7800         </p>
7801       </sect>
7802
7803
7804       <sect>
7805         <heading>Symbolic links</heading>
7806
7807         <p>
7808           In general, symbolic links within a top-level directory
7809           should be relative, and symbolic links pointing from one
7810           top-level directory into another should be absolute. (A
7811           top-level directory is a sub-directory of the root
7812           directory <file>/</file>.)
7813         </p>
7814
7815         <p>
7816           In addition, symbolic links should be specified as short as
7817           possible, i.e., link targets like <file>foo/../bar</file> are
7818           deprecated.
7819         </p>
7820
7821         <p>
7822           Note that when creating a relative link using
7823           <prgn>ln</prgn> it is not necessary for the target of the
7824           link to exist relative to the working directory you're
7825           running <prgn>ln</prgn> from, nor is it necessary to change
7826           directory to the directory where the link is to be made.
7827           Simply include the string that should appear as the target
7828           of the link (this will be a pathname relative to the
7829           directory in which the link resides) as the first argument
7830           to <prgn>ln</prgn>.
7831         </p>
7832
7833         <p>
7834           For example, in your <prgn>Makefile</prgn> or
7835           <file>debian/rules</file>, you can do things like:
7836           <example compact="compact">
7837 ln -fs gcc $(prefix)/bin/cc
7838 ln -fs gcc debian/tmp/usr/bin/cc
7839 ln -fs ../sbin/sendmail $(prefix)/bin/runq
7840 ln -fs ../sbin/sendmail debian/tmp/usr/bin/runq
7841           </example>
7842         </p>
7843
7844         <p>
7845           A symbolic link pointing to a compressed file should always
7846           have the same file extension as the referenced file. (For
7847           example, if a file <file>foo.gz</file> is referenced by a
7848           symbolic link, the filename of the link has to end with
7849           "<file>.gz</file>" too, as in <file>bar.gz</file>.)
7850         </p>
7851       </sect>
7852
7853       <sect>
7854         <heading>Device files</heading>
7855
7856         <p>
7857           Packages must not include device files or named pipes in the
7858           package file tree.
7859         </p>
7860
7861         <p>
7862           If a package needs any special device files that are not
7863           included in the base system, it must call
7864           <prgn>MAKEDEV</prgn> in the <prgn>postinst</prgn> script,
7865           after notifying the user<footnote>
7866               This notification could be done via a (low-priority)
7867               debconf message, or an echo (printf) statement.
7868           </footnote>.
7869         </p>
7870
7871         <p>
7872           Packages must not remove any device files in the
7873           <prgn>postrm</prgn> or any other script. This is left to the
7874           system administrator.
7875         </p>
7876
7877         <p>
7878           Debian uses the serial devices
7879           <file>/dev/ttyS*</file>. Programs using the old
7880           <file>/dev/cu*</file> devices should be changed to use
7881           <file>/dev/ttyS*</file>.
7882         </p>
7883
7884         <p>
7885           Named pipes needed by the package must be created in
7886           the <prgn>postinst</prgn> script<footnote>
7887             It's better to use <prgn>mkfifo</prgn> rather
7888             than <prgn>mknod</prgn> to create named pipes so that
7889             automated checks for packages incorrectly creating device
7890             files with <prgn>mknod</prgn> won't have false positives.
7891           </footnote> and removed in
7892           the <prgn>prerm</prgn> or <prgn>postrm</prgn> script as
7893           appropriate.
7894         </p>
7895       </sect>
7896
7897       <sect id="config-files">
7898         <heading>Configuration files</heading>
7899
7900         <sect1>
7901           <heading>Definitions</heading>
7902
7903           <p>
7904             <taglist>
7905               <tag>configuration file</tag>
7906               <item>
7907                   A file that affects the operation of a program, or
7908                   provides site- or host-specific information, or
7909                   otherwise customizes the behavior of a program.
7910                   Typically, configuration files are intended to be
7911                   modified by the system administrator (if needed or
7912                   desired) to conform to local policy or to provide
7913                   more useful site-specific behavior.
7914               </item>
7915
7916               <tag><tt>conffile</tt></tag>
7917               <item>
7918                   A file listed in a package's <tt>conffiles</tt>
7919                   file, and is treated specially by <prgn>dpkg</prgn>
7920                   (see <ref id="configdetails">).
7921               </item>
7922             </taglist>
7923           </p>
7924
7925           <p>
7926             The distinction between these two is important; they are
7927             not interchangeable concepts. Almost all
7928             <tt>conffile</tt>s are configuration files, but many
7929             configuration files are not <tt>conffiles</tt>.
7930           </p>
7931
7932           <p>
7933             As noted elsewhere, <file>/etc/init.d</file> scripts,
7934             <file>/etc/default</file> files, scripts installed in
7935             <file>/etc/cron.{hourly,daily,weekly,monthly}</file>, and cron
7936             configuration installed in <file>/etc/cron.d</file> must be
7937             treated as configuration files.  In general, any script that
7938             embeds configuration information is de-facto a configuration
7939             file and should be treated as such.
7940           </p>
7941         </sect1>
7942
7943         <sect1>
7944           <heading>Location</heading>
7945
7946           <p>
7947             Any configuration files created or used by your package
7948             must reside in <file>/etc</file>. If there are several,
7949             consider creating a subdirectory of <file>/etc</file>
7950             named after your package.
7951           </p>
7952
7953           <p>
7954             If your package creates or uses configuration files
7955             outside of <file>/etc</file>, and it is not feasible to modify
7956             the package to use <file>/etc</file> directly, put the files
7957             in <file>/etc</file> and create symbolic links to those files
7958             from the location that the package requires.
7959           </p>
7960         </sect1>
7961
7962         <sect1>
7963           <heading>Behavior</heading>
7964
7965           <p>
7966             Configuration file handling must conform to the following
7967             behavior:
7968             <list compact="compact">
7969               <item>
7970                   local changes must be preserved during a package
7971                   upgrade, and
7972               </item>
7973               <item>
7974                   configuration files must be preserved when the
7975                   package is removed, and only deleted when the
7976                   package is purged.
7977               </item>
7978             </list>
7979             Obsolete configuration files without local changes may be
7980             removed by the package during upgrade.
7981           </p>
7982
7983           <p>
7984             The easy way to achieve this behavior is to make the
7985             configuration file a <tt>conffile</tt>. This is
7986             appropriate only if it is possible to distribute a default
7987             version that will work for most installations, although
7988             some system administrators may choose to modify it. This
7989             implies that the default version will be part of the
7990             package distribution, and must not be modified by the
7991             maintainer scripts during installation (or at any other
7992             time).
7993           </p>
7994
7995           <p>
7996             In order to ensure that local changes are preserved
7997             correctly, no package may contain or make hard links to
7998             conffiles.<footnote>
7999                 Rationale: There are two problems with hard links.
8000                 The first is that some editors break the link while
8001                 editing one of the files, so that the two files may
8002                 unwittingly become unlinked and different.  The second
8003                 is that <prgn>dpkg</prgn> might break the hard link
8004                 while upgrading <tt>conffile</tt>s.
8005             </footnote>
8006           </p>
8007
8008           <p>
8009             The other way to do it is via the maintainer scripts.  In
8010             this case, the configuration file must not be listed as a
8011             <tt>conffile</tt> and must not be part of the package
8012             distribution. If the existence of a file is required for
8013             the package to be sensibly configured it is the
8014             responsibility of the package maintainer to provide
8015             maintainer scripts which correctly create, update and
8016             maintain the file and remove it on purge.  (See <ref
8017             id="maintainerscripts"> for more information.)  These
8018             scripts must be idempotent (i.e., must work correctly if
8019             <prgn>dpkg</prgn> needs to re-run them due to errors
8020             during installation or removal), must cope with all the
8021             variety of ways <prgn>dpkg</prgn> can call maintainer
8022             scripts, must not overwrite or otherwise mangle the user's
8023             configuration without asking, must not ask unnecessary
8024             questions (particularly during upgrades), and must
8025             otherwise be good citizens.
8026           </p>
8027
8028           <p>
8029             The scripts are not required to configure every possible
8030             option for the package, but only those necessary to get
8031             the package running on a given system. Ideally the
8032             sysadmin should not have to do any configuration other
8033             than that done (semi-)automatically by the
8034             <prgn>postinst</prgn> script.
8035           </p>
8036
8037           <p>
8038             A common practice is to create a script called
8039             <file><var>package</var>-configure</file> and have the
8040             package's <prgn>postinst</prgn> call it if and only if the
8041             configuration file does not already exist.  In certain
8042             cases it is useful for there to be an example or template
8043             file which the maintainer scripts use.  Such files should
8044             be in <file>/usr/share/<var>package</var></file> or
8045             <file>/usr/lib/<var>package</var></file> (depending on whether
8046             they are architecture-independent or not).  There should
8047             be symbolic links to them from
8048             <file>/usr/share/doc/<var>package</var>/examples</file> if
8049             they are examples, and should be perfectly ordinary
8050             <prgn>dpkg</prgn>-handled files (<em>not</em>
8051             configuration files).
8052           </p>
8053
8054           <p>
8055             These two styles of configuration file handling must
8056             not be mixed, for that way lies madness:
8057             <prgn>dpkg</prgn> will ask about overwriting the file
8058             every time the package is upgraded.
8059           </p>
8060         </sect1>
8061
8062         <sect1>
8063           <heading>Sharing configuration files</heading>
8064
8065           <p>
8066             Packages which specify the same file as a
8067             <tt>conffile</tt> must be tagged as <em>conflicting</em>
8068             with each other.  (This is an instance of the general rule
8069             about not sharing files.  Note that neither alternatives
8070             nor diversions are likely to be appropriate in this case;
8071             in particular, <prgn>dpkg</prgn> does not handle diverted
8072             <tt>conffile</tt>s well.)
8073           </p>
8074
8075           <p>
8076             The maintainer scripts must not alter a <tt>conffile</tt>
8077             of <em>any</em> package, including the one the scripts
8078             belong to.
8079           </p>
8080
8081           <p>
8082             If two or more packages use the same configuration file
8083             and it is reasonable for both to be installed at the same
8084             time, one of these packages must be defined as
8085             <em>owner</em> of the configuration file, i.e., it will be
8086             the package which handles that file as a configuration
8087             file.  Other packages that use the configuration file must
8088             depend on the owning package if they require the
8089             configuration file to operate. If the other package will
8090             use the configuration file if present, but is capable of
8091             operating without it, no dependency need be declared.
8092           </p>
8093
8094           <p>
8095             If it is desirable for two or more related packages to
8096             share a configuration file <em>and</em> for all of the
8097             related packages to be able to modify that configuration
8098             file, then the following should be done:
8099             <enumlist compact="compact">
8100               <item>
8101                   One of the related packages (the "owning" package)
8102                   will manage the configuration file with maintainer
8103                   scripts as described in the previous section.
8104               </item>
8105               <item>
8106                   The owning package should also provide a program
8107                   that the other packages may use to modify the
8108                   configuration file.
8109               </item>
8110               <item>
8111                   The related packages must use the provided program
8112                   to make any desired modifications to the
8113                   configuration file.  They should either depend on
8114                   the core package to guarantee that the configuration
8115                   modifier program is available or accept gracefully
8116                   that they cannot modify the configuration file if it
8117                   is not.  (This is in addition to the fact that the
8118                   configuration file may not even be present in the
8119                   latter scenario.)
8120               </item>
8121             </enumlist>
8122           </p>
8123
8124           <p>
8125             Sometimes it's appropriate to create a new package which
8126             provides the basic infrastructure for the other packages
8127             and which manages the shared configuration files.  (The
8128             <tt>sgml-base</tt> package is a good example.)
8129           </p>
8130         </sect1>
8131
8132         <sect1>
8133           <heading>User configuration files ("dotfiles")</heading>
8134
8135           <p>
8136             The files in <file>/etc/skel</file> will automatically be
8137             copied into new user accounts by <prgn>adduser</prgn>.
8138             No other program should reference the files in
8139             <file>/etc/skel</file>.
8140           </p>
8141
8142           <p>
8143             Therefore, if a program needs a dotfile to exist in
8144             advance in <file>$HOME</file> to work sensibly, that dotfile
8145             should be installed in <file>/etc/skel</file> and treated as a
8146             configuration file.
8147           </p>
8148
8149           <p>
8150             However, programs that require dotfiles in order to
8151             operate sensibly are a bad thing, unless they do create
8152             the dotfiles themselves automatically.
8153           </p>
8154
8155           <p>
8156             Furthermore, programs should be configured by the Debian
8157             default installation to behave as closely to the upstream
8158             default behavior as possible.
8159           </p>
8160
8161           <p>
8162             Therefore, if a program in a Debian package needs to be
8163             configured in some way in order to operate sensibly, that
8164             should be done using a site-wide configuration file placed
8165             in <file>/etc</file>.  Only if the program doesn't support a
8166             site-wide default configuration and the package maintainer
8167             doesn't have time to add it may a default per-user file be
8168             placed in <file>/etc/skel</file>.
8169           </p>
8170
8171           <p>
8172             <file>/etc/skel</file> should be as empty as we can make it.
8173             This is particularly true because there is no easy (or
8174             necessarily desirable) mechanism for ensuring that the
8175             appropriate dotfiles are copied into the accounts of
8176             existing users when a package is installed.
8177           </p>
8178         </sect1>
8179       </sect>
8180
8181       <sect>
8182         <heading>Log files</heading>
8183         <p>
8184           Log files should usually be named
8185           <file>/var/log/<var>package</var>.log</file>.  If you have many
8186           log files, or need a separate directory for permission
8187           reasons (<file>/var/log</file> is writable only by
8188           <file>root</file>), you should usually create a directory named
8189           <file>/var/log/<var>package</var></file> and place your log
8190           files there.
8191         </p>
8192
8193         <p>
8194           Log files must be rotated occasionally so that they don't grow
8195           indefinitely.  The best way to do this is to install a log
8196           rotation configuration file in the
8197           directory <file>/etc/logrotate.d</file>, normally
8198           named <file>/etc/logrotate.d/<var>package</var></file>, and use
8199           the facilities provided by <prgn>logrotate</prgn>.
8200           <footnote>
8201             <p>
8202               The traditional approach to log files has been to set up
8203               <em>ad hoc</em> log rotation schemes using simple shell
8204               scripts and cron.  While this approach is highly
8205               customizable, it requires quite a lot of sysadmin work.
8206               Even though the original Debian system helped a little
8207               by automatically installing a system which can be used
8208               as a template, this was deemed not enough.
8209             </p>
8210
8211             <p>
8212               The use of <prgn>logrotate</prgn>, a program developed
8213               by Red Hat, is better, as it centralizes log management.
8214               It has both a configuration file
8215               (<file>/etc/logrotate.conf</file>) and a directory where
8216               packages can drop their individual log rotation
8217               configurations (<file>/etc/logrotate.d</file>).
8218             </p>
8219           </footnote>
8220           Here is a good example for a logrotate config
8221           file (for more information see <manref name="logrotate"
8222             section="8">):
8223           <example compact="compact">
8224 /var/log/foo/*.log {
8225     rotate 12
8226     weekly
8227     compress
8228     missingok
8229     postrotate
8230         start-stop-daemon -K -p /var/run/foo.pid -s HUP -x /usr/sbin/foo -q
8231     endscript
8232 }
8233           </example>
8234           This rotates all files under <file>/var/log/foo</file>, saves 12
8235           compressed generations, and tells the daemon to reopen its log
8236           files after the log rotation.  It skips this log rotation
8237           (via <tt>missingok</tt>) if no such log file is present, which
8238           avoids errors if the package is removed but not purged.
8239         </p>
8240
8241         <p>
8242           Log files should be removed when the package is
8243           purged (but not when it is only removed).  This should be
8244           done by the <prgn>postrm</prgn> script when it is called
8245           with the argument <tt>purge</tt> (see <ref
8246           id="removedetails">).
8247         </p>
8248       </sect>
8249
8250       <sect id="permissions-owners">
8251         <heading>Permissions and owners</heading>
8252
8253         <p>
8254           The rules in this section are guidelines for general use.
8255           If necessary you may deviate from the details below.
8256           However, if you do so you must make sure that what is done
8257           is secure and you should try to be as consistent as possible
8258           with the rest of the system.  You should probably also
8259           discuss it on <prgn>debian-devel</prgn> first.
8260         </p>
8261
8262         <p>
8263           Files should be owned by <tt>root:root</tt>, and made
8264           writable only by the owner and universally readable (and
8265           executable, if appropriate), that is mode 644 or 755.
8266         </p>
8267
8268         <p>
8269           Directories should be mode 755 or (for group-writability)
8270           mode 2775.  The ownership of the directory should be
8271           consistent with its mode: if a directory is mode 2775, it
8272           should be owned by the group that needs write access to
8273           it.<footnote>
8274             <p>
8275               When a package is upgraded, and the owner or permissions
8276               of a file included in the package has changed, dpkg
8277               arranges for the ownership and permissions to be
8278               correctly set upon installation. However, this does not
8279               extend to directories; the permissions and ownership of
8280               directories already on the system does not change on
8281               install or upgrade of packages.  This makes sense, since
8282               otherwise common directories like <tt>/usr</tt> would
8283               always be in flux.  To correctly change permissions of a
8284               directory the package owns, explicit action is required,
8285               usually in the <tt>postinst</tt> script. Care must be
8286               taken to handle downgrades as well, in that case.
8287             </p>
8288           </footnote>
8289         </p>
8290
8291         <p>
8292           Control information files should be owned by <tt>root:root</tt>
8293           and either mode 644 (for most files) or mode 755 (for
8294           executables such as <qref id="maintscripts">maintainer
8295           scripts</qref>).
8296         </p>
8297
8298         <p>
8299           Setuid and setgid executables should be mode 4755 or 2755
8300           respectively, and owned by the appropriate user or group.
8301           They should not be made unreadable (modes like 4711 or
8302           2711 or even 4111); doing so achieves no extra security,
8303           because anyone can find the binary in the freely available
8304           Debian package; it is merely inconvenient.  For the same
8305           reason you should not restrict read or execute permissions
8306           on non-set-id executables.
8307         </p>
8308
8309         <p>
8310           Some setuid programs need to be restricted to particular
8311           sets of users, using file permissions.  In this case they
8312           should be owned by the uid to which they are set-id, and by
8313           the group which should be allowed to execute them.  They
8314           should have mode 4754; again there is no point in making
8315           them unreadable to those users who must not be allowed to
8316           execute them.
8317         </p>
8318
8319         <p>
8320           It is possible to arrange that the system administrator can
8321           reconfigure the package to correspond to their local
8322           security policy by changing the permissions on a binary:
8323           they can do this by using <prgn>dpkg-statoverride</prgn>, as
8324           described below.<footnote>
8325             Ordinary files installed by <prgn>dpkg</prgn> (as
8326             opposed to <tt>conffile</tt>s and other similar objects)
8327             normally have their permissions reset to the distributed
8328             permissions when the package is reinstalled.  However,
8329             the use of <prgn>dpkg-statoverride</prgn> overrides this
8330             default behavior.
8331           </footnote>
8332           Another method you should consider is to create a group for
8333           people allowed to use the program(s) and make any setuid
8334           executables executable only by that group.
8335         </p>
8336
8337         <p>
8338           If you need to create a new user or group for your package
8339           there are two possibilities.  Firstly, you may need to
8340           make some files in the binary package be owned by this
8341           user or group, or you may need to compile the user or
8342           group id (rather than just the name) into the binary
8343           (though this latter should be avoided if possible, as in
8344           this case you need a statically allocated id).</p>
8345
8346         <p>
8347           If you need a statically allocated id, you must ask for a
8348           user or group id from the <tt>base-passwd</tt> maintainer,
8349           and must not release the package until you have been
8350           allocated one.  Once you have been allocated one you must
8351           either make the package depend on a version of the
8352           <tt>base-passwd</tt> package with the id present in
8353           <file>/etc/passwd</file> or <file>/etc/group</file>, or arrange for
8354           your package to create the user or group itself with the
8355           correct id (using <tt>adduser</tt>) in its
8356           <prgn>preinst</prgn> or <prgn>postinst</prgn>.  (Doing it in
8357           the <prgn>postinst</prgn> is to be preferred if it is
8358           possible, otherwise a pre-dependency will be needed on the
8359           <tt>adduser</tt> package.)
8360         </p>
8361
8362         <p>
8363           On the other hand, the program might be able to determine
8364           the uid or gid from the user or group name at runtime, so
8365           that a dynamically allocated id can be used.  In this case
8366           you should choose an appropriate user or group name,
8367           discussing this on <prgn>debian-devel</prgn> and checking
8368           with the <package/base-passwd/ maintainer that it is unique and that
8369           they do not wish you to use a statically allocated id
8370           instead.  When this has been checked you must arrange for
8371           your package to create the user or group if necessary using
8372           <prgn>adduser</prgn> in the <prgn>preinst</prgn> or
8373           <prgn>postinst</prgn> script (again, the latter is to be
8374           preferred if it is possible).
8375         </p>
8376
8377         <p>
8378           Note that changing the numeric value of an id associated
8379           with a name is very difficult, and involves searching the
8380           file system for all appropriate files.  You need to think
8381           carefully whether a static or dynamic id is required, since
8382           changing your mind later will cause problems.
8383         </p>
8384
8385         <sect1><heading>The use of <prgn>dpkg-statoverride</prgn></heading>
8386           <p>
8387             This section is not intended as policy, but as a
8388             description of the use of <prgn>dpkg-statoverride</prgn>.
8389           </p>
8390
8391           <p>
8392             If a system administrator wishes to have a file (or
8393             directory or other such thing) installed with owner and
8394             permissions different from those in the distributed Debian
8395             package, they can use the <prgn>dpkg-statoverride</prgn>
8396             program to instruct <prgn>dpkg</prgn> to use the different
8397             settings every time the file is installed.  Thus the
8398             package maintainer should distribute the files with their
8399             normal permissions, and leave it for the system
8400             administrator to make any desired changes.  For example, a
8401             daemon which is normally required to be setuid root, but
8402             in certain situations could be used without being setuid,
8403             should be installed setuid in the <tt>.deb</tt>.  Then the
8404             local system administrator can change this if they wish.
8405             If there are two standard ways of doing it, the package
8406             maintainer can use <tt>debconf</tt> to find out the
8407             preference, and call <prgn>dpkg-statoverride</prgn> in the
8408             maintainer script if necessary to accommodate the system
8409             administrator's choice. Care must be taken during
8410             upgrades to not override an existing setting.
8411           </p>
8412
8413           <p>
8414             Given the above, <prgn>dpkg-statoverride</prgn> is
8415             essentially a tool for system administrators and would not
8416             normally be needed in the maintainer scripts.  There is
8417             one type of situation, though, where calls to
8418             <prgn>dpkg-statoverride</prgn> would be needed in the
8419             maintainer scripts, and that involves packages which use
8420             dynamically allocated user or group ids.  In such a
8421             situation, something like the following idiom can be very
8422             helpful in the package's <prgn>postinst</prgn>, where
8423             <tt>sysuser</tt> is a dynamically allocated id:
8424             <example>
8425 for i in /usr/bin/foo /usr/sbin/bar
8426 do
8427   # only do something when no setting exists
8428   if ! dpkg-statoverride --list $i >/dev/null 2>&1
8429   then
8430     #include: debconf processing, question about foo and bar
8431     if [ "$RET" = "true" ] ; then
8432       dpkg-statoverride --update --add sysuser root 4755 $i
8433     fi
8434   fi
8435 done
8436             </example>
8437             The corresponding code to remove the override when the package
8438             is purged would be:
8439             <example>
8440 for i in /usr/bin/foo /usr/sbin/bar
8441 do
8442   if dpkg-statoverride --list $i >/dev/null 2>&1
8443   then
8444     dpkg-statoverride --remove $i
8445   fi
8446 done
8447             </example>
8448           </p>
8449         </sect1>
8450       </sect>
8451     </chapt>
8452
8453
8454     <chapt id="customized-programs">
8455       <heading>Customized programs</heading>
8456
8457       <sect id="arch-spec">
8458         <heading>Architecture specification strings</heading>
8459
8460         <p>
8461           If a program needs to specify an <em>architecture specification
8462           string</em> in some place, it should select one of the strings
8463           provided by <tt>dpkg-architecture -L</tt>. The strings are in
8464           the format <tt><var>os</var>-<var>arch</var></tt>, though the OS
8465           part is sometimes elided, as when the OS is Linux.
8466         </p>
8467
8468         <p>
8469           Note that we don't want to use
8470           <tt><var>arch</var>-debian-linux</tt> to apply to the rule
8471           <tt><var>architecture</var>-<var>vendor</var>-<var>os</var></tt>
8472           since this would make our programs incompatible with other
8473           Linux distributions.  We also don't use something like
8474           <tt><var>arch</var>-unknown-linux</tt>, since the
8475           <tt>unknown</tt> does not look very good.
8476         </p>
8477
8478         <sect1 id="arch-wildcard-spec">
8479           <heading>Architecture wildcards</heading>
8480
8481           <p>
8482             A package may specify an architecture wildcard. Architecture
8483             wildcards are in the format <tt>any</tt> (which matches every
8484             architecture), <tt><var>os</var></tt>-any, or
8485             any-<tt><var>cpu</var></tt>. <footnote>
8486               Internally, the package system normalizes the GNU triplets
8487               and the Debian arches into Debian arch triplets (which are
8488               kind of inverted GNU triplets), with the first component of
8489               the triplet representing the libc and ABI in use, and then
8490               does matching against those triplets.  However, such
8491               triplets are an internal implementation detail that should
8492               not be used by packages directly.  The libc and ABI portion
8493               is handled internally by the package system based on
8494               the <var>os</var> and <var>cpu</var>.
8495             </footnote>
8496           </p>
8497         </sect1>
8498       </sect>
8499
8500       <sect>
8501         <heading>Daemons</heading>
8502
8503         <p>
8504           The configuration files <file>/etc/services</file>,
8505           <file>/etc/protocols</file>, and <file>/etc/rpc</file> are managed
8506           by the <prgn>netbase</prgn> package and must not be modified
8507           by other packages.
8508         </p>
8509
8510         <p>
8511           If a package requires a new entry in one of these files, the
8512           maintainer should get in contact with the
8513           <prgn>netbase</prgn> maintainer, who will add the entries
8514           and release a new version of the <prgn>netbase</prgn>
8515           package.
8516         </p>
8517
8518         <p>
8519           The configuration file <file>/etc/inetd.conf</file> must not be
8520           modified by the package's scripts except via the
8521           <prgn>update-inetd</prgn> script or the
8522           <file>DebianNet.pm</file> Perl module.  See their documentation
8523           for details on how to add entries.
8524         </p>
8525
8526         <p>
8527           If a package wants to install an example entry into
8528           <file>/etc/inetd.conf</file>, the entry must be preceded with
8529           exactly one hash character (<tt>#</tt>). Such lines are
8530           treated as "commented out by user" by the
8531           <prgn>update-inetd</prgn> script and are not changed or
8532           activated during package updates.
8533         </p>
8534       </sect>
8535
8536       <sect>
8537         <heading>Using pseudo-ttys and modifying wtmp, utmp and
8538         lastlog</heading>
8539
8540         <p>
8541           Some programs need to create pseudo-ttys. This should be done
8542           using Unix98 ptys if the C library supports it. The resulting
8543           program must not be installed setuid root, unless that
8544           is required for other functionality.
8545         </p>
8546
8547         <p>
8548           The files <file>/var/run/utmp</file>, <file>/var/log/wtmp</file> and
8549           <file>/var/log/lastlog</file> must be installed writable by
8550           group <tt>utmp</tt>.  Programs which need to modify those
8551           files must be installed setgid <tt>utmp</tt>.
8552         </p>
8553       </sect>
8554
8555       <sect>
8556         <heading>Editors and pagers</heading>
8557
8558         <p>
8559           Some programs have the ability to launch an editor or pager
8560           program to edit or display a text document.  Since there are
8561           lots of different editors and pagers available in the Debian
8562           distribution, the system administrator and each user should
8563           have the possibility to choose their preferred editor and
8564           pager.
8565         </p>
8566
8567         <p>
8568           In addition, every program should choose a good default
8569           editor/pager if none is selected by the user or system
8570           administrator.
8571         </p>
8572
8573         <p>
8574           Thus, every program that launches an editor or pager must
8575           use the EDITOR or PAGER environment variable to determine
8576           the editor or pager the user wishes to use.  If these
8577           variables are not set, the programs <file>/usr/bin/editor</file>
8578           and <file>/usr/bin/pager</file> should be used, respectively.
8579         </p>
8580
8581         <p>
8582           These two files are managed through the <prgn>dpkg</prgn>
8583           "alternatives" mechanism.  Every package providing an editor or
8584           pager must call the <prgn>update-alternatives</prgn> script to
8585           register as an alternative for <file>/usr/bin/editor</file>
8586           or <file>/usr/bin/pager</file> as appropriate.  The alternative
8587           should have a slave alternative
8588           for <file>/usr/share/man/man1/editor.1.gz</file>
8589           or <file>/usr/share/man/man1/pager.1.gz</file> pointing to the
8590           corresponding manual page.
8591         </p>
8592
8593         <p>
8594           If it is very hard to adapt a program to make use of the
8595           EDITOR or PAGER variables, that program may be configured to
8596           use <file>/usr/bin/sensible-editor</file> and
8597           <file>/usr/bin/sensible-pager</file> as the editor or pager
8598           program respectively.  These are two scripts provided in the
8599           <package>sensible-utils</package> package that check the EDITOR
8600           and PAGER variables and launch the appropriate program, and fall
8601           back to <file>/usr/bin/editor</file>
8602           and <file>/usr/bin/pager</file> if the variable is not set.
8603         </p>
8604
8605         <p>
8606           A program may also use the VISUAL environment variable to
8607           determine the user's choice of editor.  If it exists, it
8608           should take precedence over EDITOR.  This is in fact what
8609           <file>/usr/bin/sensible-editor</file> does.
8610         </p>
8611
8612         <p>
8613           It is not required for a package to depend on
8614           <tt>editor</tt> and <tt>pager</tt>, nor is it required for a
8615           package to provide such virtual packages.<footnote>
8616               The Debian base system already provides an editor and a
8617               pager program.
8618           </footnote>
8619         </p>
8620       </sect>
8621
8622       <sect id="web-appl">
8623         <heading>Web servers and applications</heading>
8624
8625         <p>
8626           This section describes the locations and URLs that should
8627           be used by all web servers and web applications in the
8628           Debian system.
8629         </p>
8630
8631         <p>
8632           <enumlist>
8633             <item>
8634                 Cgi-bin executable files are installed in the
8635                 directory
8636                 <example compact="compact">
8637 /usr/lib/cgi-bin/<var>cgi-bin-name</var>
8638                 </example>
8639                 or a subdirectory of that directory, and should be
8640                 referred to as
8641                 <example compact="compact">
8642 http://localhost/cgi-bin/<var>cgi-bin-name</var>
8643                 </example>
8644                 (possibly with a subdirectory name
8645                 before <var>cgi-bin-name</var>).
8646             </item>
8647
8648             <item>
8649               <p>Access to HTML documents</p>
8650
8651               <p>
8652                 HTML documents for a package are stored in
8653                 <file>/usr/share/doc/<var>package</var></file>
8654                 and can be referred to as
8655                 <example compact="compact">
8656 http://localhost/doc/<var>package</var>/<var>filename</var>
8657                 </example>
8658               </p>
8659
8660               <p>
8661                 The web server should restrict access to the document
8662                 tree so that only clients on the same host can read
8663                 the documents. If the web server does not support such
8664                 access controls, then it should not provide access at
8665                 all, or ask about providing access during installation.
8666               </p>
8667             </item>
8668
8669             <item>
8670               <p>Access to images</p>
8671               <p>
8672                 It is recommended that images for a package be stored
8673                 in <tt>/usr/share/images/<var>package</var></tt> and
8674                 may be referred to through an alias <tt>/images/</tt>
8675                 as
8676                 <example>
8677                   http://localhost/images/&lt;package&gt;/&lt;filename&gt;     
8678                 </example>
8679                 
8680               </p>
8681             </item>
8682
8683             <item>
8684               <p>Web Document Root</p>
8685
8686               <p>
8687                 Web Applications should try to avoid storing files in
8688                 the Web Document Root.  Instead they should use the
8689                 /usr/share/doc/<var>package</var> directory for
8690                 documents and register the Web Application via the
8691                 <package>doc-base</package> package.  If access to the
8692                 web document root is unavoidable then use
8693                 <example compact="compact">
8694 /var/www
8695                 </example>
8696                 as the Document Root.  This might be just a symbolic
8697                 link to the location where the system administrator
8698                 has put the real document root.
8699               </p>
8700             </item>
8701             <item><p>Providing httpd and/or httpd-cgi</p>
8702               <p>
8703                 All web servers should provide the virtual package
8704                 <tt>httpd</tt>. If a web server has CGI support it should
8705                 provide <tt>httpd-cgi</tt> additionally.
8706               </p>
8707               <p>
8708                 All web applications which do not contain CGI scripts should
8709                 depend on <tt>httpd</tt>, all those web applications which
8710                 <tt>do</tt> contain CGI scripts, should depend on
8711                 <tt>httpd-cgi</tt>.
8712               </p>
8713             </item>
8714           </enumlist>
8715         </p>
8716       </sect>
8717
8718       <sect id="mail-transport-agents">
8719         <heading>Mail transport, delivery and user agents</heading>
8720
8721         <p>
8722           Debian packages which process electronic mail, whether mail
8723           user agents (MUAs) or mail transport agents (MTAs), must
8724           ensure that they are compatible with the configuration
8725           decisions below.  Failure to do this may result in lost
8726           mail, broken <tt>From:</tt> lines, and other serious brain
8727           damage!
8728         </p>
8729
8730         <p>
8731           The mail spool is <file>/var/mail</file> and the interface to
8732           send a mail message is <file>/usr/sbin/sendmail</file> (as per
8733           the FHS).  On older systems, the mail spool may be
8734           physically located in <file>/var/spool/mail</file>, but all
8735           access to the mail spool should be via the
8736           <file>/var/mail</file> symlink.  The mail spool is part of the
8737           base system and not part of the MTA package.
8738         </p>
8739
8740         <p>
8741           All Debian MUAs, MTAs, MDAs and other mailbox accessing
8742           programs (such as IMAP daemons) must lock the mailbox in an
8743           NFS-safe way. This means that <tt>fcntl()</tt> locking must
8744           be combined with dot locking.  To avoid deadlocks, a program
8745           should use <tt>fcntl()</tt> first and dot locking after
8746           this, or alternatively implement the two locking methods in
8747           a non blocking way<footnote>
8748               If it is not possible to establish both locks, the
8749               system shouldn't wait for the second lock to be
8750               established, but remove the first lock, wait a (random)
8751               time, and start over locking again.
8752           </footnote>. Using the functions <tt>maillock</tt> and
8753           <tt>mailunlock</tt> provided by the
8754           <tt>liblockfile*</tt><footnote>
8755               You will need to depend on <tt>liblockfile1 (&gt;&gt;1.01)</tt>
8756               to use these functions.
8757           </footnote> packages is the recommended way to realize this.
8758         </p>
8759
8760         <p>
8761           Mailboxes are generally either mode 600 and owned by
8762           <var>user</var> or mode 660 and owned by
8763           <tt><var>user</var>:mail</tt><footnote>
8764             There are two traditional permission schemes for mail spools:
8765             mode 600 with all mail delivery done by processes running as
8766             the destination user, or mode 660 and owned by group mail with
8767             mail delivery done by a process running as a system user in
8768             group mail.  Historically, Debian required mode 660 mail
8769             spools to enable the latter model, but that model has become
8770             increasingly uncommon and the principle of least privilege
8771             indicates that mail systems that use the first model should
8772             use permissions of 600.  If delivery to programs is permitted,
8773             it's easier to keep the mail system secure if the delivery
8774             agent runs as the destination user.  Debian Policy therefore
8775             permits either scheme.
8776           </footnote>. The local system administrator may choose a
8777           different permission scheme; packages should not make
8778           assumptions about the permission and ownership of mailboxes
8779           unless required (such as when creating a new mailbox).  A MUA
8780           may remove a mailbox (unless it has nonstandard permissions) in
8781           which case the MTA or another MUA must recreate it if needed.
8782         </p>
8783
8784         <p>
8785           The mail spool is 2775 <tt>root:mail</tt>, and MUAs should
8786           be setgid mail to do the locking mentioned above (and
8787           must obviously avoid accessing other users' mailboxes
8788           using this privilege).</p>
8789
8790         <p>
8791           <file>/etc/aliases</file> is the source file for the system mail
8792           aliases (e.g., postmaster, usenet, etc.), it is the one
8793           which the sysadmin and <prgn>postinst</prgn> scripts may
8794           edit.  After <file>/etc/aliases</file> is edited the program or
8795           human editing it must call <prgn>newaliases</prgn>.  All MTA
8796           packages must come with a <prgn>newaliases</prgn> program,
8797           even if it does nothing, but older MTA packages did not do
8798           this so programs should not fail if <prgn>newaliases</prgn>
8799           cannot be found.  Note that because of this, all MTA
8800           packages must have <tt>Provides</tt>, <tt>Conflicts</tt> and
8801           <tt>Replaces: mail-transport-agent</tt> control fields.
8802         </p>
8803
8804         <p>
8805           The convention of writing <tt>forward to
8806             <var>address</var></tt> in the mailbox itself is not
8807           supported.  Use a <tt>.forward</tt> file instead.</p>
8808
8809         <p>
8810           The <prgn>rmail</prgn> program used by UUCP
8811           for incoming mail should be  <file>/usr/sbin/rmail</file>.
8812           Likewise, <prgn>rsmtp</prgn>, for receiving
8813           batch-SMTP-over-UUCP, should be <file>/usr/sbin/rsmtp</file> if it
8814           is supported.</p>
8815
8816         <p>
8817           If your package needs to know what hostname to use on (for
8818           example) outgoing news and mail messages which are generated
8819           locally, you should use the file <file>/etc/mailname</file>.  It
8820           will contain the portion after the username and <tt>@</tt>
8821           (at) sign for email addresses of users on the machine
8822           (followed by a newline).
8823         </p>
8824
8825         <p>
8826           Such a package should check for the existence of this file
8827           when it is being configured.  If it exists, it should be
8828           used without comment, although an MTA's configuration script
8829           may wish to prompt the user even if it finds that this file
8830           exists.  If the file does not exist, the package should
8831           prompt the user for the value (preferably using
8832           <prgn>debconf</prgn>) and store it in <file>/etc/mailname</file>
8833           as well as using it in the package's configuration.  The
8834           prompt should make it clear that the name will not just be
8835           used by that package.  For example, in this situation the
8836           <tt>inn</tt> package could say something like:
8837           <example compact="compact">
8838 Please enter the "mail name" of your system.  This is the
8839 hostname portion of the address to be shown on outgoing
8840 news and mail messages.  The default is
8841 <var>syshostname</var>, your system's host name.  Mail
8842 name ["<var>syshostname</var>"]:
8843           </example>
8844           where <var>syshostname</var> is the output of <tt>hostname
8845             --fqdn</tt>.
8846         </p>
8847       </sect>
8848
8849       <sect>
8850         <heading>News system configuration</heading>
8851
8852         <p>
8853           All the configuration files related to the NNTP (news)
8854           servers and clients should be located under
8855           <file>/etc/news</file>.</p>
8856
8857         <p>
8858           There are some configuration issues that apply to a number
8859           of news clients and server packages on the machine. These
8860           are:
8861
8862           <taglist>
8863             <tag><file>/etc/news/organization</file></tag>
8864             <item>
8865                 A string which should appear as the
8866                 organization header for all messages posted
8867                 by NNTP clients on the machine
8868             </item>
8869
8870             <tag><file>/etc/news/server</file></tag>
8871             <item>
8872                 Contains the FQDN of the upstream NNTP
8873                 server, or localhost if the local machine is
8874                 an NNTP server.
8875             </item>
8876           </taglist>
8877
8878           Other global files may be added as required for cross-package news
8879           configuration.
8880         </p>
8881       </sect>
8882
8883
8884       <sect>
8885         <heading>Programs for the X Window System</heading>
8886
8887         <sect1>
8888           <heading>Providing X support and package priorities</heading>
8889
8890           <p>
8891             Programs that can be configured with support for the X
8892             Window System must be configured to do so and must declare
8893             any package dependencies necessary to satisfy their
8894             runtime requirements when using the X Window System.  If
8895             such a package is of higher priority than the X packages
8896             on which it depends, it is required that either the
8897             X-specific components be split into a separate package, or
8898             that an alternative version of the package, which includes
8899             X support, be provided, or that the package's priority be
8900             lowered.
8901           </p>
8902         </sect1>
8903
8904         <sect1>
8905           <heading>Packages providing an X server</heading>
8906
8907           <p>
8908             Packages that provide an X server that, directly or
8909             indirectly, communicates with real input and display
8910             hardware should declare in their <tt>Provides</tt> control
8911             field that they provide the virtual
8912             package <tt>xserver</tt>.<footnote>
8913                 This implements current practice, and provides an
8914                 actual policy for usage of the <tt>xserver</tt>
8915                 virtual package which appears in the virtual packages
8916                 list.  In a nutshell, X servers that interface
8917                 directly with the display and input hardware or via
8918                 another subsystem (e.g., GGI) should provide
8919                 <tt>xserver</tt>.  Things like <tt>Xvfb</tt>,
8920                 <tt>Xnest</tt>, and <tt>Xprt</tt> should not.
8921             </footnote>
8922           </p>
8923         </sect1>
8924
8925         <sect1>
8926           <heading>Packages providing a terminal emulator</heading>
8927
8928           <p>
8929             Packages that provide a terminal emulator for the X Window
8930             System which meet the criteria listed below should declare in
8931             their <tt>Provides</tt> control field that they provide the
8932             virtual package <tt>x-terminal-emulator</tt>.  They should
8933             also register themselves as an alternative for
8934             <file>/usr/bin/x-terminal-emulator</file>, with a priority of
8935             20.  That alternative should have a slave alternative
8936             for <file>/usr/share/man/man1/x-terminal-emulator.1.gz</file>
8937             pointing to the corresponding manual page.
8938           </p>
8939
8940           <p>
8941             To be an <tt>x-terminal-emulator</tt>, a program must:
8942             <list compact="compact">
8943               <item>
8944                   Be able to emulate a DEC VT100 terminal, or a
8945                   compatible terminal.
8946               </item>
8947
8948               <item>
8949                   Support the command-line option <tt>-e
8950                     <var>command</var></tt>, which creates a new
8951                   terminal window<footnote>
8952                       "New terminal window" does not necessarily mean
8953                       a new top-level X window directly parented by
8954                       the window manager; it could, if the terminal
8955                       emulator application were so coded, be a new
8956                       "view" in a multiple-document interface (MDI).
8957                   </footnote>
8958                   and runs the specified <var>command</var>,
8959                   interpreting the entirety of the rest of the command
8960                   line as a command to pass straight to exec, in the
8961                   manner that <tt>xterm</tt> does.
8962               </item>
8963
8964               <item>
8965                   Support the command-line option <tt>-T
8966                     <var>title</var></tt>, which creates a new terminal
8967                   window with the window title <var>title</var>.
8968               </item>
8969             </list>
8970           </p>
8971         </sect1>
8972
8973         <sect1>
8974           <heading>Packages providing a window manager</heading>
8975
8976           <p>
8977             Packages that provide a window manager should declare in
8978             their <tt>Provides</tt> control field that they provide the
8979             virtual package <tt>x-window-manager</tt>.  They should also
8980             register themselves as an alternative for
8981             <file>/usr/bin/x-window-manager</file>, with a priority
8982             calculated as follows:
8983             <list compact="compact">
8984               <item>
8985                   Start with a priority of 20.
8986               </item>
8987
8988               <item>
8989                   If the window manager supports the Debian menu
8990                   system, add 20 points if this support is available
8991                   in the package's default configuration (i.e., no
8992                   configuration files belonging to the system or user
8993                   have to be edited to activate the feature); if
8994                   configuration files must be modified, add only 10
8995                   points.
8996                 </p>
8997               </item>
8998
8999               <item>
9000                   If the window manager complies with <url
9001                     id="http://www.freedesktop.org/Standards/wm-spec"
9002                     name="The Window Manager Specification Project">,
9003                   written by the <url id="http://www.freedesktop.org/"
9004                     name="Free Desktop Group">, add 40 points.
9005               </item>
9006
9007               <item>
9008                   If the window manager permits the X session to be
9009                   restarted using a <em>different</em> window manager
9010                   (without killing the X server) in its default
9011                   configuration, add 10 points; otherwise add none.
9012               </item>
9013             </list>
9014             That alternative should have a slave alternative
9015             for <file>/usr/share/man/man1/x-window-manager.1.gz</file>
9016             pointing to the corresponding manual page.
9017           </p>
9018         </sect1>
9019
9020         <sect1>
9021           <heading>Packages providing fonts</heading>
9022
9023           <p>
9024             Packages that provide fonts for the X Window
9025             System<footnote>
9026                 For the purposes of Debian Policy, a "font for the X
9027                 Window System" is one which is accessed via X protocol
9028                 requests.  Fonts for the Linux console, for PostScript
9029                 renderer, or any other purpose, do not fit this
9030                 definition.  Any tool which makes such fonts available
9031                 to the X Window System, however, must abide by this
9032                 font policy.
9033             </footnote>
9034             must do a number of things to ensure that they are both
9035             available without modification of the X or font server
9036             configuration, and that they do not corrupt files used by
9037             other font packages to register information about
9038             themselves.
9039             <enumlist>
9040               <item>
9041                   Fonts of any type supported by the X Window System
9042                   must be in a separate binary package from any
9043                   executables, libraries, or documentation (except
9044                   that specific to the fonts shipped, such as their
9045                   license information).  If one or more of the fonts
9046                   so packaged are necessary for proper operation of
9047                   the package with which they are associated the font
9048                   package may be Recommended; if the fonts merely
9049                   provide an enhancement, a Suggests relationship may
9050                   be used.  Packages must not Depend on font
9051                   packages.<footnote>
9052                       This is because the X server may retrieve fonts
9053                       from the local file system or over the network
9054                       from an X font server; the Debian package system
9055                       is empowered to deal only with the local
9056                       file system.
9057                   </footnote>
9058               </item>
9059
9060               <item>
9061                   BDF fonts must be converted to PCF fonts with the
9062                   <prgn>bdftopcf</prgn> utility (available in the
9063                   <tt>xfonts-utils</tt> package, <prgn>gzip</prgn>ped, and
9064                   placed in a directory that corresponds to their
9065                   resolution:
9066                   <list compact="compact">
9067                     <item>
9068                         100 dpi fonts must be placed in
9069                         <file>/usr/share/fonts/X11/100dpi/</file>.
9070                     </item>
9071
9072                     <item>
9073                         75 dpi fonts must be placed in
9074                         <file>/usr/share/fonts/X11/75dpi/</file>.
9075                     </item>
9076
9077                     <item>
9078                         Character-cell fonts, cursor fonts, and other
9079                         low-resolution fonts must be placed in
9080                         <file>/usr/share/fonts/X11/misc/</file>.
9081                     </item>
9082                   </list>
9083               </item>
9084
9085               <item>
9086                   Type 1 fonts must be placed in
9087                   <file>/usr/share/fonts/X11/Type1/</file>.  If font
9088                   metric files are available, they must be placed here
9089                   as well.
9090               </item>
9091
9092               <item>
9093                   Subdirectories of <file>/usr/share/fonts/X11/</file>
9094                   other than those listed above must be neither
9095                   created nor used.  (The <file>PEX</file>, <file>CID</file>,
9096                   <file>Speedo</file>, and <file>cyrillic</file> directories
9097                   are excepted for historical reasons, but installation of
9098                   files into these directories remains discouraged.)
9099               </item>
9100
9101               <item>
9102                   Font packages may, instead of placing files directly
9103                   in the X font directories listed above, provide
9104                   symbolic links in that font directory pointing to
9105                   the files' actual location in the filesystem.  Such
9106                   a location must comply with the FHS.
9107               </item>
9108
9109               <item>
9110                   Font packages should not contain both 75dpi and
9111                   100dpi versions of a font.  If both are available,
9112                   they should be provided in separate binary packages
9113                   with <tt>-75dpi</tt> or <tt>-100dpi</tt> appended to
9114                   the names of the packages containing the
9115                   corresponding fonts.
9116               </item>
9117
9118               <item>
9119                   Fonts destined for the <file>misc</file> subdirectory
9120                   should not be included in the same package as 75dpi
9121                   or 100dpi fonts; instead, they should be provided in
9122                   a separate package with <tt>-misc</tt> appended to
9123                   its name.
9124               </item>
9125
9126               <item>
9127                   Font packages must not provide the files
9128                   <file>fonts.dir</file>, <file>fonts.alias</file>, or
9129                   <file>fonts.scale</file> in a font directory:
9130                   <list>
9131                     <item>
9132                         <file>fonts.dir</file> files must not be provided at all.
9133                     </item>
9134
9135                     <item>
9136                         <file>fonts.alias</file> and <file>fonts.scale</file>
9137                         files, if needed, should be provided in the
9138                         directory
9139                         <file>/etc/X11/fonts/<var>fontdir</var>/<var>package</var>.<var>extension</var></file>,
9140                         where <var>fontdir</var> is the name of the
9141                         subdirectory of
9142                         <file>/usr/share/fonts/X11/</file> where the
9143                         package's corresponding fonts are stored
9144                         (e.g., <tt>75dpi</tt> or <tt>misc</tt>),
9145                         <var>package</var> is the name of the package
9146                         that provides these fonts, and
9147                         <var>extension</var> is either <tt>scale</tt>
9148                         or <tt>alias</tt>, whichever corresponds to
9149                         the file contents.
9150                     </item>
9151                   </list>
9152               </item>
9153
9154               <item>
9155                   Font packages must declare a dependency on
9156                   <tt>xfonts-utils</tt> in their <tt>Depends</tt>
9157                   or <tt>Pre-Depends</tt> control field.
9158               </item>
9159
9160               <item>
9161                   Font packages that provide one or more
9162                   <file>fonts.scale</file> files as described above must
9163                   invoke <prgn>update-fonts-scale</prgn> on each
9164                   directory into which they installed fonts
9165                   <em>before</em> invoking
9166                   <prgn>update-fonts-dir</prgn> on that directory.
9167                   This invocation must occur in both the
9168                   <prgn>postinst</prgn> (for all arguments) and
9169                   <prgn>postrm</prgn> (for all arguments except
9170                   <tt>upgrade</tt>) scripts.
9171               </item>
9172
9173               <item>
9174                   Font packages that provide one or more
9175                   <file>fonts.alias</file> files as described above must
9176                   invoke <prgn>update-fonts-alias</prgn> on each
9177                   directory into which they installed fonts.  This
9178                   invocation must occur in both the
9179                   <prgn>postinst</prgn> (for all arguments) and
9180                   <prgn>postrm</prgn> (for all arguments except
9181                   <tt>upgrade</tt>) scripts.
9182               </item>
9183
9184               <item>
9185                   Font packages must invoke
9186                   <prgn>update-fonts-dir</prgn> on each directory into
9187                   which they installed fonts.  This invocation must
9188                   occur in both the <prgn>postinst</prgn> (for all
9189                   arguments) and <prgn>postrm</prgn> (for all
9190                   arguments except <tt>upgrade</tt>) scripts.
9191               </item>
9192
9193               <item>
9194                   Font packages must not provide alias names for the
9195                   fonts they include which collide with alias names
9196                   already in use by fonts already packaged.
9197               </item>
9198
9199               <item>
9200                   Font packages must not provide fonts with the same
9201                   XLFD registry name as another font already packaged.
9202               </item>
9203             </enumlist>
9204           </p>
9205         </sect1>
9206
9207         <sect1 id="appdefaults">
9208           <heading>Application defaults files</heading>
9209
9210           <p>
9211             Application defaults files must be installed in the
9212             directory <file>/etc/X11/app-defaults/</file> (use of a
9213             localized subdirectory of <file>/etc/X11/</file> as described
9214             in the <em>X Toolkit Intrinsics - C Language
9215             Interface</em> manual is also permitted).  They must be
9216             registered as <tt>conffile</tt>s or handled as
9217             configuration files.
9218           </p>
9219
9220           <p>
9221             Customization of programs' X resources may also be
9222             supported with the provision of a file with the same name
9223             as that of the package placed in
9224             the <file>/etc/X11/Xresources/</file> directory, which
9225             must be registered as a <tt>conffile</tt> or handled as a
9226             configuration file.<footnote>
9227                 Note that this mechanism is not the same as using
9228                 app-defaults; app-defaults are tied to the client
9229                 binary on the local file system, whereas X resources
9230                 are stored in the X server and affect all connecting
9231                 clients.
9232             </footnote>
9233           </p>
9234         </sect1>
9235
9236         <sect1>
9237           <heading>Installation directory issues</heading>
9238
9239           <p>
9240             Historically, packages using the X Window System used a
9241             separate set of installation directories from other packages.
9242             This practice has been discontinued and packages using the X
9243             Window System should now generally be installed in the same
9244             directories as any other package.  Specifically, packages must
9245             not install files under the <file>/usr/X11R6/</file> directory
9246             and the <file>/usr/X11R6/</file> directory hierarchy should be
9247             regarded as obsolete.
9248           </p>
9249
9250           <p>
9251             Include files previously installed under
9252             <file>/usr/X11R6/include/X11/</file> should be installed into
9253             <file>/usr/include/X11/</file>.  For files previously
9254             installed into subdirectories of
9255             <file>/usr/X11R6/lib/X11/</file>, package maintainers should
9256             determine if subdirectories of <file>/usr/lib/</file> and
9257             <file>/usr/share/</file> can be used.  If not, a subdirectory
9258             of <file>/usr/lib/X11/</file> should be used.
9259           </p>
9260
9261           <p>
9262             Configuration files for window, display, or session managers
9263             or other applications that are tightly integrated with the X
9264             Window System may be placed in a subdirectory
9265             of <file>/etc/X11/</file> corresponding to the package name.
9266             Other X Window System applications should use
9267             the <file>/etc/</file> directory unless otherwise mandated by
9268             policy (such as for <ref id="appdefaults">).
9269           </p>
9270         </sect1>
9271
9272         <sect1>
9273           <heading>The OSF/Motif and OpenMotif libraries</heading>
9274
9275           <p>
9276             <em>Programs that require the non-DFSG-compliant OSF/Motif or
9277               OpenMotif libraries</em><footnote>
9278                 OSF/Motif and OpenMotif are collectively referred to as
9279                 "Motif" in this policy document.
9280             </footnote>
9281             should be compiled against and tested with LessTif (a free
9282             re-implementation of Motif) instead.  If the maintainer
9283             judges that the program or programs do not work
9284             sufficiently well with LessTif to be distributed and
9285             supported, but do so when compiled against Motif, then two
9286             versions of the package should be created; one linked
9287             statically against Motif and with <tt>-smotif</tt>
9288             appended to the package name, and one linked dynamically
9289             against Motif and with <tt>-dmotif</tt> appended to the
9290             package name.
9291           </p>
9292
9293           <p>
9294             Both Motif-linked versions are dependent
9295             upon non-DFSG-compliant software and thus cannot be
9296             uploaded to the <em>main</em> distribution; if the
9297             software is itself DFSG-compliant it may be uploaded to
9298             the <em>contrib</em> distribution.  While known existing
9299             versions of Motif permit unlimited redistribution of
9300             binaries linked against the library (whether statically or
9301             dynamically), it is the package maintainer's
9302             responsibility to determine whether this is permitted by
9303             the license of the copy of Motif in their possession.
9304           </p>
9305         </sect1>
9306       </sect>
9307
9308       <sect id="perl">
9309         <heading>Perl programs and modules</heading>
9310
9311         <p>
9312           Perl programs and modules should follow the current Perl policy.
9313         </p>
9314
9315         <p>
9316           The Perl policy can be found in the <tt>perl-policy</tt>
9317           files in the <tt>debian-policy</tt> package.
9318           It is also available from the Debian web mirrors at
9319           <tt><url name="/doc/packaging-manuals/perl-policy/"
9320                 id="http://www.debian.org/doc/packaging-manuals/perl-policy/"></tt>.
9321         </p>
9322       </sect>
9323
9324       <sect id="emacs">
9325         <heading>Emacs lisp programs</heading>
9326
9327         <p>
9328           Please refer to the "Debian Emacs Policy" for details of how to
9329           package emacs lisp programs.
9330         </p>
9331
9332         <p>
9333           The Emacs policy is available in
9334           <file>debian-emacs-policy.gz</file> of the
9335           <package>emacsen-common</package> package.
9336           It is also available from the Debian web mirrors at
9337           <tt><url name="/doc/packaging-manuals/debian-emacs-policy"
9338                 id="http://www.debian.org/doc/packaging-manuals/debian-emacs-policy"></tt>.
9339         </p>
9340       </sect>
9341
9342       <sect>
9343         <heading>Games</heading>
9344
9345         <p>
9346           The permissions on <file>/var/games</file> are mode 755, owner
9347           <tt>root</tt> and group <tt>root</tt>.
9348         </p>
9349
9350         <p>
9351           Each game decides on its own security policy.</p>
9352
9353         <p>
9354           Games which require protected, privileged access to
9355           high-score files, saved games, etc., may be made
9356           set-<em>group</em>-id (mode 2755) and owned by
9357           <tt>root:games</tt>, and use files and directories with
9358           appropriate permissions (770 <tt>root:games</tt>, for
9359           example).  They must not be made
9360           set-<em>user</em>-id, as this causes security problems. (If
9361           an attacker can subvert any set-user-id game they can
9362           overwrite the executable of any other, causing other players
9363           of these games to run a Trojan horse program.  With a
9364           set-group-id game the attacker only gets access to less
9365           important game data, and if they can get at the other
9366           players' accounts at all it will take considerably more
9367           effort.)</p>
9368
9369         <p>
9370           Some packages, for example some fortune cookie programs, are
9371           configured by the upstream authors to install with their
9372           data files or other static information made unreadable so
9373           that they can only be accessed through set-id programs
9374           provided.  You should not do this in a Debian package: anyone can
9375           download the <file>.deb</file> file and read the data from it,
9376           so there is no point making the files unreadable.  Not
9377           making the files unreadable also means that you don't have
9378           to make so many programs set-id, which reduces the risk of a
9379           security hole.</p>
9380
9381         <p>
9382           As described in the FHS, binaries of games should be
9383           installed in the directory <file>/usr/games</file>. This also
9384           applies to games that use the X Window System. Manual pages
9385           for games (X and non-X games) should be installed in
9386           <file>/usr/share/man/man6</file>.</p>
9387       </sect>
9388     </chapt>
9389
9390
9391     <chapt id="docs">
9392       <heading>Documentation</heading>
9393
9394       <sect>
9395         <heading>Manual pages</heading>
9396
9397         <p>
9398           You should install manual pages in <prgn>nroff</prgn> source
9399           form, in appropriate places under <file>/usr/share/man</file>.
9400           You should only use sections 1 to 9 (see the FHS for more
9401           details).  You must not install a pre-formatted "cat page".
9402         </p>
9403
9404         <p>
9405           Each program, utility, and function should have an
9406           associated manual page included in the same package. It is
9407           suggested that all configuration files also have a manual
9408           page included as well. Manual pages for protocols and other
9409           auxiliary things are optional.
9410         </p>
9411
9412         <p>
9413           If no manual page is available, this is considered as a bug
9414           and should be reported to the Debian Bug Tracking System (the
9415           maintainer of the package is allowed to write this bug report
9416           themselves, if they so desire).  Do not close the bug report
9417           until a proper man page is available.<footnote>
9418               It is not very hard to write a man page. See the
9419               <url id="http://www.schweikhardt.net/man_page_howto.html"
9420                 name="Man-Page-HOWTO">,
9421               <manref name="man" section="7">, the examples
9422               created by <prgn>debmake</prgn> or <prgn>dh_make</prgn>,
9423               the helper program <prgn>help2man</prgn>, or the
9424               directory <file>/usr/share/doc/man-db/examples</file>.
9425           </footnote>
9426         </p>
9427
9428         <p>
9429           You may forward a complaint about a missing man page to the
9430           upstream authors, and mark the bug as forwarded in the
9431           Debian bug tracking system.  Even though the GNU Project do
9432           not in general consider the lack of a man page to be a bug,
9433           we do; if they tell you that they don't consider it a bug
9434           you should leave the bug in our bug tracking system open
9435           anyway.
9436         </p>
9437
9438         <p>
9439           Manual pages should be installed compressed using <tt>gzip -9</tt>.
9440         </p>
9441
9442         <p>
9443           If one man page needs to be accessible via several names it
9444           is better to use a symbolic link than the <file>.so</file>
9445           feature, but there is no need to fiddle with the relevant
9446           parts of the upstream source to change from <file>.so</file> to
9447           symlinks: don't do it unless it's easy.  You should not
9448           create hard links in the manual page directories, nor put
9449           absolute filenames in <file>.so</file> directives.  The filename
9450           in a <file>.so</file> in a man page should be relative to the
9451           base of the man page tree (usually
9452           <file>/usr/share/man</file>). If you do not create any links
9453           (whether symlinks, hard links, or <tt>.so</tt> directives)
9454           in the file system to the alternate names of the man page,
9455           then you should not rely on <prgn>man</prgn> finding your
9456           man page under those names based solely on the information in
9457           the man page's header.<footnote>
9458               Supporting this in <prgn>man</prgn> often requires
9459               unreasonable processing time to find a manual page or to
9460               report that none exists, and moves knowledge into man's
9461               database that would be better left in the file system.
9462               This support is therefore deprecated and will cease to
9463               be present in the future.
9464           </footnote>
9465         </p>
9466
9467         <p>
9468           Manual pages in locale-specific subdirectories of
9469           <file>/usr/share/man</file> should use either UTF-8 or the usual
9470           legacy encoding for that language (normally the one corresponding
9471           to the shortest relevant locale name in
9472           <file>/usr/share/i18n/SUPPORTED</file>). For example, pages under
9473           <file>/usr/share/man/fr</file> should use either UTF-8 or
9474           ISO-8859-1.<footnote>
9475             <prgn>man</prgn> will automatically detect whether UTF-8 is in
9476             use. In future, all manual pages will be required to use
9477             UTF-8.
9478           </footnote>
9479         </p>
9480
9481         <p>
9482           A country name (the <tt>DE</tt> in <tt>de_DE</tt>) should not be
9483           included in the subdirectory name unless it indicates a
9484           significant difference in the language, as this excludes
9485           speakers of the language in other countries.<footnote>
9486             At the time of writing, Chinese and Portuguese are the main
9487             languages with such differences, so <file>pt_BR</file>,
9488             <file>zh_CN</file>, and <file>zh_TW</file> are all allowed.
9489           </footnote>
9490         </p>
9491
9492         <p>
9493           If a localized version of a manual page is provided, it should
9494           either be up-to-date or it should be obvious to the reader that
9495           it is outdated and the original manual page should be used
9496           instead.  This can be done either by a note at the beginning of
9497           the manual page or by showing the missing or changed portions in
9498           the original language instead of the target language.
9499         </p>
9500       </sect>
9501
9502       <sect>
9503         <heading>Info documents</heading>
9504
9505         <p>
9506           Info documents should be installed in <file>/usr/share/info</file>.
9507           They should be compressed with <tt>gzip -9</tt>.
9508         </p>
9509
9510         <p>
9511           The <prgn>install-info</prgn> program maintains a directory of
9512           installed info documents in <file>/usr/share/info/dir</file> for
9513           the use of info readers.<footnote>
9514             It was previously necessary for packages installing info
9515             documents to run <prgn>install-info</prgn> from maintainer
9516             scripts.  This is no longer necessary.  The installation
9517             system now uses dpkg triggers.
9518           </footnote>
9519           This file must not be included in packages.  Packages containing
9520           info documents should depend on <tt>dpkg (>= 1.15.4) |
9521           install-info</tt> to ensure that the directory file is properly
9522           rebuilt during partial upgrades from Debian 5.0 (lenny) and
9523           earlier.
9524         </p>
9525
9526         <p>
9527           Info documents should contain section and directory entry
9528           information in the document for the use
9529           of <prgn>install-info</prgn>.  The section should be specified
9530           via a line starting with <tt>INFO-DIR-SECTION</tt> followed by a
9531           space and the section of this info page.  The directory entry or
9532           entries should be included between
9533           a <tt>START-INFO-DIR-ENTRY</tt> line and
9534           an <tt>END-INFO-DIR-ENTRY</tt> line.  For example:
9535           <example>
9536 INFO-DIR-SECTION Individual utilities
9537 START-INFO-DIR-ENTRY
9538 * example: (example).               An example info directory entry.
9539 END-INFO-DIR-ENTRY
9540           </example>
9541           To determine which section to use, you should look
9542           at <file>/usr/share/info/dir</file> on your system and choose
9543           the most relevant (or create a new section if none of the
9544           current sections are relevant).<footnote>
9545             Normally, info documents are generated from Texinfo source.
9546             To include this information in the generated info document, if
9547             it is absent, add commands like:
9548             <example>
9549 @dircategory Individual utilities
9550 @direntry
9551 * example: (example).               An example info directory entry.
9552 @end direntry
9553             </example>
9554             to the Texinfo source of the document and ensure that the info
9555             documents are rebuilt from source during the package build.
9556           </footnote>
9557         </p>
9558       </sect>
9559
9560       <sect>
9561         <heading>Additional documentation</heading>
9562
9563         <p>
9564           Any additional documentation that comes with the package may
9565           be installed at the discretion of the package maintainer.
9566           Plain text documentation should be installed in the directory
9567           <file>/usr/share/doc/<var>package</var></file>, where
9568           <var>package</var> is the name of the package, and
9569           compressed with <tt>gzip -9</tt> unless it is small.
9570         </p>
9571
9572         <p>
9573           If a package comes with large amounts of documentation which
9574           many users of the package will not require you should create
9575           a separate binary package to contain it, so that it does not
9576           take up disk space on the machines of users who do not need
9577           or want it installed.</p>
9578
9579         <p>
9580           It is often a good idea to put text information files
9581           (<file>README</file>s, changelogs, and so forth) that come with
9582           the source package in <file>/usr/share/doc/<var>package</var></file>
9583           in the binary package.  However, you don't need to install
9584           the instructions for building and installing the package, of
9585           course!</p>
9586
9587         <p>
9588           Packages must not require the existence of any files in
9589           <file>/usr/share/doc/</file> in order to function
9590           <footnote>
9591               The system administrator should be able to
9592               delete files in <file>/usr/share/doc/</file> without causing
9593               any programs to break.
9594           </footnote>.
9595           Any files that are referenced by programs but are also
9596           useful as stand alone documentation should be installed under
9597           <file>/usr/share/<var>package</var>/</file> with symbolic links from
9598           <file>/usr/share/doc/<var>package</var></file>.
9599         </p>
9600
9601         <p>
9602           <file>/usr/share/doc/<var>package</var></file> may be a symbolic
9603           link to another directory in <file>/usr/share/doc</file> only if
9604           the two packages both come from the same source and the
9605           first package Depends on the second.<footnote>
9606             <p>
9607               Please note that this does not override the section on
9608               changelog files below, so the file 
9609               <file>/usr/share/doc/<var>package</var>/changelog.Debian.gz</file>
9610               must refer to the changelog for the current version of
9611               <var>package</var> in question. In practice, this means
9612               that the sources of the target and the destination of the
9613               symlink must be the same (same source package and
9614               version). 
9615             </p>
9616           </footnote>
9617         </p>
9618
9619         <p>
9620           Former Debian releases placed all additional documentation
9621           in <file>/usr/doc/<var>package</var></file>.  This has been
9622           changed to <file>/usr/share/doc/<var>package</var></file>,
9623           and packages must not put documentation in the directory
9624           <file>/usr/doc/<var>package</var></file>. <footnote>
9625             At this phase of the transition, we no longer require a
9626             symbolic link in <file>/usr/doc/</file>. At a later point,
9627             policy shall change to make the symbolic links a bug.
9628           </footnote>
9629         </p>
9630       </sect>
9631
9632       <sect>
9633         <heading>Preferred documentation formats</heading>
9634
9635         <p>
9636           The unification of Debian documentation is being carried out
9637           via HTML.</p>
9638
9639         <p>
9640           If your package comes with extensive documentation in a
9641           markup format that can be converted to various other formats
9642           you should if possible ship HTML versions in a binary
9643           package, in the directory
9644           <file>/usr/share/doc/<var>appropriate-package</var></file> or
9645           its subdirectories.<footnote>
9646               The rationale: The important thing here is that HTML
9647               docs should be available in <em>some</em> package, not
9648               necessarily in the main binary package.
9649           </footnote>
9650         </p>
9651
9652         <p>
9653           Other formats such as PostScript may be provided at the
9654           package maintainer's discretion.
9655         </p>
9656       </sect>
9657
9658       <sect id="copyrightfile">
9659         <heading>Copyright information</heading>
9660
9661         <p>
9662           Every package must be accompanied by a verbatim copy of its
9663           copyright information and distribution license in the file
9664           <file>/usr/share/doc/<var>package</var>/copyright</file>. This
9665           file must neither be compressed nor be a symbolic link.
9666         </p>
9667
9668         <p>
9669           In addition, the copyright file must say where the upstream
9670           sources (if any) were obtained.  It should name the original
9671           authors of the package and the Debian maintainer(s) who were
9672           involved with its creation.
9673         </p>
9674
9675         <p>
9676           Packages in the <em>contrib</em> or <em>non-free</em> archive
9677           areas should state in the copyright file that the package is not
9678           part of the Debian GNU/Linux distribution and briefly explain
9679           why.
9680         </p>
9681
9682         <p>
9683           A copy of the file which will be installed in
9684           <file>/usr/share/doc/<var>package</var>/copyright</file> should
9685           be in <file>debian/copyright</file> in the source package.
9686         </p>
9687
9688         <p>
9689           <file>/usr/share/doc/<var>package</var></file> may be a symbolic
9690           link to another directory in <file>/usr/share/doc</file> only if
9691           the two packages both come from the same source and the
9692           first package Depends on the second.  These rules are
9693           important because copyrights must be extractable by
9694           mechanical means.
9695         </p>
9696
9697         <p>
9698           Packages distributed under the Apache license (version 2.0), the
9699           Artistic license, the GNU GPL (versions 1, 2, or 3), the GNU
9700           LGPL (versions 2, 2.1, or 3), and the GNU FDL (versions 1.2 or
9701           1.3) should refer to the corresponding files
9702           under <file>/usr/share/common-licenses</file>,<footnote>
9703             <p>
9704               In particular,
9705               <file>/usr/share/common-licenses/Apache-2.0</file>,
9706               <file>/usr/share/common-licenses/Artistic</file>,
9707               <file>/usr/share/common-licenses/GPL-1</file>,
9708               <file>/usr/share/common-licenses/GPL-2</file>,
9709               <file>/usr/share/common-licenses/GPL-3</file>,
9710               <file>/usr/share/common-licenses/LGPL-2</file>,
9711               <file>/usr/share/common-licenses/LGPL-2.1</file>,
9712               <file>/usr/share/common-licenses/LGPL-3</file>,
9713               <file>/usr/share/common-licenses/GFDL-1.2</file>, and
9714               <file>/usr/share/common-licenses/GFDL-1.3</file>
9715               respectively.  The University of California BSD license is
9716               also included in <package>base-files</package> as
9717               <file>/usr/share/common-licenses/BSD</file>, but given the
9718               brevity of this license, its specificity to code whose
9719               copyright is held by the Regents of the University of
9720               California, and the frequency of minor wording changes, its
9721               text should be included in the copyright file rather than
9722               referencing this file.
9723             </p>
9724           </footnote> rather than quoting them in the copyright
9725           file. 
9726         </p>
9727
9728         <p>
9729           You should not use the copyright file as a general <file>README</file>
9730           file.  If your package has such a file it should be
9731           installed in <file>/usr/share/doc/<var>package</var>/README</file> or
9732           <file>README.Debian</file> or some other appropriate place.</p>
9733       </sect>
9734
9735       <sect>
9736         <heading>Examples</heading>
9737
9738         <p>
9739           Any examples (configurations, source files, whatever),
9740           should be installed in a directory
9741           <file>/usr/share/doc/<var>package</var>/examples</file>.  These
9742           files should not be referenced by any program: they're there
9743           for the benefit of the system administrator and users as
9744           documentation only.  Architecture-specific example files
9745           should be installed in a directory
9746           <file>/usr/lib/<var>package</var>/examples</file> with symbolic
9747           links to them from
9748           <file>/usr/share/doc/<var>package</var>/examples</file>, or the
9749           latter directory itself may be a symbolic link to the
9750           former.
9751         </p>
9752
9753         <p>
9754           If the purpose of a package is to provide examples, then the
9755           example files may be installed into
9756           <file>/usr/share/doc/<var>package</var></file>.
9757         </p>
9758       </sect>
9759
9760       <sect id="changelogs">
9761         <heading>Changelog files</heading>
9762
9763         <p>
9764           Packages that are not Debian-native must contain a
9765           compressed copy of the <file>debian/changelog</file> file from
9766           the Debian source tree in
9767           <file>/usr/share/doc/<var>package</var></file> with the name
9768           <file>changelog.Debian.gz</file>.
9769         </p>
9770
9771         <p>
9772           If an upstream changelog is available, it should be accessible as
9773           <file>/usr/share/doc/<var>package</var>/changelog.gz</file> in
9774           plain text.  If the upstream changelog is distributed in
9775           HTML, it should be made available in that form as
9776           <file>/usr/share/doc/<var>package</var>/changelog.html.gz</file>
9777           and a plain text <file>changelog.gz</file> should be generated
9778           from it using, for example, <tt>lynx -dump -nolist</tt>.  If
9779           the upstream changelog files do not already conform to this
9780           naming convention, then this may be achieved either by
9781           renaming the files, or by adding a symbolic link, at the
9782           maintainer's discretion.<footnote>
9783               Rationale: People should not have to look in places for
9784               upstream changelogs merely because they are given
9785               different names or are distributed in HTML format.
9786           </footnote>
9787         </p>
9788
9789         <p>
9790           All of these files should be installed compressed using
9791           <tt>gzip -9</tt>, as they will become large with time even
9792           if they start out small.
9793         </p>
9794
9795         <p>
9796           If the package has only one changelog which is used both as
9797           the Debian changelog and the upstream one because there is
9798           no separate upstream maintainer then that changelog should
9799           usually be installed as
9800           <file>/usr/share/doc/<var>package</var>/changelog.gz</file>; if
9801           there is a separate upstream maintainer, but no upstream
9802           changelog, then the Debian changelog should still be called
9803           <file>changelog.Debian.gz</file>.
9804         </p>
9805
9806         <p>
9807           For details about the format and contents of the Debian
9808           changelog file, please see <ref id="dpkgchangelog">.
9809         </p>
9810       </sect>
9811     </chapt>
9812
9813     <appendix id="pkg-scope">
9814       <heading>Introduction and scope of these appendices</heading>
9815
9816       <p>
9817         These appendices are taken essentially verbatim from the
9818         now-deprecated Packaging Manual, version 3.2.1.0.  They are
9819         the chapters which are likely to be of use to package
9820         maintainers and which have not already been included in the
9821         policy document itself. Most of these sections are very likely
9822         not relevant to policy; they should be treated as
9823         documentation for the packaging system. Please note that these
9824         appendices are included for convenience, and for historical
9825         reasons: they used to be part of policy package, and they have
9826         not yet been incorporated into dpkg documentation. However,
9827         they still have value, and hence they are presented here.
9828       </p>
9829
9830       <p>
9831         They have not yet been checked to ensure that they are
9832         compatible with the contents of policy, and if there are any
9833         contradictions, the version in the main policy document takes
9834         precedence.  The remaining chapters of the old Packaging
9835         Manual have also not been read in detail to ensure that there
9836         are not parts which have been left out.  Both of these will be
9837         done in due course.
9838       </p>
9839
9840       <p>
9841         Certain parts of the Packaging manual were integrated into the
9842         Policy Manual proper, and removed from the appendices. Links
9843         have been placed from the old locations to the new ones.
9844       </p>
9845
9846       <p>
9847         <prgn>dpkg</prgn> is a suite of programs for creating binary
9848         package files and installing and removing them on Unix
9849         systems.<footnote>
9850             <prgn>dpkg</prgn> is targeted primarily at Debian
9851             GNU/Linux, but may work on or be ported to other
9852             systems.
9853         </footnote>
9854       </p>
9855
9856       <p>
9857         The binary packages are designed for the management of
9858         installed executable programs (usually compiled binaries) and
9859         their associated data, though source code examples and
9860         documentation are provided as part of some packages.</p>
9861
9862       <p>
9863         This manual describes the technical aspects of creating Debian
9864         binary packages (<file>.deb</file> files).  It documents the
9865         behavior of the package management programs
9866         <prgn>dpkg</prgn>, <prgn>dselect</prgn> et al. and the way
9867         they interact with packages.</p>
9868
9869       <p>
9870         It also documents the interaction between
9871         <prgn>dselect</prgn>'s core and the access method scripts it
9872         uses to actually install the selected packages, and describes
9873         how to create a new access method.</p>
9874
9875       <p>
9876         This manual does not go into detail about the options and
9877         usage of the package building and installation tools.  It
9878         should therefore be read in conjunction with those programs'
9879         man pages.
9880       </p>
9881
9882       <p>
9883         The utility programs which are provided with <prgn>dpkg</prgn>
9884         for managing various system configuration and similar issues,
9885         such as <prgn>update-rc.d</prgn> and
9886         <prgn>install-info</prgn>, are not described in detail here -
9887         please see their man pages.
9888       </p>
9889
9890       <p>
9891         It is assumed that the reader is reasonably familiar with the
9892         <prgn>dpkg</prgn> System Administrators' manual.
9893         Unfortunately this manual does not yet exist.
9894       </p>
9895
9896       <p>
9897         The Debian version of the FSF's GNU hello program is provided
9898         as an example for people wishing to create Debian
9899         packages. The Debian <prgn>debmake</prgn> package is
9900         recommended as a very helpful tool in creating and maintaining
9901         Debian packages. However, while the tools and examples are
9902         helpful, they do not replace the need to read and follow the
9903         Policy and Programmer's Manual.</p>
9904     </appendix>
9905
9906     <appendix id="pkg-binarypkg">
9907       <heading>Binary packages (from old Packaging Manual)</heading>
9908
9909       <p>
9910         The binary package has two main sections.  The first part
9911         consists of various control information files and scripts used
9912         by <prgn>dpkg</prgn> when installing and removing.  See <ref
9913         id="pkg-controlarea">.
9914       </p>
9915
9916       <p>
9917         The second part is an archive containing the files and
9918         directories to be installed.
9919       </p>
9920
9921       <p>
9922         In the future binary packages may also contain other
9923         components, such as checksums and digital signatures. The
9924         format for the archive is described in full in the
9925         <file>deb(5)</file> man page.
9926       </p>
9927
9928
9929       <sect id="pkg-bincreating"><heading>Creating package files -
9930       <prgn>dpkg-deb</prgn>
9931         </heading>
9932
9933         <p>
9934           All manipulation of binary package files is done by
9935           <prgn>dpkg-deb</prgn>; it's the only program that has
9936           knowledge of the format.  (<prgn>dpkg-deb</prgn> may be
9937           invoked by calling <prgn>dpkg</prgn>, as <prgn>dpkg</prgn>
9938           will spot that the options requested are appropriate to
9939           <prgn>dpkg-deb</prgn> and invoke that instead with the same
9940           arguments.)
9941         </p>
9942
9943         <p>
9944           In order to create a binary package you must make a
9945           directory tree which contains all the files and directories
9946           you want to have in the file system data part of the package.
9947           In Debian-format source packages this directory is usually
9948           <file>debian/tmp</file>, relative to the top of the package's
9949           source tree.
9950         </p>
9951
9952         <p>
9953           They should have the locations (relative to the root of the
9954           directory tree you're constructing) ownerships and
9955           permissions which you want them to have on the system when
9956           they are installed.
9957         </p>
9958
9959         <p>
9960           With current versions of <prgn>dpkg</prgn> the uid/username
9961           and gid/groupname mappings for the users and groups being
9962           used should be the same on the system where the package is
9963           built and the one where it is installed.
9964         </p>
9965
9966         <p>
9967           You need to add one special directory to the root of the
9968           miniature file system tree you're creating:
9969           <prgn>DEBIAN</prgn>.  It should contain the control
9970           information files, notably the binary package control file
9971           (see <ref id="pkg-controlfile">).
9972         </p>
9973
9974         <p>
9975           The <prgn>DEBIAN</prgn> directory will not appear in the
9976           file system archive of the package, and so won't be installed
9977           by <prgn>dpkg</prgn> when the package is unpacked.
9978         </p>
9979
9980         <p>
9981           When you've prepared the package, you should invoke:
9982           <example>
9983   dpkg --build <var>directory</var>
9984           </example>
9985         </p>
9986
9987         <p>
9988           This will build the package in
9989           <file><var>directory</var>.deb</file>.  (<prgn>dpkg</prgn> knows
9990           that <tt>--build</tt> is a <prgn>dpkg-deb</prgn> option, so
9991           it invokes <prgn>dpkg-deb</prgn> with the same arguments to
9992           build the package.)
9993         </p>
9994
9995         <p>
9996           See the man page <manref name="dpkg-deb" section="8"> for details of how
9997           to examine the contents of this newly-created file.  You may find the
9998           output of following commands enlightening:
9999           <example>
10000   dpkg-deb --info <var>filename</var>.deb
10001   dpkg-deb --contents <var>filename</var>.deb
10002   dpkg --contents <var>filename</var>.deb
10003           </example>
10004           To view the copyright file for a package you could use this command:
10005           <example>
10006   dpkg --fsys-tarfile <var>filename</var>.deb | tar xOf - --wildcards \*/copyright | pager
10007           </example>
10008         </p>
10009       </sect>
10010
10011       <sect id="pkg-controlarea">
10012         <heading>Package control information files</heading>
10013
10014         <p>
10015           The control information portion of a binary package is a
10016           collection of files with names known to <prgn>dpkg</prgn>.
10017           It will treat the contents of these files specially - some
10018           of them contain information used by <prgn>dpkg</prgn> when
10019           installing or removing the package; others are scripts which
10020           the package maintainer wants <prgn>dpkg</prgn> to run.
10021         </p>
10022
10023         <p>
10024           It is possible to put other files in the package control
10025           information file area, but this is not generally a good idea
10026           (though they will largely be ignored).
10027         </p>
10028
10029         <p>
10030           Here is a brief list of the control information files supported
10031           by <prgn>dpkg</prgn> and a summary of what they're used for.
10032         </p>
10033
10034         <p>
10035           <taglist>
10036             <tag><tt>control</tt>
10037             <item>
10038               <p>
10039                 This is the key description file used by
10040                 <prgn>dpkg</prgn>.  It specifies the package's name
10041                 and version, gives its description for the user,
10042                 states its relationships with other packages, and so
10043                 forth.  See <ref id="sourcecontrolfiles"> and
10044                 <ref id="binarycontrolfiles">.
10045               </p>
10046
10047               <p>
10048                 It is usually generated automatically from information
10049                 in the source package by the
10050                 <prgn>dpkg-gencontrol</prgn> program, and with
10051                 assistance from <prgn>dpkg-shlibdeps</prgn>.
10052                 See <ref id="pkg-sourcetools">.
10053               </p>
10054             </item>
10055
10056             <tag><tt>postinst</tt>, <tt>preinst</tt>, <tt>postrm</tt>,
10057                  <tt>prerm</tt>
10058             </tag>
10059             <item>
10060               <p>
10061                 These are executable files (usually scripts) which
10062                 <prgn>dpkg</prgn> runs during installation, upgrade
10063                 and removal of packages.  They allow the package to
10064                 deal with matters which are particular to that package
10065                 or require more complicated processing than that
10066                 provided by <prgn>dpkg</prgn>.  Details of when and
10067                 how they are called are in <ref id="maintainerscripts">.
10068               </p>
10069
10070               <p>
10071                 It is very important to make these scripts idempotent.
10072                 See <ref id="idempotency">.
10073               </p>
10074
10075               <p>
10076                 The maintainer scripts are not guaranteed to run with a
10077                 controlling terminal and may not be able to interact with
10078                 the user.  See <ref id="controllingterminal">.
10079               </p>
10080             </item>
10081
10082             <tag><tt>conffiles</tt>
10083             </tag>
10084             <item>
10085                 This file contains a list of configuration files which
10086                 are to be handled automatically by <prgn>dpkg</prgn>
10087                 (see <ref id="pkg-conffiles">).  Note that not necessarily
10088                 every configuration file should be listed here.
10089             </item>
10090
10091             <tag><tt>shlibs</tt>
10092             </tag>
10093             <item>
10094                 This file contains a list of the shared libraries
10095                 supplied by the package, with dependency details for
10096                 each.  This is used by <prgn>dpkg-shlibdeps</prgn>
10097                 when it determines what dependencies are required in a
10098                 package control file. The <tt>shlibs</tt> file format
10099                 is described on <ref id="shlibs">.
10100             </item>
10101           </taglist>
10102         </p>
10103
10104       <sect id="pkg-controlfile">
10105         <heading>The main control information file: <tt>control</tt></heading>
10106
10107         <p>
10108           The most important control information file used by
10109           <prgn>dpkg</prgn> when it installs a package is
10110           <tt>control</tt>.  It contains all the package's "vital
10111           statistics".
10112         </p>
10113
10114         <p>
10115           The binary package control files of packages built from
10116           Debian sources are made by a special tool,
10117           <prgn>dpkg-gencontrol</prgn>, which reads
10118           <file>debian/control</file> and <file>debian/changelog</file> to
10119           find the information it needs.  See <ref id="pkg-sourcepkg"> for
10120           more details.
10121         </p>
10122
10123         <p>
10124           The fields in binary package control files are listed in
10125           <ref id="binarycontrolfiles">.
10126         </p>
10127
10128         <p>
10129           A description of the syntax of control files and the purpose
10130           of the fields is available in <ref id="controlfields">.
10131         </p>
10132       </sect>
10133
10134       <sect>
10135         <heading>Time Stamps</heading>
10136
10137         <p>
10138           See <ref id="timestamps">.
10139         </p>
10140       </sect>
10141     </appendix>
10142
10143     <appendix id="pkg-sourcepkg">
10144       <heading>Source packages (from old Packaging Manual) </heading>
10145
10146       <p>
10147         The Debian binary packages in the distribution are generated
10148         from Debian sources, which are in a special format to assist
10149         the easy and automatic building of binaries.
10150       </p>
10151
10152       <sect id="pkg-sourcetools">
10153         <heading>Tools for processing source packages</heading>
10154
10155         <p>
10156           Various tools are provided for manipulating source packages;
10157           they pack and unpack sources and help build of binary
10158           packages and help manage the distribution of new versions.
10159         </p>
10160
10161         <p>
10162           They are introduced and typical uses described here; see
10163           <manref name="dpkg-source" section="1"> for full
10164           documentation about their arguments and operation.
10165         </p>
10166
10167         <p>
10168           For examples of how to construct a Debian source package,
10169           and how to use those utilities that are used by Debian
10170           source packages, please see the <prgn>hello</prgn> example
10171           package.
10172         </p>
10173
10174         <sect1 id="pkg-dpkg-source">
10175           <heading>
10176             <prgn>dpkg-source</prgn> - packs and unpacks Debian source
10177             packages
10178           </heading>
10179
10180           <p>
10181             This program is frequently used by hand, and is also
10182             called from package-independent automated building scripts
10183             such as <prgn>dpkg-buildpackage</prgn>.
10184           </p>
10185
10186           <p>
10187             To unpack a package it is typically invoked with
10188             <example>
10189   dpkg-source -x <var>.../path/to/filename</var>.dsc
10190             </example>
10191           </p>
10192
10193            <p>
10194             with the <file><var>filename</var>.tar.gz</file> and
10195             <file><var>filename</var>.diff.gz</file> (if applicable) in
10196             the same directory.  It unpacks into
10197             <file><var>package</var>-<var>version</var></file>, and if
10198             applicable
10199             <file><var>package</var>-<var>version</var>.orig</file>, in
10200             the current directory.
10201           </p>
10202
10203           <p>
10204             To create a packed source archive it is typically invoked:
10205             <example>
10206   dpkg-source -b <var>package</var>-<var>version</var>
10207           </example>
10208           </p>
10209
10210           <p>
10211             This will create the <file>.dsc</file>, <file>.tar.gz</file> and
10212             <file>.diff.gz</file> (if appropriate) in the current
10213             directory.  <prgn>dpkg-source</prgn> does not clean the
10214             source tree first - this must be done separately if it is
10215             required.
10216           </p>
10217
10218           <p>
10219             See also <ref id="pkg-sourcearchives">.</p>
10220         </sect1>
10221
10222
10223         <sect1 id="pkg-dpkg-buildpackage">
10224           <heading>
10225             <prgn>dpkg-buildpackage</prgn> - overall package-building
10226             control script
10227           </heading>
10228
10229           <p>
10230             <prgn>dpkg-buildpackage</prgn> is a script which invokes
10231             <prgn>dpkg-source</prgn>, the <file>debian/rules</file>
10232             targets <tt>clean</tt>, <tt>build</tt> and
10233             <tt>binary</tt>, <prgn>dpkg-genchanges</prgn> and
10234             <prgn>gpg</prgn> (or <prgn>pgp</prgn>) to build a signed
10235             source and binary package upload.
10236           </p>
10237
10238           <p>
10239             It is usually invoked by hand from the top level of the
10240             built or unbuilt source directory.  It may be invoked with
10241             no arguments; useful arguments include:
10242             <taglist compact="compact">
10243               <tag><tt>-uc</tt>, <tt>-us</tt></tag>
10244               <item>
10245                 <p>
10246                   Do not sign the <tt>.changes</tt> file or the
10247                   source package <tt>.dsc</tt> file, respectively.</p>
10248               </item>
10249               <tag><tt>-p<var>sign-command</var></tt></tag>
10250               <item>
10251                 <p>
10252                   Invoke <var>sign-command</var> instead of finding
10253                   <tt>gpg</tt> or <tt>pgp</tt> on the <prgn>PATH</prgn>.
10254                   <var>sign-command</var> must behave just like
10255                   <prgn>gpg</prgn> or <tt>pgp</tt>.</p>
10256               </item>
10257               <tag><tt>-r<var>root-command</var></tt></tag>
10258               <item>
10259                 <p>
10260                   When root privilege is required, invoke the command
10261                   <var>root-command</var>.  <var>root-command</var>
10262                   should invoke its first argument as a command, from
10263                   the <prgn>PATH</prgn> if necessary, and pass its
10264                   second and subsequent arguments to the command it
10265                   calls.  If no <var>root-command</var> is supplied
10266                   then <var>dpkg-buildpackage</var> will take no
10267                   special action to gain root privilege, so that for
10268                   most packages it will have to be invoked as root to
10269                   start with.</p>
10270               </item>
10271               <tag><tt>-b</tt>, <tt>-B</tt></tag>
10272               <item>
10273                 <p>
10274                   Two types of binary-only build and upload - see
10275                   <manref name="dpkg-source" section="1">.
10276                 </p>
10277               </item>
10278             </taglist>
10279           </p>
10280         </sect1>
10281
10282         <sect1 id="pkg-dpkg-gencontrol">
10283           <heading>
10284             <prgn>dpkg-gencontrol</prgn> - generates binary package
10285             control files
10286           </heading>
10287
10288           <p>
10289             This program is usually called from <file>debian/rules</file>
10290             (see <ref id="pkg-sourcetree">) in the top level of the source
10291             tree.
10292           </p>
10293
10294           <p>
10295             This is usually done just before the files and directories in the
10296             temporary directory tree where the package is being built have their
10297             permissions and ownerships set and the package is constructed using
10298             <prgn>dpkg-deb/</prgn>
10299               <footnote>
10300                 This is so that the control file which is produced has
10301                 the right permissions
10302             </footnote>.
10303           </p>
10304
10305           <p>
10306             <prgn>dpkg-gencontrol</prgn> must be called after all the
10307             files which are to go into the package have been placed in
10308             the temporary build directory, so that its calculation of
10309             the installed size of a package is correct.
10310           </p>
10311
10312           <p>
10313             It is also necessary for <prgn>dpkg-gencontrol</prgn> to
10314             be run after <prgn>dpkg-shlibdeps</prgn> so that the
10315             variable substitutions created by
10316             <prgn>dpkg-shlibdeps</prgn> in <file>debian/substvars</file>
10317             are available.
10318           </p>
10319
10320           <p>
10321             For a package which generates only one binary package, and
10322             which builds it in <file>debian/tmp</file> relative to the top
10323             of the source package, it is usually sufficient to call
10324             <prgn>dpkg-gencontrol</prgn>.
10325           </p>
10326
10327           <p>
10328             Sources which build several binaries will typically need
10329             something like:
10330             <example>
10331   dpkg-gencontrol -Pdebian/tmp-<var>pkg</var> -p<var>package</var>
10332             </example> The <tt>-P</tt> tells
10333             <prgn>dpkg-gencontrol</prgn> that the package is being
10334             built in a non-default directory, and the <tt>-p</tt>
10335             tells it which package's control file should be generated.
10336           </p>
10337
10338           <p>
10339             <prgn>dpkg-gencontrol</prgn> also adds information to the
10340             list of files in <file>debian/files</file>, for the benefit of
10341             (for example) a future invocation of
10342             <prgn>dpkg-genchanges</prgn>.</p>
10343         </sect1>
10344
10345         <sect1 id="pkg-dpkg-shlibdeps">
10346           <heading>
10347             <prgn>dpkg-shlibdeps</prgn> - calculates shared library
10348             dependencies
10349           </heading>
10350
10351           <p>
10352             This program is usually called from <file>debian/rules</file>
10353             just before <prgn>dpkg-gencontrol</prgn> (see <ref
10354             id="pkg-sourcetree">), in the top level of the source tree.
10355           </p>
10356
10357           <p>
10358             Its arguments are executables and shared libraries
10359             <footnote>
10360               <p>
10361                 They may be specified either in the locations in the
10362                 source tree where they are created or in the locations
10363                 in the temporary build tree where they are installed
10364                 prior to binary package creation.
10365               </p>
10366             </footnote> for which shared library dependencies should
10367             be included in the binary package's control file.
10368           </p>
10369
10370           <p>
10371             If some of the found shared libraries should only
10372             warrant a <tt>Recommends</tt> or <tt>Suggests</tt>, or if
10373             some warrant a <tt>Pre-Depends</tt>, this can be achieved
10374             by using the <tt>-d<var>dependency-field</var></tt> option
10375             before those executable(s).  (Each <tt>-d</tt> option
10376             takes effect until the next <tt>-d</tt>.)
10377           </p>
10378
10379           <p>
10380             <prgn>dpkg-shlibdeps</prgn> does not directly cause the
10381             output control file to be modified.  Instead by default it
10382             adds to the <file>debian/substvars</file> file variable
10383             settings like <tt>shlibs:Depends</tt>.  These variable
10384             settings must be referenced in dependency fields in the
10385             appropriate per-binary-package sections of the source
10386             control file.
10387           </p>
10388
10389           <p>
10390             For example, a package that generates an essential part
10391             which requires dependencies, and optional parts that 
10392             which only require a recommendation, would separate those
10393             two sets of dependencies into two different fields.<footnote>
10394                 At the time of writing, an example for this was the
10395                 <package/xmms/ package, with Depends used for the xmms
10396                 executable, Recommends for the plug-ins and Suggests for
10397                 even more optional features provided by unzip.
10398             </footnote>
10399             It can say in its <file>debian/rules</file>:
10400             <example>
10401   dpkg-shlibdeps -dDepends <var>program anotherprogram ...</var> \
10402                  -dRecommends <var>optionalpart anotheroptionalpart</var>
10403             </example>
10404             and then in its main control file <file>debian/control</file>:
10405             <example>
10406   <var>...</var>
10407   Depends: ${shlibs:Depends}
10408   Recommends: ${shlibs:Recommends}
10409   <var>...</var>
10410             </example>
10411           </p>
10412
10413           <p>
10414             Sources which produce several binary packages with
10415             different shared library dependency requirements can use
10416             the <tt>-p<var>varnameprefix</var></tt> option to override
10417             the default <tt>shlibs:</tt> prefix (one invocation of
10418             <prgn>dpkg-shlibdeps</prgn> per setting of this option).
10419             They can thus produce several sets of dependency
10420             variables, each of the form
10421             <tt><var>varnameprefix</var>:<var>dependencyfield</var></tt>,
10422             which can be referred to in the appropriate parts of the
10423             binary package control files.
10424           </p>
10425         </sect1>
10426
10427
10428         <sect1 id="pkg-dpkg-distaddfile">
10429           <heading>
10430             <prgn>dpkg-distaddfile</prgn> - adds a file to
10431             <file>debian/files</file>
10432           </heading>
10433
10434           <p>
10435             Some packages' uploads need to include files other than
10436             the source and binary package files.
10437           </p>
10438
10439           <p>
10440             <prgn>dpkg-distaddfile</prgn> adds a file to the
10441             <file>debian/files</file> file so that it will be included in
10442             the <file>.changes</file> file when
10443             <prgn>dpkg-genchanges</prgn> is run.
10444           </p>
10445
10446           <p>
10447             It is usually invoked from the <tt>binary</tt> target of
10448             <file>debian/rules</file>:
10449             <example>
10450   dpkg-distaddfile <var>filename</var> <var>section</var> <var>priority</var>
10451             </example>
10452             The <var>filename</var> is relative to the directory where
10453             <prgn>dpkg-genchanges</prgn> will expect to find it - this
10454             is usually the directory above the top level of the source
10455             tree.  The <file>debian/rules</file> target should put the
10456             file there just before or just after calling
10457             <prgn>dpkg-distaddfile</prgn>.
10458           </p>
10459
10460           <p>
10461             The <var>section</var> and <var>priority</var> are passed
10462             unchanged into the resulting <file>.changes</file> file.
10463           </p>
10464         </sect1>
10465
10466
10467         <sect1 id="pkg-dpkg-genchanges">
10468           <heading>
10469             <prgn>dpkg-genchanges</prgn> - generates a <file>.changes</file>
10470             upload control file
10471           </heading>
10472
10473           <p>
10474             This program is usually called by package-independent
10475             automatic building scripts such as
10476             <prgn>dpkg-buildpackage</prgn>, but it may also be called
10477             by hand.
10478           </p>
10479
10480           <p>
10481             It is usually called in the top level of a built source
10482             tree, and when invoked with no arguments will print out a
10483             straightforward <file>.changes</file> file based on the
10484             information in the source package's changelog and control
10485             file and the binary and source packages which should have
10486             been built.
10487           </p>
10488         </sect1>
10489
10490
10491         <sect1 id="pkg-dpkg-parsechangelog">
10492           <heading>
10493             <prgn>dpkg-parsechangelog</prgn> - produces parsed
10494             representation of a changelog
10495           </heading>
10496
10497           <p>
10498             This program is used internally by
10499             <prgn>dpkg-source</prgn> et al.  It may also occasionally
10500             be useful in <file>debian/rules</file> and elsewhere.  It
10501             parses a changelog, <file>debian/changelog</file> by default,
10502             and prints a control-file format representation of the
10503             information in it to standard output.
10504           </p>
10505         </sect1>
10506
10507         <sect1 id="pkg-dpkg-architecture">
10508           <heading>
10509             <prgn>dpkg-architecture</prgn> - information about the build and
10510             host system
10511           </heading>
10512
10513           <p>
10514             This program can be used manually, but is also invoked by
10515             <tt>dpkg-buildpackage</tt> or <file>debian/rules</file> to set
10516             environment or make variables which specify the build and host
10517             architecture for the package building process.
10518           </p>
10519         </sect1>
10520       </sect>
10521
10522       <sect id="pkg-sourcetree">
10523         <heading>The Debian package source tree</heading>
10524
10525         <p>
10526           The source archive scheme described later is intended to
10527           allow a Debian package source tree with some associated
10528           control information to be reproduced and transported easily.
10529           The Debian package source tree is a version of the original
10530           program with certain files added for the benefit of the
10531           packaging process, and with any other changes required
10532           made to the rest of the source code and installation
10533           scripts.
10534         </p>
10535
10536         <p>
10537           The extra files created for Debian are in the subdirectory
10538           <file>debian</file> of the top level of the Debian package
10539           source tree. They are described below.
10540         </p>
10541
10542         <sect1 id="pkg-debianrules">
10543           <heading><file>debian/rules</file> - the main building script</heading>
10544
10545           <p>
10546             See <ref id="debianrules">.
10547           </p>
10548         </sect1>
10549
10550         <sect1 id="pkg-srcsubstvars">
10551           <heading><file>debian/substvars</file> and variable substitutions</heading>
10552
10553           <p>
10554             See <ref id="substvars">.
10555           </p>
10556
10557         </sect1>
10558
10559         <sect1>
10560           <heading><file>debian/files</file></heading>
10561
10562           <p>
10563             See <ref id="debianfiles">.
10564           </p>
10565         </sect1>
10566
10567         <sect1><heading><file>debian/tmp</file>
10568           </heading>
10569
10570           <p>
10571             This is the canonical temporary location for the
10572             construction of binary packages by the <tt>binary</tt>
10573             target.  The directory <file>tmp</file> serves as the root of
10574             the file system tree as it is being constructed (for
10575             example, by using the package's upstream makefiles install
10576             targets and redirecting the output there), and it also
10577             contains the <tt>DEBIAN</tt> subdirectory.  See <ref
10578             id="pkg-bincreating">.
10579           </p>
10580
10581           <p>
10582             If several binary packages are generated from the same
10583             source tree it is usual to use several
10584             <file>debian/tmp<var>something</var></file> directories, for
10585             example <file>tmp-a</file> or <file>tmp-doc</file>.
10586           </p>
10587
10588           <p>
10589             Whatever <file>tmp</file> directories are created and used by
10590             <tt>binary</tt> must of course be removed by the
10591             <tt>clean</tt> target.</p></sect1>
10592       </sect>
10593
10594
10595       <sect id="pkg-sourcearchives"><heading>Source packages as archives
10596         </heading>
10597
10598         <p>
10599           As it exists on the FTP site, a Debian source package
10600           consists of three related files.  You must have the right
10601           versions of all three to be able to use them.
10602         </p>
10603
10604         <p>
10605           <taglist>
10606             <tag>Debian source control file - <tt>.dsc</tt></tag>
10607             <item>
10608                 This file is a control file used by <prgn>dpkg-source</prgn>
10609                 to extract a source package.
10610                 See <ref id="debiansourcecontrolfiles">.
10611             </item>
10612
10613             <tag>
10614               Original source archive -
10615               <file>
10616                 <var>package</var>_<var>upstream-version</var>.orig.tar.gz
10617               </file>
10618             </tag>
10619
10620             <item>
10621               <p>
10622                 This is a compressed (with <tt>gzip -9</tt>)
10623                 <prgn>tar</prgn> file containing the source code from
10624                 the upstream authors of the program.
10625               </p>
10626             </item>
10627
10628             <tag>
10629               Debian package diff -
10630               <file>
10631                 <var>package</var>_<var>upstream_version-revision</var>.diff.gz
10632               </file>
10633             </tag>
10634             <item>
10635
10636               <p>
10637                 This is a unified context diff (<tt>diff -u</tt>)
10638                 giving the changes which are required to turn the
10639                 original source into the Debian source.  These changes
10640                 may only include editing and creating plain files.
10641                 The permissions of files, the targets of symbolic
10642                 links and the characteristics of special files or
10643                 pipes may not be changed and no files may be removed
10644                 or renamed.
10645               </p>
10646
10647               <p>
10648                 All the directories in the diff must exist, except the
10649                 <file>debian</file> subdirectory of the top of the source
10650                 tree, which will be created by
10651                 <prgn>dpkg-source</prgn> if necessary when unpacking.
10652               </p>
10653
10654               <p>
10655                 The <prgn>dpkg-source</prgn> program will
10656                 automatically make the <file>debian/rules</file> file
10657                 executable (see below).</p></item>
10658           </taglist>
10659         </p>
10660
10661         <p>
10662           If there is no original source code - for example, if the
10663           package is specially prepared for Debian or the Debian
10664           maintainer is the same as the upstream maintainer - the
10665           format is slightly different: then there is no diff, and the
10666           tarfile is named
10667           <file><var>package</var>_<var>version</var>.tar.gz</file>,
10668           and preferably contains a directory named
10669           <file><var>package</var>-<var>version</var></file>.
10670         </p>
10671       </sect>
10672
10673       <sect>
10674         <heading>Unpacking a Debian source package without <prgn>dpkg-source</prgn></heading>
10675
10676         <p>
10677           <tt>dpkg-source -x</tt> is the recommended way to unpack a
10678           Debian source package.  However, if it is not available it
10679           is possible to unpack a Debian source archive as follows:
10680         <enumlist compact="compact">
10681           <item>
10682             <p>
10683               Untar the tarfile, which will create a <file>.orig</file>
10684               directory.</p>
10685           </item>
10686           <item>
10687             <p>Rename the <file>.orig</file> directory to
10688               <file><var>package</var>-<var>version</var></file>.</p>
10689           </item>
10690             <item>
10691             <p>
10692               Create the subdirectory <file>debian</file> at the top of
10693               the source tree.</p>
10694           </item>
10695           <item><p>Apply the diff using <tt>patch -p0</tt>.</p>
10696           </item>
10697           <item><p>Untar the tarfile again if you want a copy of the original
10698               source code alongside the Debian version.</p>
10699           </item>
10700         </enumlist>
10701
10702         <p>
10703           It is not possible to generate a valid Debian source archive
10704           without using <prgn>dpkg-source</prgn>.  In particular,
10705           attempting to use <prgn>diff</prgn> directly to generate the
10706           <file>.diff.gz</file> file will not work.
10707         </p>
10708
10709         <sect1>
10710           <heading>Restrictions on objects in source packages</heading>
10711
10712           <p>
10713             The source package may not contain any hard links
10714             <footnote>
10715                 This is not currently detected when building source
10716                 packages, but only when extracting
10717                 them.
10718             </footnote>
10719             <footnote>
10720                 Hard links may be permitted at some point in the
10721                 future, but would require a fair amount of
10722                 work.
10723             </footnote>, device special files, sockets or setuid or
10724             setgid files.
10725             <footnote>
10726                 Setgid directories are allowed.
10727             </footnote>
10728           </p>
10729
10730           <p>
10731             The source packaging tools manage the changes between the
10732             original and Debian source using <prgn>diff</prgn> and
10733             <prgn>patch</prgn>.  Turning the original source tree as
10734             included in the <file>.orig.tar.gz</file> into the Debian
10735             package source must not involve any changes which cannot be
10736             handled by these tools.  Problematic changes which cause
10737             <prgn>dpkg-source</prgn> to halt with an error when
10738             building the source package are:
10739             <list compact="compact">
10740               <item><p>Adding or removing symbolic links, sockets or pipes.</p>
10741               </item>
10742               <item><p>Changing the targets of symbolic links.</p>
10743               </item>
10744               <item><p>Creating directories, other than <file>debian</file>.</p>
10745               </item>
10746               <item><p>Changes to the contents of binary files.</p></item>
10747             </list> Changes which cause <prgn>dpkg-source</prgn> to
10748             print a warning but continue anyway are:
10749             <list compact="compact">
10750               <item>
10751                 <p>
10752                   Removing files, directories or symlinks.
10753                   <footnote>
10754                       Renaming a file is not treated specially - it is
10755                       seen as the removal of the old file (which
10756                       generates a warning, but is otherwise ignored),
10757                       and the creation of the new one.
10758                   </footnote>
10759                 </p>
10760               </item>
10761               <item>
10762                 <p>
10763                   Changed text files which are missing the usual final
10764                   newline (either in the original or the modified
10765                   source tree).
10766                 </p>
10767               </item>
10768             </list>
10769             Changes which are not represented, but which are not detected by
10770             <prgn>dpkg-source</prgn>, are:
10771             <list compact="compact">
10772               <item><p>Changing the permissions of files (other than
10773                   <file>debian/rules</file>) and directories.</p></item>
10774             </list>
10775           </p>
10776
10777           <p>
10778             The <file>debian</file> directory and <file>debian/rules</file>
10779             are handled specially by <prgn>dpkg-source</prgn> - before
10780             applying the changes it will create the <file>debian</file>
10781             directory, and afterwards it will make
10782             <file>debian/rules</file> world-executable.
10783           </p>
10784         </sect1>
10785       </sect>
10786     </appendix>
10787
10788     <appendix id="pkg-controlfields">
10789       <heading>Control files and their fields (from old Packaging Manual)</heading>
10790
10791       <p>
10792         Many of the tools in the <prgn>dpkg</prgn> suite manipulate
10793         data in a common format, known as control files.  Binary and
10794         source packages have control data as do the <file>.changes</file>
10795         files which control the installation of uploaded files, and
10796         <prgn>dpkg</prgn>'s internal databases are in a similar
10797         format.
10798       </p>
10799
10800       <sect>
10801         <heading>Syntax of control files</heading>
10802
10803         <p>
10804           See <ref id="controlsyntax">.
10805         </p>
10806
10807         <p>
10808           It is important to note that there are several fields which
10809           are optional as far as <prgn>dpkg</prgn> and the related
10810           tools are concerned, but which must appear in every Debian
10811           package, or whose omission may cause problems.
10812         </p>
10813       </sect>
10814
10815       <sect>
10816         <heading>List of fields</heading>
10817
10818         <p>
10819           See <ref id="controlfieldslist">.
10820         </p>
10821
10822         <p>
10823           This section now contains only the fields that didn't belong
10824           to the Policy manual.
10825         </p>
10826
10827         <sect1 id="pkg-f-Filename">
10828           <heading><tt>Filename</tt> and <tt>MSDOS-Filename</tt></heading>
10829
10830           <p>
10831             These fields in <tt>Packages</tt> files give the
10832             filename(s) of (the parts of) a package in the
10833             distribution directories, relative to the root of the
10834             Debian hierarchy.  If the package has been split into
10835             several parts the parts are all listed in order, separated
10836             by spaces.
10837           </p>
10838         </sect1>
10839
10840         <sect1 id="pkg-f-Size">
10841           <heading><tt>Size</tt> and <tt>MD5sum</tt></heading>
10842
10843           <p>
10844             These fields in <file>Packages</file> files give the size (in
10845             bytes, expressed in decimal) and MD5 checksum of the
10846             file(s) which make(s) up a binary package in the
10847             distribution.  If the package is split into several parts
10848             the values for the parts are listed in order, separated by
10849             spaces.
10850           </p>
10851         </sect1>
10852
10853         <sect1 id="pkg-f-Status">
10854           <heading><tt>Status</tt></heading>
10855
10856           <p>
10857             This field in <prgn>dpkg</prgn>'s status file records
10858             whether the user wants a package installed, removed or
10859             left alone, whether it is broken (requiring
10860             re-installation) or not and what its current state on the
10861             system is.  Each of these pieces of information is a
10862             single word.
10863           </p>
10864         </sect1>
10865
10866         <sect1 id="pkg-f-Config-Version">
10867           <heading><tt>Config-Version</tt></heading>
10868
10869           <p>
10870             If a package is not installed or not configured, this
10871             field in <prgn>dpkg</prgn>'s status file records the last
10872             version of the package which was successfully
10873             configured.
10874           </p>
10875         </sect1>
10876
10877         <sect1 id="pkg-f-Conffiles">
10878           <heading><tt>Conffiles</tt></heading>
10879
10880           <p>
10881             This field in <prgn>dpkg</prgn>'s status file contains
10882             information about the automatically-managed configuration
10883             files held by a package.  This field should <em>not</em>
10884             appear anywhere in a package!
10885           </p>
10886         </sect1>
10887
10888         <sect1>
10889           <heading>Obsolete fields</heading>
10890
10891           <p>
10892             These are still recognized by <prgn>dpkg</prgn> but should
10893             not appear anywhere any more.
10894
10895             <taglist compact="compact">
10896
10897               <tag><tt>Revision</tt></tag>
10898               <tag><tt>Package-Revision</tt></tag>
10899               <tag><tt>Package_Revision</tt></tag>
10900               <item>
10901                   The Debian revision part of the package version was
10902                   at one point in a separate control field.  This
10903                   field went through several names.
10904               </item>
10905
10906               <tag><tt>Recommended</tt></tag>
10907               <item>Old name for <tt>Recommends</tt>.</item>
10908
10909               <tag><tt>Optional</tt></tag>
10910               <item>Old name for <tt>Suggests</tt>.</item>
10911
10912               <tag><tt>Class</tt></tag>
10913               <item>Old name for <tt>Priority</tt>.</item>
10914
10915             </taglist>
10916           </p>
10917         </sect1>
10918       </sect>
10919
10920     </appendix>
10921
10922     <appendix id="pkg-conffiles">
10923       <heading>Configuration file handling (from old Packaging Manual)</heading>
10924
10925       <p>
10926         <prgn>dpkg</prgn> can do a certain amount of automatic
10927         handling of package configuration files.
10928       </p>
10929
10930       <p>
10931         Whether this mechanism is appropriate depends on a number of
10932         factors, but basically there are two approaches to any
10933         particular configuration file.
10934       </p>
10935
10936       <p>
10937         The easy method is to ship a best-effort configuration in the
10938         package, and use <prgn>dpkg</prgn>'s conffile mechanism to
10939         handle updates.  If the user is unlikely to want to edit the
10940         file, but you need them to be able to without losing their
10941         changes, and a new package with a changed version of the file
10942         is only released infrequently, this is a good approach.
10943       </p>
10944
10945       <p>
10946         The hard method is to build the configuration file from
10947         scratch in the <prgn>postinst</prgn> script, and to take the
10948         responsibility for fixing any mistakes made in earlier
10949         versions of the package automatically.  This will be
10950         appropriate if the file is likely to need to be different on
10951         each system.
10952       </p>
10953
10954       <sect><heading>Automatic handling of configuration files by
10955       <prgn>dpkg</prgn>
10956         </heading>
10957
10958         <p>
10959           A package may contain a control information file called
10960           <tt>conffiles</tt>.  This file should be a list of filenames
10961           of configuration files needing automatic handling, separated
10962           by newlines.  The filenames should be absolute pathnames,
10963           and the files referred to should actually exist in the
10964           package.
10965         </p>
10966
10967         <p>
10968           When a package is upgraded <prgn>dpkg</prgn> will process
10969           the configuration files during the configuration stage,
10970           shortly before it runs the package's <prgn>postinst</prgn>
10971           script,
10972         </p>
10973
10974         <p>
10975           For each file it checks to see whether the version of the
10976           file included in the package is the same as the one that was
10977           included in the last version of the package (the one that is
10978           being upgraded from); it also compares the version currently
10979           installed on the system with the one shipped with the last
10980           version.
10981         </p>
10982
10983         <p>
10984           If neither the user nor the package maintainer has changed
10985           the file, it is left alone.  If one or the other has changed
10986           their version, then the changed version is preferred - i.e.,
10987           if the user edits their file, but the package maintainer
10988           doesn't ship a different version, the user's changes will
10989           stay, silently, but if the maintainer ships a new version
10990           and the user hasn't edited it the new version will be
10991           installed (with an informative message).  If both have
10992           changed their version the user is prompted about the problem
10993           and must resolve the differences themselves.
10994         </p>
10995
10996         <p>
10997           The comparisons are done by calculating the MD5 message
10998           digests of the files, and storing the MD5 of the file as it
10999           was included in the most recent version of the package.
11000         </p>
11001
11002         <p>
11003           When a package is installed for the first time
11004           <prgn>dpkg</prgn> will install the file that comes with it,
11005           unless that would mean overwriting a file already on the
11006           file system.
11007         </p>
11008
11009         <p>
11010           However, note that <prgn>dpkg</prgn> will <em>not</em>
11011           replace a conffile that was removed by the user (or by a
11012           script).  This is necessary because with some programs a
11013           missing file produces an effect hard or impossible to
11014           achieve in another way, so that a missing file needs to be
11015           kept that way if the user did it.
11016         </p>
11017
11018         <p>
11019           Note that a package should <em>not</em> modify a
11020           <prgn>dpkg</prgn>-handled conffile in its maintainer
11021           scripts.  Doing this will lead to <prgn>dpkg</prgn> giving
11022           the user confusing and possibly dangerous options for
11023           conffile update when the package is upgraded.</p>
11024       </sect>
11025
11026       <sect><heading>Fully-featured maintainer script configuration
11027       handling
11028         </heading>
11029
11030         <p>
11031           For files which contain site-specific information such as
11032           the hostname and networking details and so forth, it is
11033           better to create the file in the package's
11034           <prgn>postinst</prgn> script.
11035         </p>
11036
11037         <p>
11038           This will typically involve examining the state of the rest
11039           of the system to determine values and other information, and
11040           may involve prompting the user for some information which
11041           can't be obtained some other way.
11042         </p>
11043
11044         <p>
11045           When using this method there are a couple of important
11046           issues which should be considered:
11047         </p>
11048
11049         <p>
11050           If you discover a bug in the program which generates the
11051           configuration file, or if the format of the file changes
11052           from one version to the next, you will have to arrange for
11053           the postinst script to do something sensible - usually this
11054           will mean editing the installed configuration file to remove
11055           the problem or change the syntax.  You will have to do this
11056           very carefully, since the user may have changed the file,
11057           perhaps to fix the very problem that your script is trying
11058           to deal with - you will have to detect these situations and
11059           deal with them correctly.
11060         </p>
11061
11062         <p>
11063           If you do go down this route it's probably a good idea to
11064           make the program that generates the configuration file(s) a
11065           separate program in <file>/usr/sbin</file>, by convention called
11066           <file><var>package</var>config</file> and then run that if
11067           appropriate from the post-installation script.  The
11068           <tt><var>package</var>config</tt> program should not
11069           unquestioningly overwrite an existing configuration - if its
11070           mode of operation is geared towards setting up a package for
11071           the first time (rather than any arbitrary reconfiguration
11072           later) you should have it check whether the configuration
11073           already exists, and require a <tt>--force</tt> flag to
11074           overwrite it.</p></sect>
11075     </appendix>
11076
11077     <appendix id="pkg-alternatives"><heading>Alternative versions of
11078         an interface - <prgn>update-alternatives</prgn> (from old
11079     Packaging Manual)
11080       </heading>
11081
11082       <p>
11083         When several packages all provide different versions of the
11084         same program or file it is useful to have the system select a
11085         default, but to allow the system administrator to change it
11086         and have their decisions respected.
11087       </p>
11088
11089       <p>
11090         For example, there are several versions of the <prgn>vi</prgn>
11091         editor, and there is no reason to prevent all of them from
11092         being installed at once, each under their own name
11093         (<prgn>nvi</prgn>, <prgn>vim</prgn> or whatever).
11094         Nevertheless it is desirable to have the name <tt>vi</tt>
11095         refer to something, at least by default.
11096       </p>
11097
11098       <p>
11099         If all the packages involved cooperate, this can be done with
11100         <prgn>update-alternatives</prgn>.
11101       </p>
11102
11103       <p>
11104         Each package provides its own version under its own name, and
11105         calls <prgn>update-alternatives</prgn> in its postinst to
11106         register its version (and again in its prerm to deregister
11107         it).
11108       </p>
11109
11110       <p>
11111         See the man page <manref name="update-alternatives"
11112         section="8"> for details.
11113       </p>
11114
11115       <p>
11116         If <prgn>update-alternatives</prgn> does not seem appropriate
11117         you may wish to consider using diversions instead.</p>
11118     </appendix>
11119
11120     <appendix id="pkg-diversions"><heading>Diversions - overriding a
11121     package's version of a file (from old Packaging Manual)
11122       </heading>
11123
11124       <p>
11125         It is possible to have <prgn>dpkg</prgn> not overwrite a file
11126         when it reinstalls the package it belongs to, and to have it
11127         put the file from the package somewhere else instead.
11128       </p>
11129
11130       <p>
11131         This can be used locally to override a package's version of a
11132         file, or by one package to override another's version (or
11133         provide a wrapper for it).
11134       </p>
11135
11136       <p>
11137         Before deciding to use a diversion, read <ref
11138         id="pkg-alternatives"> to see if you really want a diversion
11139         rather than several alternative versions of a program.
11140       </p>
11141
11142       <p>
11143         There is a diversion list, which is read by <prgn>dpkg</prgn>,
11144         and updated by a special program <prgn>dpkg-divert</prgn>.
11145         Please see <manref name="dpkg-divert" section="8"> for full
11146         details of its operation.
11147       </p>
11148
11149       <p>
11150         When a package wishes to divert a file from another, it should
11151         call <prgn>dpkg-divert</prgn> in its preinst to add the
11152         diversion and rename the existing file.  For example,
11153         supposing that a <prgn>smailwrapper</prgn> package wishes to
11154         install a wrapper around <file>/usr/sbin/smail</file>:
11155         <example>
11156    dpkg-divert --package smailwrapper --add --rename \
11157       --divert /usr/sbin/smail.real /usr/sbin/smail
11158         </example> The <tt>--package smailwrapper</tt> ensures that
11159         <prgn>smailwrapper</prgn>'s copy of <file>/usr/sbin/smail</file>
11160         can bypass the diversion and get installed as the true version.
11161         It's safe to add the diversion unconditionally on upgrades since
11162         it will be left unchanged if it already exists, but
11163         <prgn>dpkg-divert</prgn> will display a message.  To suppress that
11164         message, make the command conditional on the version from which
11165         the package is being upgraded:
11166         <example>
11167    if [ upgrade != "$1" ] || dpkg --compare-versions "$2" lt 1.0-2; then
11168       dpkg-divert --package smailwrapper --add --rename \
11169          --divert /usr/sbin/smail.real /usr/sbin/smail
11170    fi
11171         </example> where <tt>1.0-2</tt> is the version at which the
11172         diversion was first added to the package.  Running the command
11173         during abort-upgrade is pointless but harmless.
11174       </p>
11175
11176       <p>
11177         The postrm has to do the reverse:
11178         <example>
11179   if [ remove = "$1" -o abort-install = "$1" -o disappear = "$1" ]; then
11180      dpkg-divert --package smailwrapper --remove --rename \
11181         --divert /usr/sbin/smail.real /usr/sbin/smail
11182   fi
11183         </example> If the diversion was added at a particular version, the
11184         postrm should also handle the failure case of upgrading from an
11185         older version (unless the older version is so old that direct
11186         upgrades are no longer supported):
11187         <example>
11188   if [ abort-upgrade = "$1" ] && dpkg --compare-versions "$2" lt 1.0-2; then
11189      dpkg-divert --package smailwrapper --remove --rename \
11190         --divert /usr/sbin/smail.real /usr/sbin/smail
11191   fi
11192         </example> where <tt>1.02-2</tt> is the version at which the
11193         diversion was first added to the package.  The postrm should not
11194         remove the diversion on upgrades both because there's no reason to
11195         remove the diversion only to immediately re-add it and since the
11196         postrm of the old package is run after unpacking so the removal of
11197         the diversion will fail.
11198       </p>
11199
11200       <p>
11201         Do not attempt to divert a file which is vitally important for
11202         the system's operation - when using <prgn>dpkg-divert</prgn>
11203         there is a time, after it has been diverted but before
11204         <prgn>dpkg</prgn> has installed the new version, when the file
11205         does not exist.</p>
11206     </appendix>
11207
11208   </book>
11209 </debiandoc>
11210 <!-- Local variables: -->
11211 <!-- indent-tabs-mode: t -->
11212 <!-- End: -->
11213 <!-- vim:set ai et sts=2 sw=2 tw=76: -->