Add nodoc tag to DEB_BUILD_OPTIONS
[debian-policy.git] / policy.sgml
blob1505214b94a17600b66e773bd81cfd95616288ad
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>
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>
16 <abstract>
17 This manual describes the policy requirements for the Debian
18 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>
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>
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>
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>
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
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>
63 <toc detail="sect1">
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 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>
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>
115 The footnotes present in this manual are
116 merely informative, and are not part of Debian policy itself.
117 </p>
120 The appendices to this manual are not necessarily normative,
121 either. Please see <ref id="pkg-scope"> for more information.
122 </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>
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>
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>
163 udebs (stripped-down binary packages used by the Debian Installer) do
164 not comply with all of the requirements discussed here. See the
165 <url name="Debian Installer internals manual"
166 id="http://d-i.alioth.debian.org/doc/internals/ch03.html"> for more
167 information about them.
168 </p>
169 </sect>
171 <sect>
172 <heading>New versions of this document</heading>
175 This manual is distributed via the Debian package
176 <package><url name="debian-policy"
177 id="http://packages.debian.org/debian-policy"></package>
178 (<httpsite>packages.debian.org</httpsite>
179 <httppath>/debian-policy</httppath>).
180 </p>
183 The current version of this document is also available from
184 the Debian web mirrors at
185 <tt><url name="/doc/debian-policy/"
186 id="http://www.debian.org/doc/debian-policy/"></tt>.
188 <httpsite>www.debian.org</httpsite>
189 <httppath>/doc/debian-policy/</httppath>)
190 Also available from the same directory are several other
191 formats: <file>policy.html.tar.gz</file>
192 (<httppath>/doc/debian-policy/policy.html.tar.gz</httppath>),
193 <file>policy.pdf.gz</file>
194 (<httppath>/doc/debian-policy/policy.pdf.gz</httppath>)
195 and <file>policy.ps.gz</file>
196 (<httppath>/doc/debian-policy/policy.ps.gz</httppath>).
197 </p>
200 The <package>debian-policy</package> package also includes the file
201 <file>upgrading-checklist.txt.gz</file> which indicates policy
202 changes between versions of this document.
203 </p>
204 </sect>
206 <sect id="authors">
207 <heading>Authors and Maintainers</heading>
210 Originally called "Debian GNU/Linux Policy Manual", this
211 manual was initially written in 1996 by Ian Jackson.
212 It was revised on November 27th, 1996 by David A. Morris.
213 Christian Schwarz added new sections on March 15th, 1997,
214 and reworked/restructured it in April-July 1997.
215 Christoph Lameter contributed the "Web Standard".
216 Julian Gilbey largely restructured it in 2001.
217 </p>
220 Since September 1998, the responsibility for the contents of
221 this document lies on the <url name="debian-policy mailing list"
222 id="mailto:debian-policy@lists.debian.org">. Proposals
223 are discussed there and inserted into policy after a certain
224 consensus is established.
225 <!-- insert shameless policy-process plug here eventually -->
226 The actual editing is done by a group of maintainers that have
227 no editorial powers. These are the current maintainers:
229 <enumlist>
230 <item>Russ Allbery</item>
231 <item>Bill Allombert</item>
232 <item>Andreas Barth</item>
233 <item>Jonathan Nieder</item>
234 </enumlist>
235 </p>
238 While the authors of this document have tried hard to avoid
239 typos and other errors, these do still occur. If you discover
240 an error in this manual or if you want to give any
241 comments, suggestions, or criticisms please send an email to
242 the Debian Policy List,
243 <email>debian-policy@lists.debian.org</email>, or submit a
244 bug report against the <tt>debian-policy</tt> package.
245 </p>
248 Please do not try to reach the individual authors or maintainers
249 of the Policy Manual regarding changes to the Policy.
250 </p>
251 </sect>
253 <sect id="related">
254 <heading>Related documents</heading>
257 There are several other documents other than this Policy Manual
258 that are necessary to fully understand some Debian policies and
259 procedures.
260 </p>
263 The external "sub-policy" documents are referred to in:
264 <list compact="compact">
265 <item><ref id="fhs"></item>
266 <item><ref id="virtual_pkg"></item>
267 <item><ref id="menus"></item>
268 <item><ref id="perl"></item>
269 <item><ref id="maintscriptprompt"></item>
270 <item><ref id="emacs"></item>
271 </list>
272 </p>
275 In addition to those, which carry the weight of policy, there
276 is the Debian Developer's Reference. This document describes
277 procedures and resources for Debian developers, but it is
278 <em>not</em> normative; rather, it includes things that don't
279 belong in the Policy, such as best practices for developers.
280 </p>
283 The Developer's Reference is available in the
284 <package>developers-reference</package> package.
285 It's also available from the Debian web mirrors at
286 <tt><url name="/doc/developers-reference/"
287 id="http://www.debian.org/doc/developers-reference/"></tt>.
288 </p>
291 Finally, a <qref id="copyrightformat">specification for
292 machine-readable copyright files</qref> is maintained as part of
293 the <package>debian-policy</package> package using the same
294 procedure as the other policy documents. Use of this format is
295 optional.
296 </p>
297 </sect>
299 <sect id="definitions">
300 <heading>Definitions</heading>
303 The following terms are used in this Policy Manual:
304 <taglist>
305 <tag>ASCII</tag>
306 <item>
307 The character encoding specified by ANSI X3.4-1986 and its
308 predecessor standards, referred to in MIME as US-ASCII, and
309 corresponding to an encoding in eight bits per character of
310 the first 128 <url id="http://www.unicode.org/"
311 name="Unicode"> characters, with the eighth bit always zero.
312 </item>
313 <tag>UTF-8</tag>
314 <item>
315 The transformation format (sometimes called encoding) of
316 <url id="http://www.unicode.org/" name="Unicode"> defined by
317 <url id="http://www.rfc-editor.org/rfc/rfc3629.txt"
318 name="RFC 3629">. UTF-8 has the useful property of having
319 ASCII as a subset, so any text encoded in ASCII is trivially
320 also valid UTF-8.
321 </item>
322 </taglist>
323 </p>
324 </sect>
325 </chapt>
328 <chapt id="archive">
329 <heading>The Debian Archive</heading>
332 The Debian system is maintained and distributed as a
333 collection of <em>packages</em>. Since there are so many of
334 them (currently well over 15000), they are split into
335 <em>sections</em> and given <em>priorities</em> to simplify
336 the handling of them.
337 </p>
340 The effort of the Debian project is to build a free operating
341 system, but not every package we want to make accessible is
342 <em>free</em> in our sense (see the Debian Free Software
343 Guidelines, below), or may be imported/exported without
344 restrictions. Thus, the archive is split into areas<footnote>
345 The Debian archive software uses the term "component" internally
346 and in the Release file format to refer to the division of an
347 archive. The Debian Social Contract simply refers to "areas."
348 This document uses terminology similar to the Social Contract.
349 </footnote> based on their licenses and other restrictions.
350 </p>
353 The aims of this are:
355 <list compact="compact">
356 <item>to allow us to make as much software available as we can</item>
357 <item>to allow us to encourage everyone to write free software,
358 and</item>
359 <item>to allow us to make it easy for people to produce
360 CD-ROMs of our system without violating any licenses,
361 import/export restrictions, or any other laws.</item>
362 </list>
363 </p>
366 The <em>main</em> archive area forms the <em>Debian distribution</em>.
367 </p>
370 Packages in the other archive areas (<tt>contrib</tt>,
371 <tt>non-free</tt>) are not considered to be part of the Debian
372 distribution, although we support their use and provide
373 infrastructure for them (such as our bug-tracking system and
374 mailing lists). This Debian Policy Manual applies to these
375 packages as well.
376 </p>
378 <sect id="dfsg">
379 <heading>The Debian Free Software Guidelines</heading>
381 The Debian Free Software Guidelines (DFSG) form our
382 definition of "free software". These are:
383 <taglist>
384 <tag>1. Free Redistribution
385 </tag>
386 <item>
387 The license of a Debian component may not restrict any
388 party from selling or giving away the software as a
389 component of an aggregate software distribution
390 containing programs from several different
391 sources. The license may not require a royalty or
392 other fee for such sale.
393 </item>
394 <tag>2. Source Code
395 </tag>
396 <item>
397 The program must include source code, and must allow
398 distribution in source code as well as compiled form.
399 </item>
400 <tag>3. Derived Works
401 </tag>
402 <item>
403 The license must allow modifications and derived
404 works, and must allow them to be distributed under the
405 same terms as the license of the original software.
406 </item>
407 <tag>4. Integrity of The Author's Source Code
408 </tag>
409 <item>
410 The license may restrict source-code from being
411 distributed in modified form <em>only</em> if the
412 license allows the distribution of "patch files"
413 with the source code for the purpose of modifying the
414 program at build time. The license must explicitly
415 permit distribution of software built from modified
416 source code. The license may require derived works to
417 carry a different name or version number from the
418 original software. (This is a compromise. The Debian
419 Project encourages all authors to not restrict any
420 files, source or binary, from being modified.)
421 </item>
422 <tag>5. No Discrimination Against Persons or Groups
423 </tag>
424 <item>
425 The license must not discriminate against any person
426 or group of persons.
427 </item>
428 <tag>6. No Discrimination Against Fields of Endeavor
429 </tag>
430 <item>
431 The license must not restrict anyone from making use
432 of the program in a specific field of endeavor. For
433 example, it may not restrict the program from being
434 used in a business, or from being used for genetic
435 research.
436 </item>
437 <tag>7. Distribution of License
438 </tag>
439 <item>
440 The rights attached to the program must apply to all
441 to whom the program is redistributed without the need
442 for execution of an additional license by those
443 parties.
444 </item>
445 <tag>8. License Must Not Be Specific to Debian
446 </tag>
447 <item>
448 The rights attached to the program must not depend on
449 the program's being part of a Debian system. If the
450 program is extracted from Debian and used or
451 distributed without Debian but otherwise within the
452 terms of the program's license, all parties to whom
453 the program is redistributed must have the same
454 rights as those that are granted in conjunction with
455 the Debian system.
456 </item>
457 <tag>9. License Must Not Contaminate Other Software
458 </tag>
459 <item>
460 The license must not place restrictions on other
461 software that is distributed along with the licensed
462 software. For example, the license must not insist
463 that all other programs distributed on the same medium
464 must be free software.
465 </item>
466 <tag>10. Example Licenses
467 </tag>
468 <item>
469 The "GPL," "BSD," and "Artistic" licenses are examples of
470 licenses that we consider <em>free</em>.
471 </item>
472 </taglist>
473 </p>
474 </sect>
476 <sect id="sections">
477 <heading>Archive areas</heading>
479 <sect1 id="main">
480 <heading>The main archive area</heading>
483 The <em>main</em> archive area comprises the Debian
484 distribution. Only the packages in this area are considered
485 part of the distribution. None of the packages in
486 the <em>main</em> archive area require software outside of
487 that area to function. Anyone may use, share, modify and
488 redistribute the packages in this archive area
489 freely<footnote>
490 See <url id="http://www.debian.org/intro/free"
491 name="What Does Free Mean?"> for
492 more about what we mean by free software.
493 </footnote>.
494 </p>
497 Every package in <em>main</em> must comply with the DFSG
498 (Debian Free Software Guidelines).
499 </p>
502 In addition, the packages in <em>main</em>
503 <list compact="compact">
504 <item>
505 must not require or recommend a package outside
506 of <em>main</em> for compilation or execution (thus, the
507 package must not declare a "Pre-Depends", "Depends",
508 "Recommends", "Build-Depends", "Build-Depends-Indep",
509 or "Build-Depends-Arch" relationship on a non-<em>main</em>
510 package),
511 </item>
512 <item>
513 must not be so buggy that we refuse to support them,
515 </item>
516 <item>
517 must meet all policy requirements presented in this
518 manual.
519 </item>
520 </list>
521 </p>
523 </sect1>
525 <sect1 id="contrib">
526 <heading>The contrib archive area</heading>
529 The <em>contrib</em> archive area contains supplemental
530 packages intended to work with the Debian distribution, but
531 which require software outside of the distribution to either
532 build or function.
533 </p>
536 Every package in <em>contrib</em> must comply with the DFSG.
537 </p>
540 In addition, the packages in <em>contrib</em>
541 <list compact="compact">
542 <item>
543 must not be so buggy that we refuse to support them,
545 </item>
546 <item>
547 must meet all policy requirements presented in this
548 manual.
549 </item>
550 </list>
551 </p>
554 Examples of packages which would be included in
555 <em>contrib</em> are:
556 <list compact="compact">
557 <item>
558 free packages which require <em>contrib</em>,
559 <em>non-free</em> packages or packages which are not
560 in our archive at all for compilation or execution,
562 </item>
563 <item>
564 wrapper packages or other sorts of free accessories for
565 non-free programs.
566 </item>
567 </list>
568 </p>
569 </sect1>
571 <sect1 id="non-free">
572 <heading>The non-free archive area</heading>
575 The <em>non-free</em> archive area contains supplemental
576 packages intended to work with the Debian distribution that do
577 not comply with the DFSG or have other problems that make
578 their distribution problematic. They may not comply with all
579 of the policy requirements in this manual due to restrictions
580 on modifications or other limitations.
581 </p>
584 Packages must be placed in <em>non-free</em> if they are
585 not compliant with the DFSG or are encumbered by patents
586 or other legal issues that make their distribution
587 problematic.
588 </p>
591 In addition, the packages in <em>non-free</em>
592 <list compact="compact">
593 <item>
594 must not be so buggy that we refuse to support them,
596 </item>
597 <item>
598 must meet all policy requirements presented in this
599 manual that it is possible for them to meet.
600 <footnote>
601 It is possible that there are policy
602 requirements which the package is unable to
603 meet, for example, if the source is
604 unavailable. These situations will need to be
605 handled on a case-by-case basis.
606 </footnote>
607 </item>
608 </list>
609 </p>
610 </sect1>
612 </sect>
614 <sect id="pkgcopyright">
615 <heading>Copyright considerations</heading>
618 Every package must be accompanied by a verbatim copy of its
619 copyright information and distribution license in the file
620 <file>/usr/share/doc/<var>package</var>/copyright</file>
621 (see <ref id="copyrightfile"> for further details).
622 </p>
625 We reserve the right to restrict files from being included
626 anywhere in our archives if
627 <list compact="compact">
628 <item>
629 their use or distribution would break a law,
630 </item>
631 <item>
632 there is an ethical conflict in their distribution or
633 use,
634 </item>
635 <item>
636 we would have to sign a license for them, or
637 </item>
638 <item>
639 their distribution would conflict with other project
640 policies.
641 </item>
642 </list>
643 </p>
646 Programs whose authors encourage the user to make
647 donations are fine for the main distribution, provided
648 that the authors do not claim that not donating is
649 immoral, unethical, illegal or something similar; in such
650 a case they must go in <em>non-free</em>.
651 </p>
654 Packages whose copyright permission notices (or patent
655 problems) do not even allow redistribution of binaries
656 only, and where no special permission has been obtained,
657 must not be placed on the Debian FTP site and its mirrors
658 at all.
659 </p>
662 Note that under international copyright law (this applies
663 in the United States, too), <em>no</em> distribution or
664 modification of a work is allowed without an explicit
665 notice saying so. Therefore a program without a copyright
666 notice <em>is</em> copyrighted and you may not do anything
667 to it without risking being sued! Likewise if a program
668 has a copyright notice but no statement saying what is
669 permitted then nothing is permitted.
670 </p>
673 Many authors are unaware of the problems that restrictive
674 copyrights (or lack of copyright notices) can cause for
675 the users of their supposedly-free software. It is often
676 worthwhile contacting such authors diplomatically to ask
677 them to modify their license terms. However, this can be a
678 politically difficult thing to do and you should ask for
679 advice on the <tt>debian-legal</tt> mailing list first, as
680 explained below.
681 </p>
684 When in doubt about a copyright, send mail to
685 <email>debian-legal@lists.debian.org</email>. Be prepared
686 to provide us with the copyright statement. Software
687 covered by the GPL, public domain software and BSD-like
688 copyrights are safe; be wary of the phrases "commercial
689 use prohibited" and "distribution restricted".
690 </p>
691 </sect>
693 <sect id="subsections">
694 <heading>Sections</heading>
697 The packages in the archive areas <em>main</em>,
698 <em>contrib</em> and <em>non-free</em> are grouped further into
699 <em>sections</em> to simplify handling.
700 </p>
703 The archive area and section for each package should be
704 specified in the package's <tt>Section</tt> control record (see
705 <ref id="f-Section">). However, the maintainer of the Debian
706 archive may override this selection to ensure the consistency of
707 the Debian distribution. The <tt>Section</tt> field should be
708 of the form:
709 <list compact="compact">
710 <item>
711 <em>section</em> if the package is in the
712 <em>main</em> archive area,
713 </item>
714 <item>
715 <em>area/section</em> if the package is in
716 the <em>contrib</em> or <em>non-free</em>
717 archive areas.
718 </item>
719 </list>
720 </p>
723 The Debian archive maintainers provide the authoritative
724 list of sections. At present, they are:
725 admin,
726 cli-mono,
727 comm,
728 database,
729 debug,
730 devel,
731 doc,
732 editors,
733 education,
734 electronics,
735 embedded,
736 fonts,
737 games,
738 gnome,
739 gnu-r,
740 gnustep,
741 graphics,
742 hamradio,
743 haskell,
744 httpd,
745 interpreters,
746 introspection,
747 java,
748 kde,
749 kernel,
750 libdevel,
751 libs,
752 lisp,
753 localization,
754 mail,
755 math,
756 metapackages,
757 misc,
758 net,
759 news,
760 ocaml,
761 oldlibs,
762 otherosfs,
763 perl,
764 php,
765 python,
766 ruby,
767 science,
768 shells,
769 sound,
770 tasks,
771 tex,
772 text,
773 utils,
774 vcs,
775 video,
776 web,
777 x11,
778 xfce,
779 zope.
780 The additional section <em>debian-installer</em>
781 contains special packages used by the installer and is not used
782 for normal Debian packages.
783 </p>
786 For more information about the sections and their definitions,
787 see the <url id="http://packages.debian.org/unstable/"
788 name="list of sections in unstable">.
789 </p>
790 </sect>
792 <sect id="priorities">
793 <heading>Priorities</heading>
796 Each package should have a <em>priority</em> value, which is
797 included in the package's <em>control record</em>
798 (see <ref id="f-Priority">).
799 This information is used by the Debian package management tools to
800 separate high-priority packages from less-important packages.
801 </p>
804 The following <em>priority levels</em> are recognized by the
805 Debian package management tools.
806 <taglist>
807 <tag><tt>required</tt></tag>
808 <item>
809 Packages which are necessary for the proper
810 functioning of the system (usually, this means that
811 dpkg functionality depends on these packages).
812 Removing a <tt>required</tt> package may cause your
813 system to become totally broken and you may not even
814 be able to use <prgn>dpkg</prgn> to put things back,
815 so only do so if you know what you are doing. Systems
816 with only the <tt>required</tt> packages are probably
817 unusable, but they do have enough functionality to
818 allow the sysadmin to boot and install more software.
819 </item>
820 <tag><tt>important</tt></tag>
821 <item>
822 Important programs, including those which one would
823 expect to find on any Unix-like system. If the
824 expectation is that an experienced Unix person who
825 found it missing would say "What on earth is going on,
826 where is <prgn>foo</prgn>?", it must be an
827 <tt>important</tt> package.<footnote>
828 This is an important criterion because we are
829 trying to produce, amongst other things, a free
830 Unix.
831 </footnote>
832 Other packages without which the system will not run
833 well or be usable must also have priority
834 <tt>important</tt>. This does
835 <em>not</em> include Emacs, the X Window System, TeX
836 or any other large applications. The
837 <tt>important</tt> packages are just a bare minimum of
838 commonly-expected and necessary tools.
839 </item>
840 <tag><tt>standard</tt></tag>
841 <item>
842 These packages provide a reasonably small but not too
843 limited character-mode system. This is what will be
844 installed by default if the user doesn't select anything
845 else. It doesn't include many large applications.
846 </item>
847 <tag><tt>optional</tt></tag>
848 <item>
849 (In a sense everything that isn't required is
850 optional, but that's not what is meant here.) This is
851 all the software that you might reasonably want to
852 install if you didn't know what it was and don't have
853 specialized requirements. This is a much larger system
854 and includes the X Window System, a full TeX
855 distribution, and many applications. Note that
856 optional packages should not conflict with each other.
857 </item>
858 <tag><tt>extra</tt></tag>
859 <item>
860 This contains all packages that conflict with others
861 with required, important, standard or optional
862 priorities, or are only likely to be useful if you
863 already know what they are or have specialized
864 requirements (such as packages containing only detached
865 debugging symbols).
866 </item>
867 </taglist>
868 </p>
871 Packages must not depend on packages with lower priority
872 values (excluding build-time dependencies). In order to
873 ensure this, the priorities of one or more packages may need
874 to be adjusted.
875 </p>
876 </sect>
878 </chapt>
881 <chapt id="binary">
882 <heading>Binary packages</heading>
885 The Debian distribution is based on the Debian
886 package management system, called <prgn>dpkg</prgn>. Thus,
887 all packages in the Debian distribution must be provided
888 in the <tt>.deb</tt> file format.
889 </p>
892 A <tt>.deb</tt> package contains two sets of files: a set of files
893 to install on the system when the package is installed, and a set
894 of files that provide additional metadata about the package or
895 which are executed when the package is installed or removed. This
896 second set of files is called <em>control information files</em>.
897 Among those files are the package maintainer scripts
898 and <file>control</file>, the <qref id="binarycontrolfiles">binary
899 package control file</qref> that contains the control fields for
900 the package. Other control information files include
901 the <qref id="sharedlibs-symbols"><file>symbols</file> file</qref>
902 or <qref id="sharedlibs-shlibdeps"><file>shlibs</file> file</qref>
903 used to store shared library dependency information and
904 the <file>conffiles</file> file that lists the package's
905 configuration files (described in <ref id="config-files">).
906 </p>
909 There is unfortunately a collision of terminology here between
910 control information files and files in the Debian control file
911 format. Throughout this document, a <em>control file</em> refers
912 to a file in the Debian control file format. These files are
913 documented in <ref id="controlfields">. Only files referred to
914 specifically as <em>control information files</em> are the files
915 included in the control information file member of
916 the <file>.deb</file> file format used by binary packages. Most
917 control information files are not in the Debian control file
918 format.
919 </p>
921 <sect>
922 <heading>The package name</heading>
925 Every package must have a name that's unique within the Debian
926 archive.
927 </p>
930 The package name is included in the control field
931 <tt>Package</tt>, the format of which is described
932 in <ref id="f-Package">.
933 The package name is also included as a part of the file name
934 of the <tt>.deb</tt> file.
935 </p>
936 </sect>
938 <sect id="versions">
939 <heading>The version of a package</heading>
942 Every package has a version number recorded in its
943 <tt>Version</tt> control file field, described in
944 <ref id="f-Version">.
945 </p>
948 The package management system imposes an ordering on version
949 numbers, so that it can tell whether packages are being up- or
950 downgraded and so that package system front end applications
951 can tell whether a package it finds available is newer than
952 the one installed on the system. The version number format
953 has the most significant parts (as far as comparison is
954 concerned) at the beginning.
955 </p>
958 If an upstream package has problematic version numbers they
959 should be converted to a sane form for use in the
960 <tt>Version</tt> field.
961 </p>
963 <sect1>
964 <heading>Version numbers based on dates</heading>
967 In general, Debian packages should use the same version
968 numbers as the upstream sources. However, upstream version
969 numbers based on some date formats (sometimes used for
970 development or "snapshot" releases) will not be ordered
971 correctly by the package management software. For
972 example, <prgn>dpkg</prgn> will consider "96May01" to be
973 greater than "96Dec24".
974 </p>
977 To prevent having to use epochs for every new upstream
978 version, the date-based portion of any upstream version number
979 should be given in a way that sorts correctly: four-digit year
980 first, followed by a two-digit numeric month, followed by a
981 two-digit numeric date, possibly with punctuation between the
982 components.
983 </p>
986 Native Debian packages (i.e., packages which have been written
987 especially for Debian) whose version numbers include dates
988 should also follow these rules. If punctuation is desired
989 between the date components, remember that hyphen (<tt>-</tt>)
990 cannot be used in native package versions. Period
991 (<tt>.</tt>) is normally a good choice.
992 </p>
993 </sect1>
995 </sect>
997 <sect id="maintainer">
998 <heading>The maintainer of a package</heading>
1001 Every package must have a maintainer, except for orphaned
1002 packages as described below. The maintainer may be one person
1003 or a group of people reachable from a common email address, such
1004 as a mailing list. The maintainer is responsible for
1005 maintaining the Debian packaging files, evaluating and
1006 responding appropriately to reported bugs, uploading new
1007 versions of the package (either directly or through a sponsor),
1008 ensuring that the package is placed in the appropriate archive
1009 area and included in Debian releases as appropriate for the
1010 stability and utility of the package, and requesting removal of
1011 the package from the Debian distribution if it is no longer
1012 useful or maintainable.
1013 </p>
1016 The maintainer must be specified in the <tt>Maintainer</tt>
1017 control field with their correct name and a working email
1018 address. The email address given in the <tt>Maintainer</tt>
1019 control field must accept mail from those role accounts in
1020 Debian used to send automated mails regarding the package. This
1021 includes non-spam mail from the bug-tracking system, all mail
1022 from the Debian archive maintenance software, and other role
1023 accounts or automated processes that are commonly agreed on by
1024 the project.<footnote>
1025 A sample implementation of such a whitelist written for the
1026 Mailman mailing list management software is used for mailing
1027 lists hosted by alioth.debian.org.
1028 </footnote>
1029 If one person or team maintains several packages, they should
1030 use the same form of their name and email address in
1031 the <tt>Maintainer</tt> fields of those packages.
1032 </p>
1035 The format of the <tt>Maintainer</tt> control field is
1036 described in <ref id="f-Maintainer">.
1037 </p>
1040 If the maintainer of the package is a team of people with a
1041 shared email address, the <tt>Uploaders</tt> control field must
1042 be present and must contain at least one human with their
1043 personal email address. See <ref id="f-Uploaders"> for the
1044 syntax of that field.
1045 </p>
1048 An orphaned package is one with no current maintainer. Orphaned
1049 packages should have their <tt>Maintainer</tt> control field set
1050 to <tt>Debian QA Group &lt;packages@qa.debian.org&gt;</tt>.
1051 These packages are considered maintained by the Debian project
1052 as a whole until someone else volunteers to take over
1053 maintenance.<footnote>
1054 The detailed procedure for gracefully orphaning a package can
1055 be found in the Debian Developer's Reference
1056 (see <ref id="related">).
1057 </footnote>
1058 </p>
1059 </sect>
1061 <sect id="descriptions">
1062 <heading>The description of a package</heading>
1065 Every Debian package must have a <tt>Description</tt> control
1066 field which contains a synopsis and extended description of the
1067 package. Technical information about the format of the
1068 <tt>Description</tt> field is in <ref id="f-Description">.
1069 </p>
1072 The description should describe the package (the program) to a
1073 user (system administrator) who has never met it before so that
1074 they have enough information to decide whether they want to
1075 install it. This description should not just be copied verbatim
1076 from the program's documentation.
1077 </p>
1080 Put important information first, both in the synopsis and
1081 extended description. Sometimes only the first part of the
1082 synopsis or of the description will be displayed. You can
1083 assume that there will usually be a way to see the whole
1084 extended description.
1085 </p>
1088 The description should also give information about the
1089 significant dependencies and conflicts between this package
1090 and others, so that the user knows why these dependencies and
1091 conflicts have been declared.
1092 </p>
1095 Instructions for configuring or using the package should
1096 not be included (that is what installation scripts,
1097 manual pages, info files, etc., are for). Copyright
1098 statements and other administrivia should not be included
1099 either (that is what the copyright file is for).
1100 </p>
1102 <sect1 id="synopsis"><heading>The single line synopsis</heading>
1105 The single line synopsis should be kept brief - certainly
1106 under 80 characters.
1107 </p>
1110 Do not include the package name in the synopsis line. The
1111 display software knows how to display this already, and you
1112 do not need to state it. Remember that in many situations
1113 the user may only see the synopsis line - make it as
1114 informative as you can.
1115 </p>
1117 </sect1>
1119 <sect1 id="extendeddesc"><heading>The extended description</heading>
1122 Do not try to continue the single line synopsis into the
1123 extended description. This will not work correctly when
1124 the full description is displayed, and makes no sense
1125 where only the summary (the single line synopsis) is
1126 available.
1127 </p>
1130 The extended description should describe what the package
1131 does and how it relates to the rest of the system (in terms
1132 of, for example, which subsystem it is which part of).
1133 </p>
1136 The description field needs to make sense to anyone, even
1137 people who have no idea about any of the things the
1138 package deals with.<footnote>
1139 The blurb that comes with a program in its
1140 announcements and/or <prgn>README</prgn> files is
1141 rarely suitable for use in a description. It is
1142 usually aimed at people who are already in the
1143 community where the package is used.
1144 </footnote>
1145 </p>
1147 </sect1>
1149 </sect>
1151 <sect id="dependencies">
1152 <heading>Dependencies</heading>
1155 Every package must specify the dependency information
1156 about other packages that are required for the first to
1157 work correctly.
1158 </p>
1161 For example, a dependency entry must be provided for any
1162 shared libraries required by a dynamically-linked executable
1163 binary in a package.
1164 </p>
1167 Packages are not required to declare any dependencies they
1168 have on other packages which are marked <tt>Essential</tt>
1169 (see below), and should not do so unless they depend on a
1170 particular version of that package.<footnote>
1172 Essential is needed in part to avoid unresolvable dependency
1173 loops on upgrade. If packages add unnecessary dependencies
1174 on packages in this set, the chances that there
1175 <strong>will</strong> be an unresolvable dependency loop
1176 caused by forcing these Essential packages to be configured
1177 first before they need to be is greatly increased. It also
1178 increases the chances that frontends will be unable to
1179 <strong>calculate</strong> an upgrade path, even if one
1180 exists.
1181 </p>
1183 Also, functionality is rarely ever removed from the
1184 Essential set, but <em>packages</em> have been removed from
1185 the Essential set when the functionality moved to a
1186 different package. So depending on these packages <em>just
1187 in case</em> they stop being essential does way more harm
1188 than good.
1189 </p>
1190 </footnote>
1191 </p>
1194 Sometimes, unpacking one package requires that another package
1195 be first unpacked <em>and</em> configured. In this case, the
1196 depending package must specify this dependency in
1197 the <tt>Pre-Depends</tt> control field.
1198 </p>
1201 You should not specify a <tt>Pre-Depends</tt> entry for a
1202 package before this has been discussed on the
1203 <tt>debian-devel</tt> mailing list and a consensus about
1204 doing that has been reached.
1205 </p>
1208 The format of the package interrelationship control fields is
1209 described in <ref id="relationships">.
1210 </p>
1211 </sect>
1213 <sect id="virtual_pkg">
1214 <heading>Virtual packages</heading>
1217 Sometimes, there are several packages which offer
1218 more-or-less the same functionality. In this case, it's
1219 useful to define a <em>virtual package</em> whose name
1220 describes that common functionality. (The virtual
1221 packages only exist logically, not physically; that's why
1222 they are called <em>virtual</em>.) The packages with this
1223 particular function will then <em>provide</em> the virtual
1224 package. Thus, any other package requiring that function
1225 can simply depend on the virtual package without having to
1226 specify all possible packages individually.
1227 </p>
1230 All packages should use virtual package names where
1231 appropriate, and arrange to create new ones if necessary.
1232 They should not use virtual package names (except privately,
1233 amongst a cooperating group of packages) unless they have
1234 been agreed upon and appear in the list of virtual package
1235 names. (See also <ref id="virtual">)
1236 </p>
1239 The latest version of the authoritative list of virtual
1240 package names can be found in the <tt>debian-policy</tt> package.
1241 It is also available from the Debian web mirrors at
1242 <tt><url name="/doc/packaging-manuals/virtual-package-names-list.txt"
1243 id="http://www.debian.org/doc/packaging-manuals/virtual-package-names-list.txt"></tt>.
1244 </p>
1247 The procedure for updating the list is described in the preface
1248 to the list.
1249 </p>
1251 </sect>
1253 <sect>
1254 <heading>Base system</heading>
1257 The <tt>base system</tt> is a minimum subset of the Debian
1258 system that is installed before everything else
1259 on a new system. Only very few packages are allowed to form
1260 part of the base system, in order to keep the required disk
1261 usage very small.
1262 </p>
1265 The base system consists of all those packages with priority
1266 <tt>required</tt> or <tt>important</tt>. Many of them will
1267 be tagged <tt>essential</tt> (see below).
1268 </p>
1269 </sect>
1271 <sect>
1272 <heading>Essential packages</heading>
1275 Essential is defined as the minimal set of functionality that
1276 must be available and usable on the system at all times, even
1277 when packages are in the "Unpacked" state.
1278 Packages are tagged <tt>essential</tt> for a system using the
1279 <tt>Essential</tt> control field. The format of the
1280 <tt>Essential</tt> control field is described in <ref
1281 id="f-Essential">.
1282 </p>
1285 Since these packages cannot be easily removed (one has to
1286 specify an extra <em>force option</em> to
1287 <prgn>dpkg</prgn> to do so), this flag must not be used
1288 unless absolutely necessary. A shared library package
1289 must not be tagged <tt>essential</tt>; dependencies will
1290 prevent its premature removal, and we need to be able to
1291 remove it when it has been superseded.
1292 </p>
1295 Since dpkg will not prevent upgrading of other packages
1296 while an <tt>essential</tt> package is in an unconfigured
1297 state, all <tt>essential</tt> packages must supply all of
1298 their core functionality even when unconfigured. If the
1299 package cannot satisfy this requirement it must not be
1300 tagged as essential, and any packages depending on this
1301 package must instead have explicit dependency fields as
1302 appropriate.
1303 </p>
1306 Maintainers should take great care in adding any programs,
1307 interfaces, or functionality to <tt>essential</tt> packages.
1308 Packages may assume that functionality provided by
1309 <tt>essential</tt> packages is always available without
1310 declaring explicit dependencies, which means that removing
1311 functionality from the Essential set is very difficult and is
1312 almost never done. Any capability added to an
1313 <tt>essential</tt> package therefore creates an obligation to
1314 support that capability as part of the Essential set in
1315 perpetuity.
1316 </p>
1319 You must not tag any packages <tt>essential</tt> before
1320 this has been discussed on the <tt>debian-devel</tt>
1321 mailing list and a consensus about doing that has been
1322 reached.
1323 </p>
1324 </sect>
1326 <sect id="maintscripts">
1327 <heading>Maintainer Scripts</heading>
1330 The package installation scripts should avoid producing
1331 output which is unnecessary for the user to see and
1332 should rely on <prgn>dpkg</prgn> to stave off boredom on
1333 the part of a user installing many packages. This means,
1334 amongst other things, not passing the <tt>--verbose</tt>
1335 option to <prgn>update-alternatives</prgn>.
1336 </p>
1339 Errors which occur during the execution of an installation
1340 script must be checked and the installation must not
1341 continue after an error.
1342 </p>
1345 Note that in general <ref id="scripts"> applies to package
1346 maintainer scripts, too.
1347 </p>
1350 You should not use <prgn>dpkg-divert</prgn> on a file belonging
1351 to another package without consulting the maintainer of that
1352 package first. When adding or removing diversions, package
1353 maintainer scripts must provide the <tt>--package</tt> flag
1354 to <prgn>dpkg-divert</prgn> and must not use <tt>--local</tt>.
1355 </p>
1358 All packages which supply an instance of a common command
1359 name (or, in general, filename) should generally use
1360 <prgn>update-alternatives</prgn>, so that they may be
1361 installed together. If <prgn>update-alternatives</prgn>
1362 is not used, then each package must use
1363 <tt>Conflicts</tt> to ensure that other packages are
1364 removed. (In this case, it may be appropriate to
1365 specify a conflict against earlier versions of something
1366 that previously did not use
1367 <prgn>update-alternatives</prgn>; this is an exception to
1368 the usual rule that versioned conflicts should be
1369 avoided.)
1370 </p>
1372 <sect1 id="maintscriptprompt">
1373 <heading>Prompting in maintainer scripts</heading>
1375 Package maintainer scripts may prompt the user if
1376 necessary. Prompting must be done by communicating
1377 through a program, such as <prgn>debconf</prgn>, which
1378 conforms to the Debian Configuration Management
1379 Specification, version 2 or higher.
1380 </p>
1383 Packages which are essential, or which are dependencies of
1384 essential packages, may fall back on another prompting method
1385 if no such interface is available when they are executed.
1386 </p>
1389 The Debian Configuration Management Specification is included
1390 in the <file>debconf_specification</file> files in the
1391 <package>debian-policy</package> package.
1392 It is also available from the Debian web mirrors at
1393 <tt><url name="/doc/packaging-manuals/debconf_specification.html"
1394 id="http://www.debian.org/doc/packaging-manuals/debconf_specification.html"></tt>.
1395 </p>
1398 Packages which use the Debian Configuration Management
1399 Specification may contain the additional control information
1400 files <file>config</file>
1401 and <file>templates</file>. <file>config</file> is an
1402 additional maintainer script used for package configuration,
1403 and <file>templates</file> contains templates used for user
1404 prompting. The <prgn>config</prgn> script might be run before
1405 the <prgn>preinst</prgn> script and before the package is
1406 unpacked or any of its dependencies or pre-dependencies are
1407 satisfied. Therefore it must work using only the tools
1408 present in <em>essential</em> packages.<footnote>
1409 <package>Debconf</package> or another tool that
1410 implements the Debian Configuration Management
1411 Specification will also be installed, and any
1412 versioned dependencies on it will be satisfied
1413 before preconfiguration begins.
1414 </footnote>
1415 </p>
1418 Packages which use the Debian Configuration Management
1419 Specification must allow for translation of their user-visible
1420 messages by using a gettext-based system such as the one
1421 provided by the <package>po-debconf</package> package.
1422 </p>
1425 Packages should try to minimize the amount of prompting
1426 they need to do, and they should ensure that the user
1427 will only ever be asked each question once. This means
1428 that packages should try to use appropriate shared
1429 configuration files (such as <file>/etc/papersize</file> and
1430 <file>/etc/news/server</file>), and shared
1431 <package>debconf</package> variables rather than each
1432 prompting for their own list of required pieces of
1433 information.
1434 </p>
1437 It also means that an upgrade should not ask the same
1438 questions again, unless the user has used
1439 <tt>dpkg --purge</tt> to remove the package's configuration.
1440 The answers to configuration questions should be stored in an
1441 appropriate place in <file>/etc</file> so that the user can
1442 modify them, and how this has been done should be
1443 documented.
1444 </p>
1447 If a package has a vitally important piece of
1448 information to pass to the user (such as "don't run me
1449 as I am, you must edit the following configuration files
1450 first or you risk your system emitting badly-formatted
1451 messages"), it should display this in the
1452 <prgn>config</prgn> or <prgn>postinst</prgn> script and
1453 prompt the user to hit return to acknowledge the
1454 message. Copyright messages do not count as vitally
1455 important (they belong in
1456 <file>/usr/share/doc/<var>package</var>/copyright</file>);
1457 neither do instructions on how to use a program (these
1458 should be in on-line documentation, where all the users
1459 can see them).
1460 </p>
1463 Any necessary prompting should almost always be confined
1464 to the <prgn>config</prgn> or <prgn>postinst</prgn>
1465 script. If it is done in the <prgn>postinst</prgn>, it
1466 should be protected with a conditional so that
1467 unnecessary prompting doesn't happen if a package's
1468 installation fails and the <prgn>postinst</prgn> is
1469 called with <tt>abort-upgrade</tt>,
1470 <tt>abort-remove</tt> or <tt>abort-deconfigure</tt>.
1471 </p>
1472 </sect1>
1474 </sect>
1476 </chapt>
1479 <chapt id="source">
1480 <heading>Source packages</heading>
1482 <sect id="standardsversion">
1483 <heading>Standards conformance</heading>
1486 Source packages should specify the most recent version number
1487 of this policy document with which your package complied
1488 when it was last updated.
1489 </p>
1492 This information may be used to file bug reports
1493 automatically if your package becomes too much out of date.
1494 </p>
1497 The version is specified in the <tt>Standards-Version</tt>
1498 control field.
1499 The format of the <tt>Standards-Version</tt> field is
1500 described in <ref id="f-Standards-Version">.
1501 </p>
1504 You should regularly, and especially if your package has
1505 become out of date, check for the newest Policy Manual
1506 available and update your package, if necessary. When your
1507 package complies with the new standards you should update the
1508 <tt>Standards-Version</tt> source package field and
1509 release it.<footnote>
1510 See the file <file>upgrading-checklist</file> for
1511 information about policy which has changed between
1512 different versions of this document.
1513 </footnote>
1514 </p>
1516 </sect>
1518 <sect id="pkg-relations">
1519 <heading>Package relationships</heading>
1522 Source packages should specify which binary packages they
1523 require to be installed or not to be installed in order to
1524 build correctly. For example, if building a package
1525 requires a certain compiler, then the compiler should be
1526 specified as a build-time dependency.
1527 </p>
1530 It is not necessary to explicitly specify build-time
1531 relationships on a minimal set of packages that are always
1532 needed to compile, link and put in a Debian package a
1533 standard "Hello World!" program written in C or C++. The
1534 required packages are called <em>build-essential</em>, and
1535 an informational list can be found in
1536 <file>/usr/share/doc/build-essential/list</file> (which is
1537 contained in the <tt>build-essential</tt>
1538 package).<footnote>
1539 Rationale:
1540 <list compact="compact">
1541 <item>
1542 This allows maintaining the list separately
1543 from the policy documents (the list does not
1544 need the kind of control that the policy
1545 documents do).
1546 </item>
1547 <item>
1548 Having a separate package allows one to install
1549 the build-essential packages on a machine, as
1550 well as allowing other packages such as tasks to
1551 require installation of the build-essential
1552 packages using the depends relation.
1553 </item>
1554 <item>
1555 The separate package allows bug reports against
1556 the list to be categorized separately from
1557 the policy management process in the BTS.
1558 </item>
1559 </list>
1560 </footnote>
1561 </p>
1564 When specifying the set of build-time dependencies, one
1565 should list only those packages explicitly required by the
1566 build. It is not necessary to list packages which are
1567 required merely because some other package in the list of
1568 build-time dependencies depends on them.<footnote>
1569 The reason for this is that dependencies change, and
1570 you should list all those packages, and <em>only</em>
1571 those packages that <em>you</em> need directly. What
1572 others need is their business. For example, if you
1573 only link against <file>libimlib</file>, you will need to
1574 build-depend on <package>libimlib2-dev</package> but
1575 not against any <tt>libjpeg*</tt> packages, even
1576 though <tt>libimlib2-dev</tt> currently depends on
1577 them: installation of <package>libimlib2-dev</package>
1578 will automatically ensure that all of its run-time
1579 dependencies are satisfied.
1580 </footnote>
1581 </p>
1584 If build-time dependencies are specified, it must be
1585 possible to build the package and produce working binaries
1586 on a system with only essential and build-essential
1587 packages installed and also those required to satisfy the
1588 build-time relationships (including any implied
1589 relationships). In particular, this means that version
1590 clauses should be used rigorously in build-time
1591 relationships so that one cannot produce bad or
1592 inconsistently configured packages when the relationships
1593 are properly satisfied.
1594 </p>
1597 <ref id="relationships"> explains the technical details.
1598 </p>
1599 </sect>
1601 <sect>
1602 <heading>Changes to the upstream sources</heading>
1605 If changes to the source code are made that are not
1606 specific to the needs of the Debian system, they should be
1607 sent to the upstream authors in whatever form they prefer
1608 so as to be included in the upstream version of the
1609 package.
1610 </p>
1613 If you need to configure the package differently for
1614 Debian or for Linux, and the upstream source doesn't
1615 provide a way to do so, you should add such configuration
1616 facilities (for example, a new <prgn>autoconf</prgn> test
1617 or <tt>#define</tt>) and send the patch to the upstream
1618 authors, with the default set to the way they originally
1619 had it. You can then easily override the default in your
1620 <file>debian/rules</file> or wherever is appropriate.
1621 </p>
1624 You should make sure that the <prgn>configure</prgn> utility
1625 detects the correct architecture specification string
1626 (refer to <ref id="arch-spec"> for details).
1627 </p>
1629 If your package includes the scripts <prgn>config.sub</prgn> and
1630 <prgn>config.guess</prgn>, you should arrange for the versions
1631 provided by the package <package>autotools-dev</package> be used
1632 instead (see <package>autotools-dev</package> documentation for
1633 details how to achieve that). This ensures that these files can
1634 be updated distribution-wide at build time when introducing
1635 new architectures.
1636 </p>
1639 If you need to edit a <prgn>Makefile</prgn> where GNU-style
1640 <prgn>configure</prgn> scripts are used, you should edit the
1641 <file>.in</file> files rather than editing the
1642 <prgn>Makefile</prgn> directly. This allows the user to
1643 reconfigure the package if necessary. You should
1644 <em>not</em> configure the package and edit the generated
1645 <prgn>Makefile</prgn>! This makes it impossible for someone
1646 else to later reconfigure the package without losing the
1647 changes you made.
1648 </p>
1650 </sect>
1652 <sect id="dpkgchangelog">
1653 <heading>Debian changelog: <file>debian/changelog</file></heading>
1656 Changes in the Debian version of the package should be
1657 briefly explained in the Debian changelog file
1658 <file>debian/changelog</file>.<footnote>
1660 Mistakes in changelogs are usually best rectified by
1661 making a new changelog entry rather than "rewriting
1662 history" by editing old changelog entries.
1663 </p>
1664 </footnote>
1665 This includes modifications
1666 made in the Debian package compared to the upstream one
1667 as well as other changes and updates to the package.
1668 <footnote>
1669 Although there is nothing stopping an author who is also
1670 the Debian maintainer from using this changelog for all
1671 their changes, it will have to be renamed if the Debian
1672 and upstream maintainers become different people. In such
1673 a case, however, it might be better to maintain the package
1674 as a non-native package.
1675 </footnote>
1676 </p>
1679 The format of the <file>debian/changelog</file> allows the
1680 package building tools to discover which version of the package
1681 is being built and find out other release-specific information.
1682 </p>
1685 That format is a series of entries like this:
1687 <example compact="compact">
1688 <var>package</var> (<var>version</var>) <var>distribution(s)</var>; urgency=<var>urgency</var>
1689 <var>
1690 [optional blank line(s), stripped]
1691 </var>
1692 * <var>change details</var>
1693 <var>more change details</var>
1694 <var>
1695 [blank line(s), included in output of dpkg-parsechangelog]
1696 </var>
1697 * <var>even more change details</var>
1698 <var>
1699 [optional blank line(s), stripped]
1700 </var>
1701 -- <var>maintainer name</var> &lt;<var>email address</var>&gt;<var>[two spaces]</var> <var>date</var>
1702 </example>
1703 </p>
1706 <var>package</var> and <var>version</var> are the source
1707 package name and version number.
1708 </p>
1711 <var>distribution(s)</var> lists the distributions where
1712 this version should be installed when it is uploaded - it
1713 is copied to the <tt>Distribution</tt> field in the
1714 <file>.changes</file> file. See <ref id="f-Distribution">.
1715 </p>
1718 <var>urgency</var> is the value for the <tt>Urgency</tt>
1719 field in the <file>.changes</file> file for the upload
1720 (see <ref id="f-Urgency">). It is not possible to specify
1721 an urgency containing commas; commas are used to separate
1722 <tt><var>keyword</var>=<var>value</var></tt> settings in the
1723 <prgn>dpkg</prgn> changelog format (though there is
1724 currently only one useful <var>keyword</var>,
1725 <tt>urgency</tt>).
1726 </p>
1729 The change details may in fact be any series of lines
1730 starting with at least two spaces, but conventionally each
1731 change starts with an asterisk and a separating space and
1732 continuation lines are indented so as to bring them in
1733 line with the start of the text above. Blank lines may be
1734 used here to separate groups of changes, if desired.
1735 </p>
1738 If this upload resolves bugs recorded in the Bug Tracking
1739 System (BTS), they may be automatically closed on the
1740 inclusion of this package into the Debian archive by
1741 including the string: <tt>closes: Bug#<var>nnnnn</var></tt>
1742 in the change details.<footnote>
1743 To be precise, the string should match the following
1744 Perl regular expression:
1745 <example>
1746 /closes:\s*(?:bug)?\#?\s?\d+(?:,\s*(?:bug)?\#?\s?\d+)*/i
1747 </example>
1748 Then all of the bug numbers listed will be closed by the
1749 archive maintenance software (<prgn>dak</prgn>) using the
1750 <var>version</var> of the changelog entry.
1751 </footnote>
1752 This information is conveyed via the <tt>Closes</tt> field
1753 in the <tt>.changes</tt> file (see <ref id="f-Closes">).
1754 </p>
1757 The maintainer name and email address used in the changelog
1758 should be the details of the person who prepared this release of
1759 the package. They are <em>not</em> necessarily those of the
1760 uploader or usual package maintainer.<footnote>
1761 In the case of a sponsored upload, the uploader signs the
1762 files, but the changelog maintainer name and address are those
1763 of the person who prepared this release. If the preparer of
1764 the release is not one of the usual maintainers of the package
1765 (as listed in
1766 the <qref id="f-Maintainer"><tt>Maintainer</tt></qref>
1767 or <qref id="f-Uploaders"><tt>Uploaders</tt></qref> control
1768 fields of the package), the first line of the changelog is
1769 conventionally used to explain why a non-maintainer is
1770 uploading the package. The Debian Developer's Reference
1771 (see <ref id="related">) documents the conventions
1772 used.</footnote>
1773 The information here will be copied to the <tt>Changed-By</tt>
1774 field in the <tt>.changes</tt> file
1775 (see <ref id="f-Changed-By">), and then later used to send an
1776 acknowledgement when the upload has been installed.
1777 </p>
1780 The <var>date</var> has the following format<footnote>
1781 This is the same as the format generated by <tt>date
1782 -R</tt>.
1783 </footnote> (compatible and with the same semantics of
1784 RFC 2822 and RFC 5322):
1785 <example>day-of-week, dd month yyyy hh:mm:ss +zzzz</example>
1786 where:
1787 <list compact="compact">
1788 <item>
1789 day-of week is one of: Mon, Tue, Wed, Thu, Fri, Sat, Sun
1790 </item>
1791 <item>
1792 dd is a one- or two-digit day of the month (01-31)
1793 </item>
1794 <item>
1795 month is one of: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug,
1796 Sep, Oct, Nov, Dec
1797 </item>
1798 <item>yyyy is the four-digit year (e.g. 2010)</item>
1799 <item>hh is the two-digit hour (00-23)</item>
1800 <item>mm is the two-digit minutes (00-59)</item>
1801 <item>ss is the two-digit seconds (00-60)</item>
1802 <item>
1803 +zzzz or -zzzz is the time zone offset from Coordinated
1804 Universal Time (UTC). "+" indicates that the time is ahead
1805 of (i.e., east of) UTC and "-" indicates that the time is
1806 behind (i.e., west of) UTC. The first two digits indicate
1807 the hour difference from UTC and the last two digits
1808 indicate the number of additional minutes difference from
1809 UTC. The last two digits must be in the range 00-59.
1810 </item>
1811 </list>
1812 </p>
1815 The first "title" line with the package name must start
1816 at the left hand margin. The "trailer" line with the
1817 maintainer and date details must be preceded by exactly
1818 one space. The maintainer details and the date must be
1819 separated by exactly two spaces.
1820 </p>
1823 The entire changelog must be encoded in UTF-8.
1824 </p>
1827 For more information on placement of the changelog files
1828 within binary packages, please see <ref id="changelogs">.
1829 </p>
1830 </sect>
1832 <sect id="dpkgcopyright">
1833 <heading>Copyright: <file>debian/copyright</file></heading>
1835 Every package must be accompanied by a verbatim copy of its
1836 copyright information and distribution license in the file
1837 <file>/usr/share/doc/<var>package</var>/copyright</file>
1838 (see <ref id="copyrightfile"> for further details). Also see
1839 <ref id="pkgcopyright"> for further considerations related
1840 to copyrights for packages.
1841 </p>
1842 </sect>
1843 <sect>
1844 <heading>Error trapping in makefiles</heading>
1847 When <prgn>make</prgn> invokes a command in a makefile
1848 (including your package's upstream makefiles and
1849 <file>debian/rules</file>), it does so using <prgn>sh</prgn>. This
1850 means that <prgn>sh</prgn>'s usual bad error handling
1851 properties apply: if you include a miniature script as one
1852 of the commands in your makefile you'll find that if you
1853 don't do anything about it then errors are not detected
1854 and <prgn>make</prgn> will blithely continue after
1855 problems.
1856 </p>
1859 Every time you put more than one shell command (this
1860 includes using a loop) in a makefile command you
1861 must make sure that errors are trapped. For
1862 simple compound commands, such as changing directory and
1863 then running a program, using <tt>&amp;&amp;</tt> rather
1864 than semicolon as a command separator is sufficient. For
1865 more complex commands including most loops and
1866 conditionals you should include a separate <tt>set -e</tt>
1867 command at the start of every makefile command that's
1868 actually one of these miniature shell scripts.
1869 </p>
1870 </sect>
1872 <sect id="timestamps">
1873 <heading>Time Stamps</heading>
1875 Maintainers should preserve the modification times of the
1876 upstream source files in a package, as far as is reasonably
1877 possible.<footnote>
1878 The rationale is that there is some information conveyed
1879 by knowing the age of the file, for example, you could
1880 recognize that some documentation is very old by looking
1881 at the modification time, so it would be nice if the
1882 modification time of the upstream source would be
1883 preserved.
1884 </footnote>
1885 </p>
1886 </sect>
1888 <sect id="restrictions">
1889 <heading>Restrictions on objects in source packages</heading>
1892 The source package may not contain any hard links<footnote>
1894 This is not currently detected when building source
1895 packages, but only when extracting
1896 them.
1897 </p>
1899 Hard links may be permitted at some point in the
1900 future, but would require a fair amount of
1901 work.
1902 </p>
1903 </footnote>, device special files, sockets or setuid or
1904 setgid files.<footnote>
1905 Setgid directories are allowed.
1906 </footnote>
1907 </p>
1908 </sect>
1910 <sect id="debianrules">
1911 <heading>Main building script: <file>debian/rules</file></heading>
1914 This file must be an executable makefile, and contains the
1915 package-specific recipes for compiling the package and
1916 building binary package(s) from the source.
1917 </p>
1920 It must start with the line <tt>#!/usr/bin/make -f</tt>,
1921 so that it can be invoked by saying its name rather than
1922 invoking <prgn>make</prgn> explicitly. That is, invoking
1923 either of <tt>make -f debian/rules <em>args...</em></tt>
1924 or <tt>./debian/rules <em>args...</em></tt> must result in
1925 identical behavior.
1926 </p>
1929 The following targets are required and must be implemented
1930 by <file>debian/rules</file>: <tt>clean</tt>, <tt>binary</tt>,
1931 <tt>binary-arch</tt>, <tt>binary-indep</tt>, <tt>build</tt>,
1932 <tt>build-arch</tt> and <tt>build-indep</tt>.
1933 These are the targets called by <prgn>dpkg-buildpackage</prgn>.
1934 </p>
1937 Since an interactive <file>debian/rules</file> script makes it
1938 impossible to auto-compile that package and also makes it hard
1939 for other people to reproduce the same binary package, all
1940 required targets must be non-interactive. It also follows that
1941 any target that these targets depend on must also be
1942 non-interactive.
1943 </p>
1945 For packages in the main archive, no required targets
1946 may attempt network access.
1947 </p>
1950 The targets are as follows:
1951 <taglist>
1952 <tag><tt>build</tt> (required)</tag>
1953 <item>
1955 The <tt>build</tt> target should perform all the
1956 configuration and compilation of the package.
1957 If a package has an interactive pre-build
1958 configuration routine, the Debian source package
1959 must either be built after this has taken place (so
1960 that the binary package can be built without rerunning
1961 the configuration) or the configuration routine
1962 modified to become non-interactive. (The latter is
1963 preferable if there are architecture-specific features
1964 detected by the configuration routine.)
1965 </p>
1968 For some packages, notably ones where the same
1969 source tree is compiled in different ways to produce
1970 two binary packages, the <tt>build</tt> target
1971 does not make much sense. For these packages it is
1972 good enough to provide two (or more) targets
1973 (<tt>build-a</tt> and <tt>build-b</tt> or whatever)
1974 for each of the ways of building the package, and a
1975 <tt>build</tt> target that does nothing. The
1976 <tt>binary</tt> target will have to build the
1977 package in each of the possible ways and make the
1978 binary package out of each.
1979 </p>
1982 The <tt>build</tt> target must not do anything
1983 that might require root privilege.
1984 </p>
1987 The <tt>build</tt> target may need to run the
1988 <tt>clean</tt> target first - see below.
1989 </p>
1992 When a package has a configuration and build routine
1993 which takes a long time, or when the makefiles are
1994 poorly designed, or when <tt>build</tt> needs to
1995 run <tt>clean</tt> first, it is a good idea to
1996 <tt>touch build</tt> when the build process is
1997 complete. This will ensure that if <tt>debian/rules
1998 build</tt> is run again it will not rebuild the whole
1999 program.<footnote>
2000 Another common way to do this is for <tt>build</tt>
2001 to depend on <prgn>build-stamp</prgn> and to do
2002 nothing else, and for the <prgn>build-stamp</prgn>
2003 target to do the building and to <tt>touch
2004 build-stamp</tt> on completion. This is
2005 especially useful if the build routine creates a
2006 file or directory called <tt>build</tt>; in such a
2007 case, <tt>build</tt> will need to be listed as
2008 a phony target (i.e., as a dependency of the
2009 <tt>.PHONY</tt> target). See the documentation of
2010 <prgn>make</prgn> for more information on phony
2011 targets.
2012 </footnote>
2013 </p>
2014 </item>
2016 <tag><tt>build-arch</tt> (required),
2017 <tt>build-indep</tt> (required)
2018 </tag>
2019 <item>
2021 The <tt>build-arch</tt> target must
2022 perform all the configuration and compilation required for
2023 producing all architecture-dependent binary packages
2024 (those packages for which the body of the
2025 <tt>Architecture</tt> field in <tt>debian/control</tt> is
2026 not <tt>all</tt>). Similarly, the <tt>build-indep</tt>
2027 target must perform all the configuration
2028 and compilation required for producing all
2029 architecture-independent binary packages (those packages
2030 for which the body of the <tt>Architecture</tt> field
2031 in <tt>debian/control</tt> is <tt>all</tt>).
2032 The <tt>build</tt> target
2033 should either depend on those targets or take the same
2034 actions as invoking those targets would perform.<footnote>
2035 This split allows binary-only builds to not install the
2036 dependencies required for the <tt>build-indep</tt>
2037 target and skip any resource-intensive build tasks that
2038 are only required when building architecture-independent
2039 binary packages.
2040 </footnote>
2041 </p>
2044 The <tt>build-arch</tt> and <tt>build-indep</tt> targets
2045 must not do anything that might require root privilege.
2046 </p>
2047 </item>
2049 <tag><tt>binary</tt> (required), <tt>binary-arch</tt>
2050 (required), <tt>binary-indep</tt> (required)
2051 </tag>
2052 <item>
2054 The <tt>binary</tt> target must be all that is
2055 necessary for the user to build the binary package(s)
2056 produced from this source package. It is
2057 split into two parts: <prgn>binary-arch</prgn> builds
2058 the binary packages which are specific to a particular
2059 architecture, and <tt>binary-indep</tt> builds
2060 those which are not.
2061 </p>
2063 <tt>binary</tt> may be (and commonly is) a target with
2064 no commands which simply depends on
2065 <tt>binary-arch</tt> and <tt>binary-indep</tt>.
2066 </p>
2068 Both <tt>binary-*</tt> targets should depend on the
2069 <tt>build</tt> target, or on the appropriate
2070 <tt>build-arch</tt> or <tt>build-indep</tt> target, so
2071 that the package is built if it has not been already. It
2072 should then create the relevant binary package(s),
2073 using <prgn>dpkg-gencontrol</prgn> to make their control
2074 files and <prgn>dpkg-deb</prgn> to build them and place
2075 them in the parent of the top level directory.
2076 </p>
2079 Both the <tt>binary-arch</tt> and
2080 <tt>binary-indep</tt> targets <em>must</em> exist.
2081 If one of them has nothing to do (which will always be
2082 the case if the source generates only a single binary
2083 package, whether architecture-dependent or not), it
2084 must still exist and must always succeed.
2085 </p>
2088 The <tt>binary</tt> targets must be invoked as
2089 root.<footnote>
2090 The <prgn>fakeroot</prgn> package often allows one
2091 to build a package correctly even without being
2092 root.
2093 </footnote>
2094 </p>
2095 </item>
2097 <tag><tt>clean</tt> (required)</tag>
2098 <item>
2100 This must undo any effects that the <tt>build</tt>
2101 and <tt>binary</tt> targets may have had, except
2102 that it should leave alone any output files created in
2103 the parent directory by a run of a <tt>binary</tt>
2104 target.
2105 </p>
2108 If a <tt>build</tt> file is touched at the end of
2109 the <tt>build</tt> target, as suggested above, it
2110 should be removed as the first action that
2111 <tt>clean</tt> performs, so that running
2112 <tt>build</tt> again after an interrupted
2113 <tt>clean</tt> doesn't think that everything is
2114 already done.
2115 </p>
2118 The <tt>clean</tt> target may need to be
2119 invoked as root if <tt>binary</tt> has been
2120 invoked since the last <tt>clean</tt>, or if
2121 <tt>build</tt> has been invoked as root (since
2122 <tt>build</tt> may create directories, for
2123 example).
2124 </p>
2125 </item>
2127 <tag><tt>get-orig-source</tt> (optional)</tag>
2128 <item>
2130 This target fetches the most recent version of the
2131 original source package from a canonical archive site
2132 (via FTP or WWW, for example), does any necessary
2133 rearrangement to turn it into the original source
2134 tar file format described below, and leaves it in the
2135 current directory.
2136 </p>
2139 This target may be invoked in any directory, and
2140 should take care to clean up any temporary files it
2141 may have left.
2142 </p>
2145 This target is optional, but providing it if
2146 possible is a good idea.
2147 </p>
2148 </item>
2150 <tag><tt>patch</tt> (optional)</tag>
2151 <item>
2153 This target performs whatever additional actions are
2154 required to make the source ready for editing (unpacking
2155 additional upstream archives, applying patches, etc.).
2156 It is recommended to be implemented for any package where
2157 <tt>dpkg-source -x</tt> does not result in source ready
2158 for additional modification. See
2159 <ref id="readmesource">.
2160 </p>
2161 </item>
2162 </taglist>
2165 The <tt>build</tt>, <tt>binary</tt> and
2166 <tt>clean</tt> targets must be invoked with the current
2167 directory being the package's top-level directory.
2168 </p>
2172 Additional targets may exist in <file>debian/rules</file>,
2173 either as published or undocumented interfaces or for the
2174 package's internal use.
2175 </p>
2178 The architectures we build on and build for are determined
2179 by <prgn>make</prgn> variables using the
2180 utility <prgn>dpkg-architecture</prgn>.
2181 You can determine the Debian architecture and the GNU style
2182 architecture specification string for the build architecture as
2183 well as for the host architecture. The build architecture is
2184 the architecture on which <file>debian/rules</file> is run and
2185 the package build is performed. The host architecture is the
2186 architecture on which the resulting package will be installed
2187 and run. These are normally the same, but may be different in
2188 the case of cross-compilation (building packages for one
2189 architecture on machines of a different architecture).
2190 </p>
2193 Here is a list of supported <prgn>make</prgn> variables:
2194 <list compact="compact">
2195 <item>
2196 <tt>DEB_*_ARCH</tt> (the Debian architecture)
2197 </item>
2198 <item>
2199 <tt>DEB_*_ARCH_CPU</tt> (the Debian CPU name)
2200 </item>
2201 <item>
2202 <tt>DEB_*_ARCH_OS</tt> (the Debian System name)
2203 </item>
2204 <item>
2205 <tt>DEB_*_GNU_TYPE</tt> (the GNU style architecture
2206 specification string)
2207 </item>
2208 <item>
2209 <tt>DEB_*_GNU_CPU</tt> (the CPU part of
2210 <tt>DEB_*_GNU_TYPE</tt>)
2211 </item>
2212 <item>
2213 <tt>DEB_*_GNU_SYSTEM</tt> (the System part of
2214 <tt>DEB_*_GNU_TYPE</tt>)
2215 </list>
2216 where <tt>*</tt> is either <tt>BUILD</tt> for specification of
2217 the build architecture or <tt>HOST</tt> for specification of the
2218 host architecture.
2219 </p>
2222 Backward compatibility can be provided in the rules file
2223 by setting the needed variables to suitable default
2224 values; please refer to the documentation of
2225 <prgn>dpkg-architecture</prgn> for details.
2226 </p>
2229 It is important to understand that the <tt>DEB_*_ARCH</tt>
2230 string only determines which Debian architecture we are
2231 building on or for. It should not be used to get the CPU
2232 or system information; the <tt>DEB_*_ARCH_CPU</tt> and
2233 <tt>DEB_*_ARCH_OS</tt> variables should be used for that.
2234 GNU style variables should generally only be used with upstream
2235 build systems.
2236 </p>
2238 <sect1 id="debianrules-options">
2239 <heading><file>debian/rules</file> and
2240 <tt>DEB_BUILD_OPTIONS</tt></heading>
2243 Supporting the standardized environment variable
2244 <tt>DEB_BUILD_OPTIONS</tt> is recommended. This variable can
2245 contain several flags to change how a package is compiled and
2246 built. Each flag must be in the form <var>flag</var> or
2247 <var>flag</var>=<var>options</var>. If multiple flags are
2248 given, they must be separated by whitespace.<footnote>
2249 Some packages support any delimiter, but whitespace is the
2250 easiest to parse inside a makefile and avoids ambiguity with
2251 flag values that contain commas.
2252 </footnote>
2253 <var>flag</var> must start with a lowercase letter
2254 (<tt>a-z</tt>) and consist only of lowercase letters,
2255 numbers (<tt>0-9</tt>), and the characters
2256 <tt>-</tt> and <tt>_</tt> (hyphen and underscore).
2257 <var>options</var> must not contain whitespace. The same
2258 tag should not be given multiple times with conflicting
2259 values. Package maintainers may assume that
2260 <tt>DEB_BUILD_OPTIONS</tt> will not contain conflicting tags.
2261 </p>
2264 The meaning of the following tags has been standardized:
2265 <taglist>
2266 <tag>nocheck</tag>
2267 <item>
2268 This tag says to not run any build-time test suite
2269 provided by the package.
2270 </item>
2271 <tag>nodoc</tag>
2272 <item>
2273 This tag says to skip any build steps that only generate
2274 package documentation. Files required by other sections
2275 of Debian Policy, such as copyright and changelog files,
2276 must still be generated and put in the package, but other
2277 generated documentation such as help2man-generated pages,
2278 Doxygen-generated API documentation, or info pages
2279 generated from Texinfo sources should be skipped if
2280 possible. This option does not change the set of binary
2281 packages generated by the source package, but
2282 documentation-only binary packages may be nearly empty
2283 when built with this option.
2284 </item>
2285 <tag>noopt</tag>
2286 <item>
2287 The presence of this tag means that the package should
2288 be compiled with a minimum of optimization. For C
2289 programs, it is best to add <tt>-O0</tt> to
2290 <tt>CFLAGS</tt> (although this is usually the default).
2291 Some programs might fail to build or run at this level
2292 of optimization; it may be necessary to use
2293 <tt>-O1</tt>, for example.
2294 </item>
2295 <tag>nostrip</tag>
2296 <item>
2297 This tag means that the debugging symbols should not be
2298 stripped from the binary during installation, so that
2299 debugging information may be included in the package.
2300 </item>
2301 <tag>parallel=n</tag>
2302 <item>
2303 This tag means that the package should be built using up
2304 to <tt>n</tt> parallel processes if the package build
2305 system supports this.<footnote>
2306 Packages built with <tt>make</tt> can often implement
2307 this by passing the <tt>-j</tt><var>n</var> option to
2308 <tt>make</tt>.
2309 </footnote>
2310 If the package build system does not support parallel
2311 builds, this string must be ignored. If the package
2312 build system only supports a lower level of concurrency
2313 than <var>n</var>, the package should be built using as
2314 many parallel processes as the package build system
2315 supports. It is up to the package maintainer to decide
2316 whether the package build times are long enough and the
2317 package build system is robust enough to make supporting
2318 parallel builds worthwhile.
2319 </item>
2320 </taglist>
2321 </p>
2324 Unknown flags must be ignored by <file>debian/rules</file>.
2325 </p>
2328 The following makefile snippet is an example of how one may
2329 implement the build options; you will probably have to
2330 massage this example in order to make it work for your
2331 package.
2332 <example compact="compact">
2333 CFLAGS = -Wall -g
2334 INSTALL = install
2335 INSTALL_FILE = $(INSTALL) -p -o root -g root -m 644
2336 INSTALL_PROGRAM = $(INSTALL) -p -o root -g root -m 755
2337 INSTALL_SCRIPT = $(INSTALL) -p -o root -g root -m 755
2338 INSTALL_DIR = $(INSTALL) -p -d -o root -g root -m 755
2340 ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
2341 CFLAGS += -O0
2342 else
2343 CFLAGS += -O2
2344 endif
2345 ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
2346 INSTALL_PROGRAM += -s
2347 endif
2348 ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
2349 NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
2350 MAKEFLAGS += -j$(NUMJOBS)
2351 endif
2353 build:
2354 # ...
2355 ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
2356 # Code to run the package test suite.
2357 endif
2358 </example>
2359 </p>
2360 </sect1>
2361 </sect>
2363 <!-- FIXME: section pkg-srcsubstvars is the same as substvars -->
2364 <sect id="substvars">
2365 <heading>Variable substitutions: <file>debian/substvars</file></heading>
2368 When <prgn>dpkg-gencontrol</prgn>
2369 generates <qref id="binarycontrolfiles">binary package control
2370 files</qref> (<file>DEBIAN/control</file>), it performs variable
2371 substitutions on its output just before writing it. Variable
2372 substitutions have the form <tt>${<var>variable</var>}</tt>.
2373 The optional file <file>debian/substvars</file> contains
2374 variable substitutions to be used; variables can also be set
2375 directly from <file>debian/rules</file> using the <tt>-V</tt>
2376 option to the source packaging commands, and certain predefined
2377 variables are also available.
2378 </p>
2381 The <file>debian/substvars</file> file is usually generated and
2382 modified dynamically by <file>debian/rules</file> targets, in
2383 which case it must be removed by the <tt>clean</tt> target.
2384 </p>
2387 See <manref name="deb-substvars" section="5"> for full
2388 details about source variable substitutions, including the
2389 format of <file>debian/substvars</file>.</p>
2390 </sect>
2392 <sect id="debianwatch">
2393 <heading>Optional upstream source location: <file>debian/watch</file></heading>
2396 This is an optional, recommended configuration file for the
2397 <tt>uscan</tt> utility which defines how to automatically scan
2398 ftp or http sites for newly available updates of the
2399 package. This is used Debian QA
2400 tools to help with quality control and maintenance of the
2401 distribution as a whole.
2402 </p>
2404 </sect>
2406 <sect id="debianfiles">
2407 <heading>Generated files list: <file>debian/files</file></heading>
2410 This file is not a permanent part of the source tree; it
2411 is used while building packages to record which files are
2412 being generated. <prgn>dpkg-genchanges</prgn> uses it
2413 when it generates a <file>.changes</file> file.
2414 </p>
2417 It should not exist in a shipped source package, and so it
2418 (and any backup files or temporary files such as
2419 <file>files.new</file><footnote>
2420 <file>files.new</file> is used as a temporary file by
2421 <prgn>dpkg-gencontrol</prgn> and
2422 <prgn>dpkg-distaddfile</prgn> - they write a new
2423 version of <tt>files</tt> here before renaming it,
2424 to avoid leaving a corrupted copy if an error
2425 occurs.
2426 </footnote>) should be removed by the
2427 <tt>clean</tt> target. It may also be wise to
2428 ensure a fresh start by emptying or removing it at the
2429 start of the <tt>binary</tt> target.
2430 </p>
2433 When <prgn>dpkg-gencontrol</prgn> is run for a binary
2434 package, it adds an entry to <file>debian/files</file> for the
2435 <file>.deb</file> file that will be created when <tt>dpkg-deb
2436 --build</tt> is run for that binary package. So for most
2437 packages all that needs to be done with this file is to
2438 delete it in the <tt>clean</tt> target.
2439 </p>
2442 If a package upload includes files besides the source
2443 package and any binary packages whose control files were
2444 made with <prgn>dpkg-gencontrol</prgn> then they should be
2445 placed in the parent of the package's top-level directory
2446 and <prgn>dpkg-distaddfile</prgn> should be called to add
2447 the file to the list in <file>debian/files</file>.</p>
2448 </sect>
2450 <sect id="embeddedfiles">
2451 <heading>Convenience copies of code</heading>
2454 Some software packages include in their distribution convenience
2455 copies of code from other software packages, generally so that
2456 users compiling from source don't have to download multiple
2457 packages. Debian packages should not make use of these
2458 convenience copies unless the included package is explicitly
2459 intended to be used in this way.<footnote>
2460 For example, parts of the GNU build system work like this.
2461 </footnote>
2462 If the included code is already in the Debian archive in the
2463 form of a library, the Debian packaging should ensure that
2464 binary packages reference the libraries already in Debian and
2465 the convenience copy is not used. If the included code is not
2466 already in Debian, it should be packaged separately as a
2467 prerequisite if possible.
2468 <footnote>
2469 Having multiple copies of the same code in Debian is
2470 inefficient, often creates either static linking or shared
2471 library conflicts, and, most importantly, increases the
2472 difficulty of handling security vulnerabilities in the
2473 duplicated code.
2474 </footnote>
2475 </p>
2476 </sect>
2478 <sect id="readmesource">
2479 <heading>Source package handling:
2480 <file>debian/README.source</file></heading>
2483 If running <prgn>dpkg-source -x</prgn> on a source package
2484 doesn't produce the source of the package, ready for editing,
2485 and allow one to make changes and run
2486 <prgn>dpkg-buildpackage</prgn> to produce a modified package
2487 without taking any additional steps, creating a
2488 <file>debian/README.source</file> documentation file is
2489 recommended. This file should explain how to do all of the
2490 following:
2491 <enumlist>
2492 <item>Generate the fully patched source, in a form ready for
2493 editing, that would be built to create Debian
2494 packages. Doing this with a <tt>patch</tt> target in
2495 <file>debian/rules</file> is recommended; see
2496 <ref id="debianrules">.</item>
2497 <item>Modify the source and save those modifications so that
2498 they will be applied when building the package.</item>
2499 <item>Remove source modifications that are currently being
2500 applied when building the package.</item>
2501 <item>Optionally, document what steps are necessary to
2502 upgrade the Debian source package to a new upstream version,
2503 if applicable.</item>
2504 </enumlist>
2505 This explanation should include specific commands and mention
2506 any additional required Debian packages. It should not assume
2507 familiarity with any specific Debian packaging system or patch
2508 management tools.
2509 </p>
2512 This explanation may refer to a documentation file installed by
2513 one of the package's build dependencies provided that the
2514 referenced documentation clearly explains these tasks and is not
2515 a general reference manual.
2516 </p>
2519 <file>debian/README.source</file> may also include any other
2520 information that would be helpful to someone modifying the
2521 source package. Even if the package doesn't fit the above
2522 description, maintainers are encouraged to document in a
2523 <file>debian/README.source</file> file any source package with a
2524 particularly complex or unintuitive source layout or build
2525 system (for example, a package that builds the same source
2526 multiple times to generate different binary packages).
2527 </p>
2528 </sect>
2529 </chapt>
2532 <chapt id="controlfields">
2533 <heading>Control files and their fields</heading>
2536 The package management system manipulates data represented in
2537 a common format, known as <em>control data</em>, stored in
2538 <em>control files</em>.
2539 Control files are used for source packages, binary packages and
2540 the <file>.changes</file> files which control the installation
2541 of uploaded files<footnote>
2542 <prgn>dpkg</prgn>'s internal databases are in a similar
2543 format.
2544 </footnote>.
2545 </p>
2547 <sect id="controlsyntax">
2548 <heading>Syntax of control files</heading>
2551 A control file consists of one or more paragraphs of
2552 fields<footnote>
2553 The paragraphs are also sometimes referred to as stanzas.
2554 </footnote>.
2555 The paragraphs are separated by empty lines. Parsers may accept
2556 lines consisting solely of spaces and tabs as paragraph
2557 separators, but control files should use empty lines. Some control
2558 files allow only one paragraph; others allow several, in
2559 which case each paragraph usually refers to a different
2560 package. (For example, in source packages, the first
2561 paragraph refers to the source package, and later paragraphs
2562 refer to binary packages generated from the source.) The
2563 ordering of the paragraphs in control files is significant.
2564 </p>
2567 Each paragraph consists of a series of data fields. Each field
2568 consists of the field name followed by a colon and then the
2569 data/value associated with that field. The field name is
2570 composed of US-ASCII characters excluding control characters,
2571 space, and colon (i.e., characters in the ranges U+0021
2572 (<tt>!</tt>) through U+0039 (<tt>9</tt>), and U+003B
2573 (<tt>;</tt>) through U+007E (<tt>~</tt>), inclusive). Field
2574 names must not begin with the comment character
2575 (U+0023 <tt>#</tt>), nor with the hyphen character
2576 (U+002D <tt>-</tt>).
2577 </p>
2580 The field ends at the end of the line or at the end of the last
2581 continuation line (see below). Horizontal whitespace (spaces
2582 and tabs) may occur immediately before or after the value and is
2583 ignored there; it is conventional to put a single space after
2584 the colon. For example, a field might be:
2585 <example compact="compact">
2586 Package: libc6
2587 </example>
2588 the field name is <tt>Package</tt> and the field value
2589 <tt>libc6</tt>.
2590 </p>
2591 <p> Empty field values are only permitted in source package control files
2592 (<file>debian/control</file>). Such fields are ignored.
2593 </p>
2595 A paragraph must not contain more than one instance of a
2596 particular field name.
2597 </p>
2600 There are three types of fields:
2601 <taglist>
2602 <tag>simple</tag>
2603 <item>
2604 The field, including its value, must be a single line. Folding
2605 of the field is not permitted. This is the default field type
2606 if the definition of the field does not specify a different
2607 type.
2608 </item>
2609 <tag>folded</tag>
2610 <item>
2611 The value of a folded field is a logical line that may span
2612 several lines. The lines after the first are called
2613 continuation lines and must start with a space or a tab.
2614 Whitespace, including any newlines, is not significant in the
2615 field values of folded fields.<footnote>
2616 This folding method is similar to RFC 5322, allowing control
2617 files that contain only one paragraph and no multiline fields
2618 to be read by parsers written for RFC 5322.
2619 </footnote>
2620 </item>
2621 <tag>multiline</tag>
2622 <item>
2623 The value of a multiline field may comprise multiple continuation
2624 lines. The first line of the value, the part on the same line as
2625 the field name, often has special significance or may have to be
2626 empty. Other lines are added following the same syntax as the
2627 continuation lines of the folded fields. Whitespace, including newlines,
2628 is significant in the values of multiline fields.
2629 </item>
2630 </taglist>
2631 </p>
2634 Whitespace must not appear
2635 inside names (of packages, architectures, files or anything
2636 else) or version numbers, or between the characters of
2637 multi-character version relationships.
2638 </p>
2641 The presence and purpose of a field, and the syntax of its
2642 value may differ between types of control files.
2643 </p>
2646 Field names are not case-sensitive, but it is usual to
2647 capitalize the field names using mixed case as shown below.
2648 Field values are case-sensitive unless the description of the
2649 field says otherwise.
2650 </p>
2653 Paragraph separators (empty lines), and lines consisting only of
2654 U+0020 SPACE and U+0009 TAB, are not allowed within field values
2655 or between fields. Empty lines in field values are usually
2656 escaped by representing them by a U+0020 SPACE followed by a
2657 U+002E (<tt>.</tt>).
2658 </p>
2661 Lines starting with U+0023 (<tt>#</tt>), without any preceding
2662 whitespace, are comment lines that are only permitted in source
2663 package control files (<file>debian/control</file>). These
2664 comment lines are ignored, even between two continuation
2665 lines. They do not end logical lines.
2666 </p>
2669 All control files must be encoded in UTF-8.
2670 </p>
2671 </sect>
2673 <sect id="sourcecontrolfiles">
2674 <heading>Source package control files -- <file>debian/control</file></heading>
2677 The <file>debian/control</file> file contains the most vital
2678 (and version-independent) information about the source package
2679 and about the binary packages it creates.
2680 </p>
2683 The first paragraph of the control file contains information about
2684 the source package in general. The subsequent sets each describe a
2685 binary package that the source tree builds.
2686 </p>
2689 The fields in the general paragraph (the first one, for the source
2690 package) are:
2692 <list compact="compact">
2693 <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2694 <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2695 <item><qref id="f-Uploaders"><tt>Uploaders</tt></qref></item>
2696 <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2697 <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2698 <item><qref id="sourcebinarydeps"><tt>Build-Depends</tt> et al</qref></item>
2699 <item><qref id="f-Standards-Version"><tt>Standards-Version</tt></qref> (recommended)</item>
2700 <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2701 <item><qref id="f-VCS-fields"><tt>Vcs-Browser</tt>, <tt>Vcs-Git</tt>, et al.</qref></item>
2702 </list>
2703 </p>
2706 The fields in the binary package paragraphs are:
2708 <list compact="compact">
2709 <item><qref id="f-Package"><tt>Package</tt></qref> (mandatory)</item>
2710 <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2711 <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2712 <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2713 <item><qref id="f-Essential"><tt>Essential</tt></qref></item>
2714 <item><qref id="binarydeps"><tt>Depends</tt> et al</qref></item>
2715 <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2716 <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2717 <item><qref id="built-using"><tt>Built-Using</tt></qref></item>
2718 <item><qref id="f-Package-Type"><tt>Package-Type</tt></qref></item>
2719 </list>
2720 </p>
2723 The syntax and semantics of the fields are described below.
2724 </p>
2727 These fields are used by <prgn>dpkg-gencontrol</prgn> to
2728 generate control files for binary packages (see below), by
2729 <prgn>dpkg-genchanges</prgn> to generate the
2730 <file>.changes</file> file to accompany the upload, and by
2731 <prgn>dpkg-source</prgn> when it creates the
2732 <file>.dsc</file> source control file as part of a source
2733 archive. Some fields are folded in <file>debian/control</file>,
2734 but not in any other control
2735 file. These tools are responsible for removing the line
2736 breaks from such fields when using fields from
2737 <file>debian/control</file> to generate other control files.
2738 They are also responsible for discarding empty fields.
2739 </p>
2742 The fields here may contain variable references - their
2743 values will be substituted by <prgn>dpkg-gencontrol</prgn>,
2744 <prgn>dpkg-genchanges</prgn> or <prgn>dpkg-source</prgn>
2745 when they generate output control files.
2746 See <ref id="substvars"> for details.
2747 </p>
2748 </sect>
2750 <sect id="binarycontrolfiles">
2751 <heading>Binary package control files -- <file>DEBIAN/control</file></heading>
2754 The <file>DEBIAN/control</file> file contains the most vital
2755 (and version-dependent) information about a binary package. It
2756 consists of a single paragraph.
2757 </p>
2760 The fields in this file are:
2762 <list compact="compact">
2763 <item><qref id="f-Package"><tt>Package</tt></qref> (mandatory)</item>
2764 <item><qref id="f-Source"><tt>Source</tt></qref></item>
2765 <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2766 <item><qref id="f-Section"><tt>Section</tt></qref> (recommended)</item>
2767 <item><qref id="f-Priority"><tt>Priority</tt></qref> (recommended)</item>
2768 <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2769 <item><qref id="f-Essential"><tt>Essential</tt></qref></item>
2770 <item><qref id="binarydeps"><tt>Depends</tt> et al</qref></item>
2771 <item><qref id="f-Installed-Size"><tt>Installed-Size</tt></qref></item>
2772 <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2773 <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2774 <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2775 <item><qref id="built-using"><tt>Built-Using</tt></qref></item>
2776 </list>
2777 </p>
2778 </sect>
2780 <sect id="debiansourcecontrolfiles">
2781 <heading>Debian source control files -- <tt>.dsc</tt></heading>
2784 This file consists of a single paragraph, possibly surrounded by
2785 a PGP signature. The fields of that paragraph are listed below.
2786 Their syntax is described above, in <ref id="controlsyntax">.
2788 <list compact="compact">
2789 <item><qref id="f-Format"><tt>Format</tt></qref> (mandatory)</item>
2790 <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2791 <item><qref id="f-Binary"><tt>Binary</tt></qref></item>
2792 <item><qref id="f-Architecture"><tt>Architecture</tt></qref></item>
2793 <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2794 <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2795 <item><qref id="f-Uploaders"><tt>Uploaders</tt></qref></item>
2796 <item><qref id="f-Homepage"><tt>Homepage</tt></qref></item>
2797 <item><qref id="f-VCS-fields"><tt>Vcs-Browser</tt>, <tt>Vcs-Git</tt>, et al.</qref></item>
2798 <item><qref id="f-Dgit"><tt>Dgit</tt></qref></item>
2799 <item><qref id="f-Standards-Version"><tt>Standards-Version</tt></qref> (recommended)</item>
2800 <item><qref id="sourcebinarydeps"><tt>Build-Depends</tt> et al</qref></item>
2801 <item><qref id="f-Package-List"><tt>Package-List</tt></qref> (recommended)</item>
2802 <item><qref id="f-Checksums"><tt>Checksums-Sha1</tt>
2803 and <tt>Checksums-Sha256</tt></qref> (mandatory)</item>
2804 <item><qref id="f-Files"><tt>Files</tt></qref> (mandatory)</item>
2805 </list>
2806 </p>
2809 The Debian source control file is generated by
2810 <prgn>dpkg-source</prgn> when it builds the source
2811 archive, from other files in the source package,
2812 described above. When unpacking, it is checked against
2813 the files and directories in the other parts of the
2814 source package.
2815 </p>
2817 </sect>
2819 <sect id="debianchangesfiles">
2820 <heading>Debian changes files -- <file>.changes</file></heading>
2823 The <file>.changes</file> files are used by the Debian archive
2824 maintenance software to process updates to packages. They
2825 consist of a single paragraph, possibly surrounded by a PGP
2826 signature. That paragraph contains information from the
2827 <file>debian/control</file> file and other data about the
2828 source package gathered via <file>debian/changelog</file>
2829 and <file>debian/rules</file>.
2830 </p>
2833 <file>.changes</file> files have a format version that is
2834 incremented whenever the documented fields or their meaning
2835 change. This document describes format &changesversion;.
2836 </p>
2839 The fields in this file are:
2841 <list compact="compact">
2842 <item><qref id="f-Format"><tt>Format</tt></qref> (mandatory)</item>
2843 <item><qref id="f-Date"><tt>Date</tt></qref> (mandatory)</item>
2844 <item><qref id="f-Source"><tt>Source</tt></qref> (mandatory)</item>
2845 <item><qref id="f-Binary"><tt>Binary</tt></qref> (mandatory)</item>
2846 <item><qref id="f-Architecture"><tt>Architecture</tt></qref> (mandatory)</item>
2847 <item><qref id="f-Version"><tt>Version</tt></qref> (mandatory)</item>
2848 <item><qref id="f-Distribution"><tt>Distribution</tt></qref> (mandatory)</item>
2849 <item><qref id="f-Urgency"><tt>Urgency</tt></qref> (recommended)</item>
2850 <item><qref id="f-Maintainer"><tt>Maintainer</tt></qref> (mandatory)</item>
2851 <item><qref id="f-Changed-By"><tt>Changed-By</tt></qref></item>
2852 <item><qref id="f-Description"><tt>Description</tt></qref> (mandatory)</item>
2853 <item><qref id="f-Closes"><tt>Closes</tt></qref></item>
2854 <item><qref id="f-Changes"><tt>Changes</tt></qref> (mandatory)</item>
2855 <item><qref id="f-Checksums"><tt>Checksums-Sha1</tt>
2856 and <tt>Checksums-Sha256</tt></qref> (mandatory)</item>
2857 <item><qref id="f-Files"><tt>Files</tt></qref> (mandatory)</item>
2858 </list>
2859 </p>
2860 </sect>
2862 <sect id="controlfieldslist">
2863 <heading>List of fields</heading>
2865 <sect1 id="f-Source">
2866 <heading><tt>Source</tt></heading>
2869 This field identifies the source package name.
2870 </p>
2873 In <file>debian/control</file> or a <file>.dsc</file> file,
2874 this field must contain only the name of the source package.
2875 </p>
2878 In a binary package control file or a <file>.changes</file>
2879 file, the source package name may be followed by a version
2880 number in parentheses<footnote>
2881 It is customary to leave a space after the package name
2882 if a version number is specified.
2883 </footnote>.
2884 This version number may be omitted (and is, by
2885 <prgn>dpkg-gencontrol</prgn>) if it has the same value as
2886 the <tt>Version</tt> field of the binary package in
2887 question. The field itself may be omitted from a binary
2888 package control file when the source package has the same
2889 name and version as the binary package.
2890 </p>
2893 Package names (both source and binary,
2894 see <ref id="f-Package">) must consist only of lower case
2895 letters (<tt>a-z</tt>), digits (<tt>0-9</tt>), plus
2896 (<tt>+</tt>) and minus (<tt>-</tt>) signs, and periods
2897 (<tt>.</tt>). They must be at least two characters long and
2898 must start with an alphanumeric character.
2899 </p>
2900 </sect1>
2902 <sect1 id="f-Maintainer">
2903 <heading><tt>Maintainer</tt></heading>
2906 The package maintainer's name and email address. The name
2907 must come first, then the email address inside angle
2908 brackets <tt>&lt;&gt;</tt> (in RFC822 format).
2909 </p>
2912 If the maintainer's name contains a full stop then the
2913 whole field will not work directly as an email address due
2914 to a misfeature in the syntax specified in RFC822; a
2915 program using this field as an address must check for this
2916 and correct the problem if necessary (for example by
2917 putting the name in round brackets and moving it to the
2918 end, and bringing the email address forward).
2919 </p>
2922 See <ref id="maintainer"> for additional requirements and
2923 information about package maintainers.
2924 </p>
2925 </sect1>
2927 <sect1 id="f-Uploaders">
2928 <heading><tt>Uploaders</tt></heading>
2931 List of the names and email addresses of co-maintainers of the
2932 package, if any. If the package has other maintainers besides
2933 the one named in the <qref id="f-Maintainer">Maintainer
2934 field</qref>, their names and email addresses should be listed
2935 here. The format of each entry is the same as that of the
2936 Maintainer field, and multiple entries must be comma
2937 separated.
2938 </p>
2941 This is normally an optional field, but if
2942 the <tt>Maintainer</tt> control field names a group of people
2943 and a shared email address, the <tt>Uploaders</tt> field must
2944 be present and must contain at least one human with their
2945 personal email address.
2946 </p>
2949 The Uploaders field in <file>debian/control</file> can be folded.
2950 </p>
2951 </sect1>
2953 <sect1 id="f-Changed-By">
2954 <heading><tt>Changed-By</tt></heading>
2957 The name and email address of the person who prepared this
2958 version of the package, usually a maintainer. The syntax is
2959 the same as for the <qref id="f-Maintainer">Maintainer
2960 field</qref>.
2961 </p>
2962 </sect1>
2964 <sect1 id="f-Section">
2965 <heading><tt>Section</tt></heading>
2968 This field specifies an application area into which the package
2969 has been classified. See <ref id="subsections">.
2970 </p>
2973 When it appears in the <file>debian/control</file> file,
2974 it gives the value for the subfield of the same name in
2975 the <tt>Files</tt> field of the <file>.changes</file> file.
2976 It also gives the default for the same field in the binary
2977 packages.
2978 </p>
2979 </sect1>
2981 <sect1 id="f-Priority">
2982 <heading><tt>Priority</tt></heading>
2985 This field represents how important it is that the user
2986 have the package installed. See <ref id="priorities">.
2987 </p>
2990 When it appears in the <file>debian/control</file> file,
2991 it gives the value for the subfield of the same name in
2992 the <tt>Files</tt> field of the <file>.changes</file> file.
2993 It also gives the default for the same field in the binary
2994 packages.
2995 </p>
2996 </sect1>
2998 <sect1 id="f-Package">
2999 <heading><tt>Package</tt></heading>
3002 The name of the binary package.
3003 </p>
3006 Binary package names must follow the same syntax and
3007 restrictions as source package names. See <ref id="f-Source">
3008 for the details.
3009 </p>
3010 </sect1>
3012 <sect1 id="f-Architecture">
3013 <heading><tt>Architecture</tt></heading>
3016 Depending on context and the control file used, the
3017 <tt>Architecture</tt> field can include the following sets of
3018 values:
3019 <list>
3020 <item>
3021 A unique single word identifying a Debian machine
3022 architecture as described in <ref id="arch-spec">.
3023 </item>
3024 <item>
3025 An architecture wildcard identifying a set of Debian
3026 machine architectures, see <ref id="arch-wildcard-spec">.
3027 <tt>any</tt> matches all Debian machine architectures
3028 and is the most frequently used.
3029 </item>
3030 <item>
3031 <tt>all</tt>, which indicates an
3032 architecture-independent package.
3033 </item>
3034 <item>
3035 <tt>source</tt>, which indicates a source package.
3036 </item>
3037 </list>
3038 </p>
3041 In the main <file>debian/control</file> file in the source
3042 package, this field may contain the special
3043 value <tt>all</tt>, the special architecture
3044 wildcard <tt>any</tt>, or a list of specific and wildcard
3045 architectures separated by spaces. If <tt>all</tt>
3046 or <tt>any</tt> appears, that value must be the entire
3047 contents of the field. Most packages will use
3048 either <tt>all</tt> or <tt>any</tt>.
3049 </p>
3052 Specifying a specific list of architectures indicates that the
3053 source will build an architecture-dependent package only on
3054 architectures included in the list. Specifying a list of
3055 architecture wildcards indicates that the source will build an
3056 architecture-dependent package on only those architectures
3057 that match any of the specified architecture wildcards.
3058 Specifying a list of architectures or architecture wildcards
3059 other than <tt>any</tt> is for the minority of cases where a
3060 program is not portable or is not useful on some
3061 architectures. Where possible, the program should be made
3062 portable instead.
3063 </p>
3066 In the Debian source control file <file>.dsc</file>, this
3067 field contains a list of architectures and architecture
3068 wildcards separated by spaces. When the list contains the
3069 architecture wildcard <tt>any</tt>, the only other value
3070 allowed in the list is <tt>all</tt>.
3071 </p>
3074 The list may include (or consist solely of) the special
3075 value <tt>all</tt>. In other words, in <file>.dsc</file>
3076 files unlike the <file>debian/control</file>, <tt>all</tt> may
3077 occur in combination with specific architectures.
3078 The <tt>Architecture</tt> field in the Debian source control
3079 file <file>.dsc</file> is generally constructed from
3080 the <tt>Architecture</tt> fields in
3081 the <file>debian/control</file> in the source package.
3082 </p>
3085 Specifying only <tt>any</tt> indicates that the source package
3086 isn't dependent on any particular architecture and should
3087 compile fine on any one. The produced binary package(s)
3088 will be specific to whatever the current build architecture is.
3089 </p>
3092 Specifying only <tt>all</tt> indicates that the source package
3093 will only build architecture-independent packages.
3094 </p>
3097 Specifying <tt>any all</tt> indicates that the source package
3098 isn't dependent on any particular architecture. The set of
3099 produced binary packages will include at least one
3100 architecture-dependent package and one architecture-independent
3101 package.
3102 </p>
3105 Specifying a list of architectures or architecture wildcards
3106 indicates that the source will build an architecture-dependent
3107 package, and will only work correctly on the listed or
3108 matching architectures. If the source package also builds at
3109 least one architecture-independent package, <tt>all</tt> will
3110 also be included in the list.
3111 </p>
3114 In a <file>.changes</file> file, the <tt>Architecture</tt>
3115 field lists the architecture(s) of the package(s) currently
3116 being uploaded. This will be a list; if the source for the
3117 package is also being uploaded, the special
3118 entry <tt>source</tt> is also present. <tt>all</tt> will be
3119 present if any architecture-independent packages are being
3120 uploaded. Architecture wildcards such as <tt>any</tt> must
3121 never occur in the <tt>Architecture</tt> field in
3122 the <file>.changes</file> file.
3123 </p>
3126 See <ref id="debianrules"> for information on how to get
3127 the architecture for the build process.
3128 </p>
3129 </sect1>
3131 <sect1 id="f-Essential">
3132 <heading><tt>Essential</tt></heading>
3135 This is a boolean field which may occur only in the
3136 control file of a binary package or in a per-package fields
3137 paragraph of a source package control file.
3138 </p>
3141 If set to <tt>yes</tt> then the package management system
3142 will refuse to remove the package (upgrading and replacing
3143 it is still possible). The other possible value is <tt>no</tt>,
3144 which is the same as not having the field at all.
3145 </p>
3146 </sect1>
3148 <sect1>
3149 <heading>Package interrelationship fields:
3150 <tt>Depends</tt>, <tt>Pre-Depends</tt>,
3151 <tt>Recommends</tt>, <tt>Suggests</tt>,
3152 <tt>Breaks</tt>, <tt>Conflicts</tt>,
3153 <tt>Provides</tt>, <tt>Replaces</tt>, <tt>Enhances</tt>
3154 </heading>
3157 These fields describe the package's relationships with
3158 other packages. Their syntax and semantics are described
3159 in <ref id="relationships">.</p>
3160 </sect1>
3162 <sect1 id="f-Standards-Version">
3163 <heading><tt>Standards-Version</tt></heading>
3166 The most recent version of the standards (the policy
3167 manual and associated texts) with which the package
3168 complies.
3169 </p>
3172 The version number has four components: major and minor
3173 version number and major and minor patch level. When the
3174 standards change in a way that requires every package to
3175 change the major number will be changed. Significant
3176 changes that will require work in many packages will be
3177 signaled by a change to the minor number. The major patch
3178 level will be changed for any change to the meaning of the
3179 standards, however small; the minor patch level will be
3180 changed when only cosmetic, typographical or other edits
3181 are made which neither change the meaning of the document
3182 nor affect the contents of packages.
3183 </p>
3186 Thus only the first three components of the policy version
3187 are significant in the <em>Standards-Version</em> control
3188 field, and so either these three components or all four
3189 components may be specified.<footnote>
3190 In the past, people specified the full version number
3191 in the Standards-Version field, for example "2.3.0.0".
3192 Since minor patch-level changes don't introduce new
3193 policy, it was thought it would be better to relax
3194 policy and only require the first 3 components to be
3195 specified, in this example "2.3.0". All four
3196 components may still be used if someone wishes to do so.
3197 </footnote>
3198 </p>
3200 </sect1>
3202 <sect1 id="f-Version">
3203 <heading><tt>Version</tt></heading>
3206 The version number of a package. The format is:
3207 [<var>epoch</var><tt>:</tt>]<var>upstream_version</var>[<tt>-</tt><var>debian_revision</var>]
3208 </p>
3211 The three components here are:
3212 <taglist>
3213 <tag><var>epoch</var></tag>
3214 <item>
3216 This is a single (generally small) unsigned integer. It
3217 may be omitted, in which case zero is assumed. If it is
3218 omitted then the <var>upstream_version</var> may not
3219 contain any colons.
3220 </p>
3223 It is provided to allow mistakes in the version numbers
3224 of older versions of a package, and also a package's
3225 previous version numbering schemes, to be left behind.
3226 </p>
3227 </item>
3229 <tag><var>upstream_version</var></tag>
3230 <item>
3232 This is the main part of the version number. It is
3233 usually the version number of the original ("upstream")
3234 package from which the <file>.deb</file> file has been made,
3235 if this is applicable. Usually this will be in the same
3236 format as that specified by the upstream author(s);
3237 however, it may need to be reformatted to fit into the
3238 package management system's format and comparison
3239 scheme.
3240 </p>
3243 The comparison behavior of the package management system
3244 with respect to the <var>upstream_version</var> is
3245 described below. The <var>upstream_version</var>
3246 portion of the version number is mandatory.
3247 </p>
3250 The <var>upstream_version</var> may contain only
3251 alphanumerics<footnote>
3252 Alphanumerics are <tt>A-Za-z0-9</tt> only.
3253 </footnote>
3254 and the characters <tt>.</tt> <tt>+</tt> <tt>-</tt>
3255 <tt>~</tt> (full stop, plus, hyphen,
3256 tilde) and should start with a digit. If there is no
3257 <var>debian_revision</var> then hyphens are not allowed.
3258 </p>
3259 </item>
3261 <tag><var>debian_revision</var></tag>
3262 <item>
3264 This part of the version number specifies the version of
3265 the Debian package based on the upstream version. It
3266 may contain only alphanumerics and the characters
3267 <tt>+</tt> <tt>.</tt> <tt>~</tt> (plus, full stop,
3268 tilde) and is compared in the same way as the
3269 <var>upstream_version</var> is.
3270 </p>
3273 It is optional; if it isn't present then the
3274 <var>upstream_version</var> may not contain a hyphen.
3275 This format represents the case where a piece of
3276 software was written specifically to be a Debian
3277 package, where the Debian package source must always
3278 be identical to the pristine source and therefore no
3279 revision indication is required.
3280 </p>
3283 It is conventional to restart the
3284 <var>debian_revision</var> at <tt>1</tt> each time the
3285 <var>upstream_version</var> is increased.
3286 </p>
3289 The package management system will break the version
3290 number apart at the last hyphen in the string (if there
3291 is one) to determine the <var>upstream_version</var> and
3292 <var>debian_revision</var>. The absence of a
3293 <var>debian_revision</var> is equivalent to a
3294 <var>debian_revision</var> of <tt>0</tt>.
3295 </p>
3296 </item>
3297 </taglist>
3298 </p>
3301 When comparing two version numbers, first the <var>epoch</var>
3302 of each are compared, then the <var>upstream_version</var> if
3303 <var>epoch</var> is equal, and then <var>debian_revision</var>
3304 if <var>upstream_version</var> is also equal.
3305 <var>epoch</var> is compared numerically. The
3306 <var>upstream_version</var> and <var>debian_revision</var>
3307 parts are compared by the package management system using the
3308 following algorithm:
3309 </p>
3312 The strings are compared from left to right.
3313 </p>
3316 First the initial part of each string consisting entirely of
3317 non-digit characters is determined. These two parts (one of
3318 which may be empty) are compared lexically. If a difference
3319 is found it is returned. The lexical comparison is a
3320 comparison of ASCII values modified so that all the letters
3321 sort earlier than all the non-letters and so that a tilde
3322 sorts before anything, even the end of a part. For example,
3323 the following parts are in sorted order from earliest to
3324 latest: <tt>~~</tt>, <tt>~~a</tt>, <tt>~</tt>, the empty part,
3325 <tt>a</tt>.<footnote>
3326 One common use of <tt>~</tt> is for upstream pre-releases.
3327 For example, <tt>1.0~beta1~svn1245</tt> sorts earlier than
3328 <tt>1.0~beta1</tt>, which sorts earlier than <tt>1.0</tt>.
3329 </footnote>
3330 </p>
3333 Then the initial part of the remainder of each string which
3334 consists entirely of digit characters is determined. The
3335 numerical values of these two parts are compared, and any
3336 difference found is returned as the result of the comparison.
3337 For these purposes an empty string (which can only occur at
3338 the end of one or both version strings being compared) counts
3339 as zero.
3340 </p>
3343 These two steps (comparing and removing initial non-digit
3344 strings and initial digit strings) are repeated until a
3345 difference is found or both strings are exhausted.
3346 </p>
3349 Note that the purpose of epochs is to allow us to leave behind
3350 mistakes in version numbering, and to cope with situations
3351 where the version numbering scheme changes. It is
3352 <em>not</em> intended to cope with version numbers containing
3353 strings of letters which the package management system cannot
3354 interpret (such as <tt>ALPHA</tt> or <tt>pre-</tt>), or with
3355 silly orderings.<footnote>
3356 The author of this manual has heard of a package whose
3357 versions went <tt>1.1</tt>, <tt>1.2</tt>, <tt>1.3</tt>,
3358 <tt>1</tt>, <tt>2.1</tt>, <tt>2.2</tt>, <tt>2</tt> and so
3359 forth.
3360 </footnote>
3361 </p>
3362 </sect1>
3364 <sect1 id="f-Description">
3365 <heading><tt>Description</tt></heading>
3368 In a source or binary control file, the <tt>Description</tt>
3369 field contains a description of the binary package, consisting
3370 of two parts, the synopsis or the short description, and the
3371 long description. It is a multiline field with the following
3372 format:
3373 </p>
3376 <example>
3377 Description: &lt;single line synopsis&gt;
3378 &lt;extended description over several lines&gt;
3379 </example>
3380 </p>
3383 The lines in the extended description can have these formats:
3384 </p>
3386 <p><list>
3388 <item>
3389 Those starting with a single space are part of a paragraph.
3390 Successive lines of this form will be word-wrapped when
3391 displayed. The leading space will usually be stripped off.
3392 The line must contain at least one non-whitespace character.
3393 </item>
3395 <item>
3396 Those starting with two or more spaces. These will be
3397 displayed verbatim. If the display cannot be panned
3398 horizontally, the displaying program will line wrap them "hard"
3399 (i.e., without taking account of word breaks). If it can they
3400 will be allowed to trail off to the right. None, one or two
3401 initial spaces may be deleted, but the number of spaces
3402 deleted from each line will be the same (so that you can have
3403 indenting work correctly, for example). The line must
3404 contain at least one non-whitespace character.
3405 </item>
3407 <item>
3408 Those containing a single space followed by a single full stop
3409 character. These are rendered as blank lines. This is the
3410 <em>only</em> way to get a blank line<footnote>
3411 Completely empty lines will not be rendered as blank lines.
3412 Instead, they will cause the parser to think you're starting
3413 a whole new record in the control file, and will therefore
3414 likely abort with an error.
3415 </footnote>.
3416 </item>
3418 <item>
3419 Those containing a space, a full stop and some more characters.
3420 These are for future expansion. Do not use them.
3421 </item>
3423 </list></p>
3426 Do not use tab characters. Their effect is not predictable.
3427 </p>
3430 See <ref id="descriptions"> for further information on this.
3431 </p>
3434 In a <file>.changes</file> file, the <tt>Description</tt>
3435 field contains a summary of the descriptions for the packages
3436 being uploaded. For this case, the first line of the field
3437 value (the part on the same line as <tt>Description:</tt>) is
3438 always empty. It is a multiline field, with one
3439 line per package. Each line is
3440 indented by one space and contains the name of a binary
3441 package, a space, a hyphen (<tt>-</tt>), a space, and the
3442 short description line from that package.
3443 </p>
3444 </sect1>
3446 <sect1 id="f-Distribution">
3447 <heading><tt>Distribution</tt></heading>
3450 In a <file>.changes</file> file or parsed changelog output
3451 this contains the (space-separated) name(s) of the
3452 distribution(s) where this version of the package should
3453 be installed. Valid distributions are determined by the
3454 archive maintainers.<footnote>
3455 Example distribution names in the Debian archive used in
3456 <file>.changes</file> files are:
3457 <taglist compact="compact">
3458 <tag><em>unstable</em></tag>
3459 <item>
3460 This distribution value refers to the
3461 <em>developmental</em> part of the Debian distribution
3462 tree. Most new packages, new upstream versions of
3463 packages and bug fixes go into the <em>unstable</em>
3464 directory tree.
3465 </item>
3467 <tag><em>experimental</em></tag>
3468 <item>
3469 The packages with this distribution value are deemed
3470 by their maintainers to be high risk. Oftentimes they
3471 represent early beta or developmental packages from
3472 various sources that the maintainers want people to
3473 try, but are not ready to be a part of the other parts
3474 of the Debian distribution tree.
3475 </item>
3476 </taglist>
3479 Others are used for updating stable releases or for
3480 security uploads. More information is available in the
3481 Debian Developer's Reference, section "The Debian
3482 archive".
3483 </p>
3484 </footnote>
3485 The Debian archive software only supports listing a single
3486 distribution. Migration of packages to other distributions is
3487 handled outside of the upload process.
3488 </p>
3489 </sect1>
3491 <sect1 id="f-Date">
3492 <heading><tt>Date</tt></heading>
3495 This field includes the date the package was built or last
3496 edited. It must be in the same format as the <var>date</var>
3497 in a <file>debian/changelog</file> entry.
3498 </p>
3501 The value of this field is usually extracted from the
3502 <file>debian/changelog</file> file - see
3503 <ref id="dpkgchangelog">).
3504 </p>
3505 </sect1>
3507 <sect1 id="f-Format">
3508 <heading><tt>Format</tt></heading>
3511 In <qref id="debianchangesfiles"><file>.changes</file></qref>
3512 files, this field declares the format version of that file.
3513 The syntax of the field value is the same as that of
3514 a <qref id="f-Version">package version number</qref> except
3515 that no epoch or Debian revision is allowed. The format
3516 described in this document is <tt>&changesversion;</tt>.
3517 </p>
3520 In <qref id="debiansourcecontrolfiles"><file>.dsc</file>
3521 Debian source control</qref> files, this field declares the
3522 format of the source package. The field value is used by
3523 programs acting on a source package to interpret the list of
3524 files in the source package and determine how to unpack it.
3525 The syntax of the field value is a numeric major revision, a
3526 period, a numeric minor revision, and then an optional subtype
3527 after whitespace, which if specified is an alphanumeric word
3528 in parentheses. The subtype is optional in the syntax but may
3529 be mandatory for particular source format revisions.
3530 <footnote>
3531 The source formats currently supported by the Debian archive
3532 software are <tt>1.0</tt>, <tt>3.0 (native)</tt>,
3533 and <tt>3.0 (quilt)</tt>.
3534 </footnote>
3535 </p>
3536 </sect1>
3538 <sect1 id="f-Urgency">
3539 <heading><tt>Urgency</tt></heading>
3542 This is a description of how important it is to upgrade to
3543 this version from previous ones. It consists of a single
3544 keyword taking one of the values <tt>low</tt>,
3545 <tt>medium</tt>, <tt>high</tt>, <tt>emergency</tt>, or
3546 <tt>critical</tt><footnote>
3547 Other urgency values are supported with configuration
3548 changes in the archive software but are not used in Debian.
3549 The urgency affects how quickly a package will be considered
3550 for inclusion into the <tt>testing</tt> distribution and
3551 gives an indication of the importance of any fixes included
3552 in the upload. <tt>Emergency</tt> and <tt>critical</tt> are
3553 treated as synonymous.
3554 </footnote> (not case-sensitive) followed by an optional
3555 commentary (separated by a space) which is usually in
3556 parentheses. For example:
3558 <example>
3559 Urgency: low (HIGH for users of diversions)
3560 </example>
3562 </p>
3565 The value of this field is usually extracted from the
3566 <file>debian/changelog</file> file - see
3567 <ref id="dpkgchangelog">.
3568 </p>
3569 </sect1>
3571 <sect1 id="f-Changes">
3572 <heading><tt>Changes</tt></heading>
3575 This multiline field contains the human-readable changes data, describing
3576 the differences between the last version and the current one.
3577 </p>
3580 The first line of the field value (the part on the same line
3581 as <tt>Changes:</tt>) is always empty. The content of the
3582 field is expressed as continuation lines, with each line
3583 indented by at least one space. Blank lines must be
3584 represented by a line consisting only of a space and a full
3585 stop (<tt>.</tt>).
3586 </p>
3589 The value of this field is usually extracted from the
3590 <file>debian/changelog</file> file - see
3591 <ref id="dpkgchangelog">).
3592 </p>
3595 Each version's change information should be preceded by a
3596 "title" line giving at least the version, distribution(s)
3597 and urgency, in a human-readable way.
3598 </p>
3601 If data from several versions is being returned the entry
3602 for the most recent version should be returned first, and
3603 entries should be separated by the representation of a
3604 blank line (the "title" line may also be followed by the
3605 representation of a blank line).
3606 </p>
3607 </sect1>
3609 <sect1 id="f-Binary">
3610 <heading><tt>Binary</tt></heading>
3613 This folded field is a list of binary packages. Its syntax and
3614 meaning varies depending on the control file in which it
3615 appears.
3616 </p>
3619 When it appears in the <file>.dsc</file> file, it lists binary
3620 packages which a source package can produce, separated by
3621 commas<footnote>
3622 A space after each comma is conventional.
3623 </footnote>. The source package
3624 does not necessarily produce all of these binary packages for
3625 every architecture. The source control file doesn't contain
3626 details of which architectures are appropriate for which of
3627 the binary packages.
3628 </p>
3631 When it appears in a <file>.changes</file> file, it lists the
3632 names of the binary packages being uploaded, separated by
3633 whitespace (not commas).
3634 </p>
3635 </sect1>
3637 <sect1 id="f-Installed-Size">
3638 <heading><tt>Installed-Size</tt></heading>
3641 This field appears in the control files of binary packages,
3642 and in the <file>Packages</file> files. It gives an estimate
3643 of the total amount of disk space required to install the
3644 named package. Actual installed size may vary based on block
3645 size, file system properties, or actions taken by package
3646 maintainer scripts.
3647 </p>
3650 The disk space is given as the integer value of the estimated
3651 installed size in bytes, divided by 1024 and rounded up.
3652 </p>
3653 </sect1>
3655 <sect1 id="f-Files">
3656 <heading><tt>Files</tt></heading>
3659 This field contains a list of files with information about
3660 each one. The exact information and syntax varies with
3661 the context.
3662 </p>
3665 In all cases, Files is a multiline field. The first line of
3666 the field value (the part on the same line as <tt>Files:</tt>)
3667 is always empty. The content of the field is expressed as
3668 continuation lines, one line per file. Each line must be
3669 indented by one space and contain a number of sub-fields,
3670 separated by spaces, as described below.
3671 </p>
3674 In the <file>.dsc</file> file, each line contains the MD5
3675 checksum, size and filename of the tar file and (if
3676 applicable) diff file which make up the remainder of the
3677 source package<footnote>
3678 That is, the parts which are not the <tt>.dsc</tt>.
3679 </footnote>. For example:
3680 <example>
3681 Files:
3682 c6f698f19f2a2aa07dbb9bbda90a2754 571925 example_1.2.orig.tar.gz
3683 938512f08422f3509ff36f125f5873ba 6220 example_1.2-1.diff.gz
3684 </example>
3685 The exact forms of the filenames are described
3686 in <ref id="pkg-sourcearchives">.
3687 </p>
3690 In the <file>.changes</file> file this contains one line per
3691 file being uploaded. Each line contains the MD5 checksum,
3692 size, section and priority and the filename. For example:
3693 <example>
3694 Files:
3695 4c31ab7bfc40d3cf49d7811987390357 1428 text extra example_1.2-1.dsc
3696 c6f698f19f2a2aa07dbb9bbda90a2754 571925 text extra example_1.2.orig.tar.gz
3697 938512f08422f3509ff36f125f5873ba 6220 text extra example_1.2-1.diff.gz
3698 7c98fe853b3bbb47a00e5cd129b6cb56 703542 text extra example_1.2-1_i386.deb
3699 </example>
3700 The <qref id="f-Section">section</qref>
3701 and <qref id="f-Priority">priority</qref> are the values of
3702 the corresponding fields in the main source control file. If
3703 no section or priority is specified then <tt>-</tt> should be
3704 used, though section and priority values must be specified for
3705 new packages to be installed properly.
3706 </p>
3709 The special value <tt>byhand</tt> for the section in a
3710 <tt>.changes</tt> file indicates that the file in question
3711 is not an ordinary package file and must be installed by
3712 hand by the distribution maintainers. If the section is
3713 <tt>byhand</tt> the priority should be <tt>-</tt>.
3714 </p>
3717 If a new Debian revision of a package is being shipped and
3718 no new original source archive is being distributed the
3719 <tt>.dsc</tt> must still contain the <tt>Files</tt> field
3720 entry for the original source archive
3721 <file><var>package</var>_<var>upstream-version</var>.orig.tar.gz</file>,
3722 but the <file>.changes</file> file should leave it out. In
3723 this case the original source archive on the distribution
3724 site must match exactly, byte-for-byte, the original
3725 source archive which was used to generate the
3726 <file>.dsc</file> file and diff which are being uploaded.</p>
3727 </sect1>
3729 <sect1 id="f-Closes">
3730 <heading><tt>Closes</tt></heading>
3733 A space-separated list of bug report numbers that the upload
3734 governed by the .changes file closes.
3735 </p>
3736 </sect1>
3738 <sect1 id="f-Homepage">
3739 <heading><tt>Homepage</tt></heading>
3742 The URL of the web site for this package, preferably (when
3743 applicable) the site from which the original source can be
3744 obtained and any additional upstream documentation or
3745 information may be found. The content of this field is a
3746 simple URL without any surrounding characters such as
3747 <tt>&lt;&gt;</tt>.
3748 </p>
3749 </sect1>
3751 <sect1 id="f-Checksums">
3752 <heading><tt>Checksums-Sha1</tt>
3753 and <tt>Checksums-Sha256</tt></heading>
3756 These multiline fields contain a list of files with a checksum and size
3757 for each one. Both <tt>Checksums-Sha1</tt>
3758 and <tt>Checksums-Sha256</tt> have the same syntax and differ
3759 only in the checksum algorithm used: SHA-1
3760 for <tt>Checksums-Sha1</tt> and SHA-256
3761 for <tt>Checksums-Sha256</tt>.
3762 </p>
3765 <tt>Checksums-Sha1</tt> and <tt>Checksums-Sha256</tt> are
3766 multiline fields. The first line of the field value (the part
3767 on the same line as <tt>Checksums-Sha1:</tt>
3768 or <tt>Checksums-Sha256:</tt>) is always empty. The content
3769 of the field is expressed as continuation lines, one line per
3770 file. Each line consists of the checksum, a space, the file
3771 size, a space, and the file name. For example (from
3772 a <file>.changes</file> file):
3773 <example>
3774 Checksums-Sha1:
3775 1f418afaa01464e63cc1ee8a66a05f0848bd155c 1276 example_1.0-1.dsc
3776 a0ed1456fad61116f868b1855530dbe948e20f06 171602 example_1.0.orig.tar.gz
3777 5e86ecf0671e113b63388dac81dd8d00e00ef298 6137 example_1.0-1.debian.tar.gz
3778 71a0ff7da0faaf608481195f9cf30974b142c183 548402 example_1.0-1_i386.deb
3779 Checksums-Sha256:
3780 ac9d57254f7e835bed299926fd51bf6f534597cc3fcc52db01c4bffedae81272 1276 example_1.0-1.dsc
3781 0d123be7f51e61c4bf15e5c492b484054be7e90f3081608a5517007bfb1fd128 171602 example_1.0.orig.tar.gz
3782 f54ae966a5f580571ae7d9ef5e1df0bd42d63e27cb505b27957351a495bc6288 6137 example_1.0-1.debian.tar.gz
3783 3bec05c03974fdecd11d020fc2e8250de8404867a8a2ce865160c250eb723664 548402 example_1.0-1_i386.deb
3784 </example>
3785 </p>
3788 In the <file>.dsc</file> file, these fields list all
3789 files that make up the source package. In
3790 the <file>.changes</file> file, these fields list all
3791 files being uploaded. The list of files in these fields
3792 must match the list of files in the <tt>Files</tt> field.
3793 </p>
3794 </sect1>
3796 <sect1>
3797 <heading><tt>DM-Upload-Allowed</tt></heading>
3800 Obsolete, see <qref id="f-DM-Upload-Allowed">below</qref>.
3801 </p>
3802 </sect1>
3804 <sect1 id="f-VCS-fields">
3805 <heading>Version Control System (VCS) fields</heading>
3808 Debian source packages are increasingly developed using VCSs. The
3809 purpose of the following fields is to indicate a publicly accessible
3810 repository where the Debian source package is developed.
3812 <taglist>
3813 <tag><tt>Vcs-Browser</tt></tag>
3814 <item>
3816 URL of a web interface for browsing the repository.
3817 </p>
3818 </item>
3820 <tag>
3821 <tt>Vcs-Arch</tt>, <tt>Vcs-Bzr</tt> (Bazaar), <tt>Vcs-Cvs</tt>,
3822 <tt>Vcs-Darcs</tt>, <tt>Vcs-Git</tt>, <tt>Vcs-Hg</tt>
3823 (Mercurial), <tt>Vcs-Mtn</tt> (Monotone), <tt>Vcs-Svn</tt>
3824 (Subversion)
3825 </tag>
3826 <item>
3828 The field name identifies the VCS. The field's value uses the
3829 version control system's conventional syntax for describing
3830 repository locations and should be sufficient to locate the
3831 repository used for packaging. Ideally, it also locates the
3832 branch used for development of new versions of the Debian
3833 package.
3834 </p>
3836 In the case of Git, the value consists of a URL, optionally
3837 followed by the word <tt>-b</tt> and the name of a branch in
3838 the indicated repository, following the syntax of the
3839 <tt>git clone</tt> command. If no branch is specified, the
3840 packaging should be on the default branch.
3841 </p>
3843 More than one different VCS may be specified for the same
3844 package.
3845 </p>
3846 </item>
3847 </taglist>
3848 </p>
3849 </sect1>
3851 <sect1 id="f-Package-List">
3852 <heading><tt>Package-List</tt></heading>
3855 Multiline field listing all the packages that can be built from
3856 the source package, considering every architecture. The first line
3857 of the field value is empty. Each one of the next lines describes
3858 one binary package, by listing its name, type, section and priority
3859 separated by spaces. Fifth and subsequent space-separated items
3860 may be present and parsers must allow them. See the
3861 <qref id="f-Package-Type">Package-Type</qref> field for a list of
3862 package types.
3863 </p>
3864 </sect1>
3866 <sect1 id="f-Package-Type">
3867 <heading><tt>Package-Type</tt></heading>
3870 Simple field containing a word indicating the type of package:
3871 <tt>deb</tt> for binary packages and <tt>udeb</tt> for micro binary
3872 packages. Other types not defined here may be indicated. In
3873 source package control files, the <tt>Package-Type</tt> field
3874 should be omitted instead of giving it a value of <tt>deb</tt>, as
3875 this value is assumed for paragraphs lacking this field.
3876 </p>
3877 </sect1>
3879 <sect1 id="f-Dgit">
3880 <heading><tt>Dgit</tt></heading>
3883 Folded field containing a single git commit hash, presented in
3884 full, followed optionally by whitespace and other data to be
3885 defined in future extensions.
3886 </p>
3889 Declares that the source package corresponds exactly to a
3890 referenced commit in a Git repository available at the canonical
3891 location called <em>dgit-repos</em>, used by <prgn>dgit</prgn>, a
3892 bidirectional gateway between the Debian archive and Git. The
3893 commit is reachable from at least one reference whose name matches
3894 <tt>refs/dgit/*</tt>. See the manual page of <prgn>dgit</prgn> for
3895 further details.
3896 </p>
3897 </sect1>
3898 </sect>
3900 <sect>
3901 <heading>User-defined fields</heading>
3904 Additional user-defined fields may be added to the
3905 source package control file. Such fields will be
3906 ignored, and not copied to (for example) binary or
3907 Debian source control files or upload control files.
3908 </p>
3911 If you wish to add additional unsupported fields to
3912 these output files you should use the mechanism
3913 described here.
3914 </p>
3917 Fields in the main source control information file with
3918 names starting <tt>X</tt>, followed by one or more of
3919 the letters <tt>BCS</tt> and a hyphen <tt>-</tt>, will
3920 be copied to the output files. Only the part of the
3921 field name after the hyphen will be used in the output
3922 file. Where the letter <tt>B</tt> is used the field
3923 will appear in binary package control files, where the
3924 letter <tt>S</tt> is used in Debian source control
3925 files and where <tt>C</tt> is used in upload control
3926 (<tt>.changes</tt>) files.
3927 </p>
3930 For example, if the main source information control file
3931 contains the field
3932 <example>
3933 XBS-Comment: I stand between the candle and the star.
3934 </example>
3935 then the binary and Debian source control files will contain the
3936 field
3937 <example>
3938 Comment: I stand between the candle and the star.
3939 </example>
3940 </p>
3942 </sect>
3944 <sect id="obsolete-control-data-fields">
3945 <heading>Obsolete fields</heading>
3948 The following fields have been obsoleted and may be found in packages
3949 conforming with previous versions of the Policy.
3950 </p>
3952 <sect1 id="f-DM-Upload-Allowed">
3953 <heading><tt>DM-Upload-Allowed</tt></heading>
3956 Indicates that Debian Maintainers may upload this package to
3957 the Debian archive. The only valid value is <tt>yes</tt>. This
3958 field was used to regulate uploads by Debian Maintainers, See the
3959 General Resolution <url id="http://www.debian.org/vote/2007/vote_003"
3960 name="Endorse the concept of Debian Maintainers"> for more details.
3961 </p>
3962 </sect1>
3964 </sect>
3966 </chapt>
3969 <chapt id="maintainerscripts">
3970 <heading>Package maintainer scripts and installation procedure</heading>
3972 <sect>
3973 <heading>Introduction to package maintainer scripts</heading>
3976 It is possible to supply scripts as part of a package which
3977 the package management system will run for you when your
3978 package is installed, upgraded or removed.
3979 </p>
3982 These scripts are the control information
3983 files <prgn>preinst</prgn>, <prgn>postinst</prgn>, <prgn>prerm</prgn>
3984 and <prgn>postrm</prgn>. They must be proper executable files;
3985 if they are scripts (which is recommended), they must start with
3986 the usual <tt>#!</tt> convention. They should be readable and
3987 executable by anyone, and must not be world-writable.
3988 </p>
3991 The package management system looks at the exit status from
3992 these scripts. It is important that they exit with a
3993 non-zero status if there is an error, so that the package
3994 management system can stop its processing. For shell
3995 scripts this means that you <em>almost always</em> need to
3996 use <tt>set -e</tt> (this is usually true when writing shell
3997 scripts, in fact). It is also important, of course, that
3998 they exit with a zero status if everything went well.
3999 </p>
4002 Additionally, packages interacting with users
4003 using <prgn>debconf</prgn> in the <prgn>postinst</prgn> script
4004 should install a <prgn>config</prgn> script as a control
4005 information file. See <ref id="maintscriptprompt"> for details.
4006 </p>
4009 When a package is upgraded a combination of the scripts from
4010 the old and new packages is called during the upgrade
4011 procedure. If your scripts are going to be at all
4012 complicated you need to be aware of this, and may need to
4013 check the arguments to your scripts.
4014 </p>
4017 Broadly speaking the <prgn>preinst</prgn> is called before
4018 (a particular version of) a package is unpacked, and the
4019 <prgn>postinst</prgn> afterwards; the <prgn>prerm</prgn>
4020 before (a version of) a package is removed and the
4021 <prgn>postrm</prgn> afterwards.
4022 </p>
4025 Programs called from maintainer scripts should not normally
4026 have a path prepended to them. Before installation is
4027 started, the package management system checks to see if the
4028 programs <prgn>ldconfig</prgn>, <prgn>start-stop-daemon</prgn>,
4029 and <prgn>update-rc.d</prgn> can be found via the
4030 <tt>PATH</tt> environment variable. Those programs, and any
4031 other program that one would expect to be in the
4032 <tt>PATH</tt>, should thus be invoked without an absolute
4033 pathname. Maintainer scripts should also not reset the
4034 <tt>PATH</tt>, though they might choose to modify it by
4035 prepending or appending package-specific directories. These
4036 considerations really apply to all shell scripts.</p>
4037 </sect>
4039 <sect id="idempotency">
4040 <heading>Maintainer scripts idempotency</heading>
4043 It is necessary for the error recovery procedures that the
4044 scripts be idempotent. This means that if it is run
4045 successfully, and then it is called again, it doesn't bomb
4046 out or cause any harm, but just ensures that everything is
4047 the way it ought to be. If the first call failed, or
4048 aborted half way through for some reason, the second call
4049 should merely do the things that were left undone the first
4050 time, if any, and exit with a success status if everything
4051 is OK.<footnote>
4052 This is so that if an error occurs, the user interrupts
4053 <prgn>dpkg</prgn> or some other unforeseen circumstance
4054 happens you don't leave the user with a badly-broken
4055 package when <prgn>dpkg</prgn> attempts to repeat the
4056 action.
4057 </footnote>
4058 </p>
4059 </sect>
4061 <sect id="controllingterminal">
4062 <heading>Controlling terminal for maintainer scripts</heading>
4065 Maintainer scripts are not guaranteed to run with a controlling
4066 terminal and may not be able to interact with the user. They
4067 must be able to fall back to noninteractive behavior if no
4068 controlling terminal is available. Maintainer scripts that
4069 prompt via a program conforming to the Debian Configuration
4070 Management Specification (see <ref id="maintscriptprompt">) may
4071 assume that program will handle falling back to noninteractive
4072 behavior.
4073 </p>
4076 For high-priority prompts without a reasonable default answer,
4077 maintainer scripts may abort if there is no controlling
4078 terminal. However, this situation should be avoided if at all
4079 possible, since it prevents automated or unattended installs.
4080 In most cases, users will consider this to be a bug in the
4081 package.
4082 </p>
4083 </sect>
4085 <sect id="exitstatus">
4086 <heading>Exit status</heading>
4089 Each script must return a zero exit status for
4090 success, or a nonzero one for failure, since the package
4091 management system looks for the exit status of these scripts
4092 and determines what action to take next based on that datum.
4093 </p>
4094 </sect>
4096 <sect id="mscriptsinstact"><heading>Summary of ways maintainer
4097 scripts are called
4098 </heading>
4101 What follows is a summary of all the ways in which maintainer
4102 scripts may be called along with what facilities those scripts
4103 may rely on being available at that time. Script names preceded
4104 by <var>new-</var> are the scripts from the new version of a
4105 package being installed, upgraded to, or downgraded to. Script
4106 names preceded by <var>old-</var> are the scripts from the old
4107 version of a package that is being upgraded from or downgraded
4108 from.
4109 </p>
4112 The <prgn>preinst</prgn> script may be called in the following
4113 ways:
4114 <taglist>
4115 <tag><var>new-preinst</var> <tt>install</tt></tag>
4116 <tag><var>new-preinst</var> <tt>install</tt>
4117 <var>old-version</var></tag>
4118 <tag><var>new-preinst</var> <tt>upgrade</tt>
4119 <var>old-version</var></tag>
4120 <item>
4121 The package will not yet be unpacked, so
4122 the <prgn>preinst</prgn> script cannot rely on any files
4123 included in its package. Only essential packages and
4124 pre-dependencies (<tt>Pre-Depends</tt>) may be assumed to be
4125 available. Pre-dependencies will have been configured at
4126 least once, but at the time the <prgn>preinst</prgn> is
4127 called they may only be in an "Unpacked" or "Half-Configured"
4128 state if a previous version of the pre-dependency was
4129 completely configured and has not been removed since then.
4130 </item>
4132 <tag><var>old-preinst</var> <tt>abort-upgrade</tt>
4133 <var>new-version</var></tag>
4134 <item>
4135 Called during error handling of an upgrade that failed after
4136 unpacking the new package because the <tt>postrm
4137 upgrade</tt> action failed. The unpacked files may be
4138 partly from the new version or partly missing, so the script
4139 cannot rely on files included in the package. Package
4140 dependencies may not be available. Pre-dependencies will be
4141 at least "Unpacked" following the same rules as above, except
4142 they may be only "Half-Installed" if an upgrade of the
4143 pre-dependency failed.<footnote>
4144 This can happen if the new version of the package no
4145 longer pre-depends on a package that had been partially
4146 upgraded.
4147 </footnote>
4148 </item>
4149 </taglist>
4150 </p>
4153 The <prgn>postinst</prgn> script may be called in the following
4154 ways:
4155 <taglist>
4156 <tag><var>postinst</var> <tt>configure</tt>
4157 <var>most-recently-configured-version</var></tag>
4158 <item>
4159 The files contained in the package will be unpacked. All
4160 package dependencies will at least be "Unpacked". If there
4161 are no circular dependencies involved, all package
4162 dependencies will be configured. For behavior in the case
4163 of circular dependencies, see the discussion
4164 in <ref id="binarydeps">.
4165 </item>
4167 <tag><var>old-postinst</var> <tt>abort-upgrade</tt>
4168 <var>new-version</var></tag>
4169 <tag><var>conflictor's-postinst</var> <tt>abort-remove</tt>
4170 <tt>in-favour</tt> <var>package</var>
4171 <var>new-version</var></tag>
4172 <tag><var>postinst</var> <tt>abort-remove</tt></tag>
4173 <tag><var>deconfigured's-postinst</var>
4174 <tt>abort-deconfigure</tt> <tt>in-favour</tt>
4175 <var>failed-install-package</var> <var>version</var>
4176 [<tt>removing</tt> <var>conflicting-package</var>
4177 <var>version</var>]</tag>
4178 <item>
4179 The files contained in the package will be unpacked. All
4180 package dependencies will at least be "Half-Installed" and
4181 will have previously been configured and not removed.
4182 However, dependencies may not be configured or even fully
4183 unpacked in some error situations.<footnote>
4184 For example, suppose packages foo and bar are "Installed"
4185 with foo depending on bar. If an upgrade of bar were
4186 started and then aborted, and then an attempt to remove
4187 foo failed because its <prgn>prerm</prgn> script failed,
4188 foo's <tt>postinst abort-remove</tt> would be called with
4189 bar only "Half-Installed".
4190 </footnote>
4191 The <prgn>postinst</prgn> should still attempt any actions
4192 for which its dependencies are required, since they will
4193 normally be available, but consider the correct error
4194 handling approach if those actions fail. Aborting
4195 the <prgn>postinst</prgn> action if commands or facilities
4196 from the package dependencies are not available is often the
4197 best approach.
4198 </item>
4199 </taglist>
4200 </p>
4203 The <prgn>prerm</prgn> script may be called in the following
4204 ways:
4205 <taglist>
4206 <tag><var>prerm</var> <tt>remove</tt></tag>
4207 <tag><var>old-prerm</var>
4208 <tt>upgrade</tt><var>new-version</var></tag>
4209 <tag><var>conflictor's-prerm</var> <tt>remove</tt>
4210 <tt>in-favour</tt> <var>package</var>
4211 <var>new-version</var></tag>
4212 <tag><var>deconfigured's-prerm</var> <tt>deconfigure</tt>
4213 <tt>in-favour</tt> <var>package-being-installed</var>
4214 <var>version</var> [<tt>removing</tt>
4215 <var>conflicting-package</var> <var>version</var>]</tag>
4216 <item>
4217 The package whose <prgn>prerm</prgn> is being called will be
4218 at least "Half-Installed". All package dependencies will at
4219 least be "Half-Installed" and will have previously been
4220 configured and not removed. If there was no error, all
4221 dependencies will at least be "Unpacked", but these actions
4222 may be called in various error states where dependencies are
4223 only "Half-Installed" due to a partial upgrade.
4224 </item>
4226 <tag><var>new-prerm</var> <tt>failed-upgrade</tt>
4227 <var>old-version</var></tag>
4228 <item>
4229 Called during error handling when <tt>prerm upgrade</tt>
4230 fails. The new package will not yet be unpacked, and all
4231 the same constraints as for <tt>preinst upgrade</tt> apply.
4232 </item>
4233 </taglist>
4234 </p>
4237 The <prgn>postrm</prgn> script may be called in the following
4238 ways:
4239 <taglist>
4240 <tag><var>postrm</var> <tt>remove</tt></tag>
4241 <tag><var>postrm</var> <tt>purge</tt></tag>
4242 <tag><var>old-postrm</var> <tt>upgrade</tt>
4243 <var>new-version</var></tag>
4244 <tag><var>disappearer's-postrm</var> <tt>disappear</tt>
4245 <var>overwriter</var> <var>overwriter-version</var></tag>
4246 <item>
4247 The <prgn>postrm</prgn> script is called after the package's
4248 files have been removed or replaced. The package
4249 whose <prgn>postrm</prgn> is being called may have
4250 previously been deconfigured and only be "Unpacked", at which
4251 point subsequent package changes do not consider its
4252 dependencies. Therefore, all <prgn>postrm</prgn> actions
4253 may only rely on essential packages and must gracefully skip
4254 any actions that require the package's dependencies if those
4255 dependencies are unavailable.<footnote>
4256 This is often done by checking whether the command or
4257 facility the <prgn>postrm</prgn> intends to call is
4258 available before calling it. For example:
4259 <example>
4260 if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
4261 . /usr/share/debconf/confmodule
4262 db_purge
4264 </example>
4265 in <prgn>postrm</prgn> purges the <prgn>debconf</prgn>
4266 configuration for the package
4267 if <package>debconf</package> is installed.
4268 </footnote>
4269 </item>
4271 <tag><var>new-postrm</var> <tt>failed-upgrade</tt>
4272 <var>old-version</var></tag>
4273 <item>
4274 Called when the old <tt>postrm upgrade</tt> action fails.
4275 The new package will be unpacked, but only essential
4276 packages and pre-dependencies can be relied on.
4277 Pre-dependencies will either be configured or will be
4278 "Unpacked" or "Half-Configured" but previously had been
4279 configured and was never removed.
4280 </item>
4282 <tag><var>new-postrm</var> <tt>abort-install</tt></tag>
4283 <tag><var>new-postrm</var> <tt>abort-install</tt>
4284 <var>old-version</var></tag>
4285 <tag><var>new-postrm</var> <tt>abort-upgrade</tt>
4286 <var>old-version</var></tag>
4287 <item>
4288 Called before unpacking the new package as part of the
4289 error handling of <prgn>preinst</prgn> failures. May assume
4290 the same state as <prgn>preinst</prgn> can assume.
4291 </item>
4292 </taglist>
4293 </p>
4294 </sect>
4296 <sect id="unpackphase">
4297 <heading>Details of unpack phase of installation or upgrade</heading>
4300 The procedure on installation/upgrade/overwrite/disappear
4301 (i.e., when running <tt>dpkg --unpack</tt>, or the unpack
4302 stage of <tt>dpkg --install</tt>) is as follows. In each
4303 case, if a major error occurs (unless listed below) the
4304 actions are, in general, run backwards - this means that the
4305 maintainer scripts are run with different arguments in
4306 reverse order. These are the "error unwind" calls listed
4307 below.
4309 <enumlist>
4310 <item>
4311 <enumlist>
4312 <item>
4313 If a version of the package is already "Installed", call
4314 <example compact="compact">
4315 <var>old-prerm</var> upgrade <var>new-version</var>
4316 </example>
4317 </item>
4318 <item>
4319 If the script runs but exits with a non-zero
4320 exit status, <prgn>dpkg</prgn> will attempt:
4321 <example compact="compact">
4322 <var>new-prerm</var> failed-upgrade <var>old-version</var>
4323 </example>
4324 If this works, the upgrade continues. If this
4325 does not work, the error unwind:
4326 <example compact="compact">
4327 <var>old-postinst</var> abort-upgrade <var>new-version</var>
4328 </example>
4329 If this works, then the old-version is
4330 "Installed", if not, the old version is in a
4331 "Half-Configured" state.
4332 </item>
4333 </enumlist>
4334 </item>
4336 <item>
4337 If a "conflicting" package is being removed at the same time,
4338 or if any package will be broken (due to <tt>Breaks</tt>):
4339 <enumlist>
4340 <item>
4341 If <tt>--auto-deconfigure</tt> is
4342 specified, call, for each package to be deconfigured
4343 due to <tt>Breaks</tt>:
4344 <example compact="compact">
4345 <var>deconfigured's-prerm</var> deconfigure \
4346 in-favour <var>package-being-installed</var> <var>version</var>
4347 </example>
4348 Error unwind:
4349 <example compact="compact">
4350 <var>deconfigured's-postinst</var> abort-deconfigure \
4351 in-favour <var>package-being-installed-but-failed</var> <var>version</var>
4352 </example>
4353 The deconfigured packages are marked as
4354 requiring configuration, so that if
4355 <tt>--install</tt> is used they will be
4356 configured again if possible.
4357 </item>
4358 <item>
4359 If any packages depended on a conflicting
4360 package being removed and <tt>--auto-deconfigure</tt> is
4361 specified, call, for each such package:
4362 <example compact="compact">
4363 <var>deconfigured's-prerm</var> deconfigure \
4364 in-favour <var>package-being-installed</var> <var>version</var> \
4365 removing <var>conflicting-package</var> <var>version</var>
4366 </example>
4367 Error unwind:
4368 <example compact="compact">
4369 <var>deconfigured's-postinst</var> abort-deconfigure \
4370 in-favour <var>package-being-installed-but-failed</var> <var>version</var> \
4371 removing <var>conflicting-package</var> <var>version</var>
4372 </example>
4373 The deconfigured packages are marked as
4374 requiring configuration, so that if
4375 <tt>--install</tt> is used they will be
4376 configured again if possible.
4377 </item>
4378 <item>
4379 To prepare for removal of each conflicting package, call:
4380 <example compact="compact">
4381 <var>conflictor's-prerm</var> remove \
4382 in-favour <var>package</var> <var>new-version</var>
4383 </example>
4384 Error unwind:
4385 <example compact="compact">
4386 <var>conflictor's-postinst</var> abort-remove \
4387 in-favour <var>package</var> <var>new-version</var>
4388 </example>
4389 </item>
4390 </enumlist>
4391 </item>
4393 <item>
4394 <enumlist>
4395 <item>
4396 If the package is being upgraded, call:
4397 <example compact="compact">
4398 <var>new-preinst</var> upgrade <var>old-version</var>
4399 </example>
4400 If this fails, we call:
4401 <example>
4402 <var>new-postrm</var> abort-upgrade <var>old-version</var>
4403 </example>
4404 <enumlist>
4405 <item>
4407 If that works, then
4408 <example>
4409 <var>old-postinst</var> abort-upgrade <var>new-version</var>
4410 </example>
4411 is called. If this works, then the old version
4412 is in an "Installed" state, or else it is left
4413 in an "Unpacked" state.
4414 </p>
4415 </item>
4416 <item>
4418 If it fails, then the old version is left
4419 in an "Half-Installed" state.
4420 </p>
4421 </item>
4422 </enumlist>
4424 </item>
4425 <item>
4426 Otherwise, if the package had some configuration
4427 files from a previous version installed (i.e., it
4428 is in the "Config-Files" state):
4429 <example compact="compact">
4430 <var>new-preinst</var> install <var>old-version</var>
4431 </example>
4432 Error unwind:
4433 <example>
4434 <var>new-postrm</var> abort-install <var>old-version</var>
4435 </example>
4436 If this fails, the package is left in a
4437 "Half-Installed" state, which requires a
4438 reinstall. If it works, the packages is left in
4439 a "Config-Files" state.
4440 </item>
4441 <item>
4442 Otherwise (i.e., the package was completely purged):
4443 <example compact="compact">
4444 <var>new-preinst</var> install
4445 </example>
4446 Error unwind:
4447 <example compact="compact">
4448 <var>new-postrm</var> abort-install
4449 </example>
4450 If the error-unwind fails, the package is in a
4451 "Half-Installed" phase, and requires a
4452 reinstall. If the error unwind works, the
4453 package is in the "Not-Installed" state.
4454 </item>
4455 </enumlist>
4456 </item>
4458 <item>
4460 The new package's files are unpacked, overwriting any
4461 that may be on the system already, for example any
4462 from the old version of the same package or from
4463 another package. Backups of the old files are kept
4464 temporarily, and if anything goes wrong the package
4465 management system will attempt to put them back as
4466 part of the error unwind.
4467 </p>
4470 It is an error for a package to contain files which
4471 are on the system in another package, unless
4472 <tt>Replaces</tt> is used (see <ref id="replaces">).
4473 <!--
4474 The following paragraph is not currently the case:
4475 Currently the <tt>- - force-overwrite</tt> flag is
4476 enabled, downgrading it to a warning, but this may not
4477 always be the case.
4479 </p>
4482 It is a more serious error for a package to contain a
4483 plain file or other kind of non-directory where another
4484 package has a directory (again, unless
4485 <tt>Replaces</tt> is used). This error can be
4486 overridden if desired using
4487 <tt>--force-overwrite-dir</tt>, but this is not
4488 advisable.
4489 </p>
4492 Packages which overwrite each other's files produce
4493 behavior which, though deterministic, is hard for the
4494 system administrator to understand. It can easily
4495 lead to "missing" programs if, for example, a package
4496 is unpacked which overwrites a file from another
4497 package, and is then removed again.<footnote>
4498 Part of the problem is due to what is arguably a
4499 bug in <prgn>dpkg</prgn>.
4500 </footnote>
4501 </p>
4504 A directory will never be replaced by a symbolic link
4505 to a directory or vice versa; instead, the existing
4506 state (symlink or not) will be left alone and
4507 <prgn>dpkg</prgn> will follow the symlink if there is
4508 one.
4509 </p>
4510 </item>
4512 <item>
4514 <enumlist>
4515 <item>
4516 If the package is being upgraded, call
4517 <example compact="compact">
4518 <var>old-postrm</var> upgrade <var>new-version</var>
4519 </example>
4520 </item>
4521 <item>
4522 If this fails, <prgn>dpkg</prgn> will attempt:
4523 <example compact="compact">
4524 <var>new-postrm</var> failed-upgrade <var>old-version</var>
4525 </example>
4526 If this works, installation continues. If not,
4527 Error unwind:
4528 <example compact="compact">
4529 <var>old-preinst</var> abort-upgrade <var>new-version</var>
4530 </example>
4531 If this fails, the old version is left in a
4532 "Half-Installed" state. If it works, dpkg now
4533 calls:
4534 <example compact="compact">
4535 <var>new-postrm</var> abort-upgrade <var>old-version</var>
4536 </example>
4537 If this fails, the old version is left in a
4538 "Half-Installed" state. If it works, dpkg now
4539 calls:
4540 <example compact="compact">
4541 <var>old-postinst</var> abort-upgrade <var>new-version</var>
4542 </example>
4543 If this fails, the old version is in an
4544 "Unpacked" state.
4545 </item>
4546 </enumlist>
4547 </p>
4550 This is the point of no return - if
4551 <prgn>dpkg</prgn> gets this far, it won't back off
4552 past this point if an error occurs. This will
4553 leave the package in a fairly bad state, which
4554 will require a successful re-installation to clear
4555 up, but it's when <prgn>dpkg</prgn> starts doing
4556 things that are irreversible.
4557 </p>
4558 </item>
4560 <item>
4561 Any files which were in the old version of the package
4562 but not in the new are removed.
4563 </item>
4565 <item>
4566 The new file list replaces the old.
4567 </item>
4569 <item>
4570 The new maintainer scripts replace the old.
4571 </item>
4573 <item>
4574 Any packages all of whose files have been overwritten
4575 during the installation, and which aren't required for
4576 dependencies, are considered to have been removed.
4577 For each such package
4578 <enumlist>
4579 <item>
4580 <prgn>dpkg</prgn> calls:
4581 <example compact="compact">
4582 <var>disappearer's-postrm</var> disappear \
4583 <var>overwriter</var> <var>overwriter-version</var>
4584 </example>
4585 </item>
4586 <item>
4587 The package's maintainer scripts are removed.
4588 </item>
4589 <item>
4590 It is noted in the status database as being in a
4591 sane state, namely "Not-Installed" (any conffiles
4592 it may have are ignored, rather than being
4593 removed by <prgn>dpkg</prgn>). Note that
4594 disappearing packages do not have their prerm
4595 called, because <prgn>dpkg</prgn> doesn't know
4596 in advance that the package is going to
4597 vanish.
4598 </item>
4599 </enumlist>
4600 </item>
4602 <item>
4603 Any files in the package we're unpacking that are also
4604 listed in the file lists of other packages are removed
4605 from those lists. (This will lobotomize the file list
4606 of the "conflicting" package if there is one.)
4607 </item>
4609 <item>
4610 The backup files made during installation, above, are
4611 deleted.
4612 </item>
4614 <item>
4616 The new package's status is now sane, and recorded as
4617 "Unpacked".
4618 </p>
4621 Here is another point of no return - if the
4622 conflicting package's removal fails we do not unwind
4623 the rest of the installation; the conflicting package
4624 is left in a half-removed limbo.
4625 </p>
4626 </item>
4628 <item>
4629 If there was a conflicting package we go and do the
4630 removal actions (described below), starting with the
4631 removal of the conflicting package's files (any that
4632 are also in the package being unpacked have already
4633 been removed from the conflicting package's file list,
4634 and so do not get removed now).
4635 </item>
4636 </enumlist>
4637 </p>
4638 </sect>
4640 <sect id="configdetails"><heading>Details of configuration</heading>
4643 When we configure a package (this happens with <tt>dpkg
4644 --install</tt> and <tt>dpkg --configure</tt>), we first
4645 update any <tt>conffile</tt>s and then call:
4646 <example compact="compact">
4647 <var>postinst</var> configure <var>most-recently-configured-version</var>
4648 </example>
4649 </p>
4652 No attempt is made to unwind after errors during
4653 configuration. If the configuration fails, the package is in
4654 a "Half-Configured" state, and an error message is generated.
4655 </p>
4658 If there is no most recently configured version
4659 <prgn>dpkg</prgn> will pass a null argument.
4660 <footnote>
4662 Historical note: Truly ancient (pre-1997) versions of
4663 <prgn>dpkg</prgn> passed <tt>&lt;unknown&gt;</tt>
4664 (including the angle brackets) in this case. Even older
4665 ones did not pass a second argument at all, under any
4666 circumstance. Note that upgrades using such an old dpkg
4667 version are unlikely to work for other reasons, even if
4668 this old argument behavior is handled by your postinst script.
4669 </p>
4670 </footnote>
4671 </p>
4672 </sect>
4674 <sect id="removedetails"><heading>Details of removal and/or
4675 configuration purging</heading>
4678 <enumlist>
4679 <item>
4681 <example compact="compact">
4682 <var>prerm</var> remove
4683 </example>
4684 </p>
4686 If prerm fails during replacement due to conflict
4687 <example>
4688 <var>conflictor's-postinst</var> abort-remove \
4689 in-favour <var>package</var> <var>new-version</var>
4690 </example>
4691 Or else we call:
4692 <example>
4693 <var>postinst</var> abort-remove
4694 </example>
4695 </p>
4697 If this fails, the package is in a "Half-Configured"
4698 state, or else it remains "Installed".
4699 </p>
4700 </item>
4701 <item>
4702 The package's files are removed (except <tt>conffile</tt>s).
4703 </item>
4704 <item>
4705 <example compact="compact">
4706 <var>postrm</var> remove
4707 </example>
4710 If it fails, there's no error unwind, and the package is in
4711 an "Half-Installed" state.
4712 </p>
4713 </item>
4714 <item>
4716 All the maintainer scripts except the <prgn>postrm</prgn>
4717 are removed.
4718 </p>
4721 If we aren't purging the package we stop here. Note
4722 that packages which have no <prgn>postrm</prgn> and no
4723 <tt>conffile</tt>s are automatically purged when
4724 removed, as there is no difference except for the
4725 <prgn>dpkg</prgn> status.
4726 </p>
4727 </item>
4728 <item>
4729 The <tt>conffile</tt>s and any backup files
4730 (<tt>~</tt>-files, <tt>#*#</tt> files,
4731 <tt>%</tt>-files, <tt>.dpkg-{old,new,tmp}</tt>, etc.)
4732 are removed.
4733 </item>
4734 <item>
4736 <example compact="compact">
4737 <var>postrm</var> purge
4738 </example>
4739 </p>
4741 If this fails, the package remains in a "Config-Files"
4742 state.
4743 </p>
4744 </item>
4745 <item>
4746 The package's file list is removed.
4747 </item>
4748 </enumlist>
4750 </p>
4751 </sect>
4752 </chapt>
4755 <chapt id="relationships">
4756 <heading>Declaring relationships between packages</heading>
4758 <sect id="depsyntax">
4759 <heading>Syntax of relationship fields</heading>
4762 These fields all have a uniform syntax. They are a list of
4763 package names separated by commas.
4764 </p>
4767 In the <tt>Depends</tt>, <tt>Recommends</tt>,
4768 <tt>Suggests</tt>, <tt>Pre-Depends</tt>,
4769 <tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt> and
4770 <tt>Build-Depends-Arch</tt>
4771 control fields of the package, which declare
4772 dependencies on other packages, the package names listed may
4773 also include lists of alternative package names, separated
4774 by vertical bar (pipe) symbols <tt>|</tt>. In such a case,
4775 that part of the dependency can be satisfied by any one of
4776 the alternative packages.
4777 </p>
4780 All of the fields except for <tt>Provides</tt> may restrict
4781 their applicability to particular versions of each named
4782 package. This is done in parentheses after each individual
4783 package name; the parentheses should contain a relation from
4784 the list below followed by a version number, in the format
4785 described in <ref id="f-Version">.
4786 </p>
4789 The relations allowed are <tt>&lt;&lt;</tt>, <tt>&lt;=</tt>,
4790 <tt>=</tt>, <tt>&gt;=</tt> and <tt>&gt;&gt;</tt> for strictly
4791 earlier, earlier or equal, exactly equal, later or equal and
4792 strictly later, respectively.<footnote>
4793 The relations <tt>&lt;</tt> and <tt>&gt;</tt> were previously
4794 allowed, but they were confusingly defined to mean
4795 earlier/later or equal rather than strictly
4796 earlier/later. <prgn>dpkg</prgn> still supports them with a
4797 warning, but they are no longer allowed by Debian Policy.
4798 </footnote>
4799 </p>
4802 Whitespace may appear at any point in the version
4803 specification subject to the rules in <ref
4804 id="controlsyntax">, and must appear where it's necessary to
4805 disambiguate; it is not otherwise significant. All of the
4806 relationship fields can only be folded in source package control files. For
4807 consistency and in case of future changes to
4808 <prgn>dpkg</prgn> it is recommended that a single space be
4809 used after a version relationship and before a version
4810 number; it is also conventional to put a single space after
4811 each comma, on either side of each vertical bar, and before
4812 each open parenthesis. When opening a continuation line in a relationship field, it
4813 is conventional to do so after a comma and before the space
4814 following that comma.
4815 </p>
4818 For example, a list of dependencies might appear as:
4819 <example compact="compact">
4820 Package: mutt
4821 Version: 1.3.17-1
4822 Depends: libc6 (>= 2.2.1), exim | mail-transport-agent
4823 </example>
4824 </p>
4827 Relationships may be restricted to a certain set of
4828 architectures. This is indicated in brackets after each
4829 individual package name and the optional version specification.
4830 The brackets enclose a non-empty list of Debian architecture names
4831 in the format described in <ref id="arch-spec">,
4832 separated by whitespace. Exclamation marks may be prepended to
4833 each of the names. (It is not permitted for some names to be
4834 prepended with exclamation marks while others aren't.)
4835 </p>
4838 For build relationship fields
4839 (<tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
4840 <tt>Build-Depends-Arch</tt>, <tt>Build-Conflicts</tt>,
4841 <tt>Build-Conflicts-Indep</tt> and <tt>Build-Conflicts-Arch</tt>), if
4842 the current Debian host architecture is not in this list and
4843 there are no exclamation marks in the list, or it is in the list
4844 with a prepended exclamation mark, the package name and the
4845 associated version specification are ignored completely for the
4846 purposes of defining the relationships.
4847 </p>
4850 For example:
4851 <example compact="compact">
4852 Source: glibc
4853 Build-Depends-Indep: texinfo
4854 Build-Depends: kernel-headers-2.2.10 [!hurd-i386],
4855 hurd-dev [hurd-i386], gnumach-dev [hurd-i386]
4856 </example>
4857 requires <tt>kernel-headers-2.2.10</tt> on all architectures
4858 other than hurd-i386 and requires <tt>hurd-dev</tt> and
4859 <tt>gnumach-dev</tt> only on hurd-i386. Here is another example
4860 showing multiple architectures separated by spaces:
4861 <example compact="compact">
4862 Build-Depends:
4863 libluajit5.1-dev [i386 amd64 kfreebsd-i386 armel armhf powerpc mips],
4864 liblua5.1-dev [hurd-i386 ia64 kfreebsd-amd64 s390x sparc],
4865 </example>
4866 </p>
4869 For binary relationship fields and the <tt>Built-Using</tt>
4870 field, the architecture restriction
4871 syntax is only supported in the source package control
4872 file <file>debian/control</file>. When the corresponding binary
4873 package control file is generated, the relationship will either
4874 be omitted or included without the architecture restriction
4875 based on the architecture of the binary package. This means
4876 that architecture restrictions must not be used in binary
4877 relationship fields for architecture-independent packages
4878 (<tt>Architecture: all</tt>).
4879 </p>
4882 For example:
4883 <example compact="compact">
4884 Depends: foo [i386], bar [amd64]
4885 </example>
4886 becomes <tt>Depends: foo</tt> when the package is built on
4887 the <tt>i386</tt> architecture, <tt>Depends: bar</tt> when the
4888 package is built on the <tt>amd64</tt> architecture, and omitted
4889 entirely in binary packages built on all other architectures.
4890 </p>
4893 If the architecture-restricted dependency is part of a set of
4894 alternatives using <tt>|</tt>, that alternative is ignored
4895 completely on architectures that do not match the restriction.
4896 For example:
4897 <example compact="compact">
4898 Build-Depends: foo [!i386] | bar [!amd64]
4899 </example>
4900 is equivalent to <tt>bar</tt> on the i386 architecture, to
4901 <tt>foo</tt> on the amd64 architecture, and to <tt>foo |
4902 bar</tt> on all other architectures.
4903 </p>
4906 Relationships may also be restricted to a certain set of
4907 architectures using architecture wildcards in the format
4908 described in <ref id="arch-wildcard-spec">. The syntax for
4909 declaring such restrictions is the same as declaring
4910 restrictions using a certain set of architectures without
4911 architecture wildcards. For example:
4912 <example compact="compact">
4913 Build-Depends: foo [linux-any], bar [any-i386], baz [!linux-any]
4914 </example>
4915 is equivalent to <tt>foo</tt> on architectures using the Linux
4916 kernel and any cpu, <tt>bar</tt> on architectures using any
4917 kernel and an i386 cpu, and <tt>baz</tt> on any architecture
4918 using a kernel other than Linux.
4919 </p>
4922 Note that the binary package relationship fields such as
4923 <tt>Depends</tt> appear in one of the binary package
4924 sections of the control file, whereas the build-time
4925 relationships such as <tt>Build-Depends</tt> appear in the
4926 source package section of the control file (which is the
4927 first section).
4928 </p>
4929 </sect>
4931 <sect id="binarydeps">
4932 <heading>Binary Dependencies - <tt>Depends</tt>,
4933 <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4934 <tt>Pre-Depends</tt>
4935 </heading>
4938 Packages can declare in their control file that they have
4939 certain relationships to other packages - for example, that
4940 they may not be installed at the same time as certain other
4941 packages, and/or that they depend on the presence of others.
4942 </p>
4945 This is done using the <tt>Depends</tt>, <tt>Pre-Depends</tt>,
4946 <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
4947 <tt>Breaks</tt> and <tt>Conflicts</tt> control fields.
4948 <tt>Breaks</tt> is described in <ref id="breaks">, and
4949 <tt>Conflicts</tt> is described in <ref id="conflicts">. The
4950 rest are described below.
4951 </p>
4954 These seven fields are used to declare a dependency
4955 relationship by one package on another. Except for
4956 <tt>Enhances</tt> and <tt>Breaks</tt>, they appear in the
4957 depending (binary) package's control file.
4958 (<tt>Enhances</tt> appears in the recommending package's
4959 control file, and <tt>Breaks</tt> appears in the version of
4960 depended-on package which causes the named package to
4961 break).
4962 </p>
4965 A <tt>Depends</tt> field takes effect <em>only</em> when a
4966 package is to be configured. It does not prevent a package
4967 being on the system in an unconfigured state while its
4968 dependencies are unsatisfied, and it is possible to replace
4969 a package whose dependencies are satisfied and which is
4970 properly installed with a different version whose
4971 dependencies are not and cannot be satisfied; when this is
4972 done the depending package will be left unconfigured (since
4973 attempts to configure it will give errors) and will not
4974 function properly. If it is necessary, a
4975 <tt>Pre-Depends</tt> field can be used, which has a partial
4976 effect even when a package is being unpacked, as explained
4977 in detail below. (The other three dependency fields,
4978 <tt>Recommends</tt>, <tt>Suggests</tt> and
4979 <tt>Enhances</tt>, are only used by the various front-ends
4980 to <prgn>dpkg</prgn> such as <prgn>apt-get</prgn>,
4981 <prgn>aptitude</prgn>, and <prgn>dselect</prgn>.)
4982 </p>
4985 Since <tt>Depends</tt> only places requirements on the order in
4986 which packages are configured, packages in an installation run
4987 are usually all unpacked first and all configured later.
4988 <footnote>
4989 This approach makes dependency resolution easier. If two
4990 packages A and B are being upgraded, the installed package A
4991 depends on exactly the installed package B, and the new
4992 package A depends on exactly the new package B (a common
4993 situation when upgrading shared libraries and their
4994 corresponding development packages), satisfying the
4995 dependencies at every stage of the upgrade would be
4996 impossible. This relaxed restriction means that both new
4997 packages can be unpacked together and then configured in their
4998 dependency order.
4999 </footnote>
5000 </p>
5003 If there is a circular dependency among packages being installed
5004 or removed, installation or removal order honoring the
5005 dependency order is impossible, requiring the dependency loop be
5006 broken at some point and the dependency requirements violated
5007 for at least one package. Packages involved in circular
5008 dependencies may not be able to rely on their dependencies being
5009 configured before they themselves are configured, depending on
5010 which side of the break of the circular dependency loop they
5011 happen to be on. If one of the packages in the loop has
5012 no <prgn>postinst</prgn> script, then the cycle will be broken
5013 at that package; this ensures that all <prgn>postinst</prgn>
5014 scripts are run with their dependencies properly configured if
5015 this is possible. Otherwise the breaking point is arbitrary.
5016 Packages should therefore avoid circular dependencies where
5017 possible, particularly if they have <prgn>postinst</prgn>
5018 scripts.
5019 </p>
5022 The meaning of the five dependency fields is as follows:
5023 <taglist>
5024 <tag><tt>Depends</tt></tag>
5025 <item>
5027 This declares an absolute dependency. A package will
5028 not be configured unless all of the packages listed in
5029 its <tt>Depends</tt> field have been correctly
5030 configured (unless there is a circular dependency as
5031 described above).
5032 </p>
5035 The <tt>Depends</tt> field should be used if the
5036 depended-on package is required for the depending
5037 package to provide a significant amount of
5038 functionality.
5039 </p>
5042 The <tt>Depends</tt> field should also be used if the
5043 <prgn>postinst</prgn> or <prgn>prerm</prgn> scripts
5044 require the depended-on package to be unpacked or
5045 configured in order to run. In the case of <tt>postinst
5046 configure</tt>, the depended-on packages will be unpacked
5047 and configured first. (If both packages are involved in a
5048 dependency loop, this might not work as expected; see the
5049 explanation a few paragraphs back.) In the case
5050 of <prgn>prerm</prgn> or other <prgn>postinst</prgn>
5051 actions, the package dependencies will normally be at
5052 least unpacked, but they may be only "Half-Installed" if a
5053 previous upgrade of the dependency failed.
5054 </p>
5057 Finally, the <tt>Depends</tt> field should be used if the
5058 depended-on package is needed by the <prgn>postrm</prgn>
5059 script to fully clean up after the package removal. There
5060 is no guarantee that package dependencies will be
5061 available when <prgn>postrm</prgn> is run, but the
5062 depended-on package is more likely to be available if the
5063 package declares a dependency (particularly in the case
5064 of <tt>postrm remove</tt>). The <prgn>postrm</prgn>
5065 script must gracefully skip actions that require a
5066 dependency if that dependency isn't available.
5067 </p>
5068 </item>
5070 <tag><tt>Recommends</tt></tag>
5071 <item>
5073 This declares a strong, but not absolute, dependency.
5074 </p>
5077 The <tt>Recommends</tt> field should list packages
5078 that would be found together with this one in all but
5079 unusual installations.
5080 </p>
5081 </item>
5083 <tag><tt>Suggests</tt></tag>
5084 <item>
5085 This is used to declare that one package may be more
5086 useful with one or more others. Using this field
5087 tells the packaging system and the user that the
5088 listed packages are related to this one and can
5089 perhaps enhance its usefulness, but that installing
5090 this one without them is perfectly reasonable.
5091 </item>
5093 <tag><tt>Enhances</tt></tag>
5094 <item>
5095 This field is similar to Suggests but works in the
5096 opposite direction. It is used to declare that a
5097 package can enhance the functionality of another
5098 package.
5099 </item>
5101 <tag><tt>Pre-Depends</tt></tag>
5102 <item>
5104 This field is like <tt>Depends</tt>, except that it
5105 also forces <prgn>dpkg</prgn> to complete installation
5106 of the packages named before even starting the
5107 installation of the package which declares the
5108 pre-dependency, as follows:
5109 </p>
5112 When a package declaring a pre-dependency is about to
5113 be <em>unpacked</em> the pre-dependency can be
5114 satisfied if the depended-on package is either fully
5115 configured, <em>or even if</em> the depended-on
5116 package(s) are only in the "Unpacked" or the "Half-Configured"
5117 state, provided that they have been configured
5118 correctly at some point in the past (and not removed
5119 or partially removed since). In this case, both the
5120 previously-configured and currently "Unpacked" or
5121 "Half-Configured" versions must satisfy any version
5122 clause in the <tt>Pre-Depends</tt> field.
5123 </p>
5126 When the package declaring a pre-dependency is about to
5127 be <em>configured</em>, the pre-dependency will be treated
5128 as a normal <tt>Depends</tt>. It will be considered
5129 satisfied only if the depended-on package has been
5130 correctly configured. However, unlike
5131 with <tt>Depends</tt>, <tt>Pre-Depends</tt> does not
5132 permit circular dependencies to be broken. If a circular
5133 dependency is encountered while attempting to honor
5134 <tt>Pre-Depends</tt>, the installation will be aborted.
5135 </p>
5138 <tt>Pre-Depends</tt> are also required if the
5139 <prgn>preinst</prgn> script depends on the named package.
5140 It is best to avoid this situation if possible.
5141 </p>
5144 <tt>Pre-Depends</tt> should be used sparingly,
5145 preferably only by packages whose premature upgrade or
5146 installation would hamper the ability of the system to
5147 continue with any upgrade that might be in progress.
5148 </p>
5151 You should not specify a <tt>Pre-Depends</tt> entry for a
5152 package before this has been discussed on the
5153 <tt>debian-devel</tt> mailing list and a consensus about
5154 doing that has been reached. See <ref id="dependencies">.
5155 </p>
5156 </item>
5157 </taglist>
5158 </p>
5161 When selecting which level of dependency to use you should
5162 consider how important the depended-on package is to the
5163 functionality of the one declaring the dependency. Some
5164 packages are composed of components of varying degrees of
5165 importance. Such a package should list using
5166 <tt>Depends</tt> the package(s) which are required by the
5167 more important components. The other components'
5168 requirements may be mentioned as Suggestions or
5169 Recommendations, as appropriate to the components' relative
5170 importance.
5171 </p>
5172 </sect>
5174 <sect id="breaks">
5175 <heading>Packages which break other packages - <tt>Breaks</tt></heading>
5178 When one binary package declares that it breaks another,
5179 <prgn>dpkg</prgn> will refuse to allow the package which
5180 declares <tt>Breaks</tt> to be unpacked unless the broken
5181 package is deconfigured first, and it will refuse to
5182 allow the broken package to be reconfigured.
5183 </p>
5186 A package will not be regarded as causing breakage merely
5187 because its configuration files are still installed; it must
5188 be at least "Half-Installed".
5189 </p>
5192 A special exception is made for packages which declare that
5193 they break their own package name or a virtual package which
5194 they provide (see below): this does not count as a real
5195 breakage.
5196 </p>
5199 Normally a <tt>Breaks</tt> entry will have an "earlier than"
5200 version clause; such a <tt>Breaks</tt> is introduced in the
5201 version of an (implicit or explicit) dependency which violates
5202 an assumption or reveals a bug in earlier versions of the broken
5203 package, or which takes over a file from earlier versions of the
5204 package named in <tt>Breaks</tt>. This use of <tt>Breaks</tt>
5205 will inform higher-level package management tools that the
5206 broken package must be upgraded before the new one.
5207 </p>
5210 If the breaking package also overwrites some files from the
5211 older package, it should use <tt>Replaces</tt> to ensure this
5212 goes smoothly. See <ref id="replaces"> for a full discussion
5213 of taking over files from other packages, including how to
5214 use <tt>Breaks</tt> in those cases.
5215 </p>
5218 Many of the cases where <tt>Breaks</tt> should be used were
5219 previously handled with <tt>Conflicts</tt>
5220 because <tt>Breaks</tt> did not yet exist.
5221 Many <tt>Conflicts</tt> fields should now be <tt>Breaks</tt>.
5222 See <ref id="conflicts"> for more information about the
5223 differences.
5224 </p>
5225 </sect>
5227 <sect id="conflicts">
5228 <heading>Conflicting binary packages - <tt>Conflicts</tt></heading>
5231 When one binary package declares a conflict with another using
5232 a <tt>Conflicts</tt> field, <prgn>dpkg</prgn> will refuse to
5233 allow them to be unpacked on the system at the same time. This
5234 is a stronger restriction than <tt>Breaks</tt>, which prevents
5235 the broken package from being configured while the breaking
5236 package is in the "Unpacked" state but allows both packages to
5237 be unpacked at the same time.
5238 </p>
5241 If one package is to be unpacked, the other must be removed
5242 first. If the package being unpacked is marked as replacing
5243 (see <ref id="replaces">, but note that <tt>Breaks</tt> should
5244 normally be used in this case) the one on the system, or the one
5245 on the system is marked as deselected, or both packages are
5246 marked <tt>Essential</tt>, then <prgn>dpkg</prgn> will
5247 automatically remove the package which is causing the conflict.
5248 Otherwise, it will halt the installation of the new package with
5249 an error. This mechanism is specifically designed to produce an
5250 error when the installed package is <tt>Essential</tt>, but the
5251 new package is not.
5252 </p>
5255 A package will not cause a conflict merely because its
5256 configuration files are still installed; it must be at least
5257 "Half-Installed".
5258 </p>
5261 A special exception is made for packages which declare a
5262 conflict with their own package name, or with a virtual
5263 package which they provide (see below): this does not
5264 prevent their installation, and allows a package to conflict
5265 with others providing a replacement for it. You use this
5266 feature when you want the package in question to be the only
5267 package providing some feature.
5268 </p>
5271 Normally, <tt>Breaks</tt> should be used instead
5272 of <tt>Conflicts</tt> since <tt>Conflicts</tt> imposes a
5273 stronger restriction on the ordering of package installation or
5274 upgrade and can make it more difficult for the package manager
5275 to find a correct solution to an upgrade or installation
5276 problem. <tt>Breaks</tt> should be used
5277 <list>
5278 <item>when moving a file from one package to another (see
5279 <ref id="replaces">),</item>
5280 <item>when splitting a package (a special case of the previous
5281 one), or</item>
5282 <item>when the breaking package exposes a bug in or interacts
5283 badly with particular versions of the broken
5284 package.</item>
5285 </list>
5286 <tt>Conflicts</tt> should be used
5287 <list>
5288 <item>when two packages provide the same file and will
5289 continue to do so,</item>
5290 <item>in conjunction with <tt>Provides</tt> when only one
5291 package providing a given virtual facility may be unpacked
5292 at a time (see <ref id="virtual">),</item>
5293 <item>in other cases where one must prevent simultaneous
5294 installation of two packages for reasons that are ongoing
5295 (not fixed in a later version of one of the packages) or
5296 that must prevent both packages from being unpacked at the
5297 same time, not just configured.</item>
5298 </list>
5299 Be aware that adding <tt>Conflicts</tt> is normally not the best
5300 solution when two packages provide the same files. Depending on
5301 the reason for that conflict, using alternatives or renaming the
5302 files is often a better approach. See, for
5303 example, <ref id="binaries">.
5304 </p>
5307 Neither <tt>Breaks</tt> nor <tt>Conflicts</tt> should be used
5308 unless two packages cannot be installed at the same time or
5309 installing them both causes one of them to be broken or
5310 unusable. Having similar functionality or performing the same
5311 tasks as another package is not sufficient reason to
5312 declare <tt>Breaks</tt> or <tt>Conflicts</tt> with that package.
5313 </p>
5316 A <tt>Conflicts</tt> entry may have an "earlier than" version
5317 clause if the reason for the conflict is corrected in a later
5318 version of one of the packages. However, normally the presence
5319 of an "earlier than" version clause is a sign
5320 that <tt>Breaks</tt> should have been used instead. An "earlier
5321 than" version clause in <tt>Conflicts</tt>
5322 prevents <prgn>dpkg</prgn> from upgrading or installing the
5323 package which declares such a conflict until the upgrade or
5324 removal of the conflicted-with package has been completed, which
5325 is a strong restriction.
5326 </p>
5327 </sect>
5329 <sect id="virtual"><heading>Virtual packages - <tt>Provides</tt>
5330 </heading>
5333 As well as the names of actual ("concrete") packages, the
5334 package relationship fields <tt>Depends</tt>,
5335 <tt>Recommends</tt>, <tt>Suggests</tt>, <tt>Enhances</tt>,
5336 <tt>Pre-Depends</tt>, <tt>Breaks</tt>, <tt>Conflicts</tt>,
5337 <tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
5338 <tt>Build-Depends-Arch</tt>, <tt>Build-Conflicts</tt>,
5339 <tt>Build-Conflicts-Indep</tt> and <tt>Build-Conflicts-Arch</tt>
5340 may mention "virtual packages".
5341 </p>
5344 A <em>virtual package</em> is one which appears in the
5345 <tt>Provides</tt> control field of another package. The effect
5346 is as if the package(s) which provide a particular virtual
5347 package name had been listed by name everywhere the virtual
5348 package name appears. (See also <ref id="virtual_pkg">)
5349 </p>
5352 If there are both concrete and virtual packages of the same
5353 name, then the dependency may be satisfied (or the conflict
5354 caused) by either the concrete package with the name in
5355 question or any other concrete package which provides the
5356 virtual package with the name in question. This is so that,
5357 for example, supposing we have
5358 <example compact="compact">
5359 Package: foo
5360 Depends: bar
5361 </example> and someone else releases an enhanced version of
5362 the <tt>bar</tt> package they can say:
5363 <example compact="compact">
5364 Package: bar-plus
5365 Provides: bar
5366 </example>
5367 and the <tt>bar-plus</tt> package will now also satisfy the
5368 dependency for the <tt>foo</tt> package.
5369 </p>
5372 If a relationship field has a version number attached, only real
5373 packages will be considered to see whether the relationship is
5374 satisfied (or the prohibition violated, for a conflict or
5375 breakage). In other words, if a version number is specified,
5376 this is a request to ignore all <tt>Provides</tt> for that
5377 package name and consider only real packages. The package
5378 manager will assume that a package providing that virtual
5379 package is not of the "right" version. A <tt>Provides</tt>
5380 field may not contain version numbers, and the version number of
5381 the concrete package which provides a particular virtual package
5382 will not be considered when considering a dependency on or
5383 conflict with the virtual package name.<footnote>
5384 It is possible that a future release of <prgn>dpkg</prgn> may
5385 add the ability to specify a version number for each virtual
5386 package it provides. This feature is not yet present,
5387 however, and is expected to be used only infrequently.
5388 </footnote>
5389 </p>
5392 To specify which of a set of real packages should be the default
5393 to satisfy a particular dependency on a virtual package, list
5394 the real package as an alternative before the virtual one.
5395 </p>
5398 If the virtual package represents a facility that can only be
5399 provided by one real package at a time, such as
5400 the <package>mail-transport-agent</package> virtual package that
5401 requires installation of a binary that would conflict with all
5402 other providers of that virtual package (see
5403 <ref id="mail-transport-agents">), all packages providing that
5404 virtual package should also declare a conflict with it
5405 using <tt>Conflicts</tt>. This will ensure that at most one
5406 provider of that virtual package is unpacked or installed at a
5407 time.
5408 </p>
5409 </sect>
5411 <sect id="replaces"><heading>Overwriting files and replacing
5412 packages - <tt>Replaces</tt></heading>
5415 Packages can declare in their control file that they should
5416 overwrite files in certain other packages, or completely replace
5417 other packages. The <tt>Replaces</tt> control field has these
5418 two distinct purposes.
5419 </p>
5421 <sect1><heading>Overwriting files in other packages</heading>
5424 It is usually an error for a package to contain files which
5425 are on the system in another package. However, if the
5426 overwriting package declares that it <tt>Replaces</tt> the one
5427 containing the file being overwritten, then <prgn>dpkg</prgn>
5428 will replace the file from the old package with that from the
5429 new. The file will no longer be listed as "owned" by the old
5430 package and will be taken over by the new package.
5431 Normally, <tt>Breaks</tt> should be used in conjunction
5432 with <tt>Replaces</tt>.<footnote>
5433 To see why <tt>Breaks</tt> is normally needed in addition
5434 to <tt>Replaces</tt>, consider the case of a file in the
5435 package <package>foo</package> being taken over by the
5436 package <package>foo-data</package>.
5437 <tt>Replaces</tt> will allow <package>foo-data</package> to
5438 be installed and take over that file. However,
5439 without <tt>Breaks</tt>, nothing
5440 requires <package>foo</package> to be upgraded to a newer
5441 version that knows it does not include that file and instead
5442 depends on <package>foo-data</package>. Nothing would
5443 prevent the new <package>foo-data</package> package from
5444 being installed and then removed, removing the file that it
5445 took over from <package>foo</package>. After that
5446 operation, the package manager would think the system was in
5447 a consistent state, but the <package>foo</package> package
5448 would be missing one of its files.
5449 </footnote>
5450 </p>
5453 For example, if a package <package>foo</package> is split
5454 into <package>foo</package> and <package>foo-data</package>
5455 starting at version 1.2-3, <package>foo-data</package> would
5456 have the fields
5457 <example compact="compact">
5458 Replaces: foo (&lt;&lt; 1.2-3)
5459 Breaks: foo (&lt;&lt; 1.2-3)
5460 </example>
5461 in its control file. The new version of the
5462 package <package>foo</package> would normally have the field
5463 <example compact="compact">
5464 Depends: foo-data (&gt;= 1.2-3)
5465 </example>
5466 (or possibly <tt>Recommends</tt> or even <tt>Suggests</tt> if
5467 the files moved into <package>foo-data</package> are not
5468 required for normal operation).
5469 </p>
5472 If a package is completely replaced in this way, so that
5473 <prgn>dpkg</prgn> does not know of any files it still
5474 contains, it is considered to have "disappeared". It will
5475 be marked as not wanted on the system (selected for
5476 removal) and "Not-Installed". Any <tt>conffile</tt>s
5477 details noted for the package will be ignored, as they
5478 will have been taken over by the overwriting package. The
5479 package's <prgn>postrm</prgn> script will be run with a
5480 special argument to allow the package to do any final
5481 cleanup required. See <ref id="mscriptsinstact">.
5482 <footnote>
5483 Replaces is a one way relationship. You have to install
5484 the replacing package after the replaced package.
5485 </footnote>
5486 </p>
5489 For this usage of <tt>Replaces</tt>, virtual packages (see
5490 <ref id="virtual">) are not considered when looking at a
5491 <tt>Replaces</tt> field. The packages declared as being
5492 replaced must be mentioned by their real names.
5493 </p>
5496 This usage of <tt>Replaces</tt> only takes effect when both
5497 packages are at least partially on the system at once. It is
5498 not relevant if the packages conflict unless the conflict has
5499 been overridden.
5500 </p>
5501 </sect1>
5503 <sect1><heading>Replacing whole packages, forcing their
5504 removal</heading>
5507 Second, <tt>Replaces</tt> allows the packaging system to
5508 resolve which package should be removed when there is a
5509 conflict (see <ref id="conflicts">). This usage only takes
5510 effect when the two packages <em>do</em> conflict, so that the
5511 two usages of this field do not interfere with each other.
5512 </p>
5515 In this situation, the package declared as being replaced
5516 can be a virtual package, so for example, all mail
5517 transport agents (MTAs) would have the following fields in
5518 their control files:
5519 <example compact="compact">
5520 Provides: mail-transport-agent
5521 Conflicts: mail-transport-agent
5522 Replaces: mail-transport-agent
5523 </example>
5524 ensuring that only one MTA can be unpacked at any one
5525 time. See <ref id="virtual"> for more information about this
5526 example.
5527 </sect1>
5528 </sect>
5530 <sect id="sourcebinarydeps">
5531 <heading>Relationships between source and binary packages -
5532 <tt>Build-Depends</tt>, <tt>Build-Depends-Indep</tt>,
5533 <tt>Build-Depends-Arch</tt>, <tt>Build-Conflicts</tt>,
5534 <tt>Build-Conflicts-Indep</tt>, <tt>Build-Conflicts-Arch</tt>
5535 </heading>
5538 Source packages that require certain binary packages to be
5539 installed or absent at the time of building the package
5540 can declare relationships to those binary packages.
5541 </p>
5544 This is done using the <tt>Build-Depends</tt>,
5545 <tt>Build-Depends-Indep</tt>, <tt>Build-Depends-Arch</tt>,
5546 <tt>Build-Conflicts</tt>, <tt>Build-Conflicts-Indep</tt> and
5547 <tt>Build-Conflicts-Arch</tt> control fields.
5548 </p>
5551 Build-dependencies on "build-essential" binary packages can be
5552 omitted. Please see <ref id="pkg-relations"> for more information.
5553 </p>
5556 The dependencies and conflicts they define must be satisfied
5557 (as defined earlier for binary packages) in order to invoke
5558 the targets in <tt>debian/rules</tt>, as follows:
5559 <taglist>
5560 <tag><tt>clean</tt></tag>
5561 <item>
5562 Only the <tt>Build-Depends</tt> and <tt>Build-Conflicts</tt>
5563 fields must be satisfied when this target is invoked.
5564 </item>
5565 <tag><tt>build-arch</tt>, and <tt>binary-arch</tt></tag>
5566 <item>
5567 The <tt>Build-Depends</tt>, <tt>Build-Conflicts</tt>,
5568 <tt>Build-Depends-Arch</tt>, and <tt>Build-Conflicts-Arch</tt>
5569 fields must be satisfied when these targets are invoked.
5570 </item>
5571 <tag><tt>build-indep</tt>, and <tt>binary-indep</tt></tag>
5572 <item>
5573 The <tt>Build-Depends</tt>, <tt>Build-Conflicts</tt>,
5574 <tt>Build-Depends-Indep</tt>, and <tt>Build-Conflicts-Indep</tt>
5575 fields must be satisfied when these targets are invoked.
5576 </item>
5577 <tag><tt>build</tt> and <tt>binary</tt></tag>
5578 <item>
5579 The <tt>Build-Depends</tt>, <tt>Build-Conflicts</tt>,
5580 <tt>Build-Depends-Indep</tt>, <tt>Build-Conflicts-Indep</tt>,
5581 <tt>Build-Depends-Arch</tt>, and <tt>Build-Conflicts-Arch</tt>
5582 fields must be satisfied when these targets are invoked.
5583 </item>
5584 </taglist>
5585 </p>
5586 </sect>
5588 <sect id="built-using">
5589 <heading>Additional source packages used to build the binary
5590 - <tt>Built-Using</tt>
5591 </heading>
5594 Some binary packages incorporate parts of other packages when built
5595 but do not have to depend on those packages. Examples include
5596 linking with static libraries or incorporating source code from
5597 another package during the build. In this case, the source packages
5598 of those other packages are a required part of the complete source
5599 (the binary package is not reproducible without them).
5600 </p>
5603 A <tt>Built-Using</tt> field must list the corresponding source
5604 package for any such binary package incorporated during the build
5605 <footnote>
5606 <tt>Build-Depends</tt> in the source package is not adequate since
5607 it (rightfully) does not document the exact version used in the
5608 build.
5609 </footnote>,
5610 including an "exactly equal" ("=") version relation on the version
5611 that was used to build that binary package<footnote>
5612 The archive software might reject packages that refer to
5613 non-existent sources.
5614 </footnote>.
5615 </p>
5618 A package using the source code from the gcc-4.6-source
5619 binary package built from the gcc-4.6 source package would
5620 have this field in its control file:
5621 <example compact="compact">
5622 Built-Using: gcc-4.6 (= 4.6.0-11)
5623 </example>
5624 </p>
5627 A package including binaries from grub2 and loadlin would
5628 have this field in its control file:
5629 <example compact="compact">
5630 Built-Using: grub2 (= 1.99-9), loadlin (= 1.6e-1)
5631 </example>
5632 </p>
5633 </sect>
5634 </chapt>
5637 <chapt id="sharedlibs"><heading>Shared libraries</heading>
5640 Packages containing shared libraries must be constructed with
5641 a little care to make sure that the shared library is always
5642 available. This is especially important for packages whose
5643 shared libraries are vitally important, such as the C library
5644 (currently <tt>libc6</tt>).
5645 </p>
5648 This section deals only with public shared libraries: shared
5649 libraries that are placed in directories searched by the dynamic
5650 linker by default or which are intended to be linked against
5651 normally and possibly used by other, independent packages. Shared
5652 libraries that are internal to a particular package or that are
5653 only loaded as dynamic modules are not covered by this section and
5654 are not subject to its requirements.
5655 </p>
5658 A shared library is identified by the <tt>SONAME</tt> attribute
5659 stored in its dynamic section. When a binary is linked against a
5660 shared library, the <tt>SONAME</tt> of the shared library is
5661 recorded in the binary's <tt>NEEDED</tt> section so that the
5662 dynamic linker knows that library must be loaded at runtime. The
5663 shared library file's full name (which usually contains additional
5664 version information not needed in the <tt>SONAME</tt>) is
5665 therefore normally not referenced directly. Instead, the shared
5666 library is loaded by its <tt>SONAME</tt>, which exists on the file
5667 system as a symlink pointing to the full name of the shared
5668 library. This symlink must be provided by the
5669 package. <ref id="sharedlibs-runtime"> describes how to do this.
5670 <footnote>
5671 This is a convention of shared library versioning, but not a
5672 requirement. Some libraries use the <tt>SONAME</tt> as the full
5673 library file name instead and therefore do not need a symlink.
5674 Most, however, encode additional information about
5675 backwards-compatible revisions as a minor version number in the
5676 file name. The <tt>SONAME</tt> itself only changes when
5677 binaries linked with the earlier version of the shared library
5678 may no longer work, but the filename may change with each
5679 release of the library. See <ref id="sharedlibs-runtime"> for
5680 more information.
5681 </footnote>
5682 </p>
5685 When linking a binary or another shared library against a shared
5686 library, the <tt>SONAME</tt> for that shared library is not yet
5687 known. Instead, the shared library is found by looking for a file
5688 matching the library name with <tt>.so</tt> appended. This file
5689 exists on the file system as a symlink pointing to the shared
5690 library.
5691 </p>
5694 Shared libraries are normally split into several binary packages.
5695 The <tt>SONAME</tt> symlink is installed by the runtime shared
5696 library package, and the bare <tt>.so</tt> symlink is installed in
5697 the development package since it's only used when linking binaries
5698 or shared libraries. However, there are some exceptions for
5699 unusual shared libraries or for shared libraries that are also
5700 loaded as dynamic modules by other programs.
5701 </p>
5704 This section is primarily concerned with how the separation of
5705 shared libraries into multiple packages should be done and how
5706 dependencies on and between shared library binary packages are
5707 managed in Debian. <ref id="libraries"> should be read in
5708 conjunction with this section and contains additional rules for
5709 the files contained in the shared library packages.
5710 </p>
5712 <sect id="sharedlibs-runtime">
5713 <heading>Run-time shared libraries</heading>
5716 The run-time shared library must be placed in a package
5717 whose name changes whenever the <tt>SONAME</tt> of the shared
5718 library changes. This allows several versions of the shared
5719 library to be installed at the same time, allowing installation
5720 of the new version of the shared library without immediately
5721 breaking binaries that depend on the old version. Normally, the
5722 run-time shared library and its <tt>SONAME</tt> symlink should
5723 be placed in a package named
5724 <package><var>libraryname</var><var>soversion</var></package>,
5725 where <var>soversion</var> is the version number in
5726 the <tt>SONAME</tt> of the shared library. Alternatively, if it
5727 would be confusing to directly append <var>soversion</var>
5728 to <var>libraryname</var> (if, for
5729 example, <var>libraryname</var> itself ends in a number), you
5730 should use
5731 <package><var>libraryname</var>-<var>soversion</var></package>
5732 instead.
5733 </p>
5736 To determine the <var>soversion</var>, look at
5737 the <tt>SONAME</tt> of the library, stored in the
5738 ELF <tt>SONAME</tt> attribute. It is usually of the
5739 form <tt><var>name</var>.so.<var>major-version</var></tt> (for
5740 example, <tt>libz.so.1</tt>). The version part is the part
5741 which comes after <tt>.so.</tt>, so in that example it
5742 is <tt>1</tt>. The soname may instead be of the
5743 form <tt><var>name</var>-<var>major-version</var>.so</tt>, such
5744 as <tt>libdb-5.1.so</tt>, in which case the name would
5745 be <tt>libdb</tt> and the version would be <tt>5.1</tt>.
5746 </p>
5749 If you have several shared libraries built from the same source
5750 tree, you may lump them all together into a single shared
5751 library package provided that all of their <tt>SONAME</tt>s will
5752 always change together. Be aware that this is not normally the
5753 case, and if the <tt>SONAME</tt>s do not change together,
5754 upgrading such a merged shared library package will be
5755 unnecessarily difficult because of file conflicts with the old
5756 version of the package. When in doubt, always split shared
5757 library packages so that each binary package installs a single
5758 shared library.
5759 </p>
5762 Every time the shared library ABI changes in a way that may
5763 break binaries linked against older versions of the shared
5764 library, the <tt>SONAME</tt> of the library and the
5765 corresponding name for the binary package containing the runtime
5766 shared library should change. Normally, this means
5767 the <tt>SONAME</tt> should change any time an interface is
5768 removed from the shared library or the signature of an interface
5769 (the number of parameters or the types of parameters that it
5770 takes, for example) is changed. This practice is vital to
5771 allowing clean upgrades from older versions of the package and
5772 clean transitions between the old ABI and new ABI without having
5773 to upgrade every affected package simultaneously.
5774 </p>
5777 The <tt>SONAME</tt> and binary package name need not, and indeed
5778 normally should not, change if new interfaces are added but none
5779 are removed or changed, since this will not break binaries
5780 linked against the old shared library. Correct versioning of
5781 dependencies on the newer shared library by binaries that use
5782 the new interfaces is handled via
5783 the <qref id="sharedlibs-depends"><tt>symbols</tt>
5784 or <tt>shlibs</tt> system</qref>.
5785 </p>
5788 The package should install the shared libraries under
5789 their normal names. For example, the <package>libgdbm3</package>
5790 package should install <file>libgdbm.so.3.0.0</file> as
5791 <file>/usr/lib/libgdbm.so.3.0.0</file>. The files should not be
5792 renamed or re-linked by any <prgn>prerm</prgn> or
5793 <prgn>postrm</prgn> scripts; <prgn>dpkg</prgn> will take care
5794 of renaming things safely without affecting running programs,
5795 and attempts to interfere with this are likely to lead to
5796 problems.
5797 </p>
5800 Shared libraries should not be installed executable, since
5801 the dynamic linker does not require this and trying to
5802 execute a shared library usually results in a core dump.
5803 </p>
5806 The run-time library package should include the symbolic link for
5807 the <tt>SONAME</tt> that <prgn>ldconfig</prgn> would create for
5808 the shared libraries. For example,
5809 the <package>libgdbm3</package> package should include a symbolic
5810 link from <file>/usr/lib/libgdbm.so.3</file> to
5811 <file>libgdbm.so.3.0.0</file>. This is needed so that the dynamic
5812 linker (for example <prgn>ld.so</prgn> or
5813 <prgn>ld-linux.so.*</prgn>) can find the library between the
5814 time that <prgn>dpkg</prgn> installs it and the time that
5815 <prgn>ldconfig</prgn> is run in the <prgn>postinst</prgn>
5816 script.<footnote>
5817 The package management system requires the library to be
5818 placed before the symbolic link pointing to it in the
5819 <file>.deb</file> file. This is so that when
5820 <prgn>dpkg</prgn> comes to install the symlink
5821 (overwriting the previous symlink pointing at an older
5822 version of the library), the new shared library is already
5823 in place. In the past, this was achieved by creating the
5824 library in the temporary packaging directory before
5825 creating the symlink. Unfortunately, this was not always
5826 effective, since the building of the tar file in the
5827 <file>.deb</file> depended on the behavior of the underlying
5828 file system. Some file systems (such as reiserfs) reorder
5829 the files so that the order of creation is forgotten.
5830 Since version 1.7.0, <prgn>dpkg</prgn>
5831 reorders the files itself as necessary when building a
5832 package. Thus it is no longer important to concern
5833 oneself with the order of file creation.
5834 </footnote>
5835 </p>
5837 <sect1 id="ldconfig">
5838 <heading><tt>ldconfig</tt></heading>
5841 Any package installing shared libraries in one of the default
5842 library directories of the dynamic linker (which are currently
5843 <file>/usr/lib</file> and <file>/lib</file>) or a directory that is
5844 listed in <file>/etc/ld.so.conf</file><footnote>
5845 These are currently <file>/usr/local/lib</file> plus
5846 directories under <file>/lib</file> and <file>/usr/lib</file>
5847 matching the multiarch triplet for the system architecture.
5848 </footnote>
5849 must use <prgn>ldconfig</prgn> to update the shared library
5850 system.
5851 </p>
5854 The package maintainer scripts must only call
5855 <prgn>ldconfig</prgn> under these circumstances:
5856 <list compact="compact">
5857 <item>When the <prgn>postinst</prgn> script is run with a
5858 first argument of <tt>configure</tt>, the script must call
5859 <prgn>ldconfig</prgn>, and may optionally invoke
5860 <prgn>ldconfig</prgn> at other times.
5861 </item>
5862 <item>When the <prgn>postrm</prgn> script is run with a
5863 first argument of <tt>remove</tt>, the script should call
5864 <prgn>ldconfig</prgn>.
5865 </item>
5866 </list>
5867 <footnote>
5869 During install or upgrade, the preinst is called before
5870 the new files are unpacked, so calling "ldconfig" is
5871 pointless. The preinst of an existing package can also be
5872 called if an upgrade fails. However, this happens during
5873 the critical time when a shared libs may exist on-disk
5874 under a temporary name. Thus, it is dangerous and
5875 forbidden by current policy to call "ldconfig" at this
5876 time.
5877 </p>
5880 When a package is installed or upgraded, "postinst
5881 configure" runs after the new files are safely on-disk.
5882 Since it is perfectly safe to invoke ldconfig
5883 unconditionally in a postinst, it is OK for a package to
5884 simply put ldconfig in its postinst without checking the
5885 argument. The postinst can also be called to recover from
5886 a failed upgrade. This happens before any new files are
5887 unpacked, so there is no reason to call "ldconfig" at this
5888 point.
5889 </p>
5892 For a package that is being removed, prerm is
5893 called with all the files intact, so calling ldconfig is
5894 useless. The other calls to "prerm" happen in the case of
5895 upgrade at a time when all the files of the old package
5896 are on-disk, so again calling "ldconfig" is pointless.
5897 </p>
5900 postrm, on the other hand, is called with the "remove"
5901 argument just after the files are removed, so this is
5902 the proper time to call "ldconfig" to notify the system
5903 of the fact that the shared libraries from the package
5904 are removed. The postrm can be called at several other
5905 times. At the time of "postrm purge", "postrm
5906 abort-install", or "postrm abort-upgrade", calling
5907 "ldconfig" is useless because the shared lib files are
5908 not on-disk. However, when "postrm" is invoked with
5909 arguments "upgrade", "failed-upgrade", or "disappear", a
5910 shared lib may exist on-disk under a temporary filename.
5911 </p>
5912 </footnote>
5913 </p>
5914 </sect1>
5916 </sect>
5918 <sect id="sharedlibs-support-files">
5919 <heading>Shared library support files</heading>
5922 If your package contains files whose names do not change with
5923 each change in the library shared object version, you must not
5924 put them in the shared library package. Otherwise, several
5925 versions of the shared library cannot be installed at the same
5926 time without filename clashes, making upgrades and transitions
5927 unnecessarily difficult.
5928 </p>
5931 It is recommended that supporting files and run-time support
5932 programs that do not need to be invoked manually by users, but
5933 are nevertheless required for the package to function, be placed
5934 (if they are binary) in a subdirectory of <file>/usr/lib</file>,
5935 preferably under <file>/usr/lib/</file><var>package-name</var>.
5936 If the program or file is architecture independent, the
5937 recommendation is for it to be placed in a subdirectory of
5938 <file>/usr/share</file> instead, preferably under
5939 <file>/usr/share/</file><var>package-name</var>. Following the
5940 <var>package-name</var> naming convention ensures that the file
5941 names change when the shared object version changes.
5942 </p>
5945 Run-time support programs that use the shared library but are
5946 not required for the library to function or files used by the
5947 shared library that can be used by any version of the shared
5948 library package should instead be put in a separate package.
5949 This package might typically be named
5950 <package><var>libraryname</var>-tools</package>; note the
5951 absence of the <var>soversion</var> in the package name.
5952 </p>
5955 Files and support programs only useful when compiling software
5956 against the library should be included in the development
5957 package for the library.<footnote>
5958 For example, a <file><var>package-name</var>-config</file>
5959 script or <package>pkg-config</package> configuration files.
5960 </footnote>
5961 </p>
5962 </sect>
5964 <sect id="sharedlibs-static">
5965 <heading>Static libraries</heading>
5968 The static library (<file><var>libraryname.a</var></file>)
5969 is usually provided in addition to the shared version.
5970 It is placed into the development package (see below).
5971 </p>
5974 In some cases, it is acceptable for a library to be
5975 available in static form only; these cases include:
5976 <list>
5977 <item>libraries for languages whose shared library support
5978 is immature or unstable</item>
5979 <item>libraries whose interfaces are in flux or under
5980 development (commonly the case when the library's
5981 major version number is zero, or where the ABI breaks
5982 across patchlevels)</item>
5983 <item>libraries which are explicitly intended to be
5984 available only in static form by their upstream
5985 author(s)</item>
5986 </list>
5987 </p>
5989 <sect id="sharedlibs-dev">
5990 <heading>Development files</heading>
5993 If there are development files associated with a shared library,
5994 the source package needs to generate a binary development package
5995 named <package><var>libraryname</var><var>soversion</var>-dev</package>,
5996 or if you prefer only to support one development version at a
5997 time, <package><var>libraryname</var>-dev</package>. Installing
5998 the development package must result in installation of all the
5999 development files necessary for compiling programs against that
6000 shared library.<footnote>
6001 This wording allows the development files to be split into
6002 several packages, such as a separate architecture-independent
6003 <package><var>libraryname</var>-headers</package>, provided that
6004 the development package depends on all the required additional
6005 packages.
6006 </footnote>
6007 </p>
6010 In case several development versions of a library exist, you may
6011 need to use <prgn>dpkg</prgn>'s Conflicts mechanism (see
6012 <ref id="conflicts">) to ensure that the user only installs one
6013 development version at a time (as different development versions are
6014 likely to have the same header files in them, which would cause a
6015 filename clash if both were unpacked).
6016 </p>
6019 The development package should contain a symlink for the associated
6020 shared library without a version number. For example, the
6021 <package>libgdbm-dev</package> package should include a symlink
6022 from <file>/usr/lib/libgdbm.so</file> to
6023 <file>libgdbm.so.3.0.0</file>. This symlink is needed by the linker
6024 (<prgn>ld</prgn>) when compiling packages, as it will only look for
6025 <file>libgdbm.so</file> when compiling dynamically.
6026 </p>
6029 If the package provides Ada Library Information
6030 (<file>*.ali</file>) files for use with GNAT, these files must be
6031 installed read-only (mode 0444) so that GNAT will not attempt to
6032 recompile them. This overrides the normal file mode requirements
6033 given in <ref id="permissions-owners">.
6034 </p>
6035 </sect>
6037 <sect id="sharedlibs-intradeps">
6038 <heading>Dependencies between the packages of the same library</heading>
6041 Typically the development version should have an exact
6042 version dependency on the runtime library, to make sure that
6043 compilation and linking happens correctly. The
6044 <tt>${binary:Version}</tt> substitution variable can be
6045 useful for this purpose.
6046 <footnote>
6047 Previously, <tt>${Source-Version}</tt> was used, but its name
6048 was confusing and it has been deprecated since dpkg 1.13.19.
6049 </footnote>
6050 </p>
6051 </sect>
6053 <sect id="sharedlibs-depends">
6054 <heading>Dependencies between the library and other
6055 packages</heading>
6058 If a package contains a binary or library which links to a
6059 shared library, we must ensure that, when the package is
6060 installed on the system, all of the libraries needed are also
6061 installed. These dependencies must be added to the binary
6062 package when it is built, since they may change based on which
6063 version of a shared library the binary or library was linked
6064 with even if there are no changes to the source of the binary
6065 (for example, symbol versions change, macros become functions or
6066 vice versa, or the binary package may determine at compile-time
6067 whether new library interfaces are available and can be called).
6068 To allow these dependencies to be constructed, shared libraries
6069 must provide either a <file>symbols</file> file or
6070 a <file>shlibs</file> file. These provide information on the
6071 package dependencies required to ensure the presence of
6072 interfaces provided by this library. Any package with binaries
6073 or libraries linking to a shared library must use these files to
6074 determine the required dependencies when it is built. Other
6075 packages which use a shared library (for example using
6076 <tt>dlopen()</tt>) should compute appropriate dependencies
6077 using these files at build time as well.
6078 </p>
6081 The two mechanisms differ in the degree of detail that they
6082 provide. A <file>symbols</file> file documents, for each symbol
6083 exported by a library, the minimal version of the package any
6084 binary using this symbol will need. This is typically the
6085 version of the package in which the symbol was introduced. This
6086 information permits detailed analysis of the symbols used by a
6087 particular package and construction of an accurate dependency,
6088 but it requires the package maintainer to track more information
6089 about the shared library.
6090 </p>
6093 A <file>shlibs</file> file, in contrast, only documents the last
6094 time the library ABI changed in any way. It only provides
6095 information about the library as a whole, not individual
6096 symbols. When a package is built using a shared library with
6097 only a <file>shlibs</file> file, the generated dependency will
6098 require a version of the shared library equal to or newer than
6099 the version of the last ABI change. This generates
6100 unnecessarily restrictive dependencies compared
6101 to <file>symbols</file> files if none of the symbols used by the
6102 package have changed. This, in turn, may make upgrades
6103 needlessly complex and unnecessarily restrict use of the package
6104 on systems with older versions of the shared libraries.
6105 </p>
6108 <file>shlibs</file> files also only support a limited range of
6109 library SONAMEs, making it difficult to use <file>shlibs</file>
6110 files in some unusual corner cases.<footnote>
6111 A <file>shlibs</file> file represents an SONAME as a library
6112 name and version number, such as <tt>libfoo VERSION</tt>,
6113 instead of recording the actual SONAME. If the SONAME doesn't
6114 match one of the two expected formats
6115 (<tt>libfoo-VERSION.so</tt> or <tt>libfoo.so.VERSION</tt>), it
6116 cannot be represented.
6117 </footnote>
6118 </p>
6121 <file>symbols</file> files are therefore recommended for most
6122 shared library packages since they provide more accurate
6123 dependencies. For most C libraries, the additional detail
6124 required by <file>symbols</file> files is not too difficult to
6125 maintain. However, maintaining exhaustive symbols information
6126 for a C++ library can be quite onerous, so <file>shlibs</file>
6127 files may be more appropriate for most C++ libraries. Libraries
6128 with a corresponding udeb must also provide
6129 a <file>shlibs</file> file, since the udeb infrastructure does
6130 not use <file>symbols</file> files.
6131 </p>
6133 <sect1 id="dpkg-shlibdeps">
6134 <heading>Generating dependencies on shared libraries</heading>
6137 When a package that contains any shared libraries or compiled
6138 binaries is built, it must run <prgn>dpkg-shlibdeps</prgn> on
6139 each shared library and compiled binary to determine the
6140 libraries used and hence the dependencies needed by the
6141 package.<footnote>
6142 <prgn>dpkg-shlibdeps</prgn> will use a program
6143 like <prgn>objdump</prgn> or <prgn>readelf</prgn> to find
6144 the libraries and the symbols in those libraries directly
6145 needed by the binaries or shared libraries in the package.
6146 </footnote>
6147 To do this, put a call to <prgn>dpkg-shlibdeps</prgn> into
6148 your <file>debian/rules</file> file in the source package.
6149 List all of the compiled binaries, libraries, or loadable
6150 modules in your package.<footnote>
6151 The easiest way to call <prgn>dpkg-shlibdeps</prgn>
6152 correctly is to use a package helper framework such
6153 as <package>debhelper</package>. If you are
6154 using <package>debhelper</package>,
6155 the <prgn>dh_shlibdeps</prgn> program will do this work for
6156 you. It will also correctly handle multi-binary packages.
6157 </footnote>
6158 <prgn>dpkg-shlibdeps</prgn> will use the <file>symbols</file>
6159 or <file>shlibs</file> files installed by the shared libraries
6160 to generate dependency information. The package must then
6161 provide a substitution variable into which the discovered
6162 dependency information can be placed.
6163 </p>
6166 If you are creating a udeb for use in the Debian Installer,
6167 you will need to specify that <prgn>dpkg-shlibdeps</prgn>
6168 should use the dependency line of type <tt>udeb</tt> by adding
6169 the <tt>-tudeb</tt> option<footnote>
6170 <prgn>dh_shlibdeps</prgn> from the <tt>debhelper</tt> suite
6171 will automatically add this option if it knows it is
6172 processing a udeb.
6173 </footnote>. If there is no dependency line of
6174 type <tt>udeb</tt> in the <file>shlibs</file>
6175 file, <prgn>dpkg-shlibdeps</prgn> will fall back to the
6176 regular dependency line.
6177 </p>
6180 <prgn>dpkg-shlibdeps</prgn> puts the dependency information
6181 into the <file>debian/substvars</file> file by default, which
6182 is then used by <prgn>dpkg-gencontrol</prgn>. You will need
6183 to place a <tt>${shlibs:Depends}</tt> variable in
6184 the <tt>Depends</tt> field in the control file of every binary
6185 package built by this source package that contains compiled
6186 binaries, libraries, or loadable modules. If you have
6187 multiple binary packages, you will need to
6188 call <prgn>dpkg-shlibdeps</prgn> on each one which contains
6189 compiled libraries or binaries. For example, you could use
6190 the <tt>-T</tt> option to the <tt>dpkg</tt> utilities to
6191 specify a different <file>substvars</file> file for each
6192 binary package.<footnote>
6193 Again, <prgn>dh_shlibdeps</prgn>
6194 and <prgn>dh_gencontrol</prgn> will handle everything except
6195 the addition of the variable to the control file for you if
6196 you're using <package>debhelper</package>, including
6197 generating separate <file>substvars</file> files for each
6198 binary package and calling <prgn>dpkg-gencontrol</prgn> with
6199 the appropriate flags.
6200 </footnote>
6201 </p>
6204 For more details on <prgn>dpkg-shlibdeps</prgn>,
6205 see <manref name="dpkg-shlibdeps" section="1">.
6206 </p>
6209 We say that a binary <tt>foo</tt> <em>directly</em> uses a
6210 library <tt>libbar</tt> if it is explicitly linked with that
6211 library (that is, the library is listed in the
6212 ELF <tt>NEEDED</tt> attribute, caused by adding <tt>-lbar</tt>
6213 to the link line when the binary is created). Other libraries
6214 that are needed by <tt>libbar</tt> are
6215 linked <em>indirectly</em> to <tt>foo</tt>, and the dynamic
6216 linker will load them automatically when it
6217 loads <tt>libbar</tt>. A package should depend on the
6218 libraries it directly uses, but not the libraries it only uses
6219 indirectly. The dependencies for the libraries used
6220 directly will automatically pull in the indirectly-used
6221 libraries. <prgn>dpkg-shlibdeps</prgn> will handle this logic
6222 automatically, but package maintainers need to be aware of
6223 this distinction between directly and indirectly using a
6224 library if they have to override its results for some reason.
6225 <footnote>
6226 A good example of where this helps is the following. We
6227 could update <tt>libimlib</tt> with a new version that
6228 supports a new revision of a graphics format called dgf (but
6229 retaining the same major version number) and depends on a
6230 new library package <package>libdgf4</package> instead of
6231 the older <package>libdgf3</package>. If we
6232 used <prgn>ldd</prgn> to add dependencies for every library
6233 directly or indirectly linked with a binary, every package
6234 that uses <tt>libimlib</tt> would need to be recompiled so
6235 it would also depend on <package>libdgf4</package> in order
6236 to retire the older <package>libdgf3</package> package.
6237 Since dependencies are only added based on
6238 ELF <tt>NEEDED</tt> attribute, packages
6239 using <tt>libimlib</tt> can rely on <tt>libimlib</tt> itself
6240 having the dependency on an appropriate version
6241 of <tt>libdgf</tt> and do not need rebuilding.
6242 </footnote>
6243 </p>
6244 </sect1>
6246 <sect1 id="sharedlibs-updates">
6247 <heading>Shared library ABI changes</heading>
6250 Maintaining a shared library package using
6251 either <file>symbols</file> or <file>shlibs</file> files
6252 requires being aware of the exposed ABI of the shared library
6253 and any changes to it. Both <file>symbols</file>
6254 and <file>shlibs</file> files record every change to the ABI
6255 of the shared library; <file>symbols</file> files do so per
6256 public symbol, whereas <file>shlibs</file> files record only
6257 the last change for the entire library.
6258 </p>
6261 There are two types of ABI changes: ones that are
6262 backward-compatible and ones that are not. An ABI change is
6263 backward-compatible if any reasonable program or library that
6264 was linked with the previous version of the shared library
6265 will still work correctly with the new version of the shared
6266 library.<footnote>
6267 An example of an "unreasonable" program is one that uses
6268 library interfaces that are documented as internal and
6269 unsupported. If the only programs or libraries affected by
6270 a change are "unreasonable" ones, other techniques, such as
6271 declaring <tt>Breaks</tt> relationships with affected
6272 packages or treating their usage of the library as bugs in
6273 those packages, may be appropriate instead of changing the
6274 SONAME. However, the default approach is to change the
6275 SONAME for any change to the ABI that could break a program.
6276 </footnote>
6277 Adding new symbols to the shared library is a
6278 backward-compatible change. Removing symbols from the shared
6279 library is not. Changing the behavior of a symbol may or may
6280 not be backward-compatible depending on the change; for
6281 example, changing a function to accept a new enum constant not
6282 previously used by the library is generally
6283 backward-compatible, but changing the members of a struct that
6284 is passed into library functions is generally not unless the
6285 library takes special precautions to accept old versions of
6286 the data structure.
6287 </p>
6290 ABI changes that are not backward-compatible normally require
6291 changing the <tt>SONAME</tt> of the library and therefore the
6292 shared library package name, which forces rebuilding all
6293 packages using that shared library to update their
6294 dependencies and allow them to use the new version of the
6295 shared library. For more information,
6296 see <ref id="sharedlibs-runtime">. The remainder of this
6297 section will deal with backward-compatible changes.
6298 </p>
6301 Backward-compatible changes require either updating or
6302 recording the <var>minimal-version</var> for that symbol
6303 in <file>symbols</file> files or updating the version in
6304 the <var>dependencies</var> in <file>shlibs</file> files. For
6305 more information on how to do this in the two formats, see
6306 <ref id="symbols"> and <ref id="shlibs">. Below are general
6307 rules that apply to both files.
6308 </p>
6311 The easy case is when a public symbol is added. Simply add
6312 the version at which the symbol was introduced
6313 (for <file>symbols</file> files) or update the dependency
6314 version (for <file>shlibs</file>) files. But special care
6315 should be taken to update dependency versions when the
6316 behavior of a public symbol changes. This is easy to neglect,
6317 since there is no automated method of determining such
6318 changes, but failing to update versions in this case may
6319 result in binary packages with too-weak dependencies that will
6320 fail at runtime, possibly in ways that can cause security
6321 vulnerabilities. If the package maintainer believes that a
6322 symbol behavior change may have occurred but isn't sure, it's
6323 safer to update the version rather than leave it unmodified.
6324 This may result in unnecessarily strict dependencies, but it
6325 ensures that packages whose dependencies are satisfied will
6326 work properly.
6327 </p>
6330 A common example of when a change to the dependency version
6331 is required is a function that takes an enum or struct
6332 argument that controls what the function does. For example:
6333 <example>
6334 enum library_op { OP_FOO, OP_BAR };
6335 int library_do_operation(enum library_op);
6336 </example>
6337 If a new operation, <tt>OP_BAZ</tt>, is added,
6338 the <var>minimal-version</var>
6339 of <tt>library_do_operation</tt> (for <file>symbols</file>
6340 files) or the version in the dependency for the shared library
6341 (for <file>shlibs</file> files) must be increased to the
6342 version at which <tt>OP_BAZ</tt> was introduced. Otherwise, a
6343 binary built against the new version of the library (having
6344 detected at compile-time that the library
6345 supports <tt>OP_BAZ</tt>) may be installed with a shared
6346 library that doesn't support <tt>OP_BAZ</tt> and will fail at
6347 runtime when it tries to pass <tt>OP_BAZ</tt> into this
6348 function.
6349 </p>
6352 Dependency versions in either <file>symbols</file>
6353 or <file>shlibs</file> files normally should not contain the
6354 Debian revision of the package, since the library behavior is
6355 normally fixed for a particular upstream version and any
6356 Debian packaging of that upstream version will have the same
6357 behavior. In the rare case that the library behavior was
6358 changed in a particular Debian revision, appending <tt>~</tt>
6359 to the end of the version that includes the Debian revision is
6360 recommended, since this allows backports of the shared library
6361 package using the normal backport versioning convention to
6362 satisfy the dependency.
6363 </p>
6364 </sect1>
6366 <sect1 id="sharedlibs-symbols">
6367 <heading>The <tt>symbols</tt> system</heading>
6370 In the following sections, we will first describe where the
6371 various <file>symbols</file> files are to be found, then
6372 the <file>symbols</file> file format, and finally how to
6373 create <file>symbols</file> files if your package contains a
6374 shared library.
6375 </p>
6377 <sect2 id="symbols-paths">
6378 <heading>The <file>symbols</file> files present on the
6379 system</heading>
6382 <file>symbols</file> files for a shared library are normally
6383 provided by the shared library package as a control file,
6384 but there are several override paths that are checked first
6385 in case that information is wrong or missing. The following
6386 list gives them in the order in which they are read
6387 by <prgn>dpkg-shlibdeps</prgn> The first one that contains
6388 the required information is used.
6389 <list>
6390 <item>
6391 <p><file>debian/*/DEBIAN/symbols</file></p>
6394 During the package build, if the package itself
6395 contains shared libraries with <file>symbols</file>
6396 files, they will be generated in these staging
6397 directories by <prgn>dpkg-gensymbols</prgn>
6398 (see <ref id="providing-symbols">). <file>symbols</file>
6399 files found in the build tree take precedence
6400 over <file>symbols</file> files from other binary
6401 packages.
6402 </p>
6405 These files must exist
6406 before <prgn>dpkg-shlibdeps</prgn> is run or the
6407 dependencies of binaries and libraries from a source
6408 package on other libraries from that same source
6409 package will not be correct. In practice, this means
6410 that <prgn>dpkg-gensymbols</prgn> must be run
6411 before <prgn>dpkg-shlibdeps</prgn> during the package
6412 build.<footnote>
6413 An example may clarify. Suppose the source
6414 package <tt>foo</tt> generates two binary
6415 packages, <tt>libfoo2</tt> and <tt>foo-runtime</tt>.
6416 When building the binary packages, the contents of
6417 the packages are staged in the
6418 directories <file>debian/libfoo2</file>
6419 and <file>debian/foo-runtime</file> respectively.
6420 (<file>debian/tmp</file> could be used instead of
6421 one of these.) Since <tt>libfoo2</tt> provides
6422 the <tt>libfoo</tt> shared library, it will contain
6423 a <tt>symbols</tt> file, which will be installed
6424 in <file>debian/libfoo2/DEBIAN/symbols</file>,
6425 eventually to be included as a control file in that
6426 package. When <prgn>dpkg-shlibdeps</prgn> is run on
6428 executable <file>debian/foo-runtime/usr/bin/foo-prog</file>,
6429 it will examine
6430 the <file>debian/libfoo2/DEBIAN/symbols</file> file
6431 to determine whether <tt>foo-prog</tt>'s library
6432 dependencies are satisfied by any of the libraries
6433 provided by <tt>libfoo2</tt>. Since those binaries
6434 were linked against the just-built shared library as
6435 part of the build process, the <file>symbols</file>
6436 file for the newly-built <tt>libfoo2</tt> must take
6437 precedence over a <file>symbols</file> file for any
6438 other <tt>libfoo2</tt> package already installed on
6439 the system.
6440 </footnote>
6441 </p>
6442 </item>
6444 <item>
6446 <file>/etc/dpkg/symbols/<var>package</var>.symbols.<var>arch</var></file>
6447 and <file>/etc/dpkg/symbols/<var>package</var>.symbols</file>
6448 </p>
6451 Per-system overrides of shared library dependencies.
6452 These files normally do not exist. They are
6453 maintained by the local system administrator and must
6454 not be created by any Debian package.
6455 </p>
6456 </item>
6458 <item>
6459 <p><file>symbols</file> control files for packages
6460 installed on the system</p>
6463 The <file>symbols</file> control files for all the
6464 packages currently installed on the system are
6465 searched last. This will be the most common source of
6466 shared library dependency information. These files
6467 can be read with <tt>dpkg-query
6468 --control-show <var>package</var> symbols</tt>.
6469 </p>
6470 </item>
6471 </list>
6472 </p>
6475 Be aware that if a <file>debian/shlibs.local</file> exists
6476 in the source package, it will override
6477 any <file>symbols</file> files. This is the only case where
6478 a <file>shlibs</file> is used despite <file>symbols</file>
6479 files being present. See <ref id="shlibs-paths">
6480 and <ref id="sharedlibs-shlibdeps"> for more information.
6481 </p>
6482 </sect2>
6484 <sect2 id="symbols">
6485 <heading>The <file>symbols</file> File Format</heading>
6488 The following documents the format of
6489 the <file>symbols</file> control file as included in binary
6490 packages. These files are built from
6491 template <file>symbols</file> files in the source package
6492 by <prgn>dpkg-gensymbols</prgn>. The template files support
6493 a richer syntax that allows <prgn>dpkg-gensymbols</prgn> to
6494 do some of the tedious work involved in
6495 maintaining <file>symbols</file> files, such as handling C++
6496 symbols or optional symbols that may not exist on particular
6497 architectures. When writing <file>symbols</file> files for
6498 a shared library package, refer
6499 to <manref name="dpkg-gensymbols" section="1"> for the
6500 richer syntax.
6501 </p>
6504 A <file>symbols</file> may contain one or more entries, one
6505 for each shared library contained in the package
6506 corresponding to that <file>symbols</file>. Each entry has
6507 the following format:
6508 </p>
6511 <example>
6512 <var>library-soname</var> <var>main-dependency-template</var>
6513 [| <var>alternative-dependency-template</var>]
6514 [...]
6515 [* <var>field-name</var>: <var>field-value</var>]
6516 [...]
6517 <var>symbol</var> <var>minimal-version</var>[ <var>id-of-dependency-template</var> ]
6518 </example>
6519 </p>
6522 To explain this format, we'll use the <tt>zlib1g</tt>
6523 package as an example, which (at the time of writing)
6524 installs the shared
6525 library <file>/usr/lib/libz.so.1.2.3.4</file>. Mandatory
6526 lines will be described first, followed by optional lines.
6527 </p>
6530 <var>library-soname</var> must contain exactly the value of
6531 the ELF <tt>SONAME</tt> attribute of the shared library. In
6532 our example, this is <tt>libz.so.1</tt>.<footnote>
6533 This can be determined by using the command
6534 <example compact="compact">
6535 readelf -d /usr/lib/libz.so.1.2.3.4 | grep SONAME
6536 </example>
6537 </footnote>
6538 </p>
6541 <var>main-dependency-template</var> has the same syntax as a
6542 dependency field in a binary package control file, except
6543 that the string <tt>#MINVER#</tt> is replaced by a version
6544 restriction like <tt>(>= <var>version</var>)</tt> or by
6545 nothing if an unversioned dependency is deemed sufficient.
6546 The version restriction will be based on which symbols from
6547 the shared library are referenced and the version at which
6548 they were introduced (see below). In nearly all
6549 cases, <var>main-dependency-template</var> will
6550 be <tt><var>package</var> #MINVER#</tt>,
6551 where <var>package</var> is the name of the binary package
6552 containing the shared library. This adds a simple,
6553 possibly-versioned dependency on the shared library package.
6554 In some rare cases, such as when multiple packages provide
6555 the same shared library ABI, the dependency template may
6556 need to be more complex.
6557 </p>
6560 In our example, the first line of
6561 the <tt>zlib1g</tt> <file>symbols</file> file would be:
6562 <example compact="compact">
6563 libz.so.1 zlib1g #MINVER#
6564 </example>
6565 </p>
6568 Each public symbol exported by the shared library must have
6569 a corresponding symbol line, indented by one
6570 space. <var>symbol</var> is the exported symbol (which, for
6571 C++, means the mangled symbol) followed by <tt>@</tt> and
6572 the symbol version, or the string <tt>Base</tt> if there is
6573 no symbol version. <var>minimal-version</var> is the most
6574 recent version of the shared library that changed the
6575 behavior of that symbol, whether by adding it, changing its
6576 function signature (the parameters, their types, or the
6577 return type), or changing its behavior in a way that is
6578 visible to a caller.
6579 <var>id-of-dependency-template</var> is an optional
6580 field that references
6581 an <var>alternative-dependency-template</var>; see below for
6582 a full description.
6583 </p>
6586 For example, <tt>libz.so.1</tt> contains the
6587 symbols <tt>compress</tt>
6588 and <tt>compressBound</tt>. <tt>compress</tt> has no symbol
6589 version and last changed its behavior in upstream
6590 version <tt>1:1.1.4</tt>. <tt>compressBound</tt> has the
6591 symbol version <tt>ZLIB_1.2.0</tt>, was introduced in
6592 upstream version <tt>1:1.2.0</tt>, and has not changed its
6593 behavior. Its <file>symbols</file> file therefore contains
6594 the lines:
6595 <example compact="compact">
6596 compress@Base 1:1.1.4
6597 compressBound@ZLIB_1.2.0 1:1.2.0
6598 </example>
6599 Packages using only <tt>compress</tt> would then get a
6600 dependency on <tt>zlib1g (>= 1:1.1.4)</tt>, but packages
6601 using <tt>compressBound</tt> would get a dependency
6602 on <tt>zlib1g (>= 1:1.2.0)</tt>.
6603 </p>
6606 One or more <var>alternative-dependency-template</var> lines
6607 may be provided. These are used in cases where some symbols
6608 in the shared library should use one dependency template
6609 while others should use a different template. The
6610 alternative dependency templates are used only if a symbol
6611 line contains the <var>id-of-dependency-template</var>
6612 field. The first alternative dependency template is
6613 numbered 1, the second 2, and so forth.<footnote>
6614 An example of where this may be needed is with a library
6615 that implements the libGL interface. All GL
6616 implementations provide the same set of base interfaces,
6617 and then may provide some additional interfaces only used
6618 by programs that require that specific GL implementation.
6619 So, for example, libgl1-mesa-glx may use the
6620 following <file>symbols</file> file:
6621 <example>
6622 libGL.so.1 libgl1
6623 | libgl1-mesa-glx #MINVER#
6624 publicGlSymbol@Base 6.3-1
6625 [...]
6626 implementationSpecificSymbol@Base 6.5.2-7 1
6627 [...]
6628 </example>
6629 Binaries or shared libraries using
6630 only <tt>publicGlSymbol</tt> would depend only
6631 on <tt>libgl1</tt> (which may be provided by multiple
6632 packages), but ones
6633 using <tt>implementationSpecificSymbol</tt> would get a
6634 dependency on <tt>libgl1-mesa-glx (>= 6.5.2-7)</tt>
6635 </footnote>
6636 </p>
6639 Finally, the entry for the library may contain one or more
6640 metadata fields. Currently, the only
6641 supported <var>field-name</var>
6642 is <tt>Build-Depends-Package</tt>, whose value lists
6643 the <qref id="sharedlibs-dev">library development
6644 package</qref> on which packages using this shared library
6645 declare a build dependency. If this field is
6646 present, <prgn>dpkg-shlibdeps</prgn> uses it to ensure that
6647 the resulting binary package dependency on the shared
6648 library is at least as strict as the source package
6649 dependency on the shared library development
6650 package.<footnote>
6651 This field should normally not be necessary, since if the
6652 behavior of any symbol has changed, the corresponding
6653 symbol <var>minimal-version</var> should have been
6654 increased. But including it makes the <tt>symbols</tt>
6655 system more robust by tightening the dependency in cases
6656 where the package using the shared library specifically
6657 requires at least a particular version of the shared
6658 library development package for some reason.
6659 </footnote>
6660 For our example, the <tt>zlib1g</tt> <file>symbols</file>
6661 file would contain:
6662 <example compact="compact">
6663 * Build-Depends-Package: zlib1g-dev
6664 </example>
6665 </p>
6668 Also see <manref name="deb-symbols" section="5">.
6669 </p>
6670 </sect2>
6672 <sect2 id="providing-symbols">
6673 <heading>Providing a <file>symbols</file> file</heading>
6676 If your package provides a shared library, you should
6677 arrange to include a <file>symbols</file> control file
6678 following the format described above in that package. You
6679 must include either a <file>symbols</file> control file or
6680 a <file>shlibs</file> control file.
6681 </p>
6684 Normally, this is done by creating a <file>symbols</file> in
6685 the source package
6686 named <file>debian/<var>package</var>.symbols</file>
6687 or <file>debian/symbols</file>, possibly
6688 with <file>.<var>arch</var></file> appended if the symbols
6689 information varies by architecture. This file may use the
6690 extended syntax documented in <manref name="dpkg-gensymbols"
6691 section="1">. Then, call <prgn>dpkg-gensymbols</prgn> as
6692 part of the package build process. It will
6693 create <file>symbols</file> files in the package staging
6694 area based on the binaries and libraries in the package
6695 staging area and the <file>symbols</file> files in the
6696 source package.<footnote>
6697 If you are
6698 using <tt>debhelper</tt>, <prgn>dh_makeshlibs</prgn> will
6699 take care of calling either <prgn>dpkg-gensymbols</prgn>
6700 or generating a <file>shlibs</file> file as appropriate.
6701 </footnote>
6702 </p>
6705 Packages that provide <file>symbols</file> files must keep
6706 them up-to-date to ensure correct dependencies in packages
6707 that use the shared libraries. This means updating
6708 the <file>symbols</file> file whenever a new public symbol
6709 is added, changing the <var>minimal-version</var> field
6710 whenever a symbol changes behavior or signature in a
6711 backward-compatible way (see <ref id="sharedlibs-updates">),
6712 and changing the <var>library-soname</var>
6713 and <var>main-dependency-template</var>, and probably all of
6714 the <var>minimal-version</var> fields, when the library
6715 changes <tt>SONAME</tt>. Removing a public symbol from
6716 the <file>symbols</file> file because it's no longer
6717 provided by the library normally requires changing
6718 the <tt>SONAME</tt> of the library.
6719 See <ref id="sharedlibs-runtime"> for more information
6720 on <tt>SONAME</tt>s.
6721 </p>
6722 </sect2>
6723 </sect1>
6725 <sect1 id="sharedlibs-shlibdeps">
6726 <heading>The <tt>shlibs</tt> system</heading>
6729 The <tt>shlibs</tt> system is a simpler alternative to
6730 the <tt>symbols</tt> system for declaring dependencies for
6731 shared libraries. It may be more appropriate for C++
6732 libraries and other cases where tracking individual symbols is
6733 too difficult. It predated the <tt>symbols</tt> system and is
6734 therefore frequently seen in older packages. It is also
6735 required for udebs, which do not support <tt>symbols</tt>.
6736 </p>
6739 In the following sections, we will first describe where the
6740 various <file>shlibs</file> files are to be found, then how to
6741 use <prgn>dpkg-shlibdeps</prgn>, and finally
6742 the <file>shlibs</file> file format and how to create them.
6743 </p>
6745 <sect2 id="shlibs-paths">
6746 <heading>The <file>shlibs</file> files present on the
6747 system</heading>
6750 There are several places where <tt>shlibs</tt> files are
6751 found. The following list gives them in the order in which
6752 they are read by <prgn>dpkg-shlibdeps</prgn>. (The first
6753 one which gives the required information is used.)
6754 <list>
6755 <item>
6756 <p><file>debian/shlibs.local</file></p>
6759 This lists overrides for this package. This file
6760 should normally not be used, but may be needed
6761 temporarily in unusual situations to work around bugs
6762 in other packages, or in unusual cases where the
6763 normally declared dependency information in the
6764 installed <file>shlibs</file> file for a library
6765 cannot be used. This file overrides information
6766 obtained from any other source.
6767 </p>
6768 </item>
6770 <item>
6771 <p><file>/etc/dpkg/shlibs.override</file></p>
6774 This lists global overrides. This list is normally
6775 empty. It is maintained by the local system
6776 administrator.
6777 </p>
6778 </item>
6780 <item>
6781 <p><file>DEBIAN/shlibs</file> files in the "build
6782 directory"</p>
6785 These files are generated as part of the package build
6786 process and staged for inclusion as control files in
6787 the binary packages being built. They provide details
6788 of any shared libraries included in the same package.
6789 </p>
6790 </item>
6792 <item>
6793 <p><file>shlibs</file> control files for packages
6794 installed on the system</p>
6797 The <file>shlibs</file> control files for all the
6798 packages currently installed on the system. These
6799 files can be read using <tt>dpkg-query
6800 --control-show <var>package</var> shlibs</tt>.
6801 </p>
6802 </item>
6804 <item>
6805 <p><file>/etc/dpkg/shlibs.default</file></p>
6808 This file lists any shared libraries whose packages
6809 have failed to provide correct <file>shlibs</file>
6810 files. It was used when the <file>shlibs</file> setup
6811 was first introduced, but it is now normally empty.
6812 It is maintained by the <tt>dpkg</tt> maintainer.
6813 </p>
6814 </item>
6815 </list>
6816 </p>
6819 If a <file>symbols</file> file for a shared library package
6820 is available, <prgn>dpkg-shlibdeps</prgn> will always use it
6821 in preference to a <file>shlibs</file>, with the exception
6822 of <file>debian/shlibs.local</file>. The latter overrides
6823 any other <file>shlibs</file> or <file>symbols</file> files.
6824 </p>
6825 </sect2>
6827 <sect2 id="shlibs">
6828 <heading>The <file>shlibs</file> File Format</heading>
6831 Each <file>shlibs</file> file has the same format. Lines
6832 beginning with <tt>#</tt> are considered to be comments and
6833 are ignored. Each line is of the form:
6834 <example compact="compact">
6835 [<var>type</var>: ]<var>library-name</var> <var>soname-version</var> <var>dependencies ...</var>
6836 </example>
6837 </p>
6840 We will explain this by reference to the example of the
6841 <tt>zlib1g</tt> package, which (at the time of writing)
6842 installs the shared
6843 library <file>/usr/lib/libz.so.1.2.3.4</file>.
6844 </p>
6847 <var>type</var> is an optional element that indicates the
6848 type of package for which the line is valid. The only type
6849 currently in use is <tt>udeb</tt>. The colon and space
6850 after the type are required.
6851 </p>
6854 <var>library-name</var> is the name of the shared library,
6855 in this case <tt>libz</tt>. (This must match the name part
6856 of the soname, see below.)
6857 </p>
6860 <var>soname-version</var> is the version part of the
6861 ELF <tt>SONAME</tt> attribute of the library, determined the
6862 same way that the <var>soversion</var> component of the
6863 recommended shared library package name is determined.
6864 See <ref id="sharedlibs-runtime"> for the details.
6865 </p>
6868 <var>dependencies</var> has the same syntax as a dependency
6869 field in a binary package control file. It should give
6870 details of which packages are required to satisfy a binary
6871 built against the version of the library contained in the
6872 package. See <ref id="depsyntax"> for details on the
6873 syntax, and <ref id="sharedlibs-updates"> for details on how
6874 to maintain the dependency version constraint.
6875 </p>
6878 In our example, if the last change to the <tt>zlib1g</tt>
6879 package that could change behavior for a client of that
6880 library was in version <tt>1:1.2.3.3.dfsg-1</tt>, then
6881 the <tt>shlibs</tt> entry for this library could say:
6882 <example compact="compact">
6883 libz 1 zlib1g (>= 1:1.2.3.3.dfsg)
6884 </example>
6885 This version restriction must be new enough that any binary
6886 built against the current version of the library will work
6887 with any version of the shared library that satisfies that
6888 dependency.
6889 </p>
6892 As zlib1g also provides a udeb containing the shared
6893 library, there would also be a second line:
6894 <example compact="compact">
6895 udeb: libz 1 zlib1g-udeb (>= 1:1.2.3.3.dfsg)
6896 </example>
6897 </p>
6898 </sect2>
6900 <sect2>
6901 <heading>Providing a <file>shlibs</file> file</heading>
6904 To provide a <file>shlibs</file> file for a shared library
6905 binary package, create a <file>shlibs</file> file following
6906 the format described above and place it in
6907 the <file>DEBIAN</file> directory for that package during
6908 the build. It will then be included as a control file for
6909 that package<footnote>
6910 This is what <prgn>dh_makeshlibs</prgn> in
6911 the <package>debhelper</package> suite does. If your
6912 package also has a udeb that provides a shared
6913 library, <prgn>dh_makeshlibs</prgn> can automatically
6914 generate the <tt>udeb:</tt> lines if you specify the name
6915 of the udeb with the <tt>--add-udeb</tt> option.
6916 </footnote>.
6917 </p>
6920 Since <prgn>dpkg-shlibdeps</prgn> reads
6921 the <file>DEBIAN/shlibs</file> files in all of the binary
6922 packages being built from this source package, all of
6923 the <file>DEBIAN/shlibs</file> files should be installed
6924 before <prgn>dpkg-shlibdeps</prgn> is called on any of the
6925 binary packages.
6926 </p>
6927 </sect2>
6928 </sect1>
6929 </sect>
6930 </chapt>
6933 <chapt id="opersys"><heading>The Operating System</heading>
6935 <sect>
6936 <heading>File system hierarchy</heading>
6939 <sect1 id="fhs">
6940 <heading>File System Structure</heading>
6943 The location of all files and directories must comply with the
6944 Filesystem Hierarchy Standard (FHS), version 2.3, with the
6945 exceptions noted below, and except where doing so would
6946 violate other terms of Debian Policy. The following
6947 exceptions to the FHS apply:
6949 <enumlist>
6950 <item>
6952 The FHS requirement that architecture-independent
6953 application-specific static files be located in
6954 <file>/usr/share</file> is relaxed to a suggestion.
6956 In particular, a subdirectory of <file>/usr/lib</file> may
6957 be used by a package (or a collection of packages) to hold a
6958 mixture of architecture-independent and
6959 architecture-dependent files. However, when a directory is
6960 entirely composed of architecture-independent files, it
6961 should be located in <file>/usr/share</file>.
6962 </p>
6963 </item>
6964 <item>
6966 The optional rules related to user specific
6967 configuration files for applications are stored in
6968 the user's home directory are relaxed. It is
6969 recommended that such files start with the
6970 '<tt>.</tt>' character (a "dot file"), and if an
6971 application needs to create more than one dot file
6972 then the preferred placement is in a subdirectory
6973 with a name starting with a '.' character, (a "dot
6974 directory"). In this case it is recommended the
6975 configuration files not start with the '.'
6976 character.
6977 </p>
6978 </item>
6979 <item>
6981 The requirement for amd64 to use <file>/lib64</file>
6982 for 64 bit binaries is removed.
6983 </p>
6984 </item>
6985 <item>
6987 The requirement for object files, internal binaries, and
6988 libraries, including <file>libc.so.*</file>, to be located
6989 directly under <file>/lib{,32}</file> and
6990 <file>/usr/lib{,32}</file> is amended, permitting files
6991 to instead be installed to
6992 <file>/lib/<var>triplet</var></file> and
6993 <file>/usr/lib/<var>triplet</var></file>, where
6994 <tt><var>triplet</var></tt> is the value returned by
6995 <tt>dpkg-architecture -qDEB_HOST_MULTIARCH</tt> for the
6996 architecture of the package. Packages may <em>not</em>
6997 install files to any <var>triplet</var> path other
6998 than the one matching the architecture of that package;
6999 for instance, an <tt>Architecture: amd64</tt> package
7000 containing 32-bit x86 libraries may not install these
7001 libraries to <file>/usr/lib/i386-linux-gnu</file>.
7002 <footnote>
7003 This is necessary in order to reserve the directories for
7004 use in cross-installation of library packages from other
7005 architectures, as part of <tt>multiarch</tt>.
7006 </footnote>
7007 </p>
7009 The requirement for C and C++ headers files to be
7010 accessible through the search path
7011 <file>/usr/include/</file> is amended, permitting files to
7012 be accessible through the search path
7013 <file>/usr/include/<var>triplet</var></file> where
7014 <tt><var>triplet</var></tt> is as above. <footnote>
7015 This is necessary for architecture-dependent headers
7016 file to coexist in a <tt>multiarch</tt> setup.
7017 </footnote>
7018 </p>
7020 Applications may also use a single subdirectory under
7021 <file>/usr/lib/<var>triplet</var></file>.
7022 </p>
7024 The execution time linker/loader, ld*, must still be made
7025 available in the existing location under /lib or /lib64
7026 since this is part of the ELF ABI for the architecture.
7027 </p>
7028 </item>
7029 <item>
7031 The requirement that
7032 <file>/usr/local/share/man</file> be "synonymous"
7033 with <file>/usr/local/man</file> is relaxed to a
7034 recommendation</p>
7035 </item>
7036 <item>
7038 The requirement that windowmanagers with a single
7039 configuration file call it <file>system.*wmrc</file>
7040 is removed, as is the restriction that the window
7041 manager subdirectory be named identically to the
7042 window manager name itself.
7043 </p>
7044 </item>
7045 <item>
7047 The requirement that boot manager configuration
7048 files live in <file>/etc</file>, or at least are
7049 symlinked there, is relaxed to a recommendation.
7050 </p>
7051 </item>
7052 <item>
7054 The additional directory <file>/run</file> in the root
7055 file system is allowed. <file>/run</file>
7056 replaces <file>/var/run</file>, and the
7057 subdirectory <file>/run/lock</file>
7058 replaces <file>/var/lock</file>, with
7059 the <file>/var</file> directories replaced by symlinks
7060 for backwards compatibility. <file>/run</file>
7061 and <file>/run/lock</file> must follow all of the
7062 requirements in the FHS for <file>/var/run</file>
7063 and <file>/var/lock</file>, respectively, such as file
7064 naming conventions, file format requirements, or the
7065 requirement that files be cleared during the boot
7066 process. Files and directories residing
7067 in <file>/run</file> should be stored on a temporary
7068 file system.
7069 </p>
7071 Packages must not assume the <file>/run</file>
7072 directory exists or is usable without a dependency
7073 on <tt>initscripts (>= 2.88dsf-13.3)</tt> until the
7074 stable release of Debian supports <file>/run</file>.
7075 </p>
7076 </item>
7077 <item>
7079 The <file>/sys</file> directory in the root filesystem is
7080 additionally allowed. <footnote>This directory is used as
7081 mount point to mount virtual filesystems to get access to
7082 kernel information.</footnote>
7083 </p>
7084 </item>
7085 <item>
7087 The <file>/var/www</file> directory is additionally allowed.
7088 </p>
7089 </item>
7090 <item>
7092 The requirement for <file>/usr/local/lib&lt;qual&gt;</file>
7093 to exist if <file>/lib&lt;qual&gt;</file> or
7094 <file>/usr/lib&lt;qual&gt;</file> exists (where
7095 <file>lib&lt;qual&gt;</file> is a variant of
7096 <file>lib</file> such as <file>lib32</file> or
7097 <file>lib64</file>) is removed.
7098 </p>
7099 </item>
7100 <item>
7102 On GNU/Hurd systems, the following additional
7103 directories are allowed in the root
7104 filesystem: <file>/hurd</file>
7105 and <file>/servers</file>.<footnote>
7106 These directories are used to store translators and as
7107 a set of standard names for mount points,
7108 respectively.
7109 </footnote>
7110 </p>
7111 </item>
7112 </enumlist>
7113 </p>
7116 The version of this document referred here can be
7117 found in the <tt>debian-policy</tt> package or on <url
7118 id="http://www.debian.org/doc/packaging-manuals/fhs/"
7119 name="FHS (Debian copy)"> alongside this manual (or, if
7120 you have the <package>debian-policy</package> installed,
7121 you can try <url
7122 id="file:///usr/share/doc/debian-policy/fhs/" name="FHS
7123 (local copy)">). The
7124 latest version, which may be a more recent version, may
7125 be found on
7126 <url id="http://www.pathname.com/fhs/" name="FHS (upstream)">.
7127 Specific questions about following the standard may be
7128 asked on the <tt>debian-devel</tt> mailing list, or
7129 referred to the FHS mailing list (see the
7130 <url id="http://www.pathname.com/fhs/" name="FHS web site"> for
7131 more information).
7132 </p>
7133 </sect1>
7135 <sect1>
7136 <heading>Site-specific programs</heading>
7139 As mandated by the FHS, packages must not place any
7140 files in <file>/usr/local</file>, either by putting them in
7141 the file system archive to be unpacked by <prgn>dpkg</prgn>
7142 or by manipulating them in their maintainer scripts.
7143 </p>
7146 However, the package may create empty directories below
7147 <file>/usr/local</file> so that the system administrator knows
7148 where to place site-specific files. These are not
7149 directories <em>in</em> <file>/usr/local</file>, but are
7150 children of directories in <file>/usr/local</file>. These
7151 directories (<file>/usr/local/*/dir/</file>)
7152 should be removed on package removal if they are
7153 empty.
7154 </p>
7157 Note that this applies only to
7158 directories <em>below</em> <file>/usr/local</file>,
7159 not <em>in</em> <file>/usr/local</file>. Packages must
7160 not create sub-directories in the
7161 directory <file>/usr/local</file> itself, except those
7162 listed in FHS, section 4.5. However, you may create
7163 directories below them as you wish. You must not remove
7164 any of the directories listed in 4.5, even if you created
7165 them.
7166 </p>
7169 Since <file>/usr/local</file> can be mounted read-only from a
7170 remote server, these directories must be created and
7171 removed by the <prgn>postinst</prgn> and <prgn>prerm</prgn>
7172 maintainer scripts and not be included in the
7173 <file>.deb</file> archive. These scripts must not fail if
7174 either of these operations fail.
7175 </p>
7178 For example, the <tt>emacsen-common</tt> package could
7179 contain something like
7180 <example compact="compact">
7181 if [ ! -e /usr/local/share/emacs ]; then
7182 if mkdir /usr/local/share/emacs 2>/dev/null; then
7183 if chown root:staff /usr/local/share/emacs; then
7184 chmod 2775 /usr/local/share/emacs || true
7188 </example>
7189 in its <prgn>postinst</prgn> script, and
7190 <example compact="compact">
7191 rmdir /usr/local/share/emacs/site-lisp 2>/dev/null || true
7192 rmdir /usr/local/share/emacs 2>/dev/null || true
7193 </example>
7194 in the <prgn>prerm</prgn> script. (Note that this form is
7195 used to ensure that if the script is interrupted, the
7196 directory <file>/usr/local/share/emacs</file> will still be
7197 removed.)
7198 </p>
7201 If you do create a directory in <file>/usr/local</file> for
7202 local additions to a package, you should ensure that
7203 settings in <file>/usr/local</file> take precedence over the
7204 equivalents in <file>/usr</file>.
7205 </p>
7208 However, because <file>/usr/local</file> and its contents are
7209 for exclusive use of the local administrator, a package
7210 must not rely on the presence or absence of files or
7211 directories in <file>/usr/local</file> for normal operation.
7212 </p>
7215 The <file>/usr/local</file> directory itself and all the
7216 subdirectories created by the package should (by default) have
7217 permissions 2775 (group-writable and set-group-id) and be
7218 owned by <tt>root:staff</tt>.
7219 </p>
7220 </sect1>
7222 <sect1>
7223 <heading>The system-wide mail directory</heading>
7225 The system-wide mail directory
7226 is <file>/var/mail</file>. This directory is part of the
7227 base system and should not be owned by any particular mail
7228 agents. The use of the old
7229 location <file>/var/spool/mail</file> is deprecated, even
7230 though the spool may still be physically located there.
7231 </p>
7232 </sect1>
7234 <sect1 id="fhs-run">
7235 <heading><file>/run</file> and <file>/run/lock</file></heading>
7238 The directory <file>/run</file> is cleared at boot, normally
7239 by being a mount point for a temporary file system. Packages
7240 therefore must not assume that any files or directories
7241 under <file>/run</file> other than <file>/run/lock</file>
7242 exist unless the package has arranged to create those files or
7243 directories since the last reboot. Normally, this is done by
7244 the package via an init script. See <ref id="writing-init">
7245 for more information.
7246 </p>
7249 Packages must not include files or directories
7250 under <file>/run</file>, or under the
7251 older <file>/var/run</file> and <file>/var/lock</file> paths.
7252 The latter paths will normally be symlinks or other
7253 redirections to <file>/run</file> for backwards compatibility.
7254 </p>
7255 </sect1>
7256 </sect>
7258 <sect>
7259 <heading>Users and groups</heading>
7261 <sect1>
7262 <heading>Introduction</heading>
7264 The Debian system can be configured to use either plain or
7265 shadow passwords.
7266 </p>
7269 Some user ids (UIDs) and group ids (GIDs) are reserved
7270 globally for use by certain packages. Because some
7271 packages need to include files which are owned by these
7272 users or groups, or need the ids compiled into binaries,
7273 these ids must be used on any Debian system only for the
7274 purpose for which they are allocated. This is a serious
7275 restriction, and we should avoid getting in the way of
7276 local administration policies. In particular, many sites
7277 allocate users and/or local system groups starting at 100.
7278 </p>
7281 Apart from this we should have dynamically allocated ids,
7282 which should by default be arranged in some sensible
7283 order, but the behavior should be configurable.
7284 </p>
7287 Packages other than <tt>base-passwd</tt> must not modify
7288 <file>/etc/passwd</file>, <file>/etc/shadow</file>,
7289 <file>/etc/group</file> or <file>/etc/gshadow</file>.
7290 </p>
7291 </sect1>
7293 <sect1>
7294 <heading>UID and GID classes</heading>
7296 The UID and GID numbers are divided into classes as
7297 follows:
7298 <taglist>
7299 <tag>0-99:</tag>
7300 <item>
7302 Globally allocated by the Debian project, the same
7303 on every Debian system. These ids will appear in
7304 the <file>passwd</file> and <file>group</file> files of all
7305 Debian systems, new ids in this range being added
7306 automatically as the <tt>base-passwd</tt> package is
7307 updated.
7308 </p>
7311 Packages which need a single statically allocated
7312 uid or gid should use one of these; their
7313 maintainers should ask the <tt>base-passwd</tt>
7314 maintainer for ids.
7315 </p>
7316 </item>
7318 <tag>100-999:</tag>
7319 <item>
7321 Dynamically allocated system users and groups.
7322 Packages which need a user or group, but can have
7323 this user or group allocated dynamically and
7324 differently on each system, should use <tt>adduser
7325 --system</tt> to create the group and/or user.
7326 <prgn>adduser</prgn> will check for the existence of
7327 the user or group, and if necessary choose an unused
7328 id based on the ranges specified in
7329 <file>adduser.conf</file>.
7330 </p>
7331 </item>
7333 <tag>1000-59999:</tag>
7334 <item>
7336 Dynamically allocated user accounts. By default
7337 <prgn>adduser</prgn> will choose UIDs and GIDs for
7338 user accounts in this range, though
7339 <file>adduser.conf</file> may be used to modify this
7340 behavior.
7341 </p>
7342 </item>
7344 <tag>60000-64999:</tag>
7345 <item>
7347 Globally allocated by the Debian project, but only
7348 created on demand. The ids are allocated centrally
7349 and statically, but the actual accounts are only
7350 created on users' systems on demand.
7351 </p>
7354 These ids are for packages which are obscure or
7355 which require many statically-allocated ids. These
7356 packages should check for and create the accounts in
7357 <file>/etc/passwd</file> or <file>/etc/group</file> (using
7358 <prgn>adduser</prgn> if it has this facility) if
7359 necessary. Packages which are likely to require
7360 further allocations should have a "hole" left after
7361 them in the allocation, to give them room to
7362 grow.
7363 </p>
7364 </item>
7366 <tag>65000-65533:</tag>
7367 <item>
7368 <p>Reserved.</p>
7369 </item>
7371 <tag>65534:</tag>
7372 <item>
7374 User <tt>nobody</tt>. The corresponding gid refers
7375 to the group <tt>nogroup</tt>.
7376 </p>
7377 </item>
7379 <tag>65535:</tag>
7380 <item>
7382 This value <em>must not</em> be used, because it was
7383 the error return sentinel value when <tt>uid_t</tt>
7384 was 16 bits.
7385 </p>
7386 </item>
7388 <tag>65536-4294967293:</tag>
7389 <item>
7391 Dynamically allocated user accounts. By
7392 default <prgn>adduser</prgn> will not allocate UIDs
7393 and GIDs in this range, to ease compatibility with
7394 legacy systems where <tt>uid_t</tt> is still 16
7395 bits.
7396 </p>
7397 </item>
7399 <tag>4294967294:</tag>
7400 <item>
7402 <tt>(uid_t)(-2) == (gid_t)(-2)</tt> <em>must not</em> be
7403 used, because it is used as the anonymous, unauthenticated
7404 user by some NFS implementations.
7405 </p>
7406 </item>
7408 <tag>4294967295:</tag>
7409 <item>
7411 <tt>(uid_t)(-1) == (gid_t)(-1)</tt> <em>must
7412 not</em> be used, because it is the error return
7413 sentinel value.
7414 </p>
7415 </item>
7416 </taglist>
7417 </p>
7418 </sect1>
7419 </sect>
7421 <sect id="sysvinit">
7422 <heading>System run levels and <file>init.d</file> scripts</heading>
7424 <sect1 id="/etc/init.d">
7425 <heading>Introduction</heading>
7428 The <file>/etc/init.d</file> directory contains the scripts
7429 executed by <prgn>init</prgn> at boot time and when the
7430 init state (or "runlevel") is changed (see <manref
7431 name="init" section="8">).
7432 </p>
7435 There are at least two different, yet functionally
7436 equivalent, ways of handling these scripts. For the sake
7437 of simplicity, this document describes only the symbolic
7438 link method. However, it must not be assumed by maintainer
7439 scripts that this method is being used, and any automated
7440 manipulation of the various runlevel behaviors by
7441 maintainer scripts must be performed using
7442 <prgn>update-rc.d</prgn> as described below and not by
7443 manually installing or removing symlinks. For information
7444 on the implementation details of the other method,
7445 implemented in the <tt>file-rc</tt> package, please refer
7446 to the documentation of that package.
7447 </p>
7450 These scripts are referenced by symbolic links in the
7451 <file>/etc/rc<var>n</var>.d</file> directories. When changing
7452 runlevels, <prgn>init</prgn> looks in the directory
7453 <file>/etc/rc<var>n</var>.d</file> for the scripts it should
7454 execute, where <tt><var>n</var></tt> is the runlevel that
7455 is being changed to, or <tt>S</tt> for the boot-up
7456 scripts.
7457 </p>
7460 The names of the links all have the form
7461 <file>S<var>mm</var><var>script</var></file> or
7462 <file>K<var>mm</var><var>script</var></file> where
7463 <var>mm</var> is a two-digit number and <var>script</var>
7464 is the name of the script (this should be the same as the
7465 name of the actual script in <file>/etc/init.d</file>).
7466 </p>
7469 When <prgn>init</prgn> changes runlevel first the targets
7470 of the links whose names start with a <tt>K</tt> are
7471 executed, each with the single argument <tt>stop</tt>,
7472 followed by the scripts prefixed with an <tt>S</tt>, each
7473 with the single argument <tt>start</tt>. (The links are
7474 those in the <file>/etc/rc<var>n</var>.d</file> directory
7475 corresponding to the new runlevel.) The <tt>K</tt> links
7476 are responsible for killing services and the <tt>S</tt>
7477 link for starting services upon entering the runlevel.
7478 </p>
7481 For example, if we are changing from runlevel 2 to
7482 runlevel 3, init will first execute all of the <tt>K</tt>
7483 prefixed scripts it finds in <file>/etc/rc3.d</file>, and then
7484 all of the <tt>S</tt> prefixed scripts in that directory.
7485 The links starting with <tt>K</tt> will cause the
7486 referred-to file to be executed with an argument of
7487 <tt>stop</tt>, and the <tt>S</tt> links with an argument
7488 of <tt>start</tt>.
7489 </p>
7492 The two-digit number <var>mm</var> is used to determine
7493 the order in which to run the scripts: low-numbered links
7494 have their scripts run first. For example, the
7495 <tt>K20</tt> scripts will be executed before the
7496 <tt>K30</tt> scripts. This is used when a certain service
7497 must be started before another. For example, the name
7498 server <prgn>bind</prgn> might need to be started before
7499 the news server <prgn>inn</prgn> so that <prgn>inn</prgn>
7500 can set up its access lists. In this case, the script
7501 that starts <prgn>bind</prgn> would have a lower number
7502 than the script that starts <prgn>inn</prgn> so that it
7503 runs first:
7504 <example compact="compact">
7505 /etc/rc2.d/S17bind
7506 /etc/rc2.d/S70inn
7507 </example>
7508 </p>
7511 The two runlevels 0 (halt) and 6 (reboot) are slightly
7512 different. In these runlevels, the links with an
7513 <tt>S</tt> prefix are still called after those with a
7514 <tt>K</tt> prefix, but they too are called with the single
7515 argument <tt>stop</tt>.
7516 </p>
7517 </sect1>
7519 <sect1 id="writing-init">
7520 <heading>Writing the scripts</heading>
7523 Packages that include daemons for system services should
7524 place scripts in <file>/etc/init.d</file> to start or stop
7525 services at boot time or during a change of runlevel.
7526 These scripts should be named
7527 <file>/etc/init.d/<var>package</var></file>, and they should
7528 accept one argument, saying what to do:
7530 <taglist>
7531 <tag><tt>start</tt></tag>
7532 <item>start the service,</item>
7534 <tag><tt>stop</tt></tag>
7535 <item>stop the service,</item>
7537 <tag><tt>restart</tt></tag>
7538 <item>stop and restart the service if it's already running,
7539 otherwise start the service</item>
7541 <tag><tt>reload</tt></tag>
7542 <item><p>cause the configuration of the service to be
7543 reloaded without actually stopping and restarting
7544 the service,</item>
7546 <tag><tt>force-reload</tt></tag>
7547 <item>cause the configuration to be reloaded if the
7548 service supports this, otherwise restart the
7549 service.</item>
7550 </taglist>
7552 The <tt>start</tt>, <tt>stop</tt>, <tt>restart</tt>, and
7553 <tt>force-reload</tt> options should be supported by all
7554 scripts in <file>/etc/init.d</file>, the <tt>reload</tt>
7555 option is optional.
7556 </p>
7559 The <file>init.d</file> scripts must ensure that they will
7560 behave sensibly (i.e., returning success and not starting
7561 multiple copies of a service) if invoked with <tt>start</tt>
7562 when the service is already running, or with <tt>stop</tt>
7563 when it isn't, and that they don't kill unfortunately-named
7564 user processes. The best way to achieve this is usually to
7565 use <prgn>start-stop-daemon</prgn> with the <tt>--oknodo</tt>
7566 option.
7567 </p>
7570 Be careful of using <tt>set -e</tt> in <file>init.d</file>
7571 scripts. Writing correct <file>init.d</file> scripts requires
7572 accepting various error exit statuses when daemons are already
7573 running or already stopped without aborting
7574 the <file>init.d</file> script, and common <file>init.d</file>
7575 function libraries are not safe to call with <tt>set -e</tt>
7576 in effect<footnote>
7577 <tt>/lib/lsb/init-functions</tt>, which assists in writing
7578 LSB-compliant init scripts, may fail if <tt>set -e</tt> is
7579 in effect and echoing status messages to the console fails,
7580 for example.
7581 </footnote>. For <tt>init.d</tt> scripts, it's often easier
7582 to not use <tt>set -e</tt> and instead check the result of
7583 each command separately.
7584 </p>
7587 If a service reloads its configuration automatically (as
7588 in the case of <prgn>cron</prgn>, for example), the
7589 <tt>reload</tt> option of the <file>init.d</file> script
7590 should behave as if the configuration has been reloaded
7591 successfully.
7592 </p>
7595 The <file>/etc/init.d</file> scripts must be treated as
7596 configuration files, either (if they are present in the
7597 package, that is, in the .deb file) by marking them as
7598 <tt>conffile</tt>s, or, (if they do not exist in the .deb)
7599 by managing them correctly in the maintainer scripts (see
7600 <ref id="config-files">). This is important since we want
7601 to give the local system administrator the chance to adapt
7602 the scripts to the local system, e.g., to disable a
7603 service without de-installing the package, or to specify
7604 some special command line options when starting a service,
7605 while making sure their changes aren't lost during the next
7606 package upgrade.
7607 </p>
7610 These scripts should not fail obscurely when the
7611 configuration files remain but the package has been
7612 removed, as configuration files remain on the system after
7613 the package has been removed. Only when <prgn>dpkg</prgn>
7614 is executed with the <tt>--purge</tt> option will
7615 configuration files be removed. In particular, as the
7616 <file>/etc/init.d/<var>package</var></file> script itself is
7617 usually a <tt>conffile</tt>, it will remain on the system
7618 if the package is removed but not purged. Therefore, you
7619 should include a <tt>test</tt> statement at the top of the
7620 script, like this:
7621 <example compact="compact">
7622 test -f <var>program-executed-later-in-script</var> || exit 0
7623 </example>
7624 </p>
7627 Often there are some variables in the <file>init.d</file>
7628 scripts whose values control the behavior of the scripts,
7629 and which a system administrator is likely to want to
7630 change. As the scripts themselves are frequently
7631 <tt>conffile</tt>s, modifying them requires that the
7632 administrator merge in their changes each time the package
7633 is upgraded and the <tt>conffile</tt> changes. To ease
7634 the burden on the system administrator, such configurable
7635 values should not be placed directly in the script.
7636 Instead, they should be placed in a file in
7637 <file>/etc/default</file>, which typically will have the same
7638 base name as the <file>init.d</file> script. This extra file
7639 should be sourced by the script when the script runs. It
7640 must contain only variable settings and comments in SUSv3
7641 <prgn>sh</prgn> format. It may either be a
7642 <tt>conffile</tt> or a configuration file maintained by
7643 the package maintainer scripts. See <ref id="config-files">
7644 for more details.
7645 </p>
7648 To ensure that vital configurable values are always
7649 available, the <file>init.d</file> script should set default
7650 values for each of the shell variables it uses, either
7651 before sourcing the <file>/etc/default/</file> file or
7652 afterwards using something like the <tt>:
7653 ${VAR:=default}</tt> syntax. Also, the <file>init.d</file>
7654 script must behave sensibly and not fail if the
7655 <file>/etc/default</file> file is deleted.
7656 </p>
7659 Files and directories under <file>/run</file>, including ones
7660 referred to via the compatibility paths <file>/var/run</file>
7661 and <file>/var/lock</file>, are normally stored on a temporary
7662 filesystem and are normally not persistent across a reboot.
7663 The <file>init.d</file> scripts must handle this correctly.
7664 This will typically mean creating any required subdirectories
7665 dynamically when the <file>init.d</file> script is run.
7666 See <ref id="fhs-run"> for more information.
7667 </p>
7668 </sect1>
7670 <sect1>
7671 <heading>Interfacing with the initscript system</heading>
7674 Maintainers should use the abstraction layer provided by
7675 the <prgn>update-rc.d</prgn> and <prgn>invoke-rc.d</prgn>
7676 programs to deal with initscripts in their packages'
7677 scripts such as <prgn>postinst</prgn>, <prgn>prerm</prgn>
7678 and <prgn>postrm</prgn>.
7679 </p>
7682 Directly managing the /etc/rc?.d links and directly
7683 invoking the <file>/etc/init.d/</file> initscripts should
7684 be done only by packages providing the initscript
7685 subsystem (such as <prgn>sysv-rc</prgn> and
7686 <prgn>file-rc</prgn>).
7687 </p>
7689 <sect2>
7690 <heading>Managing the links</heading>
7693 The program <prgn>update-rc.d</prgn> is provided for
7694 package maintainers to arrange for the proper creation and
7695 removal of <file>/etc/rc<var>n</var>.d</file> symbolic links,
7696 or their functional equivalent if another method is being
7697 used. This may be used by maintainers in their packages'
7698 <prgn>postinst</prgn> and <prgn>postrm</prgn> scripts.
7699 </p>
7702 You must not include any <file>/etc/rc<var>n</var>.d</file>
7703 symbolic links in the actual archive or manually create or
7704 remove the symbolic links in maintainer scripts; you must
7705 use the <prgn>update-rc.d</prgn> program instead. (The
7706 former will fail if an alternative method of maintaining
7707 runlevel information is being used.) You must not include
7708 the <file>/etc/rc<var>n</var>.d</file> directories themselves
7709 in the archive either. (Only the <tt>sysvinit</tt>
7710 package may do so.)
7711 </p>
7714 By default <prgn>update-rc.d</prgn> will start services in
7715 each of the multi-user state runlevels (2, 3, 4, and 5)
7716 and stop them in the halt runlevel (0), the single-user
7717 runlevel (1) and the reboot runlevel (6). The system
7718 administrator will have the opportunity to customize
7719 runlevels by simply adding, moving, or removing the
7720 symbolic links in <file>/etc/rc<var>n</var>.d</file> if
7721 symbolic links are being used, or by modifying
7722 <file>/etc/runlevel.conf</file> if the <tt>file-rc</tt> method
7723 is being used.
7724 </p>
7727 To get the default behavior for your package, put in your
7728 <prgn>postinst</prgn> script
7729 <example compact="compact">
7730 update-rc.d <var>package</var> defaults
7731 </example>
7732 and in your <prgn>postrm</prgn>
7733 <example compact="compact">
7734 if [ "$1" = purge ]; then
7735 update-rc.d <var>package</var> remove
7737 </example>. Note that if your package changes runlevels
7738 or priority, you may have to remove and recreate the links,
7739 since otherwise the old links may persist. Refer to the
7740 documentation of <prgn>update-rc.d</prgn>.
7741 </p>
7744 This will use a default sequence number of 20. If it does
7745 not matter when or in which order the <file>init.d</file>
7746 script is run, use this default. If it does, then you
7747 should talk to the maintainer of the <prgn>sysvinit</prgn>
7748 package or post to <tt>debian-devel</tt>, and they will
7749 help you choose a number.
7750 </p>
7753 For more information about using <tt>update-rc.d</tt>,
7754 please consult its man page <manref name="update-rc.d"
7755 section="8">.
7756 </p>
7757 </sect2>
7759 <sect2>
7760 <heading>Running initscripts</heading>
7762 The program <prgn>invoke-rc.d</prgn> is provided to make
7763 it easier for package maintainers to properly invoke an
7764 initscript, obeying runlevel and other locally-defined
7765 constraints that might limit a package's right to start,
7766 stop and otherwise manage services. This program may be
7767 used by maintainers in their packages' scripts.
7768 </p>
7771 The package maintainer scripts must use
7772 <prgn>invoke-rc.d</prgn> to invoke the
7773 <file>/etc/init.d/*</file> initscripts, instead of
7774 calling them directly.
7775 </p>
7778 By default, <prgn>invoke-rc.d</prgn> will pass any
7779 action requests (start, stop, reload, restart...) to the
7780 <file>/etc/init.d</file> script, filtering out requests
7781 to start or restart a service out of its intended
7782 runlevels.
7783 </p>
7786 Most packages will simply need to change:
7787 <example compact="compact">/etc/init.d/&lt;package&gt;
7788 &lt;action&gt;</example> in their <prgn>postinst</prgn>
7789 and <prgn>prerm</prgn> scripts to:
7790 <example compact="compact">
7791 if which invoke-rc.d >/dev/null 2>&1; then
7792 invoke-rc.d <var>package</var> &lt;action&gt;
7793 else
7794 /etc/init.d/<var>package</var> &lt;action&gt;
7796 </example>
7797 </p>
7800 A package should register its initscript services using
7801 <prgn>update-rc.d</prgn> before it tries to invoke them
7802 using <prgn>invoke-rc.d</prgn>. Invocation of
7803 unregistered services may fail.
7804 </p>
7807 For more information about using
7808 <prgn>invoke-rc.d</prgn>, please consult its man page
7809 <manref name="invoke-rc.d" section="8">.
7810 </p>
7811 </sect2>
7812 </sect1>
7814 <sect1>
7815 <heading>Boot-time initialization</heading>
7818 There used to be another directory, <file>/etc/rc.boot</file>,
7819 which contained scripts which were run once per machine
7820 boot. This has been deprecated in favour of links from
7821 <file>/etc/rcS.d</file> to files in <file>/etc/init.d</file> as
7822 described in <ref id="/etc/init.d">. Packages must not
7823 place files in <file>/etc/rc.boot</file>.
7824 </p>
7825 </sect1>
7827 <sect1>
7828 <heading>Example</heading>
7831 An example on which you can base your
7832 <file>/etc/init.d</file> scripts is found in
7833 <file>/etc/init.d/skeleton</file>.
7834 </p>
7836 </sect1>
7837 </sect>
7839 <sect>
7840 <heading>Console messages from <file>init.d</file> scripts</heading>
7843 This section describes the formats to be used for messages
7844 written to standard output by the <file>/etc/init.d</file>
7845 scripts. The intent is to improve the consistency of
7846 Debian's startup and shutdown look and feel. For this
7847 reason, please look very carefully at the details. We want
7848 the messages to have the same format in terms of wording,
7849 spaces, punctuation and case of letters.
7850 </p>
7853 Here is a list of overall rules that should be used for
7854 messages generated by <file>/etc/init.d</file> scripts.
7855 </p>
7858 <list>
7859 <item>
7860 The message should fit in one line (fewer than 80
7861 characters), start with a capital letter and end with
7862 a period (<tt>.</tt>) and line feed (<tt>"\n"</tt>).
7863 </item>
7865 <item>
7866 If the script is performing some time consuming task in
7867 the background (not merely starting or stopping a
7868 program, for instance), an ellipsis (three dots:
7869 <tt>...</tt>) should be output to the screen, with no
7870 leading or tailing whitespace or line feeds.
7871 </item>
7873 <item>
7874 The messages should appear as if the computer is telling
7875 the user what it is doing (politely :-), but should not
7876 mention "it" directly. For example, instead of:
7877 <example compact="compact">
7878 I'm starting network daemons: nfsd mountd.
7879 </example>
7880 the message should say
7881 <example compact="compact">
7882 Starting network daemons: nfsd mountd.
7883 </example>
7884 </item>
7885 </list>
7886 </p>
7889 <tt>init.d</tt> script should use the following standard
7890 message formats for the situations enumerated below.
7891 </p>
7894 <list>
7895 <item>
7896 <p>When daemons are started</p>
7899 If the script starts one or more daemons, the output
7900 should look like this (a single line, no leading
7901 spaces):
7902 <example compact="compact">
7903 Starting <var>description</var>: <var>daemon-1</var> ... <var>daemon-n</var>.
7904 </example>
7905 The <var>description</var> should describe the
7906 subsystem the daemon or set of daemons are part of,
7907 while <var>daemon-1</var> up to <var>daemon-n</var>
7908 denote each daemon's name (typically the file name of
7909 the program).
7910 </p>
7913 For example, the output of <file>/etc/init.d/lpd</file>
7914 would look like:
7915 <example compact="compact">
7916 Starting printer spooler: lpd.
7917 </example>
7918 </p>
7921 This can be achieved by saying
7922 <example compact="compact">
7923 echo -n "Starting printer spooler: lpd"
7924 start-stop-daemon --start --quiet --exec /usr/sbin/lpd
7925 echo "."
7926 </example>
7927 in the script. If there are more than one daemon to
7928 start, the output should look like this:
7929 <example compact="compact">
7930 echo -n "Starting remote file system services:"
7931 echo -n " nfsd"; start-stop-daemon --start --quiet nfsd
7932 echo -n " mountd"; start-stop-daemon --start --quiet mountd
7933 echo -n " ugidd"; start-stop-daemon --start --quiet ugidd
7934 echo "."
7935 </example>
7936 This makes it possible for the user to see what is
7937 happening and when the final daemon has been started.
7938 Care should be taken in the placement of white spaces:
7939 in the example above the system administrators can
7940 easily comment out a line if they don't want to start
7941 a specific daemon, while the displayed message still
7942 looks good.
7943 </p>
7944 </item>
7946 <item>
7947 <p>When a system parameter is being set</p>
7950 If you have to set up different system parameters
7951 during the system boot, you should use this format:
7952 <example compact="compact">
7953 Setting <var>parameter</var> to "<var>value</var>".
7954 </example>
7955 </p>
7958 You can use a statement such as the following to get
7959 the quotes right:
7960 <example compact="compact">
7961 echo "Setting DNS domainname to \"$domainname\"."
7962 </example>
7963 </p>
7966 Note that the same symbol (<tt>"</tt>) <!-- " --> is used
7967 for the left and right quotation marks. A grave accent
7968 (<tt>`</tt>) is not a quote character; neither is an
7969 apostrophe (<tt>'</tt>).
7970 </p>
7971 </item>
7973 <item>
7974 <p>When a daemon is stopped or restarted</p>
7977 When you stop or restart a daemon, you should issue a
7978 message identical to the startup message, except that
7979 <tt>Starting</tt> is replaced with <tt>Stopping</tt>
7980 or <tt>Restarting</tt> respectively.
7981 </p>
7984 For example, stopping the printer daemon will look like
7985 this:
7986 <example compact="compact">
7987 Stopping printer spooler: lpd.
7988 </example>
7989 </p>
7990 </item>
7992 <item>
7993 <p>When something is executed</p>
7996 There are several examples where you have to run a
7997 program at system startup or shutdown to perform a
7998 specific task, for example, setting the system's clock
7999 using <prgn>netdate</prgn> or killing all processes
8000 when the system shuts down. Your message should look
8001 like this:
8002 <example compact="compact">
8003 Doing something very useful...done.
8004 </example>
8005 You should print the <tt>done.</tt> immediately after
8006 the job has been completed, so that the user is
8007 informed why they have to wait. You can get this
8008 behavior by saying
8009 <example compact="compact">
8010 echo -n "Doing something very useful..."
8011 do_something
8012 echo "done."
8013 </example>
8014 in your script.
8015 </p>
8016 </item>
8018 <item>
8019 <p>When the configuration is reloaded</p>
8022 When a daemon is forced to reload its configuration
8023 files you should use the following format:
8024 <example compact="compact">
8025 Reloading <var>description</var> configuration...done.
8026 </example>
8027 where <var>description</var> is the same as in the
8028 daemon starting message.
8029 </p>
8030 </item>
8031 </list>
8032 </p>
8033 </sect>
8035 <sect id="cron-jobs">
8036 <heading>Cron jobs</heading>
8039 Packages must not modify the configuration file
8040 <file>/etc/crontab</file>, and they must not modify the files in
8041 <file>/var/spool/cron/crontabs</file>.
8042 </p>
8045 If a package wants to install a job that has to be executed via
8046 cron, it should place a file named as specified
8047 in <ref id="cron-files"> into one or more of the following
8048 directories:
8049 <example compact="compact">
8050 /etc/cron.hourly
8051 /etc/cron.daily
8052 /etc/cron.weekly
8053 /etc/cron.monthly
8054 </example>
8055 As these directory names imply, the files within them are
8056 executed on an hourly, daily, weekly, or monthly basis,
8057 respectively. The exact times are listed in
8058 <file>/etc/crontab</file>.
8059 </p>
8062 All files installed in any of these directories must be
8063 scripts (e.g., shell scripts or Perl scripts) so that they
8064 can easily be modified by the local system administrator.
8065 In addition, they must be treated as configuration files.
8066 </p>
8069 If a certain job has to be executed at some other frequency or
8070 at a specific time, the package should install a file in
8071 <file>/etc/cron.d</file> with a name as specified
8072 in <ref id="cron-files">. This file uses the same syntax
8073 as <file>/etc/crontab</file> and is processed
8074 by <prgn>cron</prgn> automatically. The file must also be
8075 treated as a configuration file. (Note that entries in the
8076 <file>/etc/cron.d</file> directory are not handled by
8077 <prgn>anacron</prgn>. Thus, you should only use this
8078 directory for jobs which may be skipped if the system is not
8079 running.)
8080 </p>
8083 Unlike <file>crontab</file> files described in the IEEE Std
8084 1003.1-2008 (POSIX.1) available from
8085 <url id="http://www.opengroup.org/onlinepubs/9699919799/"
8086 name="The Open Group">, the files in
8087 <file>/etc/cron.d</file> and the file
8088 <file>/etc/crontab</file> have seven fields; namely:
8089 <enumlist>
8090 <item>Minute [0,59]</item>
8091 <item>Hour [0,23]</item>
8092 <item>Day of the month [1,31]</item>
8093 <item>Month of the year [1,12]</item>
8094 <item>Day of the week ([0,6] with 0=Sunday)</item>
8095 <item>Username</item>
8096 <item>Command to be run</item>
8097 </enumlist>
8098 Ranges of numbers are allowed. Ranges are two numbers
8099 separated with a hyphen. The specified range is inclusive.
8100 Lists are allowed. A list is a set of numbers (or ranges)
8101 separated by commas. Step values can be used in conjunction
8102 with ranges.
8103 </p>
8106 The scripts or <tt>crontab</tt> entries in these directories should
8107 check if all necessary programs are installed before they
8108 try to execute them. Otherwise, problems will arise when a
8109 package was removed but not purged since configuration files
8110 are kept on the system in this situation.
8111 </p>
8114 Any <tt>cron</tt> daemon must provide
8115 <file>/usr/bin/crontab</file> and support normal
8116 <tt>crontab</tt> entries as specified in POSIX. The daemon
8117 must also support names for days and months, ranges, and
8118 step values. It has to support <file>/etc/crontab</file>,
8119 and correctly execute the scripts in
8120 <file>/etc/cron.d</file>. The daemon must also correctly
8121 execute scripts in
8122 <file>/etc/cron.{hourly,daily,weekly,monthly}</file>.
8123 </p>
8125 <sect1 id="cron-files">
8126 <heading>Cron job file names</heading>
8129 The file name of a cron job file should normally match the
8130 name of the package from which it comes.
8131 </p>
8134 If a package supplies multiple cron job files files in the
8135 same directory, the file names should all start with the name
8136 of the package (possibly modified as described below) followed
8137 by a hyphen (<tt>-</tt>) and a suitable suffix.
8138 </p>
8141 A cron job file name must not include any period or plus
8142 characters (<tt>.</tt> or <tt>+</tt>) characters as this will
8143 cause cron to ignore the file. Underscores (<tt>_</tt>)
8144 should be used instead of <tt>.</tt> and <tt>+</tt>
8145 characters.
8146 </p>
8147 </sect1>
8148 </sect>
8150 <sect id="menus">
8151 <heading>Menus</heading>
8154 Packages shipping applications that comply with minimal requirements
8155 described below for integration with desktop environments should
8156 register these applications in the desktop menu, following the
8157 <em>FreeDesktop</em> standard, using text files called
8158 <em>desktop entries</em>. Their format is described in the
8159 <em>Desktop Entry Specification</em> at
8160 <url id="http://standards.freedesktop.org/desktop-entry-spec/latest/">
8161 and complementary information can be found in the
8162 <em>Desktop Menu Specification</em> at
8163 <url id="http://standards.freedesktop.org/menu-spec/latest/">.
8164 </p>
8167 The desktop entry files are installed by the packages in the
8168 directory <file>/usr/share/applications</file> and the FreeDesktop
8169 menus are refreshed using <em>dpkg triggers</em>. It is therefore
8170 not necessary to depend on packages providing FreeDesktop menu
8171 systems.
8172 </p>
8175 Entries displayed in the FreeDesktop menu should conform to the
8176 following minima for relevance and visual integration.
8178 <list>
8179 <item>
8180 Unless hidden by default, the desktop entry must point to a PNG
8181 or SVG icon with a transparent background, providing at least
8182 the 22&times;22 size, and preferably up to 64&times;64. The icon
8183 should be neutral enough to integrate well with the default icon
8184 themes. It is encouraged to ship the icon in the default
8185 <em>hicolor</em> icon theme directories, or to use an existing
8186 icon from the <em>hicolor</em> theme.
8187 </item>
8189 <item>
8190 If the menu entry is not useful in the general case as a
8191 standalone application, the desktop entry should set the
8192 <tt>NoDisplay</tt> key to <var>true</var>, so that it can be
8193 configured to be displayed only by those who need it.
8194 </item>
8196 <item>
8197 In doubt, the package maintainer should coordinate with the
8198 maintainers of menu implementations through the
8199 <em>debian-desktop</em> mailing list in order to avoid problems
8200 with categories or bad interactions with other icons. Especially
8201 for packages which are part of installation tasks, the contents
8202 of the <tt>NotShowIn</tt>/<tt>OnlyShowIn</tt> keys should be
8203 validated by the maintainers of the relevant environments.
8204 </item>
8205 </list>
8206 </p>
8209 Since the FreeDesktop menu is a cross-distribution standard, the
8210 desktop entries written for Debian should be forwarded upstream,
8211 where they will benefit to other users and are more likely to
8212 receive extra contributions such as translations.
8213 </p>
8216 Packages can, to be compatible with Debian additions to some window
8217 managers that do not support the FreeDesktop standard, also provide a
8218 <em>Debian menu</em> file, following the <em>Debian menu policy</em>,
8219 which can be found in the <tt>menu-policy</tt> files in the
8220 <tt>debian-policy</tt> package. It is also available from the Debian
8221 web mirrors at <tt><url name="/doc/packaging-manuals/menu-policy/"
8222 id="http://www.debian.org/doc/packaging-manuals/menu-policy/"></tt>.
8223 </p>
8224 </sect>
8226 <sect id="mime">
8227 <heading>Multimedia handlers</heading>
8230 Media types (formerly known as MIME types, Multipurpose Internet Mail
8231 Extensions, RFCs 2045-2049) is a mechanism for encoding files and
8232 data streams and providing meta-information about them, in particular
8233 their type and format (e.g. <tt>image/png</tt>, <tt>text/html</tt>,
8234 <tt>audio/ogg</tt>).
8235 </p>
8238 Registration of media type handlers allows programs like mail
8239 user agents and web browsers to invoke these handlers to
8240 view, edit or display media types they don't support directly.
8241 </p>
8244 There are two overlapping systems to associate media types to programs
8245 which can handle them. The <em>mailcap</em> system is found on a
8246 large number of Unix systems. The <em>FreeDesktop</em> system is
8247 aimed at Desktop environments. In Debian, FreeDesktop entries are
8248 automatically translated in mailcap entries, therefore packages
8249 already using desktop entries should not use the mailcap system
8250 directly.
8251 </p>
8253 <sect1 id="media-types-freedesktop">
8254 <heading>Registration of media type handlers with desktop entries</heading>
8257 Packages shipping an application able to view, edit or point to
8258 files of a given media type, or open links with a given URI scheme,
8259 should list it in the <tt>MimeType</tt> key of the application's
8260 <qref id="menus">desktop entry</qref>. For URI schemes,
8261 the relevant MIME types are <tt>x-scheme-handler/*</tt> (e.g.
8262 <tt>x-scheme-handler/https</tt>).
8263 </p>
8264 </sect1>
8266 <sect1 id="mailcap">
8267 <heading>Registration of media type handlers with mailcap entries</heading>
8270 Packages that are not using desktop entries for registration should
8271 install a file in <manref name="mailcap" section="5"> format (RFC
8272 1524) in the directory <file>/usr/lib/mime/packages/</file>. The
8273 file name should be the binary package's name.
8274 </p>
8277 The <package>mime-support</package> package provides the
8278 <prgn>update-mime</prgn> program, which integrates these
8279 registrations in the <file>/etc/mailcap</file> file, using dpkg
8280 triggers<footnote>
8281 Creating, modifying or removing a file in
8282 <file>/usr/lib/mime/packages/</file> using maintainer scripts will
8283 not activate the trigger. In that case, it can be done by calling
8284 <tt>dpkg-trigger --no-await /usr/lib/mime/packages</tt> from
8285 the maintainer script after creating, modifying, or removing
8286 the file.
8287 </footnote>.
8290 Packages installing desktop entries should not install mailcap
8291 entries for the same program, because the
8292 <package>mime-support</package> package already reads desktop
8293 entries.
8294 </p>
8297 Packages using these facilities <em>should not</em> depend on,
8298 recommend, or suggest <prgn>mime-support</prgn>.
8299 </p>
8300 </sect1>
8302 <sect1 id="file-media-type">
8303 <heading>Providing media types to files</heading>
8306 The media type of a file is discovered by inspecting the file's
8307 extension or its <manref name="magic" section="5"> pattern, and
8308 interrogating a database associating them with media types.
8309 </p>
8312 To support new associations between media types and files, their
8313 characteristic file extensions and magic patterns should be
8314 registered to the IANA (Internet Assigned Numbers Authority). See
8315 <url id="http://www.iana.org/assignments/media-types"> and RFC 6838
8316 for details. This information will then propagate to the systems
8317 discovering file media types in Debian, provided by the
8318 <package>shared-mime-info</package>,
8319 <package>mime-support</package> and <package>file</package>
8320 packages. If registration and propagation can not be waited for,
8321 support can be asked to the maintainers of the packages mentioned
8322 above.
8323 </p>
8326 For files that are produced and read by a single application, it
8327 is also possible to declare this association to the
8328 <em>Shared MIME Info</em> system by installing in the directory
8329 <file>/usr/share/mime/packages</file> a file in the XML format
8330 specified at <url id="http://standards.freedesktop.org/shared-mime-info-spec/latest/">.
8331 </p>
8332 </sect1>
8333 </sect>
8335 <sect>
8336 <heading>Keyboard configuration</heading>
8339 To achieve a consistent keyboard configuration so that all
8340 applications interpret a keyboard event the same way, all
8341 programs in the Debian distribution must be configured to
8342 comply with the following guidelines.
8343 </p>
8346 The following keys must have the specified interpretations:
8348 <taglist>
8349 <tag><tt>&lt;--</tt></tag>
8350 <item>delete the character to the left of the cursor</item>
8352 <tag><tt>Delete</tt></tag>
8353 <item>delete the character to the right of the cursor</item>
8355 <tag><tt>Control+H</tt></tag>
8356 <item>emacs: the help prefix</item>
8357 </taglist>
8359 The interpretation of any keyboard events should be
8360 independent of the terminal that is used, be it a virtual
8361 console, an X terminal emulator, an rlogin/telnet session,
8362 etc.
8363 </p>
8366 The following list explains how the different programs
8367 should be set up to achieve this:
8368 </p>
8371 <list>
8372 <item>
8373 <tt>&lt;--</tt> generates <tt>KB_BackSpace</tt> in X.
8374 </item>
8376 <item>
8377 <tt>Delete</tt> generates <tt>KB_Delete</tt> in X.
8378 </item>
8380 <item>
8381 X translations are set up to make
8382 <tt>KB_Backspace</tt> generate ASCII DEL, and to make
8383 <tt>KB_Delete</tt> generate <tt>ESC [ 3 ~</tt> (this
8384 is the vt220 escape code for the "delete character"
8385 key). This must be done by loading the X resources
8386 using <prgn>xrdb</prgn> on all local X displays, not
8387 using the application defaults, so that the
8388 translation resources used correspond to the
8389 <prgn>xmodmap</prgn> settings.
8390 </item>
8392 <item>
8393 The Linux console is configured to make
8394 <tt>&lt;--</tt> generate DEL, and <tt>Delete</tt>
8395 generate <tt>ESC [ 3 ~</tt>.
8396 </item>
8398 <item>
8399 X applications are configured so that <tt>&lt;</tt>
8400 deletes left, and <tt>Delete</tt> deletes right. Motif
8401 applications already work like this.
8402 </item>
8404 <item>
8405 Terminals should have <tt>stty erase ^?</tt> .
8406 </item>
8408 <item>
8409 The <tt>xterm</tt> terminfo entry should have <tt>ESC
8410 [ 3 ~</tt> for <tt>kdch1</tt>, just as for
8411 <tt>TERM=linux</tt> and <tt>TERM=vt220</tt>.
8412 </item>
8414 <item>
8415 Emacs is programmed to map <tt>KB_Backspace</tt> or
8416 the <tt>stty erase</tt> character to
8417 <tt>delete-backward-char</tt>, and <tt>KB_Delete</tt>
8418 or <tt>kdch1</tt> to <tt>delete-forward-char</tt>, and
8419 <tt>^H</tt> to <tt>help</tt> as always.
8420 </item>
8422 <item>
8423 Other applications use the <tt>stty erase</tt>
8424 character and <tt>kdch1</tt> for the two delete keys,
8425 with ASCII DEL being "delete previous character" and
8426 <tt>kdch1</tt> being "delete character under
8427 cursor".
8428 </item>
8430 </list>
8431 </p>
8434 This will solve the problem except for the following
8435 cases:
8436 </p>
8439 <list>
8440 <item>
8441 Some terminals have a <tt>&lt;--</tt> key that cannot
8442 be made to produce anything except <tt>^H</tt>. On
8443 these terminals Emacs help will be unavailable on
8444 <tt>^H</tt> (assuming that the <tt>stty erase</tt>
8445 character takes precedence in Emacs, and has been set
8446 correctly). <tt>M-x help</tt> or <tt>F1</tt> (if
8447 available) can be used instead.
8448 </item>
8450 <item>
8451 Some operating systems use <tt>^H</tt> for <tt>stty
8452 erase</tt>. However, modern telnet versions and all
8453 rlogin versions propagate <tt>stty</tt> settings, and
8454 almost all UNIX versions honour <tt>stty erase</tt>.
8455 Where the <tt>stty</tt> settings are not propagated
8456 correctly, things can be made to work by using
8457 <tt>stty</tt> manually.
8458 </item>
8460 <item>
8461 Some systems (including previous Debian versions) use
8462 <prgn>xmodmap</prgn> to arrange for both
8463 <tt>&lt;--</tt> and <tt>Delete</tt> to generate
8464 <tt>KB_Delete</tt>. We can change the behavior of
8465 their X clients using the same X resources that we use
8466 to do it for our own clients, or configure our clients
8467 using their resources when things are the other way
8468 around. On displays configured like this
8469 <tt>Delete</tt> will not work, but <tt>&lt;--</tt>
8470 will.
8471 </item>
8473 <item>
8474 Some operating systems have different <tt>kdch1</tt>
8475 settings in their <tt>terminfo</tt> database for
8476 <tt>xterm</tt> and others. On these systems the
8477 <tt>Delete</tt> key will not work correctly when you
8478 log in from a system conforming to our policy, but
8479 <tt>&lt;--</tt> will.
8480 </item>
8481 </list>
8482 </p>
8483 </sect>
8485 <sect>
8486 <heading>Environment variables</heading>
8489 A program must not depend on environment variables to get
8490 reasonable defaults. (That's because these environment
8491 variables would have to be set in a system-wide
8492 configuration file like <file>/etc/profile</file>, which is not
8493 supported by all shells.)
8494 </p>
8497 If a program usually depends on environment variables for its
8498 configuration, the program should be changed to fall back to
8499 a reasonable default configuration if these environment
8500 variables are not present. If this cannot be done easily
8501 (e.g., if the source code of a non-free program is not
8502 available), the program must be replaced by a small
8503 "wrapper" shell script which sets the environment variables
8504 if they are not already defined, and calls the original program.
8505 </p>
8508 Here is an example of a wrapper script for this purpose:
8510 <example compact="compact">
8511 #!/bin/sh
8512 BAR=${BAR:-/var/lib/fubar}
8513 export BAR
8514 exec /usr/lib/foo/foo "$@"
8515 </example>
8516 </p>
8519 Furthermore, as <file>/etc/profile</file> is a configuration
8520 file of the <prgn>base-files</prgn> package, other packages must
8521 not put any environment variables or other commands into that
8522 file.
8523 </p>
8524 </sect>
8526 <sect id="doc-base">
8527 <heading>Registering Documents using doc-base</heading>
8530 The <package>doc-base</package> package implements a
8531 flexible mechanism for handling and presenting
8532 documentation. The recommended practice is for every Debian
8533 package that provides online documentation (other than just
8534 manual pages) to register these documents with
8535 <package>doc-base</package> by installing a
8536 <package>doc-base</package> control file in
8537 <file>/usr/share/doc-base/</file>.
8538 </p>
8540 Please refer to the documentation that comes with the
8541 <package>doc-base</package> package for information and
8542 details.
8543 </p>
8544 </sect>
8546 <sect id="alternateinit">
8547 <heading>Alternate init systems</heading>
8549 A number of other init systems are available now in Debian that
8550 can be used in place of <package>sysvinit</package>. Alternative
8551 init implementations must support running SysV init scripts as
8552 described at <ref id="sysvinit"> for compatibility.
8553 </p>
8555 Packages may integrate with these replacement init systems by
8556 providing implementation-specific configuration information about
8557 how and when to start a service or in what order to run certain
8558 tasks at boot time. However, any package integrating with other
8559 init systems must also be backwards-compatible with
8560 <package>sysvinit</package> by providing a SysV-style init script
8561 with the same name as and equivalent functionality to any
8562 init-specific job, as this is the only start-up configuration
8563 method guaranteed to be supported by all init implementations. An
8564 exception to this rule is scripts or jobs provided by the init
8565 implementation itself; such jobs may be required for an
8566 implementation-specific equivalent of the <file>/etc/rcS.d/</file>
8567 scripts and may not have a one-to-one correspondence with the init
8568 scripts.
8569 </p>
8570 <sect1 id="upstart">
8571 <heading>Event-based boot with upstart</heading>
8574 Packages may integrate with the <prgn>upstart</prgn> event-based
8575 boot system by installing job files in the
8576 <file>/etc/init</file> directory. SysV init scripts for which
8577 an equivalent upstart job is available must query the output of
8578 the command <prgn>initctl version</prgn> for the string
8579 <tt>upstart</tt> and avoid running in favor of the native
8580 upstart job, using a test such as this:
8581 <example compact="compact">
8582 if [ "$1" = start ] && which initctl >/dev/null && initctl version | grep -q upstart
8583 then
8584 exit 1
8586 </example>
8587 </p>
8589 Because packages shipping upstart jobs may be installed on
8590 systems that are not using upstart, maintainer scripts must
8591 still use the common <prgn>update-rc.d</prgn> and
8592 <prgn>invoke-rc.d</prgn> interfaces for configuring runlevels
8593 and for starting and stopping services. These maintainer
8594 scripts must not call the upstart <prgn>start</prgn>,
8595 <prgn>restart</prgn>, <prgn>reload</prgn>, or <prgn>stop</prgn>
8596 interfaces directly. Instead, implementations of
8597 <prgn>invoke-rc.d</prgn> must detect when upstart is running and
8598 when an upstart job with the same name as an init script is
8599 present, and perform the requested action using the upstart job
8600 instead of the init script.
8601 </p>
8603 Dependency-based boot managers for SysV init scripts, such as
8604 <prgn>startpar</prgn>, may avoid running a given init script
8605 entirely when an equivalent upstart job is present, to avoid
8606 unnecessary forking of no-op init scripts. In this case, the
8607 boot manager should integrate with upstart to detect when the
8608 upstart job in question is started or stopped to know when the
8609 dependency has been satisfied.
8610 </p>
8611 </sect1>
8612 </sect>
8614 </chapt>
8617 <chapt id="files">
8618 <heading>Files</heading>
8620 <sect id="binaries">
8621 <heading>Binaries</heading>
8624 Two different packages must not install programs with
8625 different functionality but with the same filenames. (The
8626 case of two programs having the same functionality but
8627 different implementations is handled via "alternatives" or
8628 the "Conflicts" mechanism. See <ref id="maintscripts"> and
8629 <ref id="conflicts"> respectively.) If this case happens,
8630 one of the programs must be renamed. The maintainers should
8631 report this to the <tt>debian-devel</tt> mailing list and
8632 try to find a consensus about which program will have to be
8633 renamed. If a consensus cannot be reached, <em>both</em>
8634 programs must be renamed.
8635 </p>
8637 Binary executables must not be statically linked with the GNU C
8638 library, since this prevents the binary from benefiting from
8639 fixes and improvements to the C library without being rebuilt
8640 and complicates security updates. This requirement may be
8641 relaxed for binary executables whose intended purpose is to
8642 diagnose and fix the system in situations where the GNU C
8643 library may not be usable (such as system recovery shells or
8644 utilities like ldconfig) or for binary executables where the
8645 security benefits of static linking outweigh the drawbacks.
8646 </p>
8648 By default, when a package is being built, any binaries
8649 created should include debugging information, as well as
8650 being compiled with optimization. You should also turn on
8651 as many reasonable compilation warnings as possible; this
8652 makes life easier for porters, who can then look at build
8653 logs for possible problems. For the C programming language,
8654 this means the following compilation parameters should be
8655 used:
8656 <example compact="compact">
8657 CC = gcc
8658 CFLAGS = -O2 -g -Wall # sane warning options vary between programs
8659 LDFLAGS = # none
8660 INSTALL = install -s # (or use strip on the files in debian/tmp)
8661 </example>
8662 </p>
8665 Note that by default all installed binaries should be stripped,
8666 either by using the <tt>-s</tt> flag to
8667 <prgn>install</prgn>, or by calling <prgn>strip</prgn> on
8668 the binaries after they have been copied into
8669 <file>debian/tmp</file> but before the tree is made into a
8670 package.
8671 </p>
8674 Although binaries in the build tree should be compiled with
8675 debugging information by default, it can often be difficult to
8676 debug programs if they are also subjected to compiler
8677 optimization. For this reason, it is recommended to support the
8678 standardized environment variable <tt>DEB_BUILD_OPTIONS</tt>
8679 (see <ref id="debianrules-options">). This variable can contain
8680 several flags to change how a package is compiled and built.
8681 </p>
8684 It is up to the package maintainer to decide what
8685 compilation options are best for the package. Certain
8686 binaries (such as computationally-intensive programs) will
8687 function better with certain flags (<tt>-O3</tt>, for
8688 example); feel free to use them. Please use good judgment
8689 here. Don't use flags for the sake of it; only use them
8690 if there is good reason to do so. Feel free to override
8691 the upstream author's ideas about which compilation
8692 options are best: they are often inappropriate for our
8693 environment.
8694 </p>
8695 </sect>
8698 <sect id="libraries">
8699 <heading>Libraries</heading>
8702 If the package is <strong>architecture: any</strong>, then
8703 the shared library compilation and linking flags must have
8704 <tt>-fPIC</tt>, or the package shall not build on some of
8705 the supported architectures<footnote>
8707 If you are using GCC, <tt>-fPIC</tt> produces code with
8708 relocatable position independent code, which is required for
8709 most architectures to create a shared library, with i386 and
8710 perhaps some others where non position independent code is
8711 permitted in a shared library.
8712 </p>
8714 Position independent code may have a performance penalty,
8715 especially on <tt>i386</tt>. However, in most cases the
8716 speed penalty must be measured against the memory wasted on
8717 the few architectures where non position independent code is
8718 even possible.
8719 </p>
8720 </footnote>. Any exception to this rule must be discussed on
8721 the mailing list <em>debian-devel@lists.debian.org</em>, and
8722 a rough consensus obtained. The reasons for not compiling
8723 with <tt>-fPIC</tt> flag must be recorded in the file
8724 <tt>README.Debian</tt>, and care must be taken to either
8725 restrict the architecture or arrange for <tt>-fPIC</tt> to
8726 be used on architectures where it is required.<footnote>
8728 Some of the reasons why this might be required is if the
8729 library contains hand crafted assembly code that is not
8730 relocatable, the speed penalty is excessive for compute
8731 intensive libs, and similar reasons.
8732 </p>
8733 </footnote>
8734 </p>
8736 As to the static libraries, the common case is not to have
8737 relocatable code, since there is no benefit, unless in specific
8738 cases; therefore the static version must not be compiled
8739 with the <tt>-fPIC</tt> flag. Any exception to this rule
8740 should be discussed on the mailing list
8741 <em>debian-devel@lists.debian.org</em>, and the reasons for
8742 compiling with the <tt>-fPIC</tt> flag must be recorded in
8743 the file <tt>README.Debian</tt>. <footnote>
8745 Some of the reasons for linking static libraries with
8746 the <tt>-fPIC</tt> flag are if, for example, one needs a
8747 Perl API for a library that is under rapid development,
8748 and has an unstable API, so shared libraries are
8749 pointless at this phase of the library's development. In
8750 that case, since Perl needs a library with relocatable
8751 code, it may make sense to create a static library with
8752 relocatable code. Another reason cited is if you are
8753 distilling various libraries into a common shared
8754 library, like <tt>mklibs</tt> does in the Debian
8755 installer project.
8756 </p>
8757 </footnote>
8758 </p>
8760 In other words, if both a shared and a static library is
8761 being built, each source unit (<tt>*.c</tt>, for example,
8762 for C files) will need to be compiled twice, for the normal
8763 case.
8764 </p>
8767 Libraries should be built with threading support and to be
8768 thread-safe if the library supports this.
8769 </p>
8772 Although not enforced by the build tools, shared libraries
8773 must be linked against all libraries that they use symbols from
8774 in the same way that binaries are. This ensures the correct
8775 functioning of the <qref id="sharedlibs-symbols">symbols</qref>
8776 and <qref id="sharedlibs-shlibdeps">shlibs</qref>
8777 systems and guarantees that all libraries can be safely opened
8778 with <tt>dlopen()</tt>. Packagers may wish to use the gcc
8779 option <tt>-Wl,-z,defs</tt> when building a shared library.
8780 Since this option enforces symbol resolution at build time,
8781 a missing library reference will be caught early as a fatal
8782 build error.
8783 </p>
8786 All installed shared libraries should be stripped with
8787 <example compact="compact">
8788 strip --strip-unneeded <var>your-lib</var>
8789 </example>
8790 (The option <tt>--strip-unneeded</tt> makes
8791 <prgn>strip</prgn> remove only the symbols which aren't
8792 needed for relocation processing.) Shared libraries can
8793 function perfectly well when stripped, since the symbols for
8794 dynamic linking are in a separate part of the ELF object
8795 file.<footnote>
8796 You might also want to use the options
8797 <tt>--remove-section=.comment</tt> and
8798 <tt>--remove-section=.note</tt> on both shared libraries
8799 and executables, and <tt>--strip-debug</tt> on static
8800 libraries.
8801 </footnote>
8802 </p>
8805 Note that under some circumstances it may be useful to
8806 install a shared library unstripped, for example when
8807 building a separate package to support debugging.
8808 </p>
8811 Shared object files (often <file>.so</file> files) that are not
8812 public libraries, that is, they are not meant to be linked
8813 to by third party executables (binaries of other packages),
8814 should be installed in subdirectories of the
8815 <file>/usr/lib</file> directory. Such files are exempt from the
8816 rules that govern ordinary shared libraries, except that
8817 they must not be installed executable and should be
8818 stripped.<footnote>
8819 A common example are the so-called "plug-ins",
8820 internal shared objects that are dynamically loaded by
8821 programs using <manref name="dlopen" section="3">.
8822 </footnote>
8823 </p>
8826 Packages that use <prgn>libtool</prgn> to create and install
8827 their shared libraries install a file containing additional
8828 metadata (ending in <file>.la</file>) alongside the library.
8829 For public libraries intended for use by other packages, these
8830 files normally should not be included in the Debian package,
8831 since the information they include is not necessary to link with
8832 the shared library on Debian and can add unnecessary additional
8833 dependencies to other programs or libraries.<footnote>
8834 These files store, among other things, all libraries on which
8835 that shared library depends. Unfortunately, if
8836 the <file>.la</file> file is present and contains that
8837 dependency information, using <prgn>libtool</prgn> when
8838 linking against that library will cause the resulting program
8839 or library to be linked against those dependencies as well,
8840 even if this is unnecessary. This can create unneeded
8841 dependencies on shared library packages that would otherwise
8842 be hidden behind the library ABI, and can make library
8843 transitions to new SONAMEs unnecessarily complicated and
8844 difficult to manage.
8845 </footnote>
8846 If the <file>.la</file> file is required for that library (if,
8847 for instance, it's loaded via <tt>libltdl</tt> in a way that
8848 requires that meta-information), the <tt>dependency_libs</tt>
8849 setting in the <file>.la</file> file should normally be set to
8850 the empty string. If the shared library development package has
8851 historically included the <file>.la</file>, it must be retained
8852 in the development package (with <tt>dependency_libs</tt>
8853 emptied) until all libraries that depend on it have removed or
8854 emptied <tt>dependency_libs</tt> in their <file>.la</file>
8855 files to prevent linking with those other libraries
8856 using <prgn>libtool</prgn> from failing.
8857 </p>
8860 If the <file>.la</file> must be included, it should be included
8861 in the development (<tt>-dev</tt>) package, unless the library
8862 will be loaded by <prgn>libtool</prgn>'s <tt>libltdl</tt>
8863 library. If it is intended for use with <tt>libltdl</tt>,
8864 the <file>.la</file> files must go in the run-time library
8865 package.
8866 </p>
8869 These requirements for handling of <file>.la</file> files do not
8870 apply to loadable modules or libraries not installed in
8871 directories searched by default by the dynamic linker. Packages
8872 installing loadable modules will frequently need to install
8873 the <file>.la</file> files alongside the modules so that they
8874 can be loaded by <tt>libltdl</tt>. <tt>dependency_libs</tt>
8875 does not need to be modified for libraries or modules that are
8876 not installed in directories searched by the dynamic linker by
8877 default and not intended for use by other packages.
8878 </p>
8881 You must make sure that you use only released versions of
8882 shared libraries to build your packages; otherwise other
8883 users will not be able to run your binaries
8884 properly. Producing source packages that depend on
8885 unreleased compilers is also usually a bad
8886 idea.
8887 </p>
8888 </sect>
8891 <sect>
8892 <heading>Shared libraries</heading>
8894 This section has moved to <ref id="sharedlibs">.
8895 </p>
8896 </sect>
8899 <sect id="scripts">
8900 <heading>Scripts</heading>
8903 All command scripts, including the package maintainer
8904 scripts inside the package and used by <prgn>dpkg</prgn>,
8905 should have a <tt>#!</tt> line naming the shell to be used
8906 to interpret them.
8907 </p>
8910 In the case of Perl scripts this should be
8911 <tt>#!/usr/bin/perl</tt>.
8912 </p>
8915 When scripts are installed into a directory in the system
8916 PATH, the script name should not include an extension such
8917 as <tt>.sh</tt> or <tt>.pl</tt> that denotes the scripting
8918 language currently used to implement it.
8919 </p>
8921 Shell scripts (<prgn>sh</prgn> and <prgn>bash</prgn>) other than
8922 <file>init.d</file> scripts should almost certainly start
8923 with <tt>set -e</tt> so that errors are detected.
8924 <file>init.d</file> scripts are something of a special case, due
8925 to how frequently they need to call commands that are allowed to
8926 fail, and it may instead be easier to check the exit status of
8927 commands directly. See <ref id="writing-init"> for more
8928 information about writing <file>init.d</file> scripts.
8929 </p>
8931 Every script should use <tt>set -e</tt> or check the exit status
8932 of <em>every</em> command.
8933 </p>
8935 Scripts may assume that <file>/bin/sh</file> implements the
8936 SUSv3 Shell Command Language<footnote>
8937 Single UNIX Specification, version 3, which is also IEEE
8938 1003.1-2004 (POSIX), and is available on the World Wide Web
8939 from <url id="http://www.unix.org/version3/online.html"
8940 name="The Open Group"> after free
8941 registration.</footnote>
8942 plus the following additional features not mandated by
8943 SUSv3:<footnote>
8944 These features are in widespread use in the Linux community
8945 and are implemented in all of bash, dash, and ksh, the most
8946 common shells users may wish to use as <file>/bin/sh</file>.
8947 </footnote>
8948 <list>
8949 <item><tt>echo -n</tt>, if implemented as a shell built-in,
8950 must not generate a newline.</item>
8951 <item><tt>test</tt>, if implemented as a shell built-in, must
8952 support <tt>-a</tt> and <tt>-o</tt> as binary logical
8953 operators.</item>
8954 <item><tt>local</tt> to create a scoped variable must be
8955 supported, including listing multiple variables in a single
8956 local command and assigning a value to a variable at the
8957 same time as localizing it. <tt>local</tt> may or
8958 may not preserve the variable value from an outer scope if
8959 no assignment is present. Uses such as:
8960 <example compact>
8961 fname () {
8962 local a b c=delta d
8963 # ... use a, b, c, d ...
8965 </example>
8966 must be supported and must set the value of <tt>c</tt> to
8967 <tt>delta</tt>.
8968 </item>
8969 <item>The XSI extension to <prgn>kill</prgn> allowing <tt>kill
8970 -<var>signal</var></tt>, where <var>signal</var> is either
8971 the name of a signal or one of the numeric signals listed in
8972 the XSI extension (0, 1, 2, 3, 6, 9, 14, and 15), must be
8973 supported if <prgn>kill</prgn> is implemented as a shell
8974 built-in.
8975 </item>
8976 <item>The XSI extension to <prgn>trap</prgn> allowing numeric
8977 signals must be supported. In addition to the signal
8978 numbers listed in the extension, which are the same as for
8979 <prgn>kill</prgn> above, 13 (SIGPIPE) must be allowed.
8980 </item>
8981 </list>
8982 If a shell script requires non-SUSv3 features from the shell
8983 interpreter other than those listed above, the appropriate shell
8984 must be specified in the first line of the script (e.g.,
8985 <tt>#!/bin/bash</tt>) and the package must depend on the package
8986 providing the shell (unless the shell package is marked
8987 "Essential", as in the case of <prgn>bash</prgn>).
8988 </p>
8991 You may wish to restrict your script to SUSv3 features plus the
8992 above set when possible so that it may use <file>/bin/sh</file>
8993 as its interpreter. Checking your script
8994 with <prgn>checkbashisms</prgn> from
8995 the <package>devscripts</package> package or running your script
8996 with an alternate shell such as <prgn>posh</prgn> may help
8997 uncover violations of the above requirements. If in doubt
8998 whether a script complies with these requirements,
8999 use <file>/bin/bash</file>.
9000 </p>
9003 Perl scripts should check for errors when making any
9004 system calls, including <tt>open</tt>, <tt>print</tt>,
9005 <tt>close</tt>, <tt>rename</tt> and <tt>system</tt>.
9006 </p>
9009 <prgn>csh</prgn> and <prgn>tcsh</prgn> should be avoided as
9010 scripting languages. See <em>Csh Programming Considered
9011 Harmful</em>, one of the <tt>comp.unix.*</tt> FAQs, which
9012 can be found at <url id="http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/">.
9013 If an upstream package comes with <prgn>csh</prgn> scripts
9014 then you must make sure that they start with
9015 <tt>#!/bin/csh</tt> and make your package depend on the
9016 <prgn>c-shell</prgn> virtual package.
9017 </p>
9020 Any scripts which create files in world-writeable
9021 directories (e.g., in <file>/tmp</file>) must use a
9022 mechanism which will fail atomically if a file with the same
9023 name already exists.
9024 </p>
9027 The Debian base system provides the <prgn>tempfile</prgn>
9028 and <prgn>mktemp</prgn> utilities for use by scripts for
9029 this purpose.
9030 </p>
9031 </sect>
9034 <sect>
9035 <heading>Symbolic links</heading>
9038 In general, symbolic links within a top-level directory should
9039 be relative, and symbolic links pointing from one top-level
9040 directory to or into another should be absolute. (A top-level
9041 directory is a sub-directory of the root
9042 directory <file>/</file>.) For example, a symbolic link
9043 from <file>/usr/lib/foo</file> to <file>/usr/share/bar</file>
9044 should be relative (<file>../share/bar</file>), but a symbolic
9045 link from <file>/var/run</file> to <file>/run</file> should be
9046 absolute.<footnote>
9047 This is necessary to allow top-level directories to be
9048 symlinks. If linking <file>/var/run</file>
9049 to <file>/run</file> were done with the relative symbolic
9050 link <file>../run</file>, but <file>/var</file> were a
9051 symbolic link to <file>/srv/disk1</file>, the symbolic link
9052 would point to <file>/srv/run</file> rather than the intended
9053 target.
9054 </footnote>
9055 Symbolic links must not traverse above the root directory.
9056 </p>
9059 In addition, symbolic links should be specified as short as
9060 possible, i.e., link targets like <file>foo/../bar</file> are
9061 deprecated.
9062 </p>
9065 Note that when creating a relative link using
9066 <prgn>ln</prgn> it is not necessary for the target of the
9067 link to exist relative to the working directory you're
9068 running <prgn>ln</prgn> from, nor is it necessary to change
9069 directory to the directory where the link is to be made.
9070 Simply include the string that should appear as the target
9071 of the link (this will be a pathname relative to the
9072 directory in which the link resides) as the first argument
9073 to <prgn>ln</prgn>.
9074 </p>
9077 For example, in your <prgn>Makefile</prgn> or
9078 <file>debian/rules</file>, you can do things like:
9079 <example compact="compact">
9080 ln -fs gcc $(prefix)/bin/cc
9081 ln -fs gcc debian/tmp/usr/bin/cc
9082 ln -fs ../sbin/sendmail $(prefix)/bin/runq
9083 ln -fs ../sbin/sendmail debian/tmp/usr/bin/runq
9084 </example>
9085 </p>
9088 A symbolic link pointing to a compressed file (in the sense
9089 that it is meant to be uncompressed with <prgn>unzip</prgn>
9090 or <prgn>zless</prgn> etc.) should always
9091 have the same file extension as the referenced file. (For
9092 example, if a file <file>foo.gz</file> is referenced by a
9093 symbolic link, the filename of the link has to end with
9094 "<file>.gz</file>" too, as in <file>bar.gz</file>.)
9095 </p>
9096 </sect>
9098 <sect>
9099 <heading>Device files</heading>
9102 Packages must not include device files or named pipes in the
9103 package file tree.
9104 </p>
9107 If a package needs any special device files that are not
9108 included in the base system, it must call
9109 <prgn>MAKEDEV</prgn> in the <prgn>postinst</prgn> script,
9110 after notifying the user<footnote>
9111 This notification could be done via a (low-priority)
9112 debconf message, or an echo (printf) statement.
9113 </footnote>.
9114 </p>
9117 Packages must not remove any device files in the
9118 <prgn>postrm</prgn> or any other script. This is left to the
9119 system administrator.
9120 </p>
9123 Debian uses the serial devices
9124 <file>/dev/ttyS*</file>. Programs using the old
9125 <file>/dev/cu*</file> devices should be changed to use
9126 <file>/dev/ttyS*</file>.
9127 </p>
9130 Named pipes needed by the package must be created in
9131 the <prgn>postinst</prgn> script<footnote>
9132 It's better to use <prgn>mkfifo</prgn> rather
9133 than <prgn>mknod</prgn> to create named pipes so that
9134 automated checks for packages incorrectly creating device
9135 files with <prgn>mknod</prgn> won't have false positives.
9136 </footnote> and removed in
9137 the <prgn>prerm</prgn> or <prgn>postrm</prgn> script as
9138 appropriate.
9139 </p>
9140 </sect>
9142 <sect id="config-files">
9143 <heading>Configuration files</heading>
9145 <sect1>
9146 <heading>Definitions</heading>
9149 <taglist>
9150 <tag>configuration file</tag>
9151 <item>
9152 A file that affects the operation of a program, or
9153 provides site- or host-specific information, or
9154 otherwise customizes the behavior of a program.
9155 Typically, configuration files are intended to be
9156 modified by the system administrator (if needed or
9157 desired) to conform to local policy or to provide
9158 more useful site-specific behavior.
9159 </item>
9161 <tag><tt>conffile</tt></tag>
9162 <item>
9163 A file listed in a package's <tt>conffiles</tt>
9164 file, and is treated specially by <prgn>dpkg</prgn>
9165 (see <ref id="configdetails">).
9166 </item>
9167 </taglist>
9168 </p>
9171 The distinction between these two is important; they are
9172 not interchangeable concepts. Almost all
9173 <tt>conffile</tt>s are configuration files, but many
9174 configuration files are not <tt>conffiles</tt>.
9175 </p>
9178 As noted elsewhere, <file>/etc/init.d</file> scripts,
9179 <file>/etc/default</file> files, scripts installed in
9180 <file>/etc/cron.{hourly,daily,weekly,monthly}</file>, and cron
9181 configuration installed in <file>/etc/cron.d</file> must be
9182 treated as configuration files. In general, any script that
9183 embeds configuration information is de-facto a configuration
9184 file and should be treated as such.
9185 </p>
9186 </sect1>
9188 <sect1>
9189 <heading>Location</heading>
9192 Any configuration files created or used by your package
9193 must reside in <file>/etc</file>. If there are several,
9194 consider creating a subdirectory of <file>/etc</file>
9195 named after your package.
9196 </p>
9199 If your package creates or uses configuration files
9200 outside of <file>/etc</file>, and it is not feasible to modify
9201 the package to use <file>/etc</file> directly, put the files
9202 in <file>/etc</file> and create symbolic links to those files
9203 from the location that the package requires.
9204 </p>
9205 </sect1>
9207 <sect1>
9208 <heading>Behavior</heading>
9211 Configuration file handling must conform to the following
9212 behavior:
9213 <list compact="compact">
9214 <item>
9215 local changes must be preserved during a package
9216 upgrade, and
9217 </item>
9218 <item>
9219 configuration files must be preserved when the
9220 package is removed, and only deleted when the
9221 package is purged.
9222 </item>
9223 </list>
9224 Obsolete configuration files without local changes should be
9225 removed by the package during upgrade.<footnote>
9226 The <prgn>dpkg-maintscript-helper</prgn> tool, available from the
9227 <package>dpkg</package> package, can help for this task.</footnote>
9228 </p>
9231 The easy way to achieve this behavior is to make the
9232 configuration file a <tt>conffile</tt>. This is
9233 appropriate only if it is possible to distribute a default
9234 version that will work for most installations, although
9235 some system administrators may choose to modify it. This
9236 implies that the default version will be part of the
9237 package distribution, and must not be modified by the
9238 maintainer scripts during installation (or at any other
9239 time).
9240 </p>
9243 In order to ensure that local changes are preserved
9244 correctly, no package may contain or make hard links to
9245 conffiles.<footnote>
9246 Rationale: There are two problems with hard links.
9247 The first is that some editors break the link while
9248 editing one of the files, so that the two files may
9249 unwittingly become unlinked and different. The second
9250 is that <prgn>dpkg</prgn> might break the hard link
9251 while upgrading <tt>conffile</tt>s.
9252 </footnote>
9253 </p>
9256 The other way to do it is via the maintainer scripts. In
9257 this case, the configuration file must not be listed as a
9258 <tt>conffile</tt> and must not be part of the package
9259 distribution. If the existence of a file is required for
9260 the package to be sensibly configured it is the
9261 responsibility of the package maintainer to provide
9262 maintainer scripts which correctly create, update and
9263 maintain the file and remove it on purge. (See <ref
9264 id="maintainerscripts"> for more information.) These
9265 scripts must be idempotent (i.e., must work correctly if
9266 <prgn>dpkg</prgn> needs to re-run them due to errors
9267 during installation or removal), must cope with all the
9268 variety of ways <prgn>dpkg</prgn> can call maintainer
9269 scripts, must not overwrite or otherwise mangle the user's
9270 configuration without asking, must not ask unnecessary
9271 questions (particularly during upgrades), and must
9272 otherwise be good citizens.
9273 </p>
9276 The scripts are not required to configure every possible
9277 option for the package, but only those necessary to get
9278 the package running on a given system. Ideally the
9279 sysadmin should not have to do any configuration other
9280 than that done (semi-)automatically by the
9281 <prgn>postinst</prgn> script.
9282 </p>
9285 A common practice is to create a script called
9286 <file><var>package</var>-configure</file> and have the
9287 package's <prgn>postinst</prgn> call it if and only if the
9288 configuration file does not already exist. In certain
9289 cases it is useful for there to be an example or template
9290 file which the maintainer scripts use. Such files should
9291 be in <file>/usr/share/<var>package</var></file> or
9292 <file>/usr/lib/<var>package</var></file> (depending on whether
9293 they are architecture-independent or not). There should
9294 be symbolic links to them from
9295 <file>/usr/share/doc/<var>package</var>/examples</file> if
9296 they are examples, and should be perfectly ordinary
9297 <prgn>dpkg</prgn>-handled files (<em>not</em>
9298 configuration files).
9299 </p>
9302 These two styles of configuration file handling must
9303 not be mixed, for that way lies madness:
9304 <prgn>dpkg</prgn> will ask about overwriting the file
9305 every time the package is upgraded.
9306 </p>
9307 </sect1>
9309 <sect1>
9310 <heading>Sharing configuration files</heading>
9313 If two or more packages use the same configuration file
9314 and it is reasonable for both to be installed at the same
9315 time, one of these packages must be defined as
9316 <em>owner</em> of the configuration file, i.e., it will be
9317 the package which handles that file as a configuration
9318 file. Other packages that use the configuration file must
9319 depend on the owning package if they require the
9320 configuration file to operate. If the other package will
9321 use the configuration file if present, but is capable of
9322 operating without it, no dependency need be declared.
9323 </p>
9326 If it is desirable for two or more related packages to
9327 share a configuration file <em>and</em> for all of the
9328 related packages to be able to modify that configuration
9329 file, then the following should be done:
9330 <enumlist compact="compact">
9331 <item>
9332 One of the related packages (the "owning" package)
9333 will manage the configuration file with maintainer
9334 scripts as described in the previous section.
9335 </item>
9336 <item>
9337 The owning package should also provide a program
9338 that the other packages may use to modify the
9339 configuration file.
9340 </item>
9341 <item>
9342 The related packages must use the provided program
9343 to make any desired modifications to the
9344 configuration file. They should either depend on
9345 the core package to guarantee that the configuration
9346 modifier program is available or accept gracefully
9347 that they cannot modify the configuration file if it
9348 is not. (This is in addition to the fact that the
9349 configuration file may not even be present in the
9350 latter scenario.)
9351 </item>
9352 </enumlist>
9353 </p>
9356 Sometimes it's appropriate to create a new package which
9357 provides the basic infrastructure for the other packages
9358 and which manages the shared configuration files. (The
9359 <tt>sgml-base</tt> package is a good example.)
9360 </p>
9363 If the configuration file cannot be shared as described above,
9364 the packages must be marked as conflicting with each other.
9365 Two packages that specify the same file as
9366 a <tt>conffile</tt> must conflict. This is an instance of the
9367 general rule about not sharing files. Neither alternatives
9368 nor diversions are likely to be appropriate in this case; in
9369 particular, <prgn>dpkg</prgn> does not handle diverted
9370 <tt>conffile</tt>s well.
9371 </p>
9374 When two packages both declare the same <tt>conffile</tt>, they
9375 may see left-over configuration files from each other even
9376 though they conflict with each other. If a user removes
9377 (without purging) one of the packages and installs the other,
9378 the new package will take over the <tt>conffile</tt> from the
9379 old package. If the file was modified by the user, it will be
9380 treated the same as any other locally
9381 modified <tt>conffile</tt> during an upgrade.
9382 </p>
9385 The maintainer scripts must not alter a <tt>conffile</tt>
9386 of <em>any</em> package, including the one the scripts
9387 belong to.
9388 </p>
9389 </sect1>
9391 <sect1>
9392 <heading>User configuration files ("dotfiles")</heading>
9395 The files in <file>/etc/skel</file> will automatically be
9396 copied into new user accounts by <prgn>adduser</prgn>.
9397 No other program should reference the files in
9398 <file>/etc/skel</file>.
9399 </p>
9402 Therefore, if a program needs a dotfile to exist in
9403 advance in <file>$HOME</file> to work sensibly, that dotfile
9404 should be installed in <file>/etc/skel</file> and treated as a
9405 configuration file.
9406 </p>
9409 However, programs that require dotfiles in order to
9410 operate sensibly are a bad thing, unless they do create
9411 the dotfiles themselves automatically.
9412 </p>
9415 Furthermore, programs should be configured by the Debian
9416 default installation to behave as closely to the upstream
9417 default behavior as possible.
9418 </p>
9421 Therefore, if a program in a Debian package needs to be
9422 configured in some way in order to operate sensibly, that
9423 should be done using a site-wide configuration file placed
9424 in <file>/etc</file>. Only if the program doesn't support a
9425 site-wide default configuration and the package maintainer
9426 doesn't have time to add it may a default per-user file be
9427 placed in <file>/etc/skel</file>.
9428 </p>
9431 <file>/etc/skel</file> should be as empty as we can make it.
9432 This is particularly true because there is no easy (or
9433 necessarily desirable) mechanism for ensuring that the
9434 appropriate dotfiles are copied into the accounts of
9435 existing users when a package is installed.
9436 </p>
9437 </sect1>
9438 </sect>
9440 <sect>
9441 <heading>Log files</heading>
9443 Log files should usually be named
9444 <file>/var/log/<var>package</var>.log</file>. If you have many
9445 log files, or need a separate directory for permission
9446 reasons (<file>/var/log</file> is writable only by
9447 <file>root</file>), you should usually create a directory named
9448 <file>/var/log/<var>package</var></file> and place your log
9449 files there.
9450 </p>
9453 Log files must be rotated occasionally so that they don't grow
9454 indefinitely. The best way to do this is to install a log
9455 rotation configuration file in the
9456 directory <file>/etc/logrotate.d</file>, normally
9457 named <file>/etc/logrotate.d/<var>package</var></file>, and use
9458 the facilities provided by <prgn>logrotate</prgn>.
9459 <footnote>
9461 The traditional approach to log files has been to set up
9462 <em>ad hoc</em> log rotation schemes using simple shell
9463 scripts and cron. While this approach is highly
9464 customizable, it requires quite a lot of sysadmin work.
9465 Even though the original Debian system helped a little
9466 by automatically installing a system which can be used
9467 as a template, this was deemed not enough.
9468 </p>
9471 The use of <prgn>logrotate</prgn>, a program developed
9472 by Red Hat, is better, as it centralizes log management.
9473 It has both a configuration file
9474 (<file>/etc/logrotate.conf</file>) and a directory where
9475 packages can drop their individual log rotation
9476 configurations (<file>/etc/logrotate.d</file>).
9477 </p>
9478 </footnote>
9479 Here is a good example for a logrotate config
9480 file (for more information see <manref name="logrotate"
9481 section="8">):
9482 <example compact="compact">
9483 /var/log/foo/*.log {
9484 rotate 12
9485 weekly
9486 compress
9487 missingok
9488 postrotate
9489 start-stop-daemon -K -p /var/run/foo.pid -s HUP -x /usr/sbin/foo -q
9490 endscript
9492 </example>
9493 This rotates all files under <file>/var/log/foo</file>, saves 12
9494 compressed generations, and tells the daemon to reopen its log
9495 files after the log rotation. It skips this log rotation
9496 (via <tt>missingok</tt>) if no such log file is present, which
9497 avoids errors if the package is removed but not purged.
9498 </p>
9501 Log files should be removed when the package is
9502 purged (but not when it is only removed). This should be
9503 done by the <prgn>postrm</prgn> script when it is called
9504 with the argument <tt>purge</tt> (see <ref
9505 id="removedetails">).
9506 </p>
9507 </sect>
9509 <sect id="permissions-owners">
9510 <heading>Permissions and owners</heading>
9513 The rules in this section are guidelines for general use.
9514 If necessary you may deviate from the details below.
9515 However, if you do so you must make sure that what is done
9516 is secure and you should try to be as consistent as possible
9517 with the rest of the system. You should probably also
9518 discuss it on <prgn>debian-devel</prgn> first.
9519 </p>
9522 Files should be owned by <tt>root:root</tt>, and made
9523 writable only by the owner and universally readable (and
9524 executable, if appropriate), that is mode 644 or 755.
9525 </p>
9528 Directories should be mode 755 or (for group-writability)
9529 mode 2775. The ownership of the directory should be
9530 consistent with its mode: if a directory is mode 2775, it
9531 should be owned by the group that needs write access to
9532 it.<footnote>
9534 When a package is upgraded, and the owner or permissions
9535 of a file included in the package has changed, dpkg
9536 arranges for the ownership and permissions to be
9537 correctly set upon installation. However, this does not
9538 extend to directories; the permissions and ownership of
9539 directories already on the system does not change on
9540 install or upgrade of packages. This makes sense, since
9541 otherwise common directories like <tt>/usr</tt> would
9542 always be in flux. To correctly change permissions of a
9543 directory the package owns, explicit action is required,
9544 usually in the <tt>postinst</tt> script. Care must be
9545 taken to handle downgrades as well, in that case.
9546 </p>
9547 </footnote>
9548 </p>
9551 Control information files should be owned by <tt>root:root</tt>
9552 and either mode 644 (for most files) or mode 755 (for
9553 executables such as <qref id="maintscripts">maintainer
9554 scripts</qref>).
9555 </p>
9558 Setuid and setgid executables should be mode 4755 or 2755
9559 respectively, and owned by the appropriate user or group.
9560 They should not be made unreadable (modes like 4711 or
9561 2711 or even 4111); doing so achieves no extra security,
9562 because anyone can find the binary in the freely available
9563 Debian package; it is merely inconvenient. For the same
9564 reason you should not restrict read or execute permissions
9565 on non-set-id executables.
9566 </p>
9569 Some setuid programs need to be restricted to particular
9570 sets of users, using file permissions. In this case they
9571 should be owned by the uid to which they are set-id, and by
9572 the group which should be allowed to execute them. They
9573 should have mode 4754; again there is no point in making
9574 them unreadable to those users who must not be allowed to
9575 execute them.
9576 </p>
9579 It is possible to arrange that the system administrator can
9580 reconfigure the package to correspond to their local
9581 security policy by changing the permissions on a binary:
9582 they can do this by using <prgn>dpkg-statoverride</prgn>, as
9583 described below.<footnote>
9584 Ordinary files installed by <prgn>dpkg</prgn> (as
9585 opposed to <tt>conffile</tt>s and other similar objects)
9586 normally have their permissions reset to the distributed
9587 permissions when the package is reinstalled. However,
9588 the use of <prgn>dpkg-statoverride</prgn> overrides this
9589 default behavior.
9590 </footnote>
9591 Another method you should consider is to create a group for
9592 people allowed to use the program(s) and make any setuid
9593 executables executable only by that group.
9594 </p>
9597 If you need to create a new user or group for your package
9598 there are two possibilities. Firstly, you may need to
9599 make some files in the binary package be owned by this
9600 user or group, or you may need to compile the user or
9601 group id (rather than just the name) into the binary
9602 (though this latter should be avoided if possible, as in
9603 this case you need a statically allocated id).</p>
9606 If you need a statically allocated id, you must ask for a
9607 user or group id from the <tt>base-passwd</tt> maintainer,
9608 and must not release the package until you have been
9609 allocated one. Once you have been allocated one you must
9610 either make the package depend on a version of the
9611 <tt>base-passwd</tt> package with the id present in
9612 <file>/etc/passwd</file> or <file>/etc/group</file>, or arrange for
9613 your package to create the user or group itself with the
9614 correct id (using <tt>adduser</tt>) in its
9615 <prgn>preinst</prgn> or <prgn>postinst</prgn>. (Doing it in
9616 the <prgn>postinst</prgn> is to be preferred if it is
9617 possible, otherwise a pre-dependency will be needed on the
9618 <tt>adduser</tt> package.)
9619 </p>
9622 On the other hand, the program might be able to determine the
9623 uid or gid from the user or group name at runtime, so that a
9624 dynamically allocated id can be used. In this case you should
9625 choose an appropriate user or group name, discussing this
9626 on <prgn>debian-devel</prgn> and checking that it is unique.
9627 When this has been checked you must arrange for your package to
9628 create the user or group if necessary using
9629 <prgn>adduser</prgn> in the <prgn>preinst</prgn> or
9630 <prgn>postinst</prgn> script (again, the latter is to be
9631 preferred if it is possible).
9632 </p>
9635 Note that changing the numeric value of an id associated
9636 with a name is very difficult, and involves searching the
9637 file system for all appropriate files. You need to think
9638 carefully whether a static or dynamic id is required, since
9639 changing your mind later will cause problems.
9640 </p>
9642 <sect1><heading>The use of <prgn>dpkg-statoverride</prgn></heading>
9644 This section is not intended as policy, but as a
9645 description of the use of <prgn>dpkg-statoverride</prgn>.
9646 </p>
9649 If a system administrator wishes to have a file (or
9650 directory or other such thing) installed with owner and
9651 permissions different from those in the distributed Debian
9652 package, they can use the <prgn>dpkg-statoverride</prgn>
9653 program to instruct <prgn>dpkg</prgn> to use the different
9654 settings every time the file is installed. Thus the
9655 package maintainer should distribute the files with their
9656 normal permissions, and leave it for the system
9657 administrator to make any desired changes. For example, a
9658 daemon which is normally required to be setuid root, but
9659 in certain situations could be used without being setuid,
9660 should be installed setuid in the <tt>.deb</tt>. Then the
9661 local system administrator can change this if they wish.
9662 If there are two standard ways of doing it, the package
9663 maintainer can use <tt>debconf</tt> to find out the
9664 preference, and call <prgn>dpkg-statoverride</prgn> in the
9665 maintainer script if necessary to accommodate the system
9666 administrator's choice. Care must be taken during
9667 upgrades to not override an existing setting.
9668 </p>
9671 Given the above, <prgn>dpkg-statoverride</prgn> is
9672 essentially a tool for system administrators and would not
9673 normally be needed in the maintainer scripts. There is
9674 one type of situation, though, where calls to
9675 <prgn>dpkg-statoverride</prgn> would be needed in the
9676 maintainer scripts, and that involves packages which use
9677 dynamically allocated user or group ids. In such a
9678 situation, something like the following idiom can be very
9679 helpful in the package's <prgn>postinst</prgn>, where
9680 <tt>sysuser</tt> is a dynamically allocated id:
9681 <example>
9682 for i in /usr/bin/foo /usr/sbin/bar
9684 # only do something when no setting exists
9685 if ! dpkg-statoverride --list $i >/dev/null 2>&1
9686 then
9687 #include: debconf processing, question about foo and bar
9688 if [ "$RET" = "true" ] ; then
9689 dpkg-statoverride --update --add sysuser root 4755 $i
9692 done
9693 </example>
9694 The corresponding code to remove the override when the package
9695 is purged would be:
9696 <example>
9697 for i in /usr/bin/foo /usr/sbin/bar
9699 if dpkg-statoverride --list $i >/dev/null 2>&1
9700 then
9701 dpkg-statoverride --remove $i
9703 done
9704 </example>
9705 </p>
9706 </sect1>
9707 </sect>
9709 <sect id="filenames">
9710 <heading>File names</heading>
9713 The name of the files installed by binary packages in the system PATH
9714 (namely <tt>/bin</tt>, <tt>/sbin</tt>, <tt>/usr/bin</tt>,
9715 <tt>/usr/sbin</tt> and <tt>/usr/games</tt>) must be encoded in
9716 ASCII.
9717 </p>
9720 The name of the files and directories installed by binary packages
9721 outside the system PATH must be encoded in UTF-8 and should be
9722 restricted to ASCII when it is possible to do so.
9723 </p>
9724 </sect>
9725 </chapt>
9728 <chapt id="customized-programs">
9729 <heading>Customized programs</heading>
9731 <sect id="arch-spec">
9732 <heading>Architecture specification strings</heading>
9735 If a program needs to specify an <em>architecture specification
9736 string</em> in some place, it should select one of the strings
9737 provided by <tt>dpkg-architecture -L</tt>. The strings are in
9738 the format <tt><var>os</var>-<var>arch</var></tt>, though the OS
9739 part is sometimes elided, as when the OS is Linux.
9740 </p>
9743 Note that we don't want to use
9744 <tt><var>arch</var>-debian-linux</tt> to apply to the rule
9745 <tt><var>architecture</var>-<var>vendor</var>-<var>os</var></tt>
9746 since this would make our programs incompatible with other
9747 Linux distributions. We also don't use something like
9748 <tt><var>arch</var>-unknown-linux</tt>, since the
9749 <tt>unknown</tt> does not look very good.
9750 </p>
9752 <sect1 id="arch-wildcard-spec">
9753 <heading>Architecture wildcards</heading>
9756 A package may specify an architecture wildcard. Architecture
9757 wildcards are in the format <tt>any</tt> (which matches every
9758 architecture), <tt><var>os</var></tt>-any, or
9759 any-<tt><var>cpu</var></tt>. <footnote>
9760 Internally, the package system normalizes the GNU triplets
9761 and the Debian arches into Debian arch triplets (which are
9762 kind of inverted GNU triplets), with the first component of
9763 the triplet representing the libc and ABI in use, and then
9764 does matching against those triplets. However, such
9765 triplets are an internal implementation detail that should
9766 not be used by packages directly. The libc and ABI portion
9767 is handled internally by the package system based on
9768 the <var>os</var> and <var>cpu</var>.
9769 </footnote>
9770 </p>
9771 </sect1>
9772 </sect>
9774 <sect>
9775 <heading>Daemons</heading>
9778 The configuration files <file>/etc/services</file>,
9779 <file>/etc/protocols</file>, and <file>/etc/rpc</file> are managed
9780 by the <prgn>netbase</prgn> package and must not be modified
9781 by other packages.
9782 </p>
9785 If a package requires a new entry in one of these files, the
9786 maintainer should get in contact with the
9787 <prgn>netbase</prgn> maintainer, who will add the entries
9788 and release a new version of the <prgn>netbase</prgn>
9789 package.
9790 </p>
9793 The configuration file <file>/etc/inetd.conf</file> must not be
9794 modified by the package's scripts except via the
9795 <prgn>update-inetd</prgn> script or the
9796 <file>DebianNet.pm</file> Perl module. See their documentation
9797 for details on how to add entries.
9798 </p>
9801 If a package wants to install an example entry into
9802 <file>/etc/inetd.conf</file>, the entry must be preceded with
9803 exactly one hash character (<tt>#</tt>). Such lines are
9804 treated as "commented out by user" by the
9805 <prgn>update-inetd</prgn> script and are not changed or
9806 activated during package updates.
9807 </p>
9808 </sect>
9810 <sect>
9811 <heading>Using pseudo-ttys and modifying wtmp, utmp and
9812 lastlog</heading>
9815 Some programs need to create pseudo-ttys. This should be done
9816 using Unix98 ptys if the C library supports it. The resulting
9817 program must not be installed setuid root, unless that
9818 is required for other functionality.
9819 </p>
9822 The files <file>/var/run/utmp</file>, <file>/var/log/wtmp</file> and
9823 <file>/var/log/lastlog</file> must be installed writable by
9824 group <tt>utmp</tt>. Programs which need to modify those
9825 files must be installed setgid <tt>utmp</tt>.
9826 </p>
9827 </sect>
9829 <sect>
9830 <heading>Editors and pagers</heading>
9833 Some programs have the ability to launch an editor or pager
9834 program to edit or display a text document. Since there are
9835 lots of different editors and pagers available in the Debian
9836 distribution, the system administrator and each user should
9837 have the possibility to choose their preferred editor and
9838 pager.
9839 </p>
9842 In addition, every program should choose a good default
9843 editor/pager if none is selected by the user or system
9844 administrator.
9845 </p>
9848 Thus, every program that launches an editor or pager must
9849 use the EDITOR or PAGER environment variable to determine
9850 the editor or pager the user wishes to use. If these
9851 variables are not set, the programs <file>/usr/bin/editor</file>
9852 and <file>/usr/bin/pager</file> should be used, respectively.
9853 </p>
9856 These two files are managed through the <prgn>dpkg</prgn>
9857 "alternatives" mechanism. Every package providing an editor or
9858 pager must call the <prgn>update-alternatives</prgn> script to
9859 register as an alternative for <file>/usr/bin/editor</file>
9860 or <file>/usr/bin/pager</file> as appropriate. The alternative
9861 should have a slave alternative
9862 for <file>/usr/share/man/man1/editor.1.gz</file>
9863 or <file>/usr/share/man/man1/pager.1.gz</file> pointing to the
9864 corresponding manual page.
9865 </p>
9868 If it is very hard to adapt a program to make use of the
9869 EDITOR or PAGER variables, that program may be configured to
9870 use <file>/usr/bin/sensible-editor</file> and
9871 <file>/usr/bin/sensible-pager</file> as the editor or pager
9872 program respectively. These are two scripts provided in the
9873 <package>sensible-utils</package> package that check the EDITOR
9874 and PAGER variables and launch the appropriate program, and fall
9875 back to <file>/usr/bin/editor</file>
9876 and <file>/usr/bin/pager</file> if the variable is not set.
9877 </p>
9880 A program may also use the VISUAL environment variable to
9881 determine the user's choice of editor. If it exists, it
9882 should take precedence over EDITOR. This is in fact what
9883 <file>/usr/bin/sensible-editor</file> does.
9884 </p>
9887 It is not required for a package to depend on
9888 <tt>editor</tt> and <tt>pager</tt>, nor is it required for a
9889 package to provide such virtual packages.<footnote>
9890 The Debian base system already provides an editor and a
9891 pager program.
9892 </footnote>
9893 </p>
9894 </sect>
9896 <sect id="web-appl">
9897 <heading>Web servers and applications</heading>
9900 This section describes the locations and URLs that should
9901 be used by all web servers and web applications in the
9902 Debian system.
9903 </p>
9906 <enumlist>
9907 <item>
9908 Cgi-bin executable files are installed in the
9909 directory
9910 <example compact="compact">
9911 /usr/lib/cgi-bin
9912 </example>
9913 or a subdirectory of that directory, and the script
9914 <example compact="compact">
9915 /usr/lib/cgi-bin/.../<var>cgi-bin-name</var>
9916 </example>
9917 should be referred to as
9918 <example compact="compact">
9919 http://localhost/cgi-bin/.../<var>cgi-bin-name</var>
9920 </example>
9921 </item>
9923 <item>
9924 <p>(Deleted)</p>
9925 </item>
9927 <item>
9928 <p>Access to images</p>
9930 It is recommended that images for a package be stored
9931 in <tt>/usr/share/images/<var>package</var></tt> and
9932 may be referred to through an alias <tt>/images/</tt>
9934 <example>
9935 http://localhost/images/&lt;package&gt;/&lt;filename&gt;
9936 </example>
9938 </p>
9939 </item>
9941 <item>
9942 <p>Web Document Root</p>
9945 Web Applications should try to avoid storing files in
9946 the Web Document Root. Instead they should use the
9947 /usr/share/doc/<var>package</var> directory for
9948 documents and register the Web Application via the
9949 <package>doc-base</package> package. If access to the
9950 web document root is unavoidable then use
9951 <example compact="compact">
9952 /var/www/html
9953 </example>
9954 as the Document Root. This might be just a symbolic
9955 link to the location where the system administrator
9956 has put the real document root.
9957 </p>
9958 </item>
9959 <item><p>Providing httpd and/or httpd-cgi</p>
9961 All web servers should provide the virtual package
9962 <tt>httpd</tt>. If a web server has CGI support it should
9963 provide <tt>httpd-cgi</tt> additionally.
9964 </p>
9966 All web applications which do not contain CGI scripts should
9967 depend on <tt>httpd</tt>, all those web applications which
9968 <tt>do</tt> contain CGI scripts, should depend on
9969 <tt>httpd-cgi</tt>.
9970 </p>
9971 </item>
9972 </enumlist>
9973 </p>
9974 </sect>
9976 <sect id="mail-transport-agents">
9977 <heading>Mail transport, delivery and user agents</heading>
9980 Debian packages which process electronic mail, whether mail
9981 user agents (MUAs) or mail transport agents (MTAs), must
9982 ensure that they are compatible with the configuration
9983 decisions below. Failure to do this may result in lost
9984 mail, broken <tt>From:</tt> lines, and other serious brain
9985 damage!
9986 </p>
9989 The mail spool is <file>/var/mail</file> and the interface to
9990 send a mail message is <file>/usr/sbin/sendmail</file> (as per
9991 the FHS). On older systems, the mail spool may be
9992 physically located in <file>/var/spool/mail</file>, but all
9993 access to the mail spool should be via the
9994 <file>/var/mail</file> symlink. The mail spool is part of the
9995 base system and not part of the MTA package.
9996 </p>
9999 All Debian MUAs, MTAs, MDAs and other mailbox accessing
10000 programs (such as IMAP daemons) must lock the mailbox in an
10001 NFS-safe way. This means that <tt>fcntl()</tt> locking must
10002 be combined with dot locking. To avoid deadlocks, a program
10003 should use <tt>fcntl()</tt> first and dot locking after
10004 this, or alternatively implement the two locking methods in
10005 a non blocking way<footnote>
10006 If it is not possible to establish both locks, the
10007 system shouldn't wait for the second lock to be
10008 established, but remove the first lock, wait a (random)
10009 time, and start over locking again.
10010 </footnote>. Using the functions <tt>maillock</tt> and
10011 <tt>mailunlock</tt> provided by the
10012 <tt>liblockfile*</tt> packages is the recommended way to
10013 accomplish this.
10014 </p>
10017 Mailboxes are generally either mode 600 and owned by
10018 <var>user</var> or mode 660 and owned by
10019 <tt><var>user</var>:mail</tt><footnote>
10020 There are two traditional permission schemes for mail spools:
10021 mode 600 with all mail delivery done by processes running as
10022 the destination user, or mode 660 and owned by group mail with
10023 mail delivery done by a process running as a system user in
10024 group mail. Historically, Debian required mode 660 mail
10025 spools to enable the latter model, but that model has become
10026 increasingly uncommon and the principle of least privilege
10027 indicates that mail systems that use the first model should
10028 use permissions of 600. If delivery to programs is permitted,
10029 it's easier to keep the mail system secure if the delivery
10030 agent runs as the destination user. Debian Policy therefore
10031 permits either scheme.
10032 </footnote>. The local system administrator may choose a
10033 different permission scheme; packages should not make
10034 assumptions about the permission and ownership of mailboxes
10035 unless required (such as when creating a new mailbox). A MUA
10036 may remove a mailbox (unless it has nonstandard permissions) in
10037 which case the MTA or another MUA must recreate it if needed.
10038 </p>
10041 The mail spool is 2775 <tt>root:mail</tt>, and MUAs should
10042 be setgid mail to do the locking mentioned above (and
10043 must obviously avoid accessing other users' mailboxes
10044 using this privilege).</p>
10047 <file>/etc/aliases</file> is the source file for the system mail
10048 aliases (e.g., postmaster, usenet, etc.), it is the one
10049 which the sysadmin and <prgn>postinst</prgn> scripts may
10050 edit. After <file>/etc/aliases</file> is edited the program or
10051 human editing it must call <prgn>newaliases</prgn>. All MTA
10052 packages must come with a <prgn>newaliases</prgn> program,
10053 even if it does nothing, but older MTA packages did not do
10054 this so programs should not fail if <prgn>newaliases</prgn>
10055 cannot be found. Note that because of this, all MTA
10056 packages must have <tt>Provides</tt>, <tt>Conflicts</tt> and
10057 <tt>Replaces: mail-transport-agent</tt> control fields.
10058 </p>
10061 The convention of writing <tt>forward to
10062 <var>address</var></tt> in the mailbox itself is not
10063 supported. Use a <tt>.forward</tt> file instead.</p>
10066 The <prgn>rmail</prgn> program used by UUCP
10067 for incoming mail should be <file>/usr/sbin/rmail</file>.
10068 Likewise, <prgn>rsmtp</prgn>, for receiving
10069 batch-SMTP-over-UUCP, should be <file>/usr/sbin/rsmtp</file> if it
10070 is supported.</p>
10073 If your package needs to know what hostname to use on (for
10074 example) outgoing news and mail messages which are generated
10075 locally, you should use the file <file>/etc/mailname</file>. It
10076 will contain the portion after the username and <tt>@</tt>
10077 (at) sign for email addresses of users on the machine
10078 (followed by a newline).
10079 </p>
10082 Such a package should check for the existence of this file
10083 when it is being configured. If it exists, it should be
10084 used without comment, although an MTA's configuration script
10085 may wish to prompt the user even if it finds that this file
10086 exists. If the file does not exist, the package should
10087 prompt the user for the value (preferably using
10088 <prgn>debconf</prgn>) and store it in <file>/etc/mailname</file>
10089 as well as using it in the package's configuration. The
10090 prompt should make it clear that the name will not just be
10091 used by that package. For example, in this situation the
10092 <tt>inn</tt> package could say something like:
10093 <example compact="compact">
10094 Please enter the "mail name" of your system. This is the
10095 hostname portion of the address to be shown on outgoing
10096 news and mail messages. The default is
10097 <var>syshostname</var>, your system's host name. Mail
10098 name ["<var>syshostname</var>"]:
10099 </example>
10100 where <var>syshostname</var> is the output of <tt>hostname
10101 --fqdn</tt>.
10102 </p>
10103 </sect>
10105 <sect>
10106 <heading>News system configuration</heading>
10109 All the configuration files related to the NNTP (news)
10110 servers and clients should be located under
10111 <file>/etc/news</file>.</p>
10114 There are some configuration issues that apply to a number
10115 of news clients and server packages on the machine. These
10116 are:
10118 <taglist>
10119 <tag><file>/etc/news/organization</file></tag>
10120 <item>
10121 A string which should appear as the
10122 organization header for all messages posted
10123 by NNTP clients on the machine
10124 </item>
10126 <tag><file>/etc/news/server</file></tag>
10127 <item>
10128 Contains the FQDN of the upstream NNTP
10129 server, or localhost if the local machine is
10130 an NNTP server.
10131 </item>
10132 </taglist>
10134 Other global files may be added as required for cross-package news
10135 configuration.
10136 </p>
10137 </sect>
10140 <sect>
10141 <heading>Programs for the X Window System</heading>
10143 <sect1>
10144 <heading>Providing X support and package priorities</heading>
10147 Programs that can be configured with support for the X
10148 Window System must be configured to do so and must declare
10149 any package dependencies necessary to satisfy their
10150 runtime requirements when using the X Window System. If
10151 such a package is of higher priority than the X packages
10152 on which it depends, it is required that either the
10153 X-specific components be split into a separate package, or
10154 that an alternative version of the package, which includes
10155 X support, be provided, or that the package's priority be
10156 lowered.
10157 </p>
10158 </sect1>
10160 <sect1>
10161 <heading>Packages providing an X server</heading>
10164 Packages that provide an X server that, directly or
10165 indirectly, communicates with real input and display
10166 hardware should declare in their <tt>Provides</tt> control
10167 field that they provide the virtual
10168 package <tt>xserver</tt>.<footnote>
10169 This implements current practice, and provides an
10170 actual policy for usage of the <tt>xserver</tt>
10171 virtual package which appears in the virtual packages
10172 list. In a nutshell, X servers that interface
10173 directly with the display and input hardware or via
10174 another subsystem (e.g., GGI) should provide
10175 <tt>xserver</tt>. Things like <tt>Xvfb</tt>,
10176 <tt>Xnest</tt>, and <tt>Xprt</tt> should not.
10177 </footnote>
10178 </p>
10179 </sect1>
10181 <sect1>
10182 <heading>Packages providing a terminal emulator</heading>
10185 Packages that provide a terminal emulator for the X Window
10186 System which meet the criteria listed below should declare in
10187 their <tt>Provides</tt> control field that they provide the
10188 virtual package <tt>x-terminal-emulator</tt>. They should
10189 also register themselves as an alternative for
10190 <file>/usr/bin/x-terminal-emulator</file>, with a priority of
10191 20. That alternative should have a slave alternative
10192 for <file>/usr/share/man/man1/x-terminal-emulator.1.gz</file>
10193 pointing to the corresponding manual page.
10194 </p>
10197 To be an <tt>x-terminal-emulator</tt>, a program must:
10198 <list compact="compact">
10199 <item>
10200 Be able to emulate a DEC VT100 terminal, or a
10201 compatible terminal.
10202 </item>
10204 <item>
10205 Support the command-line option <tt>-e
10206 <var>command</var></tt>, which creates a new
10207 terminal window<footnote>
10208 "New terminal window" does not necessarily mean
10209 a new top-level X window directly parented by
10210 the window manager; it could, if the terminal
10211 emulator application were so coded, be a new
10212 "view" in a multiple-document interface (MDI).
10213 </footnote>
10214 and runs the specified <var>command</var>,
10215 interpreting the entirety of the rest of the command
10216 line as a command to pass straight to exec, in the
10217 manner that <tt>xterm</tt> does.
10218 </item>
10220 <item>
10221 Support the command-line option <tt>-T
10222 <var>title</var></tt>, which creates a new terminal
10223 window with the window title <var>title</var>.
10224 </item>
10225 </list>
10226 </p>
10227 </sect1>
10229 <sect1>
10230 <heading>Packages providing a window manager</heading>
10233 Packages that provide a window manager should declare in
10234 their <tt>Provides</tt> control field that they provide the
10235 virtual package <tt>x-window-manager</tt>. They should also
10236 register themselves as an alternative for
10237 <file>/usr/bin/x-window-manager</file>, with a priority
10238 calculated as follows:
10239 <list compact="compact">
10240 <item>
10241 Start with a priority of 20.
10242 </item>
10244 <item>
10245 If the window manager supports the Debian menu
10246 system, add 20 points if this support is available
10247 in the package's default configuration (i.e., no
10248 configuration files belonging to the system or user
10249 have to be edited to activate the feature); if
10250 configuration files must be modified, add only 10
10251 points.
10252 </p>
10253 </item>
10255 <item>
10256 If the window manager complies with <url
10257 id="http://www.freedesktop.org/wiki/Specifications/wm-spec"
10258 name="The Window Manager Specification Project">,
10259 written by the <url id="http://www.freedesktop.org/wiki/"
10260 name="Free Desktop Group">, add 40 points.
10261 </item>
10263 <item>
10264 If the window manager permits the X session to be
10265 restarted using a <em>different</em> window manager
10266 (without killing the X server) in its default
10267 configuration, add 10 points; otherwise add none.
10268 </item>
10269 </list>
10270 That alternative should have a slave alternative
10271 for <file>/usr/share/man/man1/x-window-manager.1.gz</file>
10272 pointing to the corresponding manual page.
10273 </p>
10274 </sect1>
10276 <sect1>
10277 <heading>Packages providing fonts</heading>
10280 Packages that provide fonts for the X Window
10281 System<footnote>
10282 For the purposes of Debian Policy, a "font for the X
10283 Window System" is one which is accessed via X protocol
10284 requests. Fonts for the Linux console, for PostScript
10285 renderer, or any other purpose, do not fit this
10286 definition. Any tool which makes such fonts available
10287 to the X Window System, however, must abide by this
10288 font policy.
10289 </footnote>
10290 must do a number of things to ensure that they are both
10291 available without modification of the X or font server
10292 configuration, and that they do not corrupt files used by
10293 other font packages to register information about
10294 themselves.
10295 <enumlist>
10296 <item>
10297 Fonts of any type supported by the X Window System
10298 must be in a separate binary package from any
10299 executables, libraries, or documentation (except
10300 that specific to the fonts shipped, such as their
10301 license information). If one or more of the fonts
10302 so packaged are necessary for proper operation of
10303 the package with which they are associated the font
10304 package may be Recommended; if the fonts merely
10305 provide an enhancement, a Suggests relationship may
10306 be used. Packages must not Depend on font
10307 packages.<footnote>
10308 This is because the X server may retrieve fonts
10309 from the local file system or over the network
10310 from an X font server; the Debian package system
10311 is empowered to deal only with the local
10312 file system.
10313 </footnote>
10314 </item>
10316 <item>
10317 BDF fonts must be converted to PCF fonts with the
10318 <prgn>bdftopcf</prgn> utility (available in the
10319 <tt>xfonts-utils</tt> package, <prgn>gzip</prgn>ped, and
10320 placed in a directory that corresponds to their
10321 resolution:
10322 <list compact="compact">
10323 <item>
10324 100 dpi fonts must be placed in
10325 <file>/usr/share/fonts/X11/100dpi/</file>.
10326 </item>
10328 <item>
10329 75 dpi fonts must be placed in
10330 <file>/usr/share/fonts/X11/75dpi/</file>.
10331 </item>
10333 <item>
10334 Character-cell fonts, cursor fonts, and other
10335 low-resolution fonts must be placed in
10336 <file>/usr/share/fonts/X11/misc/</file>.
10337 </item>
10338 </list>
10339 </item>
10341 <item>
10342 Type 1 fonts must be placed in
10343 <file>/usr/share/fonts/X11/Type1/</file>. If font
10344 metric files are available, they must be placed here
10345 as well.
10346 </item>
10348 <item>
10349 Subdirectories of <file>/usr/share/fonts/X11/</file>
10350 other than those listed above must be neither
10351 created nor used. (The <file>PEX</file>, <file>CID</file>,
10352 <file>Speedo</file>, and <file>cyrillic</file> directories
10353 are excepted for historical reasons, but installation of
10354 files into these directories remains discouraged.)
10355 </item>
10357 <item>
10358 Font packages may, instead of placing files directly
10359 in the X font directories listed above, provide
10360 symbolic links in that font directory pointing to
10361 the files' actual location in the filesystem. Such
10362 a location must comply with the FHS.
10363 </item>
10365 <item>
10366 Font packages should not contain both 75dpi and
10367 100dpi versions of a font. If both are available,
10368 they should be provided in separate binary packages
10369 with <tt>-75dpi</tt> or <tt>-100dpi</tt> appended to
10370 the names of the packages containing the
10371 corresponding fonts.
10372 </item>
10374 <item>
10375 Fonts destined for the <file>misc</file> subdirectory
10376 should not be included in the same package as 75dpi
10377 or 100dpi fonts; instead, they should be provided in
10378 a separate package with <tt>-misc</tt> appended to
10379 its name.
10380 </item>
10382 <item>
10383 Font packages must not provide the files
10384 <file>fonts.dir</file>, <file>fonts.alias</file>, or
10385 <file>fonts.scale</file> in a font directory:
10386 <list>
10387 <item>
10388 <file>fonts.dir</file> files must not be provided at all.
10389 </item>
10391 <item>
10392 <file>fonts.alias</file> and <file>fonts.scale</file>
10393 files, if needed, should be provided in the
10394 directory
10395 <file>/etc/X11/fonts/<var>fontdir</var>/<var>package</var>.<var>extension</var></file>,
10396 where <var>fontdir</var> is the name of the
10397 subdirectory of
10398 <file>/usr/share/fonts/X11/</file> where the
10399 package's corresponding fonts are stored
10400 (e.g., <tt>75dpi</tt> or <tt>misc</tt>),
10401 <var>package</var> is the name of the package
10402 that provides these fonts, and
10403 <var>extension</var> is either <tt>scale</tt>
10404 or <tt>alias</tt>, whichever corresponds to
10405 the file contents.
10406 </item>
10407 </list>
10408 </item>
10410 <item>
10411 Font packages must declare a dependency on
10412 <tt>xfonts-utils</tt> in their <tt>Depends</tt>
10413 or <tt>Pre-Depends</tt> control field.
10414 </item>
10416 <item>
10417 Font packages that provide one or more
10418 <file>fonts.scale</file> files as described above must
10419 invoke <prgn>update-fonts-scale</prgn> on each
10420 directory into which they installed fonts
10421 <em>before</em> invoking
10422 <prgn>update-fonts-dir</prgn> on that directory.
10423 This invocation must occur in both the
10424 <prgn>postinst</prgn> (for all arguments) and
10425 <prgn>postrm</prgn> (for all arguments except
10426 <tt>upgrade</tt>) scripts.
10427 </item>
10429 <item>
10430 Font packages that provide one or more
10431 <file>fonts.alias</file> files as described above must
10432 invoke <prgn>update-fonts-alias</prgn> on each
10433 directory into which they installed fonts. This
10434 invocation must occur in both the
10435 <prgn>postinst</prgn> (for all arguments) and
10436 <prgn>postrm</prgn> (for all arguments except
10437 <tt>upgrade</tt>) scripts.
10438 </item>
10440 <item>
10441 Font packages must invoke
10442 <prgn>update-fonts-dir</prgn> on each directory into
10443 which they installed fonts. This invocation must
10444 occur in both the <prgn>postinst</prgn> (for all
10445 arguments) and <prgn>postrm</prgn> (for all
10446 arguments except <tt>upgrade</tt>) scripts.
10447 </item>
10449 <item>
10450 Font packages must not provide alias names for the
10451 fonts they include which collide with alias names
10452 already in use by fonts already packaged.
10453 </item>
10455 <item>
10456 Font packages must not provide fonts with the same
10457 XLFD registry name as another font already packaged.
10458 </item>
10459 </enumlist>
10460 </p>
10461 </sect1>
10463 <sect1 id="appdefaults">
10464 <heading>Application defaults files</heading>
10467 Application defaults files must be installed in the
10468 directory <file>/etc/X11/app-defaults/</file> (use of a
10469 localized subdirectory of <file>/etc/X11/</file> as described
10470 in the <em>X Toolkit Intrinsics - C Language
10471 Interface</em> manual is also permitted). They must be
10472 registered as <tt>conffile</tt>s or handled as
10473 configuration files.
10474 </p>
10477 Customization of programs' X resources may also be
10478 supported with the provision of a file with the same name
10479 as that of the package placed in
10480 the <file>/etc/X11/Xresources/</file> directory, which
10481 must be registered as a <tt>conffile</tt> or handled as a
10482 configuration file.<footnote>
10483 Note that this mechanism is not the same as using
10484 app-defaults; app-defaults are tied to the client
10485 binary on the local file system, whereas X resources
10486 are stored in the X server and affect all connecting
10487 clients.
10488 </footnote>
10489 </p>
10490 </sect1>
10492 <sect1>
10493 <heading>Installation directory issues</heading>
10496 Historically, packages using the X Window System used a
10497 separate set of installation directories from other packages.
10498 This practice has been discontinued and packages using the X
10499 Window System should now generally be installed in the same
10500 directories as any other package. Specifically, packages must
10501 not install files under the <file>/usr/X11R6/</file> directory
10502 and the <file>/usr/X11R6/</file> directory hierarchy should be
10503 regarded as obsolete.
10504 </p>
10507 Include files previously installed under
10508 <file>/usr/X11R6/include/X11/</file> should be installed into
10509 <file>/usr/include/X11/</file>. For files previously
10510 installed into subdirectories of
10511 <file>/usr/X11R6/lib/X11/</file>, package maintainers should
10512 determine if subdirectories of <file>/usr/lib/</file> and
10513 <file>/usr/share/</file> can be used. If not, a subdirectory
10514 of <file>/usr/lib/X11/</file> should be used.
10515 </p>
10518 Configuration files for window, display, or session managers
10519 or other applications that are tightly integrated with the X
10520 Window System may be placed in a subdirectory
10521 of <file>/etc/X11/</file> corresponding to the package name.
10522 Other X Window System applications should use
10523 the <file>/etc/</file> directory unless otherwise mandated by
10524 policy (such as for <ref id="appdefaults">).
10525 </p>
10526 </sect1>
10527 </sect>
10529 <sect id="perl">
10530 <heading>Perl programs and modules</heading>
10533 Perl programs and modules should follow the current Perl policy.
10534 </p>
10537 The Perl policy can be found in the <tt>perl-policy</tt>
10538 files in the <tt>debian-policy</tt> package.
10539 It is also available from the Debian web mirrors at
10540 <tt><url name="/doc/packaging-manuals/perl-policy/"
10541 id="http://www.debian.org/doc/packaging-manuals/perl-policy/"></tt>.
10542 </p>
10543 </sect>
10545 <sect id="emacs">
10546 <heading>Emacs lisp programs</heading>
10549 Please refer to the "Debian Emacs Policy" for details of how to
10550 package emacs lisp programs.
10551 </p>
10554 The Emacs policy is available in
10555 <file>debian-emacs-policy.gz</file> of the
10556 <package>emacsen-common</package> package.
10557 It is also available from the Debian web mirrors at
10558 <tt><url name="/doc/packaging-manuals/debian-emacs-policy"
10559 id="http://www.debian.org/doc/packaging-manuals/debian-emacs-policy"></tt>.
10560 </p>
10561 </sect>
10563 <sect>
10564 <heading>Games</heading>
10567 The permissions on <file>/var/games</file> are mode 755, owner
10568 <tt>root</tt> and group <tt>root</tt>.
10569 </p>
10572 Each game decides on its own security policy.</p>
10575 Games which require protected, privileged access to
10576 high-score files, saved games, etc., may be made
10577 set-<em>group</em>-id (mode 2755) and owned by
10578 <tt>root:games</tt>, and use files and directories with
10579 appropriate permissions (770 <tt>root:games</tt>, for
10580 example). They must not be made
10581 set-<em>user</em>-id, as this causes security problems. (If
10582 an attacker can subvert any set-user-id game they can
10583 overwrite the executable of any other, causing other players
10584 of these games to run a Trojan horse program. With a
10585 set-group-id game the attacker only gets access to less
10586 important game data, and if they can get at the other
10587 players' accounts at all it will take considerably more
10588 effort.)</p>
10591 Some packages, for example some fortune cookie programs, are
10592 configured by the upstream authors to install with their
10593 data files or other static information made unreadable so
10594 that they can only be accessed through set-id programs
10595 provided. You should not do this in a Debian package: anyone can
10596 download the <file>.deb</file> file and read the data from it,
10597 so there is no point making the files unreadable. Not
10598 making the files unreadable also means that you don't have
10599 to make so many programs set-id, which reduces the risk of a
10600 security hole.</p>
10603 As described in the FHS, binaries of games should be
10604 installed in the directory <file>/usr/games</file>. This also
10605 applies to games that use the X Window System. Manual pages
10606 for games (X and non-X games) should be installed in
10607 <file>/usr/share/man/man6</file>.</p>
10608 </sect>
10609 </chapt>
10612 <chapt id="docs">
10613 <heading>Documentation</heading>
10615 <sect>
10616 <heading>Manual pages</heading>
10619 You should install manual pages in <prgn>nroff</prgn> source
10620 form, in appropriate places under <file>/usr/share/man</file>.
10621 You should only use sections 1 to 9 (see the FHS for more
10622 details). You must not install a pre-formatted "cat page".
10623 </p>
10626 Each program, utility, and function should have an
10627 associated manual page included in the same package. It is
10628 suggested that all configuration files also have a manual
10629 page included as well. Manual pages for protocols and other
10630 auxiliary things are optional.
10631 </p>
10634 If no manual page is available, this is considered as a bug
10635 and should be reported to the Debian Bug Tracking System (the
10636 maintainer of the package is allowed to write this bug report
10637 themselves, if they so desire). Do not close the bug report
10638 until a proper man page is available.<footnote>
10639 It is not very hard to write a man page. See the
10640 <url id="http://www.schweikhardt.net/man_page_howto.html"
10641 name="Man-Page-HOWTO">,
10642 <manref name="man" section="7">, the examples created
10643 by <prgn>dh_make</prgn>, the helper
10644 program <prgn>help2man</prgn>, or the
10645 directory <file>/usr/share/doc/man-db/examples</file>.
10646 </footnote>
10647 </p>
10650 You may forward a complaint about a missing man page to the
10651 upstream authors, and mark the bug as forwarded in the
10652 Debian bug tracking system. Even though the GNU Project do
10653 not in general consider the lack of a man page to be a bug,
10654 we do; if they tell you that they don't consider it a bug
10655 you should leave the bug in our bug tracking system open
10656 anyway.
10657 </p>
10660 Manual pages should be installed compressed using <tt>gzip -9</tt>.
10661 </p>
10664 If one man page needs to be accessible via several names it
10665 is better to use a symbolic link than the <file>.so</file>
10666 feature, but there is no need to fiddle with the relevant
10667 parts of the upstream source to change from <file>.so</file> to
10668 symlinks: don't do it unless it's easy. You should not
10669 create hard links in the manual page directories, nor put
10670 absolute filenames in <file>.so</file> directives. The filename
10671 in a <file>.so</file> in a man page should be relative to the
10672 base of the man page tree (usually
10673 <file>/usr/share/man</file>). If you do not create any links
10674 (whether symlinks, hard links, or <tt>.so</tt> directives)
10675 in the file system to the alternate names of the man page,
10676 then you should not rely on <prgn>man</prgn> finding your
10677 man page under those names based solely on the information in
10678 the man page's header.<footnote>
10679 Supporting this in <prgn>man</prgn> often requires
10680 unreasonable processing time to find a manual page or to
10681 report that none exists, and moves knowledge into man's
10682 database that would be better left in the file system.
10683 This support is therefore deprecated and will cease to
10684 be present in the future.
10685 </footnote>
10686 </p>
10689 Manual pages in locale-specific subdirectories of
10690 <file>/usr/share/man</file> should use either UTF-8 or the usual
10691 legacy encoding for that language (normally the one corresponding
10692 to the shortest relevant locale name in
10693 <file>/usr/share/i18n/SUPPORTED</file>). For example, pages under
10694 <file>/usr/share/man/fr</file> should use either UTF-8 or
10695 ISO-8859-1.<footnote>
10696 <prgn>man</prgn> will automatically detect whether UTF-8 is in
10697 use. In future, all manual pages will be required to use
10698 UTF-8.
10699 </footnote>
10700 </p>
10703 A country name (the <tt>DE</tt> in <tt>de_DE</tt>) should not be
10704 included in the subdirectory name unless it indicates a
10705 significant difference in the language, as this excludes
10706 speakers of the language in other countries.<footnote>
10707 At the time of writing, Chinese and Portuguese are the main
10708 languages with such differences, so <file>pt_BR</file>,
10709 <file>zh_CN</file>, and <file>zh_TW</file> are all allowed.
10710 </footnote>
10711 </p>
10714 If a localized version of a manual page is provided, it should
10715 either be up-to-date or it should be obvious to the reader that
10716 it is outdated and the original manual page should be used
10717 instead. This can be done either by a note at the beginning of
10718 the manual page or by showing the missing or changed portions in
10719 the original language instead of the target language.
10720 </p>
10721 </sect>
10723 <sect>
10724 <heading>Info documents</heading>
10727 Info documents should be installed in <file>/usr/share/info</file>.
10728 They should be compressed with <tt>gzip -9</tt>.
10729 </p>
10732 The <prgn>install-info</prgn> program maintains a directory of
10733 installed info documents in <file>/usr/share/info/dir</file> for the
10734 use of info readers. This file must not be included in packages
10735 other than <package>install-info</package>.
10736 </p>
10739 <prgn>install-info</prgn> is automatically invoked when
10740 appropriate using dpkg triggers. Packages other than
10741 <package>install-info</package> <em>should not</em> invoke
10742 <prgn>install-info</prgn> directly and <em>should not</em>
10743 depend on, recommend, or suggest <package>install-info</package>
10744 for this purpose.
10745 </p>
10748 Info readers requiring the <file>/usr/share/info/dir</file> file
10749 should depend on <package>install-info</package>.
10750 </p>
10753 Info documents should contain section and directory entry
10754 information in the document for the use
10755 of <prgn>install-info</prgn>. The section should be specified
10756 via a line starting with <tt>INFO-DIR-SECTION</tt> followed by a
10757 space and the section of this info page. The directory entry or
10758 entries should be included between
10759 a <tt>START-INFO-DIR-ENTRY</tt> line and
10760 an <tt>END-INFO-DIR-ENTRY</tt> line. For example:
10761 <example>
10762 INFO-DIR-SECTION Individual utilities
10763 START-INFO-DIR-ENTRY
10764 * example: (example). An example info directory entry.
10765 END-INFO-DIR-ENTRY
10766 </example>
10767 To determine which section to use, you should look
10768 at <file>/usr/share/info/dir</file> on your system and choose
10769 the most relevant (or create a new section if none of the
10770 current sections are relevant).<footnote>
10771 Normally, info documents are generated from Texinfo source.
10772 To include this information in the generated info document, if
10773 it is absent, add commands like:
10774 <example>
10775 @dircategory Individual utilities
10776 @direntry
10777 * example: (example). An example info directory entry.
10778 @end direntry
10779 </example>
10780 to the Texinfo source of the document and ensure that the info
10781 documents are rebuilt from source during the package build.
10782 </footnote>
10783 </p>
10784 </sect>
10786 <sect id="docs-additional">
10787 <heading>Additional documentation</heading>
10790 Any additional documentation that comes with the package may be
10791 installed at the discretion of the package maintainer. It is
10792 often a good idea to include text information files
10793 (<file>README</file>s, FAQs, and so forth) that come with the
10794 source package in the binary package. However, you don't need
10795 to install the instructions for building and installing the
10796 package, of course!
10797 </p>
10800 Plain text documentation should be compressed with <tt>gzip
10801 -9</tt> unless it is small.
10802 </p>
10805 If a package comes with large amounts of documentation that many
10806 users of the package will not require, you should create a
10807 separate binary package to contain it so that it does not take
10808 up disk space on the machines of users who do not need or want
10809 it installed. As a special case of this rule, shared library
10810 documentation of any appreciable size should always be packaged
10811 with the library development package (<ref id="sharedlibs-dev">)
10812 or in a separate documentation package, since shared libraries
10813 are frequently installed as dependencies of other packages by
10814 users who have little interest in documentation of the library
10815 itself. The documentation package for the
10816 package <var>package</var> is conventionally
10817 named <var>package</var>-doc
10818 (or <var>package</var>-doc-<var>language-code</var> if there are
10819 separate documentation packages for multiple languages).
10820 </p>
10823 Additional documentation included in the package should be
10824 installed under <file>/usr/share/doc/<var>package</var></file>.
10825 If the documentation is packaged separately,
10826 as <var>package</var>-doc for example, it may be installed under
10827 either that path or into the documentation directory for the
10828 separate documentation package
10829 (<file>/usr/share/doc/<var>package</var>-doc</file> in this
10830 example). However, installing the documentation into the
10831 documentation directory of the main package is preferred since
10832 it is independent of the packaging method and will be easier for
10833 users to find.
10834 </p>
10837 Any separate package providing documentation must still install
10838 standard documentation files in its
10839 own <file>/usr/share/doc</file> directory as specified in the
10840 rest of this policy. See, for example, <ref id="copyrightfile">
10841 and <ref id="changelogs">.
10842 </p>
10845 Packages must not require the existence of any files in
10846 <file>/usr/share/doc/</file> in order to function
10847 <footnote>
10848 The system administrator should be able to delete files
10849 in <file>/usr/share/doc/</file> without causing any programs
10850 to break.
10851 </footnote>. Any files that are used or read by programs but
10852 are also useful as stand alone documentation should be installed
10853 elsewhere, such as
10854 under <file>/usr/share/<var>package</var>/</file>, and then
10855 included via symbolic links
10856 in <file>/usr/share/doc/<var>package</var></file>.
10857 </p>
10860 <file>/usr/share/doc/<var>package</var></file> may be a symbolic
10861 link to another directory in <file>/usr/share/doc</file> only if
10862 the two packages both come from the same source and the
10863 first package Depends on the second.<footnote>
10865 Please note that this does not override the section on
10866 changelog files below, so the file
10867 <file>/usr/share/doc/<var>package</var>/changelog.Debian.gz</file>
10868 must refer to the changelog for the current version of
10869 <var>package</var> in question. In practice, this means
10870 that the sources of the target and the destination of the
10871 symlink must be the same (same source package and
10872 version).
10873 </p>
10874 </footnote>
10875 </p>
10876 </sect>
10878 <sect>
10879 <heading>Preferred documentation formats</heading>
10882 The unification of Debian documentation is being carried out
10883 via HTML.</p>
10886 If the package comes with extensive documentation in a
10887 markup format that can be converted to various other formats
10888 you should if possible ship HTML versions in a binary
10889 package.<footnote>
10890 Rationale: The important thing here is that HTML
10891 documentation should be available from <em>some</em>
10892 binary package.
10893 </footnote>
10894 The documentation must be installed as specified in
10895 <ref id="docs-additional">.
10896 </p>
10899 Other formats such as PostScript may be provided at the
10900 package maintainer's discretion.
10901 </p>
10902 </sect>
10904 <sect id="copyrightfile">
10905 <heading>Copyright information</heading>
10908 Every package must be accompanied by a verbatim copy of its
10909 copyright information and distribution license in the file
10910 <file>/usr/share/doc/<var>package</var>/copyright</file>. This
10911 file must neither be compressed nor be a symbolic link.
10912 </p>
10915 In addition, the copyright file must say where the upstream
10916 sources (if any) were obtained, and should name the original
10917 authors.
10918 </p>
10921 Packages in the <em>contrib</em> or <em>non-free</em> archive
10922 areas should state in the copyright file that the package is not
10923 part of the Debian distribution and briefly explain why.
10924 </p>
10927 A copy of the file which will be installed in
10928 <file>/usr/share/doc/<var>package</var>/copyright</file> should
10929 be in <file>debian/copyright</file> in the source package.
10930 </p>
10933 <file>/usr/share/doc/<var>package</var></file> may be a symbolic
10934 link to another directory in <file>/usr/share/doc</file> only if
10935 the two packages both come from the same source and the
10936 first package Depends on the second. These rules are important
10937 because <file>copyright</file> files must be extractable by
10938 mechanical means.
10939 </p>
10942 Packages distributed under the Apache license (version 2.0), the
10943 Artistic license, the GNU GPL (versions 1, 2, or 3), the GNU
10944 LGPL (versions 2, 2.1, or 3), the GNU FDL (versions 1.2 or 1.3),
10945 and the Mozilla Public License (version 1.1 or 2.0) should refer
10946 to the corresponding files under
10947 <file>/usr/share/common-licenses</file>,<footnote>
10949 In particular,
10950 <file>/usr/share/common-licenses/Apache-2.0</file>,
10951 <file>/usr/share/common-licenses/Artistic</file>,
10952 <file>/usr/share/common-licenses/GPL-1</file>,
10953 <file>/usr/share/common-licenses/GPL-2</file>,
10954 <file>/usr/share/common-licenses/GPL-3</file>,
10955 <file>/usr/share/common-licenses/LGPL-2</file>,
10956 <file>/usr/share/common-licenses/LGPL-2.1</file>,
10957 <file>/usr/share/common-licenses/LGPL-3</file>,
10958 <file>/usr/share/common-licenses/GFDL-1.2</file>,
10959 <file>/usr/share/common-licenses/GFDL-1.3</file>,
10960 <file>/usr/share/common-licenses/MPL-1.1</file>, and
10961 <file>/usr/share/common-licenses/MPL-2.0</file>
10962 respectively. The University of California BSD license is
10963 also included in <package>base-files</package> as
10964 <file>/usr/share/common-licenses/BSD</file>, but given the
10965 brevity of this license, its specificity to code whose
10966 copyright is held by the Regents of the University of
10967 California, and the frequency of minor wording changes, its
10968 text should be included in the copyright file rather than
10969 referencing this file.
10970 </p>
10971 </footnote> rather than quoting them in the copyright
10972 file.
10973 </p>
10976 You should not use the copyright file as a general <file>README</file>
10977 file. If your package has such a file it should be
10978 installed in <file>/usr/share/doc/<var>package</var>/README</file> or
10979 <file>README.Debian</file> or some other appropriate place.
10980 </p>
10983 All copyright files must be encoded in UTF-8.
10984 </p>
10986 <sect1 id="copyrightformat">
10987 <heading>Machine-readable copyright information</heading>
10990 A specification for a standard, machine-readable format
10991 for <file>debian/copyright</file> files is maintained as part
10992 of the <package>debian-policy</package> package. This
10993 document may be found in the <file>copyright-format</file>
10994 files in the <package>debian-policy</package> package. It is
10995 also available from the Debian web mirrors at
10996 <tt><url name="/doc/packaging-manuals/copyright-format/1.0/"
10997 id="http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/"></tt>.
10998 </p>
11001 Use of this format is optional.
11002 </p>
11003 </sect1>
11004 </sect>
11006 <sect>
11007 <heading>Examples</heading>
11010 Any examples (configurations, source files, whatever),
11011 should be installed in a directory
11012 <file>/usr/share/doc/<var>package</var>/examples</file>. These
11013 files should not be referenced by any program: they're there
11014 for the benefit of the system administrator and users as
11015 documentation only. Architecture-specific example files
11016 should be installed in a directory
11017 <file>/usr/lib/<var>package</var>/examples</file> with symbolic
11018 links to them from
11019 <file>/usr/share/doc/<var>package</var>/examples</file>, or the
11020 latter directory itself may be a symbolic link to the
11021 former.
11022 </p>
11025 If the purpose of a package is to provide examples, then the
11026 example files may be installed into
11027 <file>/usr/share/doc/<var>package</var></file>.
11028 </p>
11029 </sect>
11031 <sect id="changelogs">
11032 <heading>Changelog files</heading>
11035 Packages that are not Debian-native must contain a
11036 compressed copy of the <file>debian/changelog</file> file from
11037 the Debian source tree in
11038 <file>/usr/share/doc/<var>package</var></file> with the name
11039 <file>changelog.Debian.gz</file>.
11040 </p>
11043 If an upstream changelog is available, it should be accessible as
11044 <file>/usr/share/doc/<var>package</var>/changelog.gz</file> in
11045 plain text. If the upstream changelog is distributed in
11046 HTML, it should be made available in that form as
11047 <file>/usr/share/doc/<var>package</var>/changelog.html.gz</file>
11048 and a plain text <file>changelog.gz</file> should be generated
11049 from it using, for example, <tt>lynx -dump -nolist</tt>. If
11050 the upstream changelog files do not already conform to this
11051 naming convention, then this may be achieved either by
11052 renaming the files, or by adding a symbolic link, at the
11053 maintainer's discretion.<footnote>
11054 Rationale: People should not have to look in places for
11055 upstream changelogs merely because they are given
11056 different names or are distributed in HTML format.
11057 </footnote>
11058 </p>
11061 All of these files should be installed compressed using
11062 <tt>gzip -9</tt>, as they will become large with time even
11063 if they start out small.
11064 </p>
11067 If the package has only one changelog which is used both as
11068 the Debian changelog and the upstream one because there is
11069 no separate upstream maintainer then that changelog should
11070 usually be installed as
11071 <file>/usr/share/doc/<var>package</var>/changelog.gz</file>; if
11072 there is a separate upstream maintainer, but no upstream
11073 changelog, then the Debian changelog should still be called
11074 <file>changelog.Debian.gz</file>.
11075 </p>
11078 For details about the format and contents of the Debian
11079 changelog file, please see <ref id="dpkgchangelog">.
11080 </p>
11081 </sect>
11082 </chapt>
11084 <appendix id="pkg-scope">
11085 <heading>Introduction and scope of these appendices</heading>
11088 These appendices are taken essentially verbatim from the
11089 now-deprecated Packaging Manual, version 3.2.1.0. They are
11090 the chapters which are likely to be of use to package
11091 maintainers and which have not already been included in the
11092 policy document itself. Most of these sections are very likely
11093 not relevant to policy; they should be treated as
11094 documentation for the packaging system. Please note that these
11095 appendices are included for convenience, and for historical
11096 reasons: they used to be part of policy package, and they have
11097 not yet been incorporated into dpkg documentation. However,
11098 they still have value, and hence they are presented here.
11099 </p>
11102 They have not yet been checked to ensure that they are
11103 compatible with the contents of policy, and if there are any
11104 contradictions, the version in the main policy document takes
11105 precedence. The remaining chapters of the old Packaging
11106 Manual have also not been read in detail to ensure that there
11107 are not parts which have been left out. Both of these will be
11108 done in due course.
11109 </p>
11112 Certain parts of the Packaging manual were integrated into the
11113 Policy Manual proper, and removed from the appendices. Links
11114 have been placed from the old locations to the new ones.
11115 </p>
11118 <prgn>dpkg</prgn> is a suite of programs for creating binary
11119 package files and installing and removing them on Unix
11120 systems.<footnote>
11121 <prgn>dpkg</prgn> is targeted primarily at Debian, but may
11122 work on or be ported to other systems.
11123 </footnote>
11124 </p>
11127 The binary packages are designed for the management of
11128 installed executable programs (usually compiled binaries) and
11129 their associated data, though source code examples and
11130 documentation are provided as part of some packages.</p>
11133 This manual describes the technical aspects of creating Debian
11134 binary packages (<file>.deb</file> files). It documents the
11135 behavior of the package management programs
11136 <prgn>dpkg</prgn>, <prgn>dselect</prgn> et al. and the way
11137 they interact with packages.</p>
11140 This manual does not go into detail about the options and
11141 usage of the package building and installation tools. It
11142 should therefore be read in conjunction with those programs'
11143 man pages.
11144 </p>
11147 The utility programs which are provided with <prgn>dpkg</prgn>
11148 not described in detail here, are documented in their man pages.
11149 </p>
11152 It is assumed that the reader is reasonably familiar with the
11153 <prgn>dpkg</prgn> System Administrators' manual.
11154 Unfortunately this manual does not yet exist.
11155 </p>
11158 The Debian version of the FSF's GNU hello program is provided as
11159 an example for people wishing to create Debian packages. However,
11160 while the examples are helpful, they do not replace the need to
11161 read and follow the Policy and Programmer's Manual.</p>
11162 </appendix>
11164 <appendix id="pkg-binarypkg">
11165 <heading>Binary packages (from old Packaging Manual)</heading>
11168 See <manref name="deb" section="5"> and <ref id="pkg-controlarea">.
11169 </p>
11171 <sect id="pkg-bincreating"><heading>Creating package files -
11172 <prgn>dpkg-deb</prgn>
11173 </heading>
11176 All manipulation of binary package files is done by
11177 <prgn>dpkg-deb</prgn>; it's the only program that has
11178 knowledge of the format. (<prgn>dpkg-deb</prgn> may be
11179 invoked by calling <prgn>dpkg</prgn>, as <prgn>dpkg</prgn>
11180 will spot that the options requested are appropriate to
11181 <prgn>dpkg-deb</prgn> and invoke that instead with the same
11182 arguments.)
11183 </p>
11186 In order to create a binary package, you must make a directory
11187 tree which contains all the files and directories you want to
11188 have in the file system data part of the package. In
11189 Debian-format source packages, this directory is usually
11190 either <file>debian/tmp</file>
11191 or <file>debian/<var>pkg</var></file>, relative to the top of
11192 the package's source tree.
11193 </p>
11196 They should have the locations (relative to the root of the
11197 directory tree you're constructing) ownerships and
11198 permissions which you want them to have on the system when
11199 they are installed.
11200 </p>
11203 With current versions of <prgn>dpkg</prgn> the uid/username
11204 and gid/groupname mappings for the users and groups being
11205 used should be the same on the system where the package is
11206 built and the one where it is installed.
11207 </p>
11210 You need to add one special directory to the root of the
11211 miniature file system tree you're creating:
11212 <prgn>DEBIAN</prgn>. It should contain the control
11213 information files, notably the binary package control file
11214 (see <ref id="pkg-controlfile">).
11215 </p>
11218 The <prgn>DEBIAN</prgn> directory will not appear in the
11219 file system archive of the package, and so won't be installed
11220 by <prgn>dpkg</prgn> when the package is unpacked.
11221 </p>
11224 When you've prepared the package, you should invoke:
11225 <example>
11226 dpkg --build <var>directory</var>
11227 </example>
11228 </p>
11231 This will build the package in
11232 <file><var>directory</var>.deb</file>. (<prgn>dpkg</prgn> knows
11233 that <tt>--build</tt> is a <prgn>dpkg-deb</prgn> option, so
11234 it invokes <prgn>dpkg-deb</prgn> with the same arguments to
11235 build the package.)
11236 </p>
11239 See the man page <manref name="dpkg-deb" section="8"> for details of how
11240 to examine the contents of this newly-created file. You may find the
11241 output of following commands enlightening:
11242 <example>
11243 dpkg-deb --info <var>filename</var>.deb
11244 dpkg-deb --contents <var>filename</var>.deb
11245 dpkg --contents <var>filename</var>.deb
11246 </example>
11247 To view the copyright file for a package you could use this command:
11248 <example>
11249 dpkg --fsys-tarfile <var>filename</var>.deb | tar xOf - --wildcards \*/copyright | pager
11250 </example>
11251 </p>
11252 </sect>
11254 <sect id="pkg-controlarea">
11255 <heading>Package control information files</heading>
11258 The control information portion of a binary package is a
11259 collection of files with names known to <prgn>dpkg</prgn>.
11260 It will treat the contents of these files specially - some
11261 of them contain information used by <prgn>dpkg</prgn> when
11262 installing or removing the package; others are scripts which
11263 the package maintainer wants <prgn>dpkg</prgn> to run.
11264 </p>
11267 It is possible to put other files in the package control
11268 information file area, but this is not generally a good idea
11269 (though they will largely be ignored).
11270 </p>
11273 Here is a brief list of the control information files supported
11274 by <prgn>dpkg</prgn> and a summary of what they're used for.
11275 </p>
11278 <taglist>
11279 <tag><tt>control</tt>
11280 <item>
11282 This is the key description file used by
11283 <prgn>dpkg</prgn>. It specifies the package's name
11284 and version, gives its description for the user,
11285 states its relationships with other packages, and so
11286 forth. See <ref id="sourcecontrolfiles"> and
11287 <ref id="binarycontrolfiles">.
11288 </p>
11291 It is usually generated automatically from information
11292 in the source package by the
11293 <prgn>dpkg-gencontrol</prgn> program, and with
11294 assistance from <prgn>dpkg-shlibdeps</prgn>.
11295 See <ref id="pkg-sourcetools">.
11296 </p>
11297 </item>
11299 <tag><tt>postinst</tt>, <tt>preinst</tt>, <tt>postrm</tt>,
11300 <tt>prerm</tt>
11301 </tag>
11302 <item>
11304 These are executable files (usually scripts) which
11305 <prgn>dpkg</prgn> runs during installation, upgrade
11306 and removal of packages. They allow the package to
11307 deal with matters which are particular to that package
11308 or require more complicated processing than that
11309 provided by <prgn>dpkg</prgn>. Details of when and
11310 how they are called are in <ref id="maintainerscripts">.
11311 </p>
11314 It is very important to make these scripts idempotent.
11315 See <ref id="idempotency">.
11316 </p>
11319 The maintainer scripts are not guaranteed to run with a
11320 controlling terminal and may not be able to interact with
11321 the user. See <ref id="controllingterminal">.
11322 </p>
11323 </item>
11325 <tag><tt>conffiles</tt>
11326 </tag>
11327 <item>
11328 This file contains a list of configuration files which
11329 are to be handled automatically by <prgn>dpkg</prgn>
11330 (see <ref id="pkg-conffiles">). Note that not necessarily
11331 every configuration file should be listed here.
11332 </item>
11334 <tag><tt>shlibs</tt>
11335 </tag>
11336 <item>
11337 This file contains a list of the shared libraries
11338 supplied by the package, with dependency details for
11339 each. This is used by <prgn>dpkg-shlibdeps</prgn>
11340 when it determines what dependencies are required in a
11341 package control file. The <tt>shlibs</tt> file format
11342 is described on <ref id="shlibs">.
11343 </item>
11344 </taglist>
11345 </p>
11347 <sect id="pkg-controlfile">
11348 <heading>The main control information file: <tt>control</tt></heading>
11351 The most important control information file used by
11352 <prgn>dpkg</prgn> when it installs a package is
11353 <tt>control</tt>. It contains all the package's "vital
11354 statistics".
11355 </p>
11358 The binary package control files of packages built from
11359 Debian sources are made by a special tool,
11360 <prgn>dpkg-gencontrol</prgn>, which reads
11361 <file>debian/control</file> and <file>debian/changelog</file> to
11362 find the information it needs. See <ref id="pkg-sourcepkg"> for
11363 more details.
11364 </p>
11367 The fields in binary package control files are listed in
11368 <ref id="binarycontrolfiles">.
11369 </p>
11372 A description of the syntax of control files and the purpose
11373 of the fields is available in <ref id="controlfields">.
11374 </p>
11375 </sect>
11377 <sect>
11378 <heading>Time Stamps</heading>
11381 See <ref id="timestamps">.
11382 </p>
11383 </sect>
11384 </appendix>
11386 <appendix id="pkg-sourcepkg">
11387 <heading>Source packages (from old Packaging Manual) </heading>
11390 The Debian binary packages in the distribution are generated
11391 from Debian sources, which are in a special format to assist
11392 the easy and automatic building of binaries.
11393 </p>
11395 <sect id="pkg-sourcetools">
11396 <heading>Tools for processing source packages</heading>
11399 Various tools are provided for manipulating source packages;
11400 they pack and unpack sources and help build of binary
11401 packages and help manage the distribution of new versions.
11402 </p>
11405 They are introduced and typical uses described here; see
11406 <manref name="dpkg-source" section="1"> for full
11407 documentation about their arguments and operation.
11408 </p>
11411 For examples of how to construct a Debian source package,
11412 and how to use those utilities that are used by Debian
11413 source packages, please see the <prgn>hello</prgn> example
11414 package.
11415 </p>
11417 <sect1 id="pkg-dpkg-source">
11418 <heading>
11419 <prgn>dpkg-source</prgn> - packs and unpacks Debian source
11420 packages
11421 </heading>
11424 This program is frequently used by hand, and is also
11425 called from package-independent automated building scripts
11426 such as <prgn>dpkg-buildpackage</prgn>.
11427 </p>
11430 To unpack a package it is typically invoked with
11431 <example>
11432 dpkg-source -x <var>.../path/to/filename</var>.dsc
11433 </example>
11434 </p>
11437 with the <file><var>filename</var>.tar.gz</file> and
11438 <file><var>filename</var>.diff.gz</file> (if applicable) in
11439 the same directory. It unpacks into
11440 <file><var>package</var>-<var>version</var></file>, and if
11441 applicable
11442 <file><var>package</var>-<var>version</var>.orig</file>, in
11443 the current directory.
11444 </p>
11447 To create a packed source archive it is typically invoked:
11448 <example>
11449 dpkg-source -b <var>package</var>-<var>version</var>
11450 </example>
11451 </p>
11454 This will create the <file>.dsc</file>, <file>.tar.gz</file> and
11455 <file>.diff.gz</file> (if appropriate) in the current
11456 directory. <prgn>dpkg-source</prgn> does not clean the
11457 source tree first - this must be done separately if it is
11458 required.
11459 </p>
11462 See also <ref id="pkg-sourcearchives">.</p>
11463 </sect1>
11466 <sect1 id="pkg-dpkg-buildpackage">
11467 <heading>
11468 <prgn>dpkg-buildpackage</prgn> - overall package-building
11469 control script
11470 </heading>
11473 See <manref name="dpkg-buildpackage" section="1">.
11474 </p>
11475 </sect1>
11477 <sect1 id="pkg-dpkg-gencontrol">
11478 <heading>
11479 <prgn>dpkg-gencontrol</prgn> - generates binary package
11480 control files
11481 </heading>
11484 This program is usually called from <file>debian/rules</file>
11485 (see <ref id="pkg-sourcetree">) in the top level of the source
11486 tree.
11487 </p>
11490 This is usually done just before the files and directories in the
11491 temporary directory tree where the package is being built have their
11492 permissions and ownerships set and the package is constructed using
11493 <prgn>dpkg-deb/</prgn>
11494 <footnote>
11495 This is so that the control file which is produced has
11496 the right permissions
11497 </footnote>.
11498 </p>
11501 <prgn>dpkg-gencontrol</prgn> must be called after all the
11502 files which are to go into the package have been placed in
11503 the temporary build directory, so that its calculation of
11504 the installed size of a package is correct.
11505 </p>
11508 It is also necessary for <prgn>dpkg-gencontrol</prgn> to
11509 be run after <prgn>dpkg-shlibdeps</prgn> so that the
11510 variable substitutions created by
11511 <prgn>dpkg-shlibdeps</prgn> in <file>debian/substvars</file>
11512 are available.
11513 </p>
11516 For a package which generates only one binary package, and
11517 which builds it in <file>debian/tmp</file> relative to the top
11518 of the source package, it is usually sufficient to call
11519 <prgn>dpkg-gencontrol</prgn>.
11520 </p>
11523 Sources which build several binaries will typically need
11524 something like:
11525 <example>
11526 dpkg-gencontrol -Pdebian/<var>pkg</var> -p<var>package</var>
11527 </example> The <tt>-P</tt> tells
11528 <prgn>dpkg-gencontrol</prgn> that the package is being
11529 built in a non-default directory, and the <tt>-p</tt>
11530 tells it which package's control file should be generated.
11531 </p>
11534 <prgn>dpkg-gencontrol</prgn> also adds information to the
11535 list of files in <file>debian/files</file>, for the benefit of
11536 (for example) a future invocation of
11537 <prgn>dpkg-genchanges</prgn>.</p>
11538 </sect1>
11540 <sect1 id="pkg-dpkg-shlibdeps">
11541 <heading>
11542 <prgn>dpkg-shlibdeps</prgn> - calculates shared library
11543 dependencies
11544 </heading>
11547 See <manref name="dpkg-shlibdeps" section="1">.
11548 </p>
11549 </sect1>
11551 <sect1 id="pkg-dpkg-distaddfile">
11552 <heading>
11553 <prgn>dpkg-distaddfile</prgn> - adds a file to
11554 <file>debian/files</file>
11555 </heading>
11558 Some packages' uploads need to include files other than
11559 the source and binary package files.
11560 </p>
11563 <prgn>dpkg-distaddfile</prgn> adds a file to the
11564 <file>debian/files</file> file so that it will be included in
11565 the <file>.changes</file> file when
11566 <prgn>dpkg-genchanges</prgn> is run.
11567 </p>
11570 It is usually invoked from the <tt>binary</tt> target of
11571 <file>debian/rules</file>:
11572 <example>
11573 dpkg-distaddfile <var>filename</var> <var>section</var> <var>priority</var>
11574 </example>
11575 The <var>filename</var> is relative to the directory where
11576 <prgn>dpkg-genchanges</prgn> will expect to find it - this
11577 is usually the directory above the top level of the source
11578 tree. The <file>debian/rules</file> target should put the
11579 file there just before or just after calling
11580 <prgn>dpkg-distaddfile</prgn>.
11581 </p>
11584 The <var>section</var> and <var>priority</var> are passed
11585 unchanged into the resulting <file>.changes</file> file.
11586 </p>
11587 </sect1>
11590 <sect1 id="pkg-dpkg-genchanges">
11591 <heading>
11592 <prgn>dpkg-genchanges</prgn> - generates a <file>.changes</file>
11593 upload control file
11594 </heading>
11597 See <manref name="dpkg-genchanges" section="1">.
11598 </p>
11599 </sect1>
11601 <sect1 id="pkg-dpkg-parsechangelog">
11602 <heading>
11603 <prgn>dpkg-parsechangelog</prgn> - produces parsed
11604 representation of a changelog
11605 </heading>
11608 See <manref name="dpkg-parsechangelog" section="1">.
11609 </p>
11610 </sect1>
11612 <sect1 id="pkg-dpkg-architecture">
11613 <heading>
11614 <prgn>dpkg-architecture</prgn> - information about the build and
11615 host system
11616 </heading>
11619 See <manref name="dpkg-architecture" section="1">.
11620 </p>
11621 </sect1>
11622 </sect>
11624 <sect id="pkg-sourcetree">
11625 <heading>The Debian package source tree</heading>
11628 The source archive scheme described later is intended to
11629 allow a Debian package source tree with some associated
11630 control information to be reproduced and transported easily.
11631 The Debian package source tree is a version of the original
11632 program with certain files added for the benefit of the
11633 packaging process, and with any other changes required
11634 made to the rest of the source code and installation
11635 scripts.
11636 </p>
11639 The extra files created for Debian are in the subdirectory
11640 <file>debian</file> of the top level of the Debian package
11641 source tree. They are described below.
11642 </p>
11644 <sect1 id="pkg-debianrules">
11645 <heading><file>debian/rules</file> - the main building script</heading>
11648 See <ref id="debianrules">.
11649 </p>
11650 </sect1>
11652 <sect1 id="pkg-srcsubstvars">
11653 <heading><file>debian/substvars</file> and variable substitutions</heading>
11656 See <ref id="substvars">.
11657 </p>
11659 </sect1>
11661 <sect1>
11662 <heading><file>debian/files</file></heading>
11665 See <ref id="debianfiles">.
11666 </p>
11667 </sect1>
11669 <sect1><heading><file>debian/tmp</file>
11670 </heading>
11673 This is the default temporary location for the construction of
11674 binary packages by the <tt>binary</tt> target. The
11675 directory <file>tmp</file> serves as the root of the file
11676 system tree as it is being constructed (for example, by using
11677 the package's upstream makefiles install targets and
11678 redirecting the output there), and it also contains
11679 the <tt>DEBIAN</tt> subdirectory.
11680 See <ref id="pkg-bincreating">.
11681 </p>
11684 This is only a default and can be easily overridden. Most
11685 packaging tools no longer use <file>debian/tmp</file>, instead
11686 preferring <file>debian/<var>pkg</var></file> for the common
11687 case of a source package building only one binary package.
11688 Such tools usually only use <file>debian/tmp</file> as a
11689 temporary staging area for built files and do not construct
11690 packages from it.
11691 </p>
11694 If several binary packages are generated from the same source
11695 tree, it is usual to use a separate
11696 <file>debian/<var>pkg</var></file> directory for each binary
11697 package as the temporary construction locations.
11698 </p>
11701 Whatever temporary directories are created and used by the
11702 <tt>binary</tt> target must of course be removed by the
11703 <tt>clean</tt> target.
11704 </p>
11705 </sect1>
11706 </sect>
11709 <sect id="pkg-sourcearchives"><heading>Source packages as archives
11710 </heading>
11713 As it exists on the FTP site, a Debian source package
11714 consists of three related files. You must have the right
11715 versions of all three to be able to use them.
11716 </p>
11719 <taglist>
11720 <tag>Debian source control file - <tt>.dsc</tt></tag>
11721 <item>
11722 This file is a control file used by <prgn>dpkg-source</prgn>
11723 to extract a source package.
11724 See <ref id="debiansourcecontrolfiles">.
11725 </item>
11727 <tag>
11728 Original source archive -
11729 <file>
11730 <var>package</var>_<var>upstream-version</var>.orig.tar.gz
11731 </file>
11732 </tag>
11734 <item>
11736 This is a compressed (with <tt>gzip -9</tt>)
11737 <prgn>tar</prgn> file containing the source code from
11738 the upstream authors of the program.
11739 </p>
11740 </item>
11742 <tag>
11743 Debian package diff -
11744 <file>
11745 <var>package</var>_<var>upstream_version-revision</var>.diff.gz
11746 </file>
11747 </tag>
11748 <item>
11751 This is a unified context diff (<tt>diff -u</tt>)
11752 giving the changes which are required to turn the
11753 original source into the Debian source. These changes
11754 may only include editing and creating plain files.
11755 The permissions of files, the targets of symbolic
11756 links and the characteristics of special files or
11757 pipes may not be changed and no files may be removed
11758 or renamed.
11759 </p>
11762 All the directories in the diff must exist, except the
11763 <file>debian</file> subdirectory of the top of the source
11764 tree, which will be created by
11765 <prgn>dpkg-source</prgn> if necessary when unpacking.
11766 </p>
11769 The <prgn>dpkg-source</prgn> program will
11770 automatically make the <file>debian/rules</file> file
11771 executable (see below).</p></item>
11772 </taglist>
11773 </p>
11776 If there is no original source code - for example, if the
11777 package is specially prepared for Debian or the Debian
11778 maintainer is the same as the upstream maintainer - the
11779 format is slightly different: then there is no diff, and the
11780 tarfile is named
11781 <file><var>package</var>_<var>version</var>.tar.gz</file>,
11782 and preferably contains a directory named
11783 <file><var>package</var>-<var>version</var></file>.
11784 </p>
11785 </sect>
11787 <sect>
11788 <heading>Unpacking a Debian source package without <prgn>dpkg-source</prgn></heading>
11791 <tt>dpkg-source -x</tt> is the recommended way to unpack a
11792 Debian source package. However, if it is not available it
11793 is possible to unpack a Debian source archive as follows:
11794 <enumlist compact="compact">
11795 <item>
11797 Untar the tarfile, which will create a <file>.orig</file>
11798 directory.</p>
11799 </item>
11800 <item>
11801 <p>Rename the <file>.orig</file> directory to
11802 <file><var>package</var>-<var>version</var></file>.</p>
11803 </item>
11804 <item>
11806 Create the subdirectory <file>debian</file> at the top of
11807 the source tree.</p>
11808 </item>
11809 <item><p>Apply the diff using <tt>patch -p0</tt>.</p>
11810 </item>
11811 <item><p>Untar the tarfile again if you want a copy of the original
11812 source code alongside the Debian version.</p>
11813 </item>
11814 </enumlist>
11817 It is not possible to generate a valid Debian source archive
11818 without using <prgn>dpkg-source</prgn>. In particular,
11819 attempting to use <prgn>diff</prgn> directly to generate the
11820 <file>.diff.gz</file> file will not work.
11821 </p>
11823 <sect1>
11824 <heading>Restrictions on objects in source packages</heading>
11827 The source package may not contain any hard links
11828 <footnote>
11829 This is not currently detected when building source
11830 packages, but only when extracting
11831 them.
11832 </footnote>
11833 <footnote>
11834 Hard links may be permitted at some point in the
11835 future, but would require a fair amount of
11836 work.
11837 </footnote>, device special files, sockets or setuid or
11838 setgid files.
11839 <footnote>
11840 Setgid directories are allowed.
11841 </footnote>
11842 </p>
11845 The source packaging tools manage the changes between the
11846 original and Debian source using <prgn>diff</prgn> and
11847 <prgn>patch</prgn>. Turning the original source tree as
11848 included in the <file>.orig.tar.gz</file> into the Debian
11849 package source must not involve any changes which cannot be
11850 handled by these tools. Problematic changes which cause
11851 <prgn>dpkg-source</prgn> to halt with an error when
11852 building the source package are:
11853 <list compact="compact">
11854 <item><p>Adding or removing symbolic links, sockets or pipes.</p>
11855 </item>
11856 <item><p>Changing the targets of symbolic links.</p>
11857 </item>
11858 <item><p>Creating directories, other than <file>debian</file>.</p>
11859 </item>
11860 <item><p>Changes to the contents of binary files.</p></item>
11861 </list> Changes which cause <prgn>dpkg-source</prgn> to
11862 print a warning but continue anyway are:
11863 <list compact="compact">
11864 <item>
11866 Removing files, directories or symlinks.
11867 <footnote>
11868 Renaming a file is not treated specially - it is
11869 seen as the removal of the old file (which
11870 generates a warning, but is otherwise ignored),
11871 and the creation of the new one.
11872 </footnote>
11873 </p>
11874 </item>
11875 <item>
11877 Changed text files which are missing the usual final
11878 newline (either in the original or the modified
11879 source tree).
11880 </p>
11881 </item>
11882 </list>
11883 Changes which are not represented, but which are not detected by
11884 <prgn>dpkg-source</prgn>, are:
11885 <list compact="compact">
11886 <item><p>Changing the permissions of files (other than
11887 <file>debian/rules</file>) and directories.</p></item>
11888 </list>
11889 </p>
11892 The <file>debian</file> directory and <file>debian/rules</file>
11893 are handled specially by <prgn>dpkg-source</prgn> - before
11894 applying the changes it will create the <file>debian</file>
11895 directory, and afterwards it will make
11896 <file>debian/rules</file> world-executable.
11897 </p>
11898 </sect1>
11899 </sect>
11900 </appendix>
11902 <appendix id="pkg-controlfields">
11903 <heading>Control files and their fields (from old Packaging Manual)</heading>
11906 Many of the tools in the <prgn>dpkg</prgn> suite manipulate
11907 data in a common format, known as control files. Binary and
11908 source packages have control data as do the <file>.changes</file>
11909 files which control the installation of uploaded files, and
11910 <prgn>dpkg</prgn>'s internal databases are in a similar
11911 format.
11912 </p>
11914 <sect>
11915 <heading>Syntax of control files</heading>
11918 See <ref id="controlsyntax">.
11919 </p>
11922 It is important to note that there are several fields which
11923 are optional as far as <prgn>dpkg</prgn> and the related
11924 tools are concerned, but which must appear in every Debian
11925 package, or whose omission may cause problems.
11926 </p>
11927 </sect>
11929 <sect>
11930 <heading>List of fields</heading>
11933 See <ref id="controlfieldslist">.
11934 </p>
11937 This section now contains only the fields that didn't belong
11938 to the Policy manual.
11939 </p>
11941 <sect1 id="pkg-f-Filename">
11942 <heading><tt>Filename</tt> and <tt>MSDOS-Filename</tt></heading>
11945 These fields in <tt>Packages</tt> files give the
11946 filename(s) of (the parts of) a package in the
11947 distribution directories, relative to the root of the
11948 Debian hierarchy. If the package has been split into
11949 several parts the parts are all listed in order, separated
11950 by spaces.
11951 </p>
11952 </sect1>
11954 <sect1 id="pkg-f-Size">
11955 <heading><tt>Size</tt> and <tt>MD5sum</tt></heading>
11958 These fields in <file>Packages</file> files give the size (in
11959 bytes, expressed in decimal) and MD5 checksum of the
11960 file(s) which make(s) up a binary package in the
11961 distribution. If the package is split into several parts
11962 the values for the parts are listed in order, separated by
11963 spaces.
11964 </p>
11965 </sect1>
11967 <sect1 id="pkg-f-Status">
11968 <heading><tt>Status</tt></heading>
11971 This field in <prgn>dpkg</prgn>'s status file records
11972 whether the user wants a package installed, removed or
11973 left alone, whether it is broken (requiring
11974 re-installation) or not and what its current state on the
11975 system is. Each of these pieces of information is a
11976 single word.
11977 </p>
11978 </sect1>
11980 <sect1 id="pkg-f-Config-Version">
11981 <heading><tt>Config-Version</tt></heading>
11984 If a package is not installed or not configured, this
11985 field in <prgn>dpkg</prgn>'s status file records the last
11986 version of the package which was successfully
11987 configured.
11988 </p>
11989 </sect1>
11991 <sect1 id="pkg-f-Conffiles">
11992 <heading><tt>Conffiles</tt></heading>
11995 This field in <prgn>dpkg</prgn>'s status file contains
11996 information about the automatically-managed configuration
11997 files held by a package. This field should <em>not</em>
11998 appear anywhere in a package!
11999 </p>
12000 </sect1>
12002 <sect1>
12003 <heading>Obsolete fields</heading>
12006 These are still recognized by <prgn>dpkg</prgn> but should
12007 not appear anywhere any more.
12009 <taglist compact="compact">
12011 <tag><tt>Revision</tt></tag>
12012 <tag><tt>Package-Revision</tt></tag>
12013 <tag><tt>Package_Revision</tt></tag>
12014 <item>
12015 The Debian revision part of the package version was
12016 at one point in a separate control field. This
12017 field went through several names.
12018 </item>
12020 <tag><tt>Recommended</tt></tag>
12021 <item>Old name for <tt>Recommends</tt>.</item>
12023 <tag><tt>Optional</tt></tag>
12024 <item>Old name for <tt>Suggests</tt>.</item>
12026 <tag><tt>Class</tt></tag>
12027 <item>Old name for <tt>Priority</tt>.</item>
12029 </taglist>
12030 </p>
12031 </sect1>
12032 </sect>
12034 </appendix>
12036 <appendix id="pkg-conffiles">
12037 <heading>Configuration file handling (from old Packaging Manual)</heading>
12040 <prgn>dpkg</prgn> can do a certain amount of automatic
12041 handling of package configuration files.
12042 </p>
12045 Whether this mechanism is appropriate depends on a number of
12046 factors, but basically there are two approaches to any
12047 particular configuration file.
12048 </p>
12051 The easy method is to ship a best-effort configuration in the
12052 package, and use <prgn>dpkg</prgn>'s conffile mechanism to
12053 handle updates. If the user is unlikely to want to edit the
12054 file, but you need them to be able to without losing their
12055 changes, and a new package with a changed version of the file
12056 is only released infrequently, this is a good approach.
12057 </p>
12060 The hard method is to build the configuration file from
12061 scratch in the <prgn>postinst</prgn> script, and to take the
12062 responsibility for fixing any mistakes made in earlier
12063 versions of the package automatically. This will be
12064 appropriate if the file is likely to need to be different on
12065 each system.
12066 </p>
12068 <sect><heading>Automatic handling of configuration files by
12069 <prgn>dpkg</prgn>
12070 </heading>
12073 A package may contain a control information file called
12074 <tt>conffiles</tt>. This file should be a list of filenames
12075 of configuration files needing automatic handling, separated
12076 by newlines. The filenames should be absolute pathnames,
12077 and the files referred to should actually exist in the
12078 package.
12079 </p>
12082 When a package is upgraded <prgn>dpkg</prgn> will process
12083 the configuration files during the configuration stage,
12084 shortly before it runs the package's <prgn>postinst</prgn>
12085 script,
12086 </p>
12089 For each file it checks to see whether the version of the
12090 file included in the package is the same as the one that was
12091 included in the last version of the package (the one that is
12092 being upgraded from); it also compares the version currently
12093 installed on the system with the one shipped with the last
12094 version.
12095 </p>
12098 If neither the user nor the package maintainer has changed
12099 the file, it is left alone. If one or the other has changed
12100 their version, then the changed version is preferred - i.e.,
12101 if the user edits their file, but the package maintainer
12102 doesn't ship a different version, the user's changes will
12103 stay, silently, but if the maintainer ships a new version
12104 and the user hasn't edited it the new version will be
12105 installed (with an informative message). If both have
12106 changed their version the user is prompted about the problem
12107 and must resolve the differences themselves.
12108 </p>
12111 The comparisons are done by calculating the MD5 message
12112 digests of the files, and storing the MD5 of the file as it
12113 was included in the most recent version of the package.
12114 </p>
12117 When a package is installed for the first time
12118 <prgn>dpkg</prgn> will install the file that comes with it,
12119 unless that would mean overwriting a file already on the
12120 file system.
12121 </p>
12124 However, note that <prgn>dpkg</prgn> will <em>not</em>
12125 replace a conffile that was removed by the user (or by a
12126 script). This is necessary because with some programs a
12127 missing file produces an effect hard or impossible to
12128 achieve in another way, so that a missing file needs to be
12129 kept that way if the user did it.
12130 </p>
12133 Note that a package should <em>not</em> modify a
12134 <prgn>dpkg</prgn>-handled conffile in its maintainer
12135 scripts. Doing this will lead to <prgn>dpkg</prgn> giving
12136 the user confusing and possibly dangerous options for
12137 conffile update when the package is upgraded.</p>
12138 </sect>
12140 <sect><heading>Fully-featured maintainer script configuration
12141 handling
12142 </heading>
12145 For files which contain site-specific information such as
12146 the hostname and networking details and so forth, it is
12147 better to create the file in the package's
12148 <prgn>postinst</prgn> script.
12149 </p>
12152 This will typically involve examining the state of the rest
12153 of the system to determine values and other information, and
12154 may involve prompting the user for some information which
12155 can't be obtained some other way.
12156 </p>
12159 When using this method there are a couple of important
12160 issues which should be considered:
12161 </p>
12164 If you discover a bug in the program which generates the
12165 configuration file, or if the format of the file changes
12166 from one version to the next, you will have to arrange for
12167 the postinst script to do something sensible - usually this
12168 will mean editing the installed configuration file to remove
12169 the problem or change the syntax. You will have to do this
12170 very carefully, since the user may have changed the file,
12171 perhaps to fix the very problem that your script is trying
12172 to deal with - you will have to detect these situations and
12173 deal with them correctly.
12174 </p>
12177 If you do go down this route it's probably a good idea to
12178 make the program that generates the configuration file(s) a
12179 separate program in <file>/usr/sbin</file>, by convention called
12180 <file><var>package</var>config</file> and then run that if
12181 appropriate from the post-installation script. The
12182 <tt><var>package</var>config</tt> program should not
12183 unquestioningly overwrite an existing configuration - if its
12184 mode of operation is geared towards setting up a package for
12185 the first time (rather than any arbitrary reconfiguration
12186 later) you should have it check whether the configuration
12187 already exists, and require a <tt>--force</tt> flag to
12188 overwrite it.</p></sect>
12189 </appendix>
12191 <appendix id="pkg-alternatives"><heading>Alternative versions of
12192 an interface - <prgn>update-alternatives</prgn> (from old
12193 Packaging Manual)
12194 </heading>
12197 When several packages all provide different versions of the
12198 same program or file it is useful to have the system select a
12199 default, but to allow the system administrator to change it
12200 and have their decisions respected.
12201 </p>
12204 For example, there are several versions of the <prgn>vi</prgn>
12205 editor, and there is no reason to prevent all of them from
12206 being installed at once, each under their own name
12207 (<prgn>nvi</prgn>, <prgn>vim</prgn> or whatever).
12208 Nevertheless it is desirable to have the name <tt>vi</tt>
12209 refer to something, at least by default.
12210 </p>
12213 If all the packages involved cooperate, this can be done with
12214 <prgn>update-alternatives</prgn>.
12215 </p>
12218 Each package provides its own version under its own name, and
12219 calls <prgn>update-alternatives</prgn> in its postinst to
12220 register its version (and again in its prerm to deregister
12221 it).
12222 </p>
12225 See the man page <manref name="update-alternatives"
12226 section="8"> for details.
12227 </p>
12230 If <prgn>update-alternatives</prgn> does not seem appropriate
12231 you may wish to consider using diversions instead.</p>
12232 </appendix>
12234 <appendix id="pkg-diversions"><heading>Diversions - overriding a
12235 package's version of a file (from old Packaging Manual)
12236 </heading>
12239 It is possible to have <prgn>dpkg</prgn> not overwrite a file
12240 when it reinstalls the package it belongs to, and to have it
12241 put the file from the package somewhere else instead.
12242 </p>
12245 This can be used locally to override a package's version of a
12246 file, or by one package to override another's version (or
12247 provide a wrapper for it).
12248 </p>
12251 Before deciding to use a diversion, read <ref
12252 id="pkg-alternatives"> to see if you really want a diversion
12253 rather than several alternative versions of a program.
12254 </p>
12257 There is a diversion list, which is read by <prgn>dpkg</prgn>,
12258 and updated by a special program <prgn>dpkg-divert</prgn>.
12259 Please see <manref name="dpkg-divert" section="8"> for full
12260 details of its operation.
12261 </p>
12264 When a package wishes to divert a file from another, it should
12265 call <prgn>dpkg-divert</prgn> in its preinst to add the
12266 diversion and rename the existing file. For example,
12267 supposing that a <prgn>smailwrapper</prgn> package wishes to
12268 install a wrapper around <file>/usr/sbin/smail</file>:
12269 <example>
12270 dpkg-divert --package smailwrapper --add --rename \
12271 --divert /usr/sbin/smail.real /usr/sbin/smail
12272 </example> The <tt>--package smailwrapper</tt> ensures that
12273 <prgn>smailwrapper</prgn>'s copy of <file>/usr/sbin/smail</file>
12274 can bypass the diversion and get installed as the true version.
12275 It's safe to add the diversion unconditionally on upgrades since
12276 it will be left unchanged if it already exists, but
12277 <prgn>dpkg-divert</prgn> will display a message. To suppress that
12278 message, make the command conditional on the version from which
12279 the package is being upgraded:
12280 <example>
12281 if [ upgrade != "$1" ] || dpkg --compare-versions "$2" lt 1.0-2; then
12282 dpkg-divert --package smailwrapper --add --rename \
12283 --divert /usr/sbin/smail.real /usr/sbin/smail
12285 </example> where <tt>1.0-2</tt> is the version at which the
12286 diversion was first added to the package. Running the command
12287 during abort-upgrade is pointless but harmless.
12288 </p>
12291 The postrm has to do the reverse:
12292 <example>
12293 if [ remove = "$1" -o abort-install = "$1" -o disappear = "$1" ]; then
12294 dpkg-divert --package smailwrapper --remove --rename \
12295 --divert /usr/sbin/smail.real /usr/sbin/smail
12297 </example> If the diversion was added at a particular version, the
12298 postrm should also handle the failure case of upgrading from an
12299 older version (unless the older version is so old that direct
12300 upgrades are no longer supported):
12301 <example>
12302 if [ abort-upgrade = "$1" ] && dpkg --compare-versions "$2" lt 1.0-2; then
12303 dpkg-divert --package smailwrapper --remove --rename \
12304 --divert /usr/sbin/smail.real /usr/sbin/smail
12306 </example> where <tt>1.0-2</tt> is the version at which the
12307 diversion was first added to the package. The postrm should not
12308 remove the diversion on upgrades both because there's no reason to
12309 remove the diversion only to immediately re-add it and since the
12310 postrm of the old package is run after unpacking so the removal of
12311 the diversion will fail.
12312 </p>
12315 Do not attempt to divert a file which is vitally important for
12316 the system's operation - when using <prgn>dpkg-divert</prgn>
12317 there is a time, after it has been diverted but before
12318 <prgn>dpkg</prgn> has installed the new version, when the file
12319 does not exist.</p>
12322 Do not attempt to divert a conffile, as <prgn>dpkg</prgn> does not
12323 handle it well.
12324 </p>
12325 </appendix>
12327 </book>
12328 </debiandoc>
12329 <!-- Local variables: -->
12330 <!-- indent-tabs-mode: t -->
12331 <!-- End: -->
12332 <!-- vim:set ai sts=2 sw=2 tw=76: -->