X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=policy.sgml;h=1871d4c013d49ab8f315b482567875ca0bc95fb0;hb=054029abead4996f10c2a97bf431db0bd95de44c;hp=b09bb5d59c520759a4483f9ce2b106b2fe725d03;hpb=4f8a326130c4ce5cd5314bddd0fa57608aef88b1;p=debian%2Fdebian-policy.git diff --git a/policy.sgml b/policy.sgml index b09bb5d..1871d4c 100644 --- a/policy.sgml +++ b/policy.sgml @@ -24,6 +24,13 @@ Copyright © 1996,1997,1998 Ian Jackson and Christian Schwarz. +

+ These are the copyright dates of the original Policy manual. + Since then, this manual has been updated by many others. No + comprehensive collection of copyright notices for subsequent + work exists. +

+

This manual is free software; you may redistribute it and/or modify it under the terms of the GNU General Public License @@ -83,11 +90,10 @@ is used by, a significant number of packages, and therefore should not be changed without peer review. Package maintainers can then rely on this - interfaces not changing, and the package - management software authors need to ensure - compatibility with these interface - definitions. (Control file and changelog file - formats are examples.) + interface not changing, and the package management + software authors need to ensure compatibility with + this interface definition. (Control file and + changelog file formats are examples.) Chosen Convention @@ -359,7 +365,7 @@ The Debian Free Software Guidelines (DFSG) form our definition of "free software". These are: - Free Redistribution + 1. Free Redistribution The license of a Debian component may not restrict any @@ -369,20 +375,20 @@ sources. The license may not require a royalty or other fee for such sale. - Source Code + 2. Source Code The program must include source code, and must allow distribution in source code as well as compiled form. - Derived Works + 3. Derived Works The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software. - Integrity of The Author's Source Code + 4. Integrity of The Author's Source Code The license may restrict source-code from being @@ -397,13 +403,13 @@ Project encourages all authors to not restrict any files, source or binary, from being modified.) - No Discrimination Against Persons or Groups + 5. No Discrimination Against Persons or Groups The license must not discriminate against any person or group of persons. - No Discrimination Against Fields of Endeavor + 6. No Discrimination Against Fields of Endeavor The license must not restrict anyone from making use @@ -412,7 +418,7 @@ used in a business, or from being used for genetic research. - Distribution of License + 7. Distribution of License The rights attached to the program must apply to all @@ -420,7 +426,7 @@ for execution of an additional license by those parties. - License Must Not Be Specific to Debian + 8. License Must Not Be Specific to Debian The rights attached to the program must not depend on @@ -432,7 +438,7 @@ rights as those that are granted in conjunction with the Debian system. - License Must Not Contaminate Other Software + 9. License Must Not Contaminate Other Software The license must not place restrictions on other @@ -441,7 +447,7 @@ that all other programs distributed on the same medium must be free software. - Example Licenses + 10. Example Licenses The "GPL," "BSD," and "Artistic" licenses are examples of @@ -563,8 +569,8 @@ Copyright considerations

- Every package must be accompanied by a verbatim copy of - its copyright and distribution license in the file + Every package must be accompanied by a verbatim copy of its + copyright information and distribution license in the file /usr/share/doc/package/copyright (see for further details).

@@ -1632,11 +1638,11 @@ Copyright: debian/copyright

- Every package must be accompanied by a verbatim copy of - its copyright and distribution license in the file + Every package must be accompanied by a verbatim copy of its + copyright information and distribution license in the file /usr/share/doc/package/copyright (see for further details). Also see - for further considerations relayed + for further considerations related to copyrights for packages.

@@ -1719,14 +1725,17 @@

It must start with the line #!/usr/bin/make -f, so that it can be invoked by saying its name rather than - invoking make explicitly. + invoking make explicitly. That is, invoking + either of make -f debian/rules args... + or ./debian/rules args... must result in + identical behavior.

Since an interactive debian/rules script makes it impossible to auto-compile that package and also makes it hard for other people to reproduce the same binary - package, all required targets MUST be + package, all required targets must be non-interactive. At a minimum, required targets are the ones called by dpkg-buildpackage, namely, clean, binary, binary-arch, @@ -2372,6 +2381,8 @@ Package: libc6

Field names are not case-sensitive, but it is usual to capitalize the field names using mixed case as shown below. + Field values are case-sensitive unless the description of the + field says otherwise.

@@ -2598,11 +2609,12 @@ Package: libc6

- Package names must consist only of lower case letters - (a-z), digits (0-9), plus (+) - and minus (-) signs, and periods (.). - They must be at least two characters long and must start - with an alphanumeric character. + Package names (both source and binary, + see ) must consist only of lower case + letters (a-z), digits (0-9), plus + (+) and minus (-) signs, and periods + (.). They must be at least two characters long and + must start with an alphanumeric character.

@@ -2680,7 +2692,7 @@ Package: libc6 Priority

- This field represents how important that it is that the user + This field represents how important it is that the user have the package installed. See .

@@ -2701,11 +2713,9 @@ Package: libc6

- Package names must consist only of lower case letters - (a-z), digits (0-9), plus (+) - and minus (-) signs, and periods (.). - They must be at least two characters long and must start - with an alphanumeric character. + Binary package names must follow the same syntax and + restrictions as source package names. See + for the details.

@@ -2791,8 +2801,8 @@ Package: libc6

- See for information how to get the - architecture for the build process. + See for information on how to get + the architecture for the build process.

@@ -2853,8 +2863,8 @@ Package: libc6

Thus only the first three components of the policy version are significant in the Standards-Version control - field, and so either these three components or the all - four components may be specified. + field, and so either these three components or all four + components may be specified. In the past, people specified the full version number in the Standards-Version field, for example "2.3.0.0". Since minor patch-level changes don't introduce new @@ -3095,18 +3105,16 @@ Package: libc6

- In a .changes file, the Description field - contains a summary of the descriptions for the packages being - uploaded. + In a .changes file, the Description + field contains a summary of the descriptions for the packages + being uploaded. For this case, the first line of the field + value (the part on the same line as Description:) is + always empty. The content of the field is expressed as + continuation lines, one line per package. Each line is + indented by one space and contains the name of a binary + package, a space, a hyphen (-), a space, and the + short description line from that package.

- -

- The part of the field before the first newline is empty; - thereafter each line has the name of a binary package and - the summary description line from that binary package. - Each line is indented by one space. -

- @@ -3223,10 +3231,12 @@ Package: libc6

- There should be nothing in this field before the first - newline; all the subsequent lines must be indented by at - least one space; blank lines must be represented by a line - consisting only of a space and a full stop. + The first line of the field value (the part on the same line + as Changes:) is always empty. The content of the + field is expressed as continuation lines, with each line + indented by at least one space. Blank lines must be + represented by a line consisting only of a space and a full + stop (.).

@@ -3246,7 +3256,7 @@ Package: libc6 for the most recent version should be returned first, and entries should be separated by the representation of a blank line (the "title" line may also be followed by the - representation of blank line). + representation of a blank line).

@@ -3254,29 +3264,27 @@ Package: libc6 Binary

- This field is a list of binary packages. -

- -

- When it appears in the .dsc file it is the list - of binary packages which a source package can produce. It - does not necessarily produce all of these binary packages - for every architecture. The source control file doesn't - contain details of which architectures are appropriate for - which of the binary packages. + This field is a list of binary packages. Its syntax and + meaning varies depending on the control file in which it + appears.

- When it appears in a .changes file it lists the - names of the binary packages actually being uploaded. + When it appears in the .dsc file, it lists binary + packages which a source package can produce, separated by + commas + A space after each comma is conventional. + . It may span multiple lines. The source package + does not necessarily produce all of these binary packages for + every architecture. The source control file doesn't contain + details of which architectures are appropriate for which of + the binary packages.

- The syntax is a list of binary packages separated by - commas - A space after each comma is conventional. - . Currently the packages must be separated using - only spaces in the .changes file. + When it appears in a .changes file, it lists the + names of the binary packages being uploaded, separated by + whitespace (not commas). It may span multiple lines.

@@ -3284,16 +3292,17 @@ Package: libc6 Installed-Size

- This field appears in the control files of binary - packages, and in the Packages files. It gives - the total amount of disk space required to install the - named package. + This field appears in the control files of binary packages, + and in the Packages files. It gives an estimate + of the total amount of disk space required to install the + named package. Actual installed size may vary based on block + size, file system properties, or actions taken by package + maintainer scripts.

- The disk space is given as the integer value of the installed - size divided by 1024 and rounded (in other words, the size in - kibibytes). + The disk space is given as the integer value of the estimated + installed size in bytes, divided by 1024 and rounded up.

@@ -3303,20 +3312,30 @@ Package: libc6

This field contains a list of files with information about each one. The exact information and syntax varies with - the context. In all cases the part of the field - contents on the same line as the field name is empty. The - remainder of the field is one line per file, each line - being indented by one space and containing a number of - sub-fields separated by spaces. + the context. +

+ +

+ In all cases, Files is a multiline field. The first line of + the field value (the part on the same line as Files:) + is always empty. The content of the field is expressed as + continuation lines, one line per file. Each line must be + indented by one space and contain a number of sub-fields, + separated by spaces, as described below.

In the .dsc file, each line contains the MD5 - checksum, size and filename of the tar file and (if applicable) - diff file which make up the remainder of the source - package - That is, the parts which are not the .dsc. - . + checksum, size and filename of the tar file and (if + applicable) diff file which make up the remainder of the + source package + That is, the parts which are not the .dsc. + . For example: + +Files: + c6f698f19f2a2aa07dbb9bbda90a2754 571925 example_1.2.orig.tar.gz + 938512f08422f3509ff36f125f5873ba 6220 example_1.2-1.diff.gz + The exact forms of the filenames are described in .

@@ -3324,14 +3343,20 @@ Package: libc6

In the .changes file this contains one line per file being uploaded. Each line contains the MD5 checksum, - size, section and priority and the filename. + size, section and priority and the filename. For example: + +Files: + 4c31ab7bfc40d3cf49d7811987390357 1428 text extra example_1.2-1.dsc + c6f698f19f2a2aa07dbb9bbda90a2754 571925 text extra example_1.2.orig.tar.gz + 938512f08422f3509ff36f125f5873ba 6220 text extra example_1.2-1.diff.gz + 7c98fe853b3bbb47a00e5cd129b6cb56 703542 text extra example_1.2-1_i386.deb + The section - and priority - are the values of the corresponding fields in - the main source control file. If no section or priority is - specified then - should be used, though section - and priority values must be specified for new packages to - be installed properly. + and priority are the values of + the corresponding fields in the main source control file. If + no section or priority is specified then - should be + used, though section and priority values must be specified for + new packages to be installed properly.

@@ -3347,7 +3372,7 @@ Package: libc6 no new original source archive is being distributed the .dsc must still contain the Files field entry for the original source archive - package-upstream-version.orig.tar.gz, + package_upstream-version.orig.tar.gz, but the .changes file should leave it out. In this case the original source archive on the distribution site must match exactly, byte-for-byte, the original @@ -3690,7 +3715,7 @@ Package: libc6 If this works, then the old-version is "Installed", if not, the old version is in a - "Failed-Config" state. + "Half-Configured" state. @@ -3798,7 +3823,7 @@ Package: libc6 If this fails, the package is left in a "Half-Installed" state, which requires a reinstall. If it works, the packages is left in - a "Config Files" state. + a "Config-Files" state. Otherwise (i.e., the package was completely purged): @@ -3810,7 +3835,7 @@ Package: libc6 new-postrm abort-install If the error-unwind fails, the package is in a - "Half Installed" phase, and requires a + "Half-Installed" phase, and requires a reinstall. If the error unwind works, the package is in a not installed state. @@ -3890,14 +3915,14 @@ Package: libc6 old-preinst abort-upgrade new-version - If this fails, the old version is left in an - "Half Installed" state. If it works, dpkg now + If this fails, the old version is left in a + "Half-Installed" state. If it works, dpkg now calls: new-postrm abort-upgrade old-version - If this fails, the old version is left in an - "Half Installed" state. If it works, dpkg now + If this fails, the old version is left in a + "Half-Installed" state. If it works, dpkg now calls: old-postinst abort-upgrade new-version @@ -4056,7 +4081,7 @@ Package: libc6

- If this fails, the package is in a "Failed-Config" + If this fails, the package is in a "Half-Configured" state, or else it remains "Installed".

@@ -4392,12 +4417,12 @@ Build-Depends: foo [!i386] | bar [!amd64] be unpacked the pre-dependency can be satisfied if the depended-on package is either fully configured, or even if the depended-on - package(s) are only unpacked or half-configured, - provided that they have been configured correctly at - some point in the past (and not removed or partially - removed since). In this case, both the + package(s) are only unpacked or in the "Half-Configured" + state, provided that they have been configured + correctly at some point in the past (and not removed + or partially removed since). In this case, both the previously-configured and currently unpacked or - half-configured versions must satisfy any version + "Half-Configured" versions must satisfy any version clause in the Pre-Depends field.

@@ -4454,7 +4479,7 @@ Build-Depends: foo [!i386] | bar [!amd64]

A package will not be regarded as causing breakage merely because its configuration files are still installed; it must - be at least half-installed. + be at least "Half-Installed".

@@ -4508,7 +4533,7 @@ Build-Depends: foo [!i386] | bar [!amd64]

A package will not cause a conflict merely because its configuration files are still installed; it must be at least - half-installed. + "Half-Installed".

@@ -5314,10 +5339,10 @@ dpkg-shlibdeps debian/tmp/usr/bin/* debian/tmp/usr/sbin/* \

- If you are creating a udeb for use in the Debian Installer, you - will need to specify that dpkg-shlibdeps should use - the dependency line of type udeb by adding - -tudeb as option + If you are creating a udeb for use in the Debian Installer, + you will need to specify that dpkg-shlibdeps + should use the dependency line of type udeb by + adding the -tudeb option dh_shlibdeps from the debhelper suite will automatically add this option if it knows it is processing a udeb. @@ -5559,6 +5584,40 @@ libbar 1 bar1 (>= 1.0-1) for 64 bit binaries is removed.

+ +

+ The requirement for object files, internal binaries, and + libraries, including libc.so.*, to be located + directly under /lib{,32} and + /usr/lib{,32} is amended, permitting files + to instead be installed to + /lib/triplet and + /usr/lib/triplet, where + triplet is the value returned by + dpkg-architecture -qDEB_HOST_GNU_TYPE for the + architecture of the package. Packages may not + install files to any triplet path other + than the one matching the architecture of that package; + for instance, an Architecture: amd64 package + containing 32-bit x86 libraries may not install these + libraries to /usr/lib/i486-linux-gnu. + + This is necessary in order to reserve the directories for + use in cross-installation of library packages from other + architectures, as part of the planned deployment of + multiarch. + +

+

+ Applications may also use a single subdirectory under + /usr/lib/triplet. +

+

+ The execution time linker/loader, ld*, must still be made + available in the existing location under /lib or /lib64 + since this is part of the ELF ABI for the architecture. +

+

The requirement that @@ -5582,6 +5641,15 @@ libbar 1 bar1 (>= 1.0-1) symlinked there, is relaxed to a recommendation.

+ +

+ The following directories in the root filesystem are + additionally allowed: /sys and + /selinux. These directories + are used as mount points to mount virtual filesystems + to get access to kernel information. +

+

@@ -5627,13 +5695,15 @@ libbar 1 bar1 (>= 1.0-1)

- Note, that this applies only to directories below - /usr/local, not in /usr/local. - Packages must not create sub-directories in the directory - /usr/local itself, except those listed in FHS, - section 4.5. However, you may create directories below - them as you wish. You must not remove any of the - directories listed in 4.5, even if you created them. + Note that this applies only to + directories below /usr/local, + not in /usr/local. Packages must + not create sub-directories in the + directory /usr/local itself, except those + listed in FHS, section 4.5. However, you may create + directories below them as you wish. You must not remove + any of the directories listed in 4.5, even if you created + them.

@@ -5694,9 +5764,10 @@ rmdir /usr/local/share/emacs 2>/dev/null || true The system-wide mail directory

- The system-wide mail directory is /var/mail. This - directory is part of the base system and should not owned - by any particular mail agents. The use of the old + The system-wide mail directory + is /var/mail. This directory is part of the + base system and should not be owned by any particular mail + agents. The use of the old location /var/spool/mail is deprecated, even though the spool may still be physically located there.

@@ -5940,7 +6011,7 @@ rmdir /usr/local/share/emacs 2>/dev/null || true

- + Writing the scripts

@@ -5990,6 +6061,23 @@ rmdir /usr/local/share/emacs 2>/dev/null || true option.

+

+ Be careful of using set -e in init.d + scripts. Writing correct init.d scripts requires + accepting various error exit statuses when daemons are already + running or already stopped without aborting + the init.d script, and common init.d + function libraries are not safe to call with set -e + in effect + /lib/lsb/init-functions, which assists in writing + LSB-compliant init scripts, may fail if set -e is + in effect and echoing status messages to the console fails, + for example. + . For init.d scripts, it's often easier + to not use set -e and instead check the result of + each command separately. +

+

If a service reloads its configuration automatically (as in the case of cron, for example), the @@ -6371,10 +6459,10 @@ echo "Setting DNS domainname to \"$domainname\"."

- Note that the same symbol (") is used for the left - and right quotation marks. A grave accent (`) is - not a quote character; neither is an apostrophe - ('). + Note that the same symbol (") is used + for the left and right quotation marks. A grave accent + (`) is not a quote character; neither is an + apostrophe (').

@@ -6481,13 +6569,48 @@ Reloading description configuration...done. anacron. Thus, you should only use this directory for jobs which may be skipped if the system is not running.)

+

+ Unlike crontab files described in the IEEE Std + 1003.1-2008 (POSIX.1) available from + , the files in + /etc/cron.d and the file + /etc/crontab have seven fields; namely: + + Minute [0,59] + Hour [0,23] + Day of the month [1,31] + Month of the year [1,12] + Day of the week ([0,6] with 0=Sunday) + Username + Command to be run + + Ranges of numbers are allowed. Ranges are two numbers + separated with a hyphen. The specified range is inclusive. + Lists are allowed. A list is a set of numbers (or ranges) + separated by commas. Step values can be used in conjunction + with ranges. +

- The scripts or crontab entries in these directories should + The scripts or crontab entries in these directories should check if all necessary programs are installed before they try to execute them. Otherwise, problems will arise when a package was removed but not purged since configuration files - are kept on the system in this situation.

+ are kept on the system in this situation. +

+ +

+ Any cron daemon must provide + /usr/bin/crontab and support normal + crontab entries as specified in POSIX. The daemon + must also support names for days and months, ranges, and + step values. It has to support /etc/crontab, + and correctly execute the scripts in + /etc/cron.d. The daemon must also correctly + execute scripts in + /etc/cron.{hourly,daily,weekly,monthly}. +

@@ -6974,17 +7097,6 @@ strip --strip-unneeded your-lib

-

- Packages containing shared libraries that may be linked to - by other packages' binaries, but which for some - compelling reason can not be installed in - /usr/lib directory, may install the shared library - files in subdirectories of the /usr/lib directory, - in which case they should arrange to add that directory in - /etc/ld.so.conf in the package's post-installation - script, and remove it in the package's post-removal script. -

-

An ever increasing number of packages are using libtool to do their linking. The latest GNU @@ -7063,13 +7175,19 @@ strip --strip-unneeded your-lib language currently used to implement it.

- Shell scripts (sh and bash) - should almost certainly start with set -e so that - errors are detected. Every script should use - set -e or check the exit status of every - command. + Shell scripts (sh and bash) other than + init.d scripts should almost certainly start + with set -e so that errors are detected. + init.d scripts are something of a special case, due + to how frequently they need to call commands that are allowed to + fail, and it may instead be easier to check the exit status of + commands directly. See for more + information about writing init.d scripts. +

+

+ Every script should use set -e or check the exit status + of every command.

-

Scripts may assume that /bin/sh implements the SUSv3 Shell Command Language @@ -7208,8 +7326,8 @@ ln -fs ../sbin/sendmail debian/tmp/usr/bin/runq Device files

- Packages must not include device files in the package file - tree. + Packages must not include device files or named pipes in the + package file tree.

@@ -7234,6 +7352,18 @@ ln -fs ../sbin/sendmail debian/tmp/usr/bin/runq /dev/cu* devices should be changed to use /dev/ttyS*.

+ +

+ Named pipes needed by the package must be created in + the postinst script + It's better to use mkfifo rather + than mknod to create named pipes so that + automated checks for packages incorrectly creating device + files with mknod won't have false positives. + and removed in + the prerm or postrm script as + appropriate. +

@@ -7766,9 +7896,17 @@ do fi done - The corresponding dpkg-statoverride --remove - calls can then be made unconditionally when the package is - purged. + The corresponding code to remove the override when the package + is purged would be: + +for i in /usr/bin/foo /usr/sbin/bar +do + if dpkg-statoverride --list $i >/dev/null 2>&1 + then + dpkg-statoverride --remove $i + fi +done +

@@ -7936,10 +8074,10 @@ done use /usr/bin/sensible-editor and /usr/bin/sensible-pager as the editor or pager program respectively. These are two scripts provided in the - Debian base system that check the EDITOR and PAGER variables - and launch the appropriate program, and fall back to - /usr/bin/editor and /usr/bin/pager if the - variable is not set. + sensible-utils package that check the EDITOR + and PAGER variables and launch the appropriate program, and fall + back to /usr/bin/editor + and /usr/bin/pager if the variable is not set.

@@ -8537,7 +8675,7 @@ name ["syshostname"]:

- + Application defaults files

@@ -8553,9 +8691,9 @@ name ["syshostname"]:

Customization of programs' X resources may also be supported with the provision of a file with the same name - as that of the package placed in the - /etc/X11/Xresources/ directory, which must - registered as a conffile or handled as a + as that of the package placed in + the /etc/X11/Xresources/ directory, which + must be registered as a conffile or handled as a configuration file. Note that this mechanism is not the same as using app-defaults; app-defaults are tied to the client @@ -8570,54 +8708,35 @@ name ["syshostname"]: Installation directory issues

- Packages using the X Window System should not be - configured to install files under the - /usr/X11R6/ directory. The - /usr/X11R6/ directory hierarchy should be + Historically, packages using the X Window System used a + separate set of installation directories from other packages. + This practice has been discontinued and packages using the X + Window System should now generally be installed in the same + directories as any other package. Specifically, packages must + not install files under the /usr/X11R6/ directory + and the /usr/X11R6/ directory hierarchy should be regarded as obsolete.

- Programs that use GNU autoconf and - automake are usually easily configured at - compile time to use /usr/ instead of - /usr/X11R6/, and this should be done whenever - possible. Configuration files for window managers and - display managers should be placed in a subdirectory of - /etc/X11/ corresponding to the package name due - to these programs' tight integration with the mechanisms - of the X Window System. Application-level programs should - use the /etc/ directory unless otherwise mandated - by policy. -

- -

- The installation of files into subdirectories - of /usr/X11R6/include/X11/ and - /usr/X11R6/lib/X11/ is now prohibited; - package maintainers should determine if subdirectories of - /usr/lib/ and /usr/share/ can be used - instead. + Include files previously installed under + /usr/X11R6/include/X11/ should be installed into + /usr/include/X11/. For files previously + installed into subdirectories of + /usr/X11R6/lib/X11/, package maintainers should + determine if subdirectories of /usr/lib/ and + /usr/share/ can be used. If not, a subdirectory + of /usr/lib/X11/ should be used.

- Packages should install any relevant files into the - directories /usr/include/X11/ and - /usr/lib/X11/, but if they do so, they must - pre-depend on x11-common (>= - 1:7.0.0) -

- These libraries used to be all symbolic - links. However, with X11R7, - /usr/include/X11 and /usr/lib/X11 - are now real directories, and packages - should ship their files here instead - of in /usr/X11R6/{include,lib}/X11. - x11-common (>= 1:7.0.0) is the package - responsible for converting these symlinks into - directories. -

- + Configuration files for window, display, or session managers + or other applications that are tightly integrated with the X + Window System may be placed in a subdirectory + of /etc/X11/ corresponding to the package name. + Other X Window System applications should use + the /etc/ directory unless otherwise mandated by + policy (such as for ).

@@ -8842,12 +8961,12 @@ name ["syshostname"]:

- Due to limitations in current implementations, all characters - in the manual page source should be representable in the usual - legacy encoding for that language, even if the file is - actually encoded in UTF-8. Safe alternative ways to write many - characters outside that range may be found in - . + If a localized version of a manual page is provided, it should + either be up-to-date or it should be obvious to the reader that + it is outdated and the original manual page should be used + instead. This can be done either by a note at the beginning of + the manual page or by showing the missing or changed portions in + the original language instead of the target language.

@@ -8860,37 +8979,53 @@ name ["syshostname"]:

- Your package should call install-info to update - the Info dir file in its postinst - script when called with a configure argument, for - example: - -install-info --quiet --section Development Development \ - /usr/share/info/foobar.info -

- -

- It is a good idea to specify a section for the location of - your program; this is done with the --section - switch. To determine which section to use, you should look - at /usr/share/info/dir on your system and choose the most - relevant (or create a new section if none of the current - sections are relevant). Note that the --section - flag takes two arguments; the first is a regular expression - to match (case-insensitively) against an existing section, - the second is used when creating a new one.

- -

- You should remove the entries in the prerm - script when called with a remove argument: - -install-info --quiet --remove /usr/share/info/foobar.info -

- -

- If install-info cannot find a description entry - in the Info file you must supply one. See for details.

+ The install-info program maintains a directory of + installed info documents in /usr/share/info/dir for + the use of info readers. + It was previously necessary for packages installing info + documents to run install-info from maintainer + scripts. This is no longer necessary. The installation + system now uses dpkg triggers. + + This file must not be included in packages. Packages containing + info documents should depend on dpkg (>= 1.15.4) | + install-info to ensure that the directory file is properly + rebuilt during partial upgrades from Debian 5.0 (lenny) and + earlier. +

+ +

+ Info documents should contain section and directory entry + information in the document for the use + of install-info. The section should be specified + via a line starting with INFO-DIR-SECTION followed by a + space and the section of this info page. The directory entry or + entries should be included between + a START-INFO-DIR-ENTRY line and + an END-INFO-DIR-ENTRY line. For example: + +INFO-DIR-SECTION Individual utilities +START-INFO-DIR-ENTRY +* example: (example). An example info directory entry. +END-INFO-DIR-ENTRY + + To determine which section to use, you should look + at /usr/share/info/dir on your system and choose + the most relevant (or create a new section if none of the + current sections are relevant). + Normally, info documents are generated from Texinfo source. + To include this information in the generated info document, if + it is absent, add commands like: + +@dircategory Individual utilities +@direntry +* example: (example). An example info directory entry. +@end direntry + + to the Texinfo source of the document and ensure that the info + documents are rebuilt from source during the package build. + +

@@ -8942,7 +9077,7 @@ install-info --quiet --remove /usr/share/info/foobar.info

Please note that this does not override the section on changelog files below, so the file - /usr/share/package/changelog.Debian.gz + /usr/share/doc/package/changelog.Debian.gz must refer to the changelog for the current version of package in question. In practice, this means that the sources of the target and the destination of the @@ -8996,7 +9131,7 @@ install-info --quiet --remove /usr/share/info/foobar.info

Every package must be accompanied by a verbatim copy of its - copyright and distribution license in the file + copyright information and distribution license in the file /usr/share/doc/package/copyright. This file must neither be compressed nor be a symbolic link.