10.Upgrading checklist

10.1.About the checklist

The checklist below has been created to simplify the upgrading processof old packages. This list is not official or normative. It onlyprovides an indication of what has changed and whether you are likely toneed to make changes to your package in light of this. If you havedoubts about a certain topic, if you need more details, or if you thinksome other package does not comply with policy, please refer to thePolicy Manual itself.

All of the changes from version 3.0.0 onwards indicate which section ofthe Policy Manual discusses the issue. The section numbering shouldstill be accurate for changes back to the 2.5.0 release. Before thatpoint, the sections listed here probably no longer correspond tosections in the modern Policy Manual.

Here is how the check list works: Check which policy version yourpackage was checked against last (indicated in theStandards-Versionfield of the source package). Then move upwards until the top and checkwhich of the items on the list might concern your package. Note whichsections of policy discuss this, and then check out the Policy Manualfor details. Once you’ve made all necessary changes to match the currentrules, update the value ofStandards-Version to the current PolicyManual version.

If an item in the list is followed by the name of a Lintian tag insquare brackets, it indicates that the policy requirement is coveredby that Lintian tag. The lack of such an annotation does not meanthat no Lintian tag exists to cover the requirement. Our coverage ofthese annotations is quite incomplete, and patches to this checklistare very welcome.

The sections in this checklist match the values for theStandards-Version control field in omitting the minor patch version,except in the two anomalous historical cases where normativerequirements were changed in a minor patch release.

10.2.Version 4.7.2

Released February, 2025.

10.1

A change made the previous release of Policy is relaxed:

Packages that already install programs to /usr/games, where anotherpackage installs a program of the same with different functionality to adifferent directory on the default PATH, may continue to do so.

Packages must not install any newly conflicting programs to /usr/games,and packages already doing so are encouraged to move these programs tonon-conflicting names.

10.3.Version 4.7.1

Released February, 2025.

10.1

Two different packages must not install programs with differentfunctionality to the same filenames, even names under differentdirectories, when the directories are on the default PATH.

10.1

Packages must not install files to directories like /bin, /lib, /lib*and /sbin which are now symbolic links to corresponding directories under/usr. Packages may assume that /bin, /lib and /sbin are always symlinks,and that files under /usr/bin, /usr/lib and /usr/sbin are accessible viathese aliases.

10.9

Packages should not require the existence of any files under/usr/share/locale in order to function in a C or C.UTF-8 locale.

12.1

Packages (other than manpage readers) must not require the existence ofany files under /usr/share/man.

12.2

Packages (other than info readers) must not require the existence of anyfiles in /usr/share/info.

10.4.Version 4.7.0

Released April, 2024.

2.2.1

Document that source packages in themain archive area may buildbinary packages in thecontrib archive area, although this isdiscouraged unless the source package is inconvenient to split. Thisdoes not relax the requirement that source packages inmain must nothave build dependencies outside ofmain.

2.2.2

Thenon-free-firmware archive area has been added.

3.9

Maintainer scripts should use native overriding mechanisms instead ofdpkg-divert, wherever possible. Maintainer scripts must not divertconfiguration files used by systemd components.

Maintainer scripts must not use the alternatives system for systemdconfiguration files.

4.8

Hard links are permitted in source packages.

4.9

For packages in contrib, and for packages in non-free withAutobuild:yes, required targets in d/rules are no longer permitted to attemptnetwork access. Previously, only packages in main had this restriction.

5.6.13

TheDescription field is not present in.changes files if nobinary packages are being uploaded.

5.6.19

TheBinary field is not present in.changes files if no binarypackages are being uploaded.

6.3

Packages that automatically start or stop system services must includesystemd units unless the service is only intended for use onsystems running alternative init systems. Previously,systemdalso supported init scripts, but that support is being removed.

10.5.Version 4.6.2

Released December, 2022.

3.8

Essential packages are only required to provide their corefunctionality when unconfigured if they had previously been configuredat least once.

6.5 & 6.6

The new package version is provided as an additional argumentfollowing the old package version to severalpreinst,prerm,andpostrm maintainer script actions.

11.8.4

When computing the priority for alternatives for/usr/bin/x-window-manager, start with a priority of 40, not 20, anddon’t increase the priority based on support for the (obsolete) Debianmenu system.

10.6.Version 4.6.1

Released May, 2022.

9.1.1

Restore permission for packages for non-64-bit architectures to installfiles to/usr/lib64/.

9.7.2 & 9.7.3

The text of these sections has been updated to reflect the package splitof bin:mime-support into bin:media-types and bin:mailcap.

10.7.Version 4.6.0

Released August, 2021.

9.1.1

No package is allowed to install files in/usr/lib64/. Previously,this prohibition only applied to packages for 64-bit architectures.

12.1

Manual pages may be included in dependencies, not only in the packagescontaining the things they document.

10.8.Version 4.5.1

Released November, 2020.

2.3, 4.5 & 12.5

The copyright information for files in a package must be copiedverbatim into/usr/share/doc/PACKAGE/copyright when all of thefollowing hold:

  1. the distribution license for those files requires thatcopyright information be included in all copies and/or binarydistributions;

  2. the files are shipped in the binary package, either in sourceor compiled form; and

  3. the form in which the files are present in the binary packagedoes not include a plain text version of their copyrightnotices.

Note that there is no change to the requirement to copy alllicensing information into/usr/share/doc/PACKAGE/copyright.

(Previously, it was always required for all copyright informationto be copied into/usr/share/doc/PACKAGE/copyright.)

4.17

Packages must not contain a non-default series file. That is,dpkg’s vendor-specific patch series feature must not be used forpackages in the Debian archive.

(previously a “should not”)

10.9.Version 4.5.0

Released January, 2020.

9.2.1

When maintainers choose a new hardcoded or dynamically generatedusername for packages to use, they should start this username withan underscore.

9.3.1

Packages that include system services should includesystemdservice units to start or stop those services.

Including an init script is encouraged if there is no systemdunit, and optional if there is (previously, it was recommended).

In the common case that a package includes a single systemservice, the service unit should have the same name as the packageplus the “.service” extension. If an init script is included, itshould have the same name as the systemd unit.

9.3.2

It is encouraged for init scripts to support thestatusargument (previously, it was recommended).

9.3.3

Use of update-rc.d is required if the package includes an initscript (previously, Policy said in one place that it was required,and in another said that it was recommended).

10.10.Version 4.4.1

Released September, 2019.

5.6.26

A package control file must not have more than oneVcs-<type>field.

If the package is maintained in multiple version control systems,the maintainer should specify the one that they would prefer otherpeople to use as the basis for proposing changes to the package.

9.10 & 11.5

doc-base registration is now optional, from being recommended.

9.12

Document/run/reboot-required mechanism.

copyright-format

State some syntactical restrictions on theFiles: field.Wildcards are required to match the contents of directories, andthe space character separates patterns and cannot be escaped.

10.11.Version 4.4.0

Released July, 2019.

4.9

The recommended way to implement the build process of a Debianpackage, in the absence of a good reason to use a differentapproach, is thedh tool. This recommendation includes thecontents of thedebian/rules building script.

Some examples of good reasons to use a different approach aregiven. The recommendation to usedh does not always apply,and use ofdh is not required.

5.6.26

Permit-b in Vcs-Hg as well as Vcs-Git.

7.5

Document versioned Provides.

virtual

Newlogind anddefault-logind virtual packages for a packageproviding logind API (via D-Bus andsd-login(3)), and forDebian’s preferred implementation, respectively.

10.12.Version 4.3.0

Released December, 2018.

2.3 & 4.5

In cases where a package’s distribution license explicitly permitsits copyright information to be excluded from distributions ofbinaries built from the source, a verbatim copy of the package’scopyright information should normally still be included in thecopyright file, but it need not be if creating and maintaining acopy of that information involves significant time and effort.

4.9

Required targets must not write outside of the unpacked sourcepackage tree, except for TMPDIR, /tmp and /var/tmp.

4.17

Packages should not contain a non-default series file. That is,dpkg’s vendor-specific patch series feature should not be used forpackages in the Debian archive.

10.1

Binaries should be stripped usingstrip--strip-unneeded--remove-section=.comment--remove-section=.note(as dh_strip already does).

10.1

It is no longer suggested nor recommended to useinstall-s tostrip binaries, because it gets several things wrong.

10.2

When stripping shared libraries withstrip(1), you shouldadditionally pass--remove-section=.comment--remove-section=.note(as dh_strip already does).

virtual

Newdbus-session-bus anddefault-dbus-session-bus virtualpackages for a package providing the D-Bus session bus, and forDebian’s preferred D-Bus implementation, respectively.

10.13.Version 4.2.1

Released August, 2018.

10.4 & perl

The requirement that the shebang at the top of Perl commandscripts be#!/usr/bin/perl is relaxed from a ‘must’ to a‘should’.

10.14.Version 4.2.0

Released August, 2018.

4.9

The package build should be as verbose as reasonably possible.This means thatdebian/rules should pass to the commands itinvokes options that cause them to produce verbose output.

4.9

Required targets may attempt network access, via the loopbackinterface, to services on the build host that have been started bythe build.

4.9.1

Newterse tag that can appear inDEB_BUILD_OPTIONS to makea package build less verbose.

5.2 & 5.4

The Standards-Version field is now mandatory, not justrecommended.

12.7

Upstream release notes, when available, should be installed as/usr/share/doc/package/NEWS.gz. Upstream changelogs may bemade available as/usr/share/doc/package/changelog.gz.

This is a relaxation of older Policy which said that the upstreamchangelog should be made accessible at this path. Now it is up tomaintainer discretion whether it is useful to install it.

The practice of installing the upstream release notes as/usr/share/doc/package/changelog.gz is permitted butdeprecated.

10.15.Version 4.1.5

Released July, 2018.

4.9.2

Document howdebian/rules and theRules-Requires-Rootfield interact.

5.6.12

You should not change a package’s epoch, even in experimental,without getting consensus on debian-devel first.

5.6.12.1

Epochs should not be used for the purpose of rolling back theversion of a package. Use the +really convention.

5.6.31

Document theRules-Requires-Root field.

9.1.1

Update Debian’s version of the Filesystem Hierarchy Standard from2.3 to 3.0, and update the list of exceptions. Only a tinyminority of packages, if any, should be made buggy by this change.

9.3.2 & 10.4

Update version of POSIX standard for shell scripts from SUSv3 toPOSIX.1-2017 (also known as SUSv4 in some contexts).

10.16.Version 4.1.4

Released April, 2018.

3.2.2

The part of the version number after the epoch must not be reusedfor a version of the package with different contents, even afterthe version of the package previously using that part of theversion number is no longer present in any archive suites.

3.2.2

For non-native packages, the upstream version must not be reusedfor different upstream source code, so that for each sourcepackage name and upstream version number there exists exactly oneoriginal source archive contents.

4.9

Theget-orig-source rules target has been removed. Packagesshould transition todebian/watch and use uscan where possible.

9.1.2

If/etc/staff-group-for-usr-local does not exist,/usr/local and all subdirectories created by packages shouldhave permissions 0755 and be owned byroot:root. If the fileexists, the old permissions of 2775 and ownership of root:staffshould remain.

10.17.Version 4.1.3

Released December, 2017.

5.6.26

URLs given inVCS-* headers should use a scheme that providesconfidentiality (https, for example) if the VCS repositorysupports it.[vcs-field-uses-insecure-uri]

7.8

Built-Using should be used exactly when there are license orDFSG requirements to retain full source code in the archive.Previously, the description of the field implied it was needed inother cases too.

9.1.1

libc may also install files in/lib64.

9.3.3.1

If a package’s daemon should not be autostarted unless the localadministrator has explicitly requested it, the package’spostinst should use the newdefaults-disabled option ofupdate-rc.d.

The old method of includingDISABLED=yes in the package’s/etc/default file should not be used.

11.4

Clarify that programs may invoke either/usr/bin/editor and/usr/bin/pager directly, or useeditor andpager and relyon PATH.

12.5

The Creative Commons CC0 1.0 Universal license (CC0-1.0) is nowincluded in/usr/share/common-licenses and does not need to becopied verbatim in the packagecopyright file.

10.18.Version 4.1.2

Released November, 2017.

3.1.1

Binary packages that have potentially offensive content shouldhave the suffix-offensive. This replaces an older conventionto use-off. As before, whether the contents of a packageneeds this content warning is a matter of maintainer discretion.

10.2

Private shared object files should be installed in subdirectoriesof/usr/lib or/usr/lib/triplet. This change permitsprivate shared object files to take advantage of multiarch, andalso removes the implication that it is permissible to installprivate shared object files directly into/usr/lib/triplet.

10.4

The shebang at the top of Perl command scripts must be#!/usr/bin/perl. (Previously, this was a ‘should’ rather thana ‘must’.)

10.19.Version 4.1.1

Released September, 2017.

4.4

debian/changelog must exist in source packages.

9.2.3

The canonical non-existent home directory is/nonexistent.

10.20.Version 4.1.0

Released August, 2017.

2.2.1

Non-default alternative dependencies on non-free packages arepermitted for packages in main.

4.11

If upstream provides OpenPGP signatures, including the upstreamsigning key asdebian/upstream/signing-key.asc in the sourcepackage and using thepgpsigurlmangle option indebian/watch configuration to indicate how to find the upstreamsignature for new releases is recommended.

4.15

Packages should build reproducibly when certain factors are heldconstant; see 4.15 for the list.

4.15

Packages are recommended to build reproducibly even when buildpaths and most environment variables are allowed to vary.

9.1.1

Only the dynamic linker may install files to/lib64/.

No package for a 64 bit architecture may install files to/usr/lib64/ or any subdirectory.

11.8.3

The required behaviour ofx-terminal-emulator-e has beenclarified, and updated to replace a false claim about thebehaviour ofxterm.

Programs must support-ecommand wherecommand may includemultiple arguments, which must be executed as if the argumentswere passed toexecvp directly, bypassing the shell.

If this execution fails and-e has a single argument,xterm’s fallback behaviour of passingcommand to the shellis permitted but not required.

10.21.Version 4.0.1

Released August, 2017.

2.5

Priorities are now used only for controlling which packages are partof a minimal or standard Debian installation and should be selectedbased on functionality provided directly to users (so nearly allshared libraries should have a priority ofoptional). Packagesmay now depend on packages with a lower priority.

Theextra priority has been deprecated and should be treated asequivalent tooptional. Allextra priorities should bechanged tooptional. Packages with a priority ofoptionalmay conflict with each other (but packages that both have a priorityofstandard or higher still may not conflict).

5.6.30

New section documenting theTestsuite field in Debian sourcecontrol files.

8.1.1

Shared libraries must now invokeldconfig by means of triggers,instead of maintscripts.

9.3.3

Packages are recommended to use debhelper tools instead of invokingupdate-rc.d andinvoke-rc.d directly.

9.3.3

Policy’s description of how the local system administrator maymodify the runlevels at which a daemon is started and stopped, andhow init scripts may depend on other init scripts, have beenremoved. These are now handled by LSB headers.

9.4

Policy’s specification of the console messages that should beemitted byinit.d scripts has been removed. This is now definedby LSB, for sysvinit, and is not expected to be followed by otherinit systems.

9.6

Packages installing a Free Desktop entry must not also install aDebian menu system entry.

9.9

The prohibition against depending on environment variables forreasonable defaults is only for programs on the system PATH and onlyfor custom environment variable settings (not, say, a sane PATH).

10.22.Version 4.0.0

Released May, 2017.

4.3

config.sub andconfig.guess should be updated at build timeor replaced with the versions from autotools-dev.

4.9

NewTARGET set ofdpkg-architecture variables and newDEB_*_ARCH_BITS andDEB_*_ARCH_ENDIAN variables.

4.9.1

NewDEB_BUILD_OPTIONS tag,nodoc, which says to suppressdocumentation generation (but continue to build all binary packages,even documentation packages, just let them be mostly empty).

5.2

Automatically-generated debug packages do not need to have acorresponding stanza indebian/control. (This is existingpractice; this Policy update is just clearer about it.)

5.6.12

Colons are not permitted in upstream version numbers.

7.7

NewBuild-Depends-Arch andBuild-Conflicts-Arch fields arenow supported.

8.4

The recommended package name for shared library development files isnow libraryname-dev or librarynameapiversion-dev, notlibrarynamesoversion-dev.

9.1.1

The stable release of Debian supports/run, so packages may nowassume that it exists and do not need any special dependency on aversion of initscripts.

9.3.2

New optionaltry-restart standard init script argument, which(if supported) should restart the service if it is already runningand otherwise just report success.

9.3.2

Support for thestatus init script argument is recommended.

9.3.3.2

Packages must not call/etc/init.d scripts directly even as afallback, and instead must always useinvoke-rc.d (which isessential and shouldn’t require any conditional).

9.11.1

Instructions forupstart integration removed sinceupstartis no longer maintained in Debian.

10.1

Packages may not install files in both/path and/usr/path,and must manage any backward-compatibility symlinks so that theydon’t break if/path and/usr/path are the same directory.

10.6

Packages should assume device files in/dev are dynamicallymanaged and don’t have to be created by the package. Packages otherthan those whose purpose is to manage/dev must not create orremove files there when a dynamic management facility is in use.Named pipes and device files outside of/dev should normally becreated on demand via init scripts, systemd units, or similarmechanisms, but may be created and removed in maintainer scripts ifthey must be created during package installation.

10.9

Checking with the base-passwd maintainer is no longer required (ordesirable) when creating a new dynamic user or group in a package.

12.3

Dependencies on *-doc packages should be at most Recommends(Suggests if they only include documentation in supplementalformats).

12.5

The Mozilla Public License 1.1 and 2.0 (MPL-1.1 and MPL-2.0) are nowincluded in/usr/share/common-licenses and do not need to becopied verbatim in the packagecopyright file.

copyright-format

Thehttps form of the copyright-format URL is now allowed andpreferred in theFormat field.

perl

The Perl search path now includes multiarch directories. The vendordirectory for architecture-specific modules is now versioned tosupport multiarch.

virtual

Newadventure virtual package for implementations of the classicColossal Cave Adventure game.

virtual

Newhttpd-wsgi3 virtual package for Python 3 WSGI-capable HTTPservers. The existinghttpd-wsgi virtual package is for Python 2WSGI-capable HTTP servers.

virtual

Newvirtual-mysql-client,virtual-mysql-client-core,virtual-mysql-server,virtual-mysql-server-core, andvirtual-mysql-testsuite virtual packages for MySQL-compatiblesoftware.

10.23.Version 3.9.8

Released April, 2016.

9.6

The menu system is deprecated in favor of the FreeDesktop menustandard. New requirements set for FreeDesktop menu entries.

9.7

New instructions for registering media type handlers with theFreeDesktop system, which automatically synchronizes with mailcapand therefore replaces mailcap registration for packages usingdesktop entries.

10.24.Version 3.9.7

Released February, 2016.

10.5

Symbolic links must not traverse above the root directory.

9.2.2

32bit UIDs in the range 65536-4294967293 are reserved fordynamically allocated user accounts.

5.1

Empty field values in control files are only permitted in thedebian/control file of a source package.

4.9

debian/rules: required targets must not attempt network access.

12.3

recommend to ship additional documentation for packagepkg in aseparate packagepkg-doc and install it into/usr/share/doc/pkg.

10.25.Version 3.9.6

Released September, 2014.

9.1

The FHS is relaxed to allow a subdirectory of/usr/lib to hold amixture of architecture-independent and architecture-dependentfiles, though directories entirely composed ofarchitecture-independent files should be located in/usr/share.

9.1

The FHS requirement for/usr/local/lib64 to exist if/lib64or/usr/lib64 exists is removed.

9.1

An FHS exception has been granted for multiarch include files,permitting header files to instead be installed to/usr/include/triplet.

10.1

Binaries must not be statically linked with the GNU C library, seepolicy for exceptions.

4.4

It is clarified that signature appearing in debian/changelog shouldbe the details of the person who prepared this release of thepackage.

11.5

The default web document root is now/var/www/html

virtual

java1-runtime andjava2-runtime are removed,javaN-runtime andjavaN-runtime-headless are added for all Nbetween 5 and 9.

virtual

Addedhttpd-wsgi for WSGI capable HTTP servers.

perl

Perl packages should use the%Config hash to locate module pathsinstead of hardcoding paths in@INC.

perl

Perl binary modules and any modules installed into$Config{vendorarch} must depend on the relevant perlapi-*package.

10.26.Version 3.9.5

Released October, 2013.

5.1

Control data fields must not start with the hyphen character(-), to avoid potential confusions when parsing clearsignedcontrol data files that were not properly unescaped.

5.4, 5.6.24

Checksums-Sha1 andChecksums-Sha256 are now mandatory in.dsc files.

5.6.25, 5.8.1

TheDM-Upload-Allowed field is obsolete. Permissions are nowgranted viadak-commands files.

5.6.27

New section documenting thePackage-List field in Debian sourcecontrol files.

5.6.28

New section documenting thePackage-Type field in source packagecontrol files.

5.6.29

New section documenting theDgit field in Debian source controlfiles.

9.1.1.8

The exception to the FHS for the/selinux was removed.

10.7.3

Packages should remove all obsolete configuration files withoutlocal changes during upgrades. Thedpkg-maintscript-helper tool,available from the dpkg package sinceWheezy, can help with this.

10.10

The name of the files and directories installed by binary packagesmust be encoded in UTF-8 and should be restricted to ASCII whenpossible. In the system PATH, they must be restricted to ASCII.

11.5.2

Stop recommending to serve HTML documents from/usr/share/doc/package.

12.2

Packages distributing Info documents should use install-info’strigger, and do not need anymore to depend ondpkg(>=1.15.4)|install-info.

debconf

Theescape capability is now documented.

virtual

mp3-decoder andmp3-encoder are removed.

10.27.Version 3.9.4

Released August, 2012.

2.4

Newtasks archive section.

4.9

build-arch andbuild-indep are now mandatory targets indebian/rules.

5.6.26

New section documenting theVcs-* fields, which are already inwidespread use. Note the mechanism for specifying the Git branchused for packaging in the Vcs-Git field.

7.1

The deprecated relations < and > now must not be used.

7.8

NewBuilt-Using field, which must be used to document the sourcepackages for any binaries that are incorporated into this package atbuild time. This is used to ensure that the archive meets licenserequirements for providing source for all binaries.

8.6

Policy for dependencies between shared libraries and other packageshas been largely rewritten to document thesymbols system andmore clearly document handling of shared library ABI changes.symbols files are now recommended overshlibs files in mostsituations. All maintainers of shared library packages should reviewthe entirety of this section.

9.1.1

Packages must not assume the/run directory exists or is usablewithout a dependency oninitscripts(>=2.88dsf-13.3) until thestable release of Debian supports/run.

9.7

Packages including MIME configuration can now rely on triggers anddo not need to call update-mime.

9.11

New section documenting general requirements for alternate initsystems and specific requirements for integrating with upstart.

12.5

All copyright files must be encoded in UTF-8.

10.28.Version 3.9.3

Released February, 2012.

2.4

New archive sectionseducation,introspection, andmetapackages added.

5.6.8

TheArchitecture field in*.dsc files may now contain thevalueanyall for source packages building botharchitecture-independent and architecture-dependent packages.

7.1

If a dependency is restricted to particular architectures, the listof architectures must be non-empty.

9.1.1

/run is allowed as an exception to the FHS and replaces/var/run./run/lock replaces/var/lock. The FHSrequirements for the older directories apply to these directories aswell. Backward compatibility links will be maintained and packagesneed not switch to referencing/run directly yet. Files in/run should be stored in a temporary file system.

9.1.4

New section spelling out the requirements for packages that usefiles in/run,/var/run, or/var/lock. This generalizesinformation previously only in 9.3.2.

9.5

Cron job file names must not contain. or+ or they will beignored by cron. They should replace those characters with_. Ifa package provides multiple cron job files in the same directory,they should each start with the package name (possibly modified asabove),-, and then some suitable suffix.

9.10

Packages using doc-base do not need to call install-docs anymore.

10.7.4

Packages that declare the sameconffile may see left-overconfiguration files from each other even if they conflict.

11.8

The Policy rules around Motif libraries were just a special case ofnormal rules for non-free dependencies and were largely obsolete, sothey have been removed.

12.5

debian/copyright is no longer required to list the Debianmaintainers involved in the creation of the package (although notethat the requirement to list copyright information is unchanged).

copyright-format

Version 1.0 of the “Machine-readabledebian/copyright file”specification is included.

mime

This separate document has been retired and and its (short) contentsmerged into Policy section 9.7. There are no changes to therequirements.

perl

Packages may declare an interest in the perl-major-upgrade triggerto be notified of major upgrades of perl.

virtual

ttf-japanese-{mincho,gothic} is renamed tofonts-japanese-{mincho,gothic}.

10.29.Version 3.9.2

Released April, 2011.

*

Multiple clarifications throughout Policy where “installed” was usedand the more precise terms “unpacked” or “configured” were intended.

3.3

The maintainer address must accept mail from Debian role accountsand the BTS. At least one human must be listed with their personalemail address inUploaders if the maintainer is a shared emailaddress. The duties of a maintainer are also clearer.

5

All control fields are now classified as simple, folded, ormultiline, which governs whether their values must be a single lineor may be continued across multiple lines and whether line breaksare significant.

5.1

Parsers are allowed to accept stanza separation lines containingwhitespace, but control files should use completely empty lines.Ordering of stanzas is significant. Field names must be composedof printable ASCII characters except colon and must not begin with#.

5.6.25

TheDM-Upload-Allowed field is now documented.

6.5

The system state maintainer scripts can rely upon during eachpossible invocation is now documented. In several less-common cases,this is stricter than Policy had previously documented. Packageswith complex maintainer scripts should be reviewed in light of thisnew documentation.

7.2

The impact on system state when maintainer scripts that are part ofa circular dependency are run is now documented. Circulardependencies are now a should not.

7.2

The system state whenpostinst andprerm scripts are run isnow documented, and the documentation of the special case ofdependency state forpostrm scripts has been improved.postrm scripts are required to gracefully skip actions if theirdependencies are not available.

9.1.1

GNU/Hurd systems are allowed/hurd and/servers directoriesin the root filesystem.

9.1.1

Packages installing to architecture-specific subdirectories of/usr/lib must use the value returned bydpkg-architecture-qDEB_HOST_MULTIARCH, not bydpkg-architecture-qDEB_HOST_GNU_TYPE; this is a path change oni386 architectures and a no-op for other architectures.

virtual

mailx is now a virtual package provided by packages that install/usr/bin/mailx and implement at least the POSIX-requiredinterface.

10.30.Version 3.9.1

Released July, 2010.

3.2.1

Date-based version components should be given as the four-digityear, two-digit month, and then two-digit day, but may have embeddedpunctuation.

3.9

Maintainer scripts must pass--package todpkg-divert whencreating or removing diversions and must not use--local.

4.10

Onlydpkg-gencontrol supports variable substitution.dpkg-genchanges (for*.changes) anddpkg-source (for*.dsc) do not.

7.1

Architecture restrictions and wildcards are also allowed in binarypackage relationships provided that the binary package is notarchitecture-independent.

7.4

Conflicts andBreaks should only be used when there are fileconflicts or one package breaks the other, not just because twopackages provide similar functionality but don’t interfere.

8.1

The SONAME of a library should change whenever the ABI of thelibrary changes in a way that isn’t backward-compatible. It shouldnot change if the library ABI changes are backward-compatible.Discourage bundling shared libraries together in one package.

8.4

Ada Library Information (*.ali) files must be installedread-only.

8.6.1, 8.6.2, 8.6.5

Packages should normally not include ashlibs.local file sincewe now have completeshlibs coverage.

8.6.3

The SONAME of a library may instead be of the formname-major-version.so.

10.2

Libtool.la files should not be installed for public libraries.If they’re required (forlibltdl, for instance), thedependency_libs setting should be emptied. Library packageshistorically including.la files must continue to include them(withdependency_libs emptied) until all libraries that dependon that library have removed or emptied their.la files.

10.2

Libraries no longer need to be built with-D_REENTRANT, whichwas an obsolete LinuxThreads requirement. Instead, say explicitlythat libraries should be built with threading support and to bethread-safe if the library supports this.

10.4

/bin/sh scripts may assume thatkill supports an argument of-signal, thatkill andtrap support the numeric signalslisted in the XSI extension, and that signal 13 (SIGPIPE) can betrapped withtrap.

10.8

Use of/etc/logrotate.d/package for logrotate rules is nowrecommended.

10.9

Control information files should be owned byroot:root andeither mode 644 or mode 755.

11.4, 11.8.3, 11.8.4

Packages providing alternatives foreditor,pager,x-terminal-emulator, orx-window-manager should also providea slave alternative for the corresponding manual page.

11.5

Cgi-bin executable files may be installed in subdirectories of/usr/lib/cgi-bin and web servers should serve out executables inthose subdirectories.

12.5

The GPL version 1 is now included in common-licenses and should bereferenced from there instead of included in thecopyright file.

10.31.Version 3.9.0

Released June, 2010.

4.4, 5.6.15

The required format for the date in a changelog entry and in theDate control field is now precisely specified.

5.1

A control stanza must not contain more than one instance of aparticular field name.

5.4, 5.5, 5.6.24

TheChecksums-Sha1 andChecksums-Sha256 fields in*.dscand*.changes files are now documented and recommended.

5.5, 5.6.16

TheFormat field of.changes files is now 1.8. TheFormat field syntax for source package.dsc files allows asubtype in parentheses, and it is used for a different purpose thantheFormat field for.changes files.

5.6.2

The syntax of theMaintainer field is now must rather thanshould.

5.6.3

The comma separating entries inUploaders is now must ratherthan should.

5.6.8, 7.1, 11.1.1

Architecture wildcards may be used in addition to specificarchitectures indebian/control and*.dsc Architecturefields, and in architecture restrictions in build relationships.

6.3

Maintainer scripts are no longer guaranteed to run with acontrolling terminal and must be able to fall back to noninteractivebehavior (debconf handles this). Maintainer scripts may abort ifthere is no controlling terminal and no reasonable default for ahigh-priority question, but should avoid this if possible.

7.3, 7.6.1

Breaks should be used withReplaces for moving files betweenpackages.

7.4

Breaks should normally be used instead ofConflicts fortransient issues and moving files between packages. Newdocumentation of when each should be used.

7.5

UseConflicts withProvides if only one provider of avirtual facility can be installed at a time.

8.4

All shared library development files are no longer required to be inthe-dev package, only be available when the-dev package isinstalled. This allows the-dev package to be split as long asit depends on the additional packages.

9.2.2

The UID range of user accounts is extended to 1000-59999.

9.3.2, 10.4

init.d scripts are a possible exception from the normalrequirement to useset-e in each shell script.

12.5

The UCB BSD license was removed from the list of licenses thatshould be referenced from/usr/share/common-licenses/BSD. Itshould instead be included directly indebian/copyright,although it will still be in common-licenses for the time being.

debconf

SETTITLE is now documented (it has been supported for sometime).SETTITLE is likeTITLE but takes a template insteadof a string to allow translation.

perl

perl-base now provides perlapi-abiname instead of a package basedsolely on the Perl version. Perl packages must now depend onperlapi-$Config{debian_abi}, falling back on$Config{version}if$Config{debian_abi} is not set.

perl

Packages usingMakefile.PL should useDESTDIR rather thanPREFIX to install into the package staging area.PREFIX onlyworked due to a Debian-local patch.

10.32.Version 3.8.4

Released January, 2010.

9.1.1

An FHS exception has been granted for multiarch libraries.Permitting files to instead be installed to/lib/triplet and/usr/lib/triplet directories.

10.6

Packages may not contain named pipes and should instead create themin postinst and remove them in prerm or postrm.

9.1.1

/sys and/selinux directories are explicitly allowed as anexception to the FHS.

10.33.Version 3.8.3

Released August, 2009.

4.9

DEB_*_ARCH_CPU and DEB_*_ARCH_OS variables are nowdocumented and recommended over GNU-style variables for thatinformation.

5.6.8

Source package Architecture fields may containall in combinationwith other architectures. Clarify whenall andany may be usedin different versions of the field.

5.6.14

The Debian archive software does not support uploading to multipledistributions with one*.changes file.

5.6.19

The Binary field may span multiple lines.

10.2

Shared library packages are no longer allowed to install librariesin a non-standard location and modifyld.so.conf. Packagesshould either be installed in a standard library directory orpackages using them should be built with RPATH.

11.8.7

Installation directories for X programs have been clarified.Packages are no longer required to pre-depend on x11-common beforeinstalling into/usr/include/X11 and/usr/lib/X11.

12.1

Manual pages are no longer required to contain only charactersrepresentable in the legacy encoding for that language.

12.1

Localized man pages should either be kept up-to-date with theoriginal version or warn that they’re not up-to-date, either withwarning text or by showing missing or changed portions in theoriginal language.

12.2

install-info is now handled via triggers so packages no longer needto invoke it in maintainer scripts. Info documents should now havedirectory sections and entries in the document. Packages containinginfo documents should add a dependency to support partial upgrades.

perl

The requirement for Perl modules to have a versioned Depend andBuild-Depend onperl>=5.6.0-16 has been removed.

10.34.Version 3.8.2

Released June, 2009.

2.4

The list of archive sections has been significantly expanded. Seethis debian-devel-announcemessagefor the list of new sections and rules for how to categorizepackages.

3.9.1

All packages must use debconf or equivalent for user prompting,though essential packages or their dependencies may also fall backon other methods.

5.6.1

The requirements for source package names are now explicitly spelledout.

9.1

Legacy XFree86 servers no longer get a special exception from theFHS permitting/etc/X11/XF86Config-4.

9.1.3

Removed obsolete dependency requirements for packages that use/var/mail.

11.8.5

Speedo fonts are now deprecated. The X backend was disabled startingin lenny.

12.5

The GNU Free Documentation License version 1.3 is included incommon-licenses and should be referenced from there.

10.35.Version 3.8.1

Released March, 2009.

3.8

Care should be taken when adding functionality to essential and suchadditions create an obligation to support that functionality inessential forever unless significant work is done.

4.4

Changelog files must be encoded in UTF-8.

4.4

Some format requirements for changelog files are now “must” insteadof “should.”

4.4.1

Alternative changelog formats have been removed. Debian onlysupports one changelog format for the Debian Archive.

4.9.1

New nocheck option for DEB_BUILD_OPTIONS indicating any build-timetest suite provided by the package should not be run.

5.1

All control files must be encoded in UTF-8.

5.2

debian/control allows comment lines starting with # with nopreceding whitespace.

9.3

Init scripts ending in .sh are not handled specially. They are notsourced and are not guaranteed to be run by/bin/sh regardlessof the #! line. This brings Policy in line with the long-standingbehavior of the init system in Debian.

9.3.2

The start action of an init script must exit successfully and notstart the daemon again if it’s already running.

9.3.2

/var/run and/var/lock may be mounted as temporaryfilesystems, and init scripts must therefore create any necessarysubdirectories dynamically.

10.4

/bin/sh scripts may assume that local can take multiple variablearguments and supports assignment.

11.6

User mailboxes may be mode 600 and owned by the user rather thanmode 660, owned by user, and group mail.

10.36.Version 3.8.0

Released June, 2008.

2.4, 3.7

The base section has been removed. contrib and non-free have beenremoved from the section list; they are only categories. The basesystem is now defined by priority.

4.9

Ifdpkg-source-x doesn’t provide the source that will becompiled, a debian/rules patch target is recommended and should dowhatever else is necessary.

4.9.1, 10.1

Standardized the format of DEB_BUILD_OPTIONS. Specified permittedcharacters for tags, required that tags be whitespace-separated,allowed packages to assume non-conflicting tags, and requiredunknown flags be ignored.

4.9.1

Added parallel=n to the standardized DEB_BUILD_OPTIONS tags,indicating that a package should be built using up to n parallelprocesses if the package supports it

4.13

Debian packages should not use convenience copies of code from otherpackages unless the included package is explicitly intended to beused that way.

4.14

If dpkg-source -x doesn’t produce source ready for editing andbuilding with dpkg-buildpackage, packages should include adebian/README.source file explaining how to generate the patchedsource, add a new modification, and remove an existing modification.This file may also be used to document packaging a new upstreamrelease and any other complexity of the Debian build process.

5.6.3

The Uploaders field in debian/control may be wrapped.

5.6.12

An empty Debian revision is equivalent to a Debian revision of 0 ina version number.

5.6.23

New Homepage field for upstream web sites.

6.5, 6.6, 7

The Breaks field declares that this package breaks another andprevents installation of the breaking package unless the packagenamed in Breaks is deconfigured first. This field should not be useduntil the dpkg in Debian stable supports it.

8.1, 8.2

Clarify which files should go into a shared library package, into aseparate package, or into the -dev package. Suggest -tools insteadof -runtime for runtime support programs, since that naming is morecommon in Debian.

9.5

Files in/etc/cron.{hourly,daily,weekly,monthly} must beconfiguration files (upgraded from should). Mention the hourlydirectory.

11.8.6

Packages providing/etc/X11/Xresources files need not conflictwithxbase(<<3.3.2.3a-2), which is long-obsolete.

12.1

Manual pages in locale-specific directories should use either thelegacy encoding for that directory or UTF-8. Country names shouldnot be included in locale-specific manual page directories unlessindicating a significant difference in the language. All charactersin the manual page source should be representable in the legacyencoding for a locale even if the man page is encoded in UTF-8.

12.5

The Apache 2.0 license is now in common-licenses and should bereferenced rather than quoted indebian/copyright.

12.5

Packages in contrib and non-free should state in the copyright filethat the package is not part of Debian GNU/Linux and briefly explainwhy.

debconf

Underscore (_) is allowed in debconf template names.

10.37.Version 3.7.3

Released December, 2007.

5.6.12

Package version numbers may contain tildes, which sort beforeanything, even the end of a part.

10.4

Scripts may assume that/bin/sh supports local (at a basiclevel) and that its test builtin (if any) supports -a and -o binarylogical operators.

8.5

The substitution variable ${binary:Version} should be used in placeof ${Source-Version} for dependencies between packages of the samelibrary.

menu policy

Substantial reorganization and renaming of sections in the Debianmenu structure. Packages with menu entries should be reviewed to seeif the menu section has been renamed or if one of the new sectionswould be more appropriate.

5.6.1

The Source field in a.changes file may contain a version number inparentheses.

5.6.17

The acceptable values for the Urgency field are low, medium, high,critical, or emergency.

8.6

The shlibs file now allows an optional type field, indicating thetype of package for which the line is valid. The only currentlysupported type is udeb, used with packages for the Debian Installer.

3.9.1

Packages following the Debian Configuration management specificationmust allow for translation of their messages by using agettext-based system such as po-debconf.

12.5

GFDL 1.2, GPL 3, and LGPL 3 are now in common-licenses and should bereferenced rather than quoted in debian/copyright.

10.38.Version 3.7.2.2

Released October, 2006.

This release broke the normal rule against introducing normative changeswithout changing the major patch level.

6.1

Maintainer scripts must not be world writeable (up from a should toa must)

10.39.Version 3.7.2

Released April, 2006.

11.5

Revert the cgi-lib change.

10.40.Version 3.7.1

Released April, 2006.

10.2

It is now possible to create shared libraries without relocatablecode (using -fPIC) in certain exceptional cases, provided someprocedures are followed, and for creating static libraries withrelocatable code (again, using -fPIC). Discussion ondebian-devel@lists.debian.org, getting a rough consensus, anddocumenting it in README.Debian constitute most of the process.

11.8.7

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

10.41.Version 3.7.0

Released April, 2006.

11.5

Packages shipping web server CGI files are expected to install themin/usr/lib/cgi-lib/ directories. This location change perhapsshould be documented in NEWS

11.5

Web server packages should include a standard scriptAlias of cgi-libto/usr/lib/cgi-lib.

9.1.1

The version of FHS mandated by policy has been upped to 2.3. Thereshould be no changes required for most packages, though new toplevel directories/media,/srv, etc. may be of interest.

5.1, 5.6.3

All fields, apart from the Uploaders field, in the control file aresupposed to be a single logical line, which may be spread overmultiple physical lines (newline followed by space is elided).However, any parser for the control file must allow the Uploadersfield to be spread over multiple physical lines as well, to preparefor future changes.

10.4

When scripts are installed into a directory in the system PATH, thescript name should not include an extension that denotes thescripting language currently used to implement it.

9.3.3.2

packages that invoke initscripts now must use invoke-rc.d to do sosince it also pays attention to run levels and other localconstraints.

11.8.5.2, 11.8.7, etc

We no longer use/usr/X11R6, since we have migrated away tousing Xorg paths. This means, for one thing, fonts live in/usr/share/fonts/X11/ now, and/usr/X11R6 is gone.

10.42.Version 3.6.2

Released June, 2005.

Recommend doc-base, and not menu, for registering packagedocumentation.

8.1

Run time support programs should live in subdirectories of/usr/lib/ or/usr/share, and preferably the shared lib isnamed the same as the package name (to avoid name collisions).

11.5

It is recommended that HTTP servers provide an alias /images toallow packages to share image files with the web server

10.43.Version 3.6.1

Released August, 2003.

3.10.1

Prompting the user should be done using debconf. Non debconf userprompts are now deprecated.

10.44.Version 3.6.0

Released July, 2003.

Restructuring caused shifts in section numbers and bumping of theminor version number.

Many packaging manual appendices that were integrated into policysections are now empty, and replaced with links to the Policy. Inparticular, the appendices that included the list of control fieldswere updated (new fields like Closes, Changed-By were added) and thelist of fields for each of control,.changes and.dsc files is nowin Policy, and they’re marked mandatory, recommended or optionalbased on the current practice and the behavior of the deb-buildingtool-chain.

Elimination of needlessly deep section levels, primarily in thechapter Debian Archive, from which two new chapters were split out,Binary packages and Source packages. What remained was reorderedproperly, that is, some sects became sects etc.

Several sections that were redundant, crufty or simply not designedwith any sort of vision, were rearranged according to the formulathat everything should be either in the same place or properlyinterlinked. Some things remained split up between differentchapters when they talked about different aspects of files: theircontent, their syntax, and their placement in the file system. Inparticular, see the new sections about changelog files.

menu policy

Added Games/Simulation and Apps/Education to menu sub-policy

C.2.2

Debian changelogs should be UTF-8 encoded.

10.2

shared libraries must be linked against all libraries that they usesymbols from in the same way that binaries are.

7.6

build-depends-indep need not be satisfied during clean target.

10.45.Version 3.5.10

Released May, 2003.

11.8.3

packages providing the x-terminal-emulator virtual package ought toensure that they interpret the command line exactly like xterm does.

11.8.4

Window managers compliant with the Window Manager SpecificationProject may add 40 points for ranking in the alternatives

10.46.Version 3.5.9

Released March, 2003.

3.4.2

The section describing the Description: package field once again hasfull details of the long description format.

4.2

Clarified that if a package has non-build-essentialbuild-dependencies, it should have them listed in the Build-Dependsand related fields (i.e. it’s not merely optional).

9.3.2

When asked to restart a service that isn’t already running, the initscript should start the service.

12.6

If the purpose of a package is to provide examples, then the examplefiles can be installed into/usr/share/doc/package (rather than/usr/share/doc/package/examples).

10.47.Version 3.5.8

Released November, 2002.

12.7

It is no longer necessary to keep a log of changes to the upstreamsources in the copyright file. Instead, all such changes should bedocumented in the changelog file.

7.6

Build-Depends, Build-Conflicts, Build-Depends-Indep, andBuild-Conflicts-Indep must also be satisfied when the clean targetis called.

menu policy

A new Apps/Science menu section is available

debconf policy

debconf specification cleared up, various changes.

12.1

It is no longer recommended to create symlinks from nonexistent manualpages toundocumented(7). Missing manual pages for programsare still a bug.

10.48.Version 3.5.7

Released August, 2002.

Packages no longer have to ask permission to call MAKEDEV inpostinst, merely notifying the user ought to be enough.

2.2.4

cryptographic software may now be included in the main archive.

3.9

task packages are no longer permitted; tasks are now created by aspecial Tasks: field in the control file.

11.8.4

window managers that support netwm can now add 20 points when theyadd themselves as an alternative for/usr/bin/x-window-manager

10.1

The default compilation options have now changed, one should providedebugging symbols in all cases, and optionally step backoptimization to -O0, depending on the DEB_BUILD_OPTIONSenvironment variable.

7.6, 4.8

Added mention of build-arch, build-indep, etc, in describing therelationships with Build-Depends, Build-Conflicts,Build-Depends-Indep, and Build-Conflicts-Indep. May need toreview the new rules.

8

Changed rules on how, and when, to invoke ldconfig in maintainerscripts. Long rationale.

Added the last note in 3.5.6 upgrading checklist item regarding buildrules, please see below

10.49.Version 3.5.6

Released July, 2001.

2.5

Emacs and TeX are no longer mandated by policy to be prioritystandard packages

11.5

Programs that access docs need to do so via/usr/share/doc, andnot via/usr/doc/ as was the policy previously

12.3

Putting documentation in/usr/doc versus/usr/share/doc isnow a “serious” policy violation.

11.5

For web servers, one should not provide non-local access to the/usr/share/doc hierarchy. If one can’t provide access controlsfor thehttp://localhost/doc/ directory, then it is preferred thatone ask permission to expose that information during the install.

7

There are new rules for build-indep/build-arch targets and there isa new Build-Depend-Indep semantic.

10.50.Version 3.5.5

Released May, 2001.

12.1

Manpages should not rely on header information to have alternativemanpage names available; it should only use symlinks or .so pages todo this

Clarified note in 3.5.3.0 upgrading checklist regarding examplesand templates: this refers only to those examples used by scripts;see section 10.7.3 for the whole story

Included a new section 10.9.1 describing the use ofdpkg-statoverride; this does not have the weight of policy

Clarify Standards-Version: you don’t need to rebuild your packagesjust to change the Standards-Version!

10.2

Plugins are no longer bound by all the rules of shared libraries

X Windows related things:
11.8.1

Clarification of priority levels of X Window System relatedpackages

11.8.3

Rules for defining x-terminal-emulator improved

11.8.5

X Font policy rewritten: you must read this if you provide fontsfor the X Window System

11.8.6

Packages must not ship/usr/X11R6/lib/X11/app-defaults/

11.8.7

X-related packages should usually use the regular FHS locations;imake-using packages are exempted from this

11.8.8

OpenMotif linked binaries have the same rules asOSF/Motif-linked ones

10.51.Version 3.5.4

Released April, 2001.

11.6

The system-wide mail directory is now /var/mail, no longer/var/spool/mail. Any packages accessing the mail spool should accessit via /var/mail and include a suitable Depends field;

11.9; perl-policy

The perl policy is now part of Debian policy proper. Perl programsand modules should follow the current Perl policy

10.52.Version 3.5.3

Released April, 2001.

7.1

Build-Depends arch syntax has been changed to be less ambiguous.This should not affect any current packages

10.7.3

Examples and templates files for use by scripts should now live in/usr/share/<package> or/usr/lib/<package>, with symboliclinks from/usr/share/doc/<package>/examples as needed

10.53.Version 3.5.2

Released February, 2001.

11.8.6

X app-defaults directory has moved from/usr/X11R6/lib/X11/app-defaults to/etc/X11/app-defaults

10.54.Version 3.5.1

Released February, 2001.

8.1

dpkg-shlibdeps now uses objdump, so shared libraries have to be runthrough dpkg-shlibdeps as well as executables

10.55.Version 3.5.0

Released January, 2001.

11.8.5

Font packages for the X Window System must now declare a dependencyonxutils(>=4.0.2)

10.56.Version 3.2.1.1

Released January, 2001.

This release broke the normal rule against introducing normative changeswithout changing the major patch level.

9.3.2

Daemon startup scripts in/etc/init.d/ should not containmodifiable parameters; these should be moved to a file in/etc/default/

12.3

Files in/usr/share/doc must not be referenced by any program.If such files are needed, they must be placed in/usr/share/<package>/, and symbolic links created as required in/usr/share/doc/<package>/

Much of the packaging manual has now been imported into the policydocument

10.57.Version 3.2.1

Released August, 2000.

11.8.1

A package of priority standard or higher may provide two binaries,one compiled with support for the X Window System, and the otherwithout

10.58.Version 3.2.0

Released August, 2000.

10.1

By default executables should not be built with the debugging option-g. Instead, it is recommended to support building the package withdebugging information optionally.

12.8

Policy for packages where the upstream uses HTML changelog files hasbeen expanded. In short, a plain text changelog file should alwaysbe generated for the upstream changes

Please note that the new release of the X window system (3.2) shallprobably need sweeping changes in policy

Policy for packages providing the following X-based features hasbeen codified:

11.8.2

X server (virtual package xserver)

11.8.3

X terminal emulator (virtual package x-terminal-emulator)

11.8.4

X window manager (virtual package x-window-manager, and/usr/bin/x-window-manager alternative, with prioritycalculation guidelines)

12.8.5

X fonts (this section has been written from scratch)

11.8.6

X application defaults

11.8.7

Policy for packages using the X Window System and FHS issues hasbeen clarified;

11.7.3

No package may contain or make hard links to conffiles

8

Noted that newer dpkg versions do not require extreme care in alwayscreating the shared lib before the symlink, so the unpack order becorrect

10.59.Version 3.1.1

Released November, 1999.

7.1

Correction to semantics of architecture lists in Build-Depends etc.Should not affect many packages

10.60.Version 3.1.0

Released October, 1999.

defunct

/usr/doc/<package> has to be a symlink pointing to/usr/share/doc/<package>, to be maintained by postinst and prermscripts.

7.1, 7.6

Introduced source dependencies (Build-Depends, etc.)

9.3.4

/etc/rc.boot has been deprecated in favour of/etc/rcS.d.(Packages should not be touching this directory, but should useupdate-rc.d instead)

9.3.3

update-rc.d is now theonly allowable way of accessing the/etc/rc?.d/[SK]??* links. Any scripts which manipulate themdirectly must be changed to use update-rc.d instead. (This isbecause the file-rc package handles this information in anincompatible way.)

12.7

Architecture-specific examples go in/usr/lib/<package>/exampleswith symlinks from/usr/share/doc/<package>/examples/* or from/usr/share/doc/<package>/examples itself

9.1.1

Updated FHS to a 2.1 draft; this reverts/var/state to/var/lib

9.7; mime-policy

Added MIME sub-policy document

12.4

VISUAL is allowed as a (higher priority) alternative to EDITOR

11.6

Modified liblockfile description, which affects mailbox-accessingprograms. Please see the policy document for details

12.7

If a package provides a changelog in HTML format, a text-onlyversion should also be included. (Such a version may be preparedusinglynx-dump-nolist.)

3.2.1

Description of how to handle version numbers based on dates added

10.61.Version 3.0.1

Released July, 1999.

10.2

Added the clarification that the .la files are essential for thepackages using libtool’s libltdl library, in which case the .lafiles must go in the run-time library package

10.62.Version 3.0.0

Released June, 1999.

9.1

Debian formally moves from the FSSTND to the FHS. This is a majorchange, and the implications of this move are probably not allknown.

4.1

Only 3 digits of the Standards version need be included in controlfiles, though all four digits are still permitted.

12.6

The location of the GPL has changed to/usr/share/common-licenses. This may require changing thecopyright files to point to the correct location of the GPL andother major licenses

10.2

Packages that use libtool to create shared libraries must includethe .la files in the -dev packages

10.8

Use logrotate to rotate log files

now 11.8

section 5.8 has been rewritten (Programs for the X Window System)

9.6; menu-policy

There is now an associated menu policy, in a separate document, thatcarries the full weight of Debian policy

11.3

Programs which need to modify the files/var/run/utmp,/var/log/wtmp and/var/log/lastlog must be installed setgidutmp

10.63.Version 2.5.0

Released October, 1998.

Please note that section numbers below this point may not match thecurrent Policy Manual.

  • Rearranged the manual to create a new Section 4, Files

    • Section 3.3 (“Files”) was moved to Section 4. The Sections thatwere Section 4 and Section 5 were moved down to become Section 5and Section 6.

    • What was Section 5.5 (“Log files”) is now a subsection of the newSection 4 (“Files”), becoming section 4.8, placed after“Configuration files”, moving the Section 4.8 (“Permissions andowners”) to Section 4.9. All subsections of the old Section 5after 5.5 were moved down to fill in the number gap.

  • Modified the section about changelog files to accommodate upstreamchangelogs which were formatted as HTML. These upstream changelogfiles should now be accessible as/usr/doc/package/changelog.html.gz

  • Symlinks are permissible to link the real, or upstream, changelogname to the Debian mandated name.

  • Clarified that HTML documentation should be present in some package,though not necessarily the main binary package.

  • Corrected all references to the location of the copyright files. Thecorrect location is/usr/doc/package/copyright

  • Ratified the architecture specification strings to cater to the HURD.

10.64.Version 2.4.1

Released April, 1998.

Updated section 3.3.5 Symbolic links

symbolic links within a toplevel directory should be relative,symbolic links between toplevel directories should be absolute (cf.,Policy Weekly Issue#6, topic 2)

Updated section 4.9 Games

manpages for games should be installed in/usr/man/man6 (cf.,Policy Weekly Issue#6, topic 3)

Updated Chapter 12 Shared Libraries

ldconfig must be called in the postinst script if the packageinstalls shared libraries (cf., Policy Weekly Issue #6,fixes:bug#20515)

10.65.Version 2.4.0

Released January, 1998

Updated section 3.3.4 Scripts
  • /bin/sh may be any POSIX compatible shell

  • scripts including bashisms have to specify/bin/bash asinterpreter

  • scripts which create files in world-writable directories (e.g.,in/tmp) should use tempfile or mktemp for creating thedirectory

Updated section 3.3.5 Symbolic Links

symbolic links referencing compressed files must have the same fileextension as the referenced file

Updated section 3.3.6 Device files

/dev/tty* serial devices should be used instead of/dev/cu*

Updated section 3.4.2 Writing the scripts in/etc/init.d
  • all/etc/init.d scripts have to provide the followingoptions: start, stop, restart, force-reload

  • the reload option is optional and must never stop and restart theservice

Updated section 3.5 Cron jobs

cron jobs that need to be executed more often than daily should beinstalled into/etc/cron.d

Updated section 3.7 Menus

removed section about how to register HTML docs to `menu’ (thecorresponding section in 4.4, Web servers and applications, has beenremoved in policy 2.2.0.0 already, so this one was obsolete)

New section 3.8 Keyboard configuration

details about how the backspace and delete keys should be handled

New section 3.9 Environment variables

no program must depend on environment variables to get a reasonabledefault configuration

New section 4.6 News system configuration

/etc/news/organization and/etc/news/server should besupported by all news servers and clients

Updated section 4.7 Programs for the X Window System
  • programs requiring a non-free Motif library should be provided asfoo-smotif and foo-dmotif package

  • if lesstif works reliably for such program, it should be linkedagainst lesstif and not against a non-free Motif library

Updated section 4.9 Games

games for X Windows have to be installed in/usr/games, just asnon-X games

10.66.Version 2.3.0

Released September, 1997.

  • new section `4.2 Daemons’ including rules for/etc/services,/etc/protocols,/etc/rpc, and/etc/inetd.conf

  • updated section about `Configuration files’: packages may not touchother packages’ configuration files

  • MUAs and MTAs have to use liblockfile

10.67.Version 2.2.0

Released July, 1997.

  • added section 4.1 `Architecture specification strings’: use<arch>-linux where <arch> is one of the following: i386, alpha, arm,m68k, powerpc, sparc.

  • detailed rules for/usr/local

  • user ID’s

  • editor/pager policy

  • cron jobs

  • device files

  • don’t install shared libraries as executable

  • app-defaults files may not be conffiles

10.68.Version 2.1.3

Released March, 1997.

  • two programs with different functionality must not have the same name

  • “Webstandard 3.0”

  • “Standard for Console Messages”

  • Libraries should be compiled with-D_REENTRANT

  • Libraries should be stripped withstrip--strip-unneeded

10.69.Version 2.1.2

Released November, 1996.

  • Some changes WRT shared libraries

10.70.Version 2.1.1

Released September, 1996.

  • No hard links in source packages

  • Do not usedpkg-divert orupdate-alternatives withoutconsultation

  • Shared libraries must be installed stripped

10.71.Version 2.1.0

Released August, 1996.

  • Upstream changelog must be installed too