7 The checklist below has been created to simplify the upgrading process
8 of old packages. This list is not official or normative. It only
9 provides an indication of what has changed and whether you are likely to
10 need to make changes to your package in light of this. If you have
11 doubts about a certain topic, if you need more details, or if you think
12 some other package does not comply with policy, please refer to the
15 All of the changes from version 3.0.0 onwards indicate which section of
16 the Policy Manual discusses the issue. The section numbering should
17 still be accurate for changes back to the 2.5.0 release. Before that
18 point, the sections listed here probably no longer correspond to
19 sections in the modern Policy Manual.
21 Here is how the check list works: Check which policy version your
22 package was checked against last (indicated in the ``Standards-Version``
23 field of the source package). Then move upwards until the top and check
24 which of the items on the list might concern your package. Note which
25 sections of policy discuss this, and then check out the Policy Manual
26 for details. Once you've made all necessary changes to match the current
27 rules, update the value of ``Standards-Version`` to the current Policy
30 If an item in the list is followed by the name of a Lintian tag in
31 square brackets, it indicates that the policy requirement is covered
32 by that Lintian tag. The lack of such an annotation does not mean
33 that no Lintian tag exists to cover the requirement. Our coverage of
34 these annotations is quite incomplete, and patches to this checklist
37 The sections in this checklist match the values for the
38 ``Standards-Version`` control field in omitting the minor patch version,
39 except in the two anomalous historical cases where normative
40 requirements were changed in a minor patch release.
48 Non-default alternative dependencies on non-free packages are
49 permitted for packages in main.
52 If upstream provides OpenPGP signatures, including the upstream
53 signing key as ``debian/upstream/signing-key.asc`` in the source
54 package and using the ``pgpsignurlmangle`` option in
55 ``debian/watch`` configuration to indicate how to find the upstream
56 signature for new releases is recommended.
59 Packages should build reproducibly when certain factors are held
60 constant; see 4.15 for the list.
63 Packages are recommended to build reproducibly even when build
64 paths and most environment variables are allowed to vary.
69 Released August, 2017.
72 Priorities are now used only for controlling which packages are part
73 of a minimal or standard Debian installation and should be selected
74 based on functionality provided directly to users (so nearly all
75 shared libraries should have a priority of ``optional``). Packages
76 may now depend on packages with a lower priority.
78 The ``extra`` priority has been deprecated and should be treated as
79 equivalent to ``optional``. All ``extra`` priorities should be
80 changed to ``optional``. Packages with a priority of ``optional``
81 may conflict with each other (but packages that both have a priority
82 of ``standard`` or higher still may not conflict).
85 New section documenting the ``Testsuite`` field in Debian source
89 Shared libraries must now invoke ``ldconfig`` by means of triggers,
90 instead of maintscripts.
93 Packages are recommended to use debhelper tools instead of invoking
94 ``update-rc.d`` and ``invoke-rc.d`` directly.
97 Policy's description of how the local system administrator may
98 modify the runlevels at which a daemon is started and stopped, and
99 how init scripts may depend on other init scripts, have been
100 removed. These are now handled by LSB headers.
103 Policy's specification of the console messages that should be
104 emitted by ``init.d`` scripts has been removed. This is now defined
105 by LSB, for sysvinit, and is not expected to be followed by other
109 Packages installing a Free Desktop entry must not also install a
110 Debian menu system entry.
113 The prohibition against depending on environment variables for
114 reasonable defaults is only for programs on the system PATH and only
115 for custom environment variable settings (not, say, a sane PATH).
123 ``config.sub`` and ``config.guess`` should be updated at build time
124 or replaced with the versions from autotools-dev.
127 New ``TARGET`` set of ``dpkg-architecture`` variables and new
128 ``DEB_*_ARCH_BITS`` and ``DEB_*_ARCH_ENDIAN`` variables.
131 New ``DEB_BUILD_OPTIONS`` tag, ``nodoc``, which says to suppress
132 documentation generation (but continue to build all binary packages,
133 even documentation packages, just let them be mostly empty).
136 Automatically-generated debug packages do not need to have a
137 corresponding paragraph in ``debian/control``. (This is existing
138 practice; this Policy update is just clearer about it.)
141 Colons are not permitted in upstream version numbers.
144 New ``Build-Depends-Arch`` and ``Build-Conflicts-Arch`` fields are
148 The recommended package name for shared library development files is
149 now libraryname-dev or librarynameapiversion-dev, not
150 librarynamesoversion-dev.
153 The stable release of Debian supports ``/run``, so packages may now
154 assume that it exists and do not need any special dependency on a
155 version of initscripts.
158 New optional ``try-restart`` standard init script argument, which
159 (if supported) should restart the service if it is already running
160 and otherwise just report success.
163 Support for the ``status`` init script argument is recommended.
166 Packages must not call ``/etc/init.d`` scripts directly even as a
167 fallback, and instead must always use ``invoke-rc.d`` (which is
168 essential and shouldn't require any conditional).
171 Instructions for ``upstart`` integration removed since ``upstart``
172 is no longer maintained in Debian.
175 Packages may not install files in both ``/path`` and ``/usr/path``,
176 and must manage any backward-compatibility symlinks so that they
177 don't break if ``/path`` and ``/usr/path`` are the same directory.
180 Packages should assume device files in ``/dev`` are dynamically
181 managed and don't have to be created by the package. Packages other
182 than those whose purpose is to manage ``/dev`` must not create or
183 remove files there when a dynamic management facility is in use.
184 Named pipes and device files outside of ``/dev`` should normally be
185 created on demand via init scripts, systemd units, or similar
186 mechanisms, but may be created and removed in maintainer scripts if
187 they must be created during package installation.
190 Checking with the base-passwd maintainer is no longer required (or
191 desirable) when creating a new dynamic user or group in a package.
194 Dependencies on \*-doc packages should be at most Recommends
195 (Suggests if they only include documentation in supplemental
199 The Mozilla Public License 1.1 and 2.0 (MPL-1.1 and MPL-2.0) are now
200 included in ``/usr/share/common-licenses`` and do not need to be
201 copied verbatim in the package ``copyright`` file.
204 The ``https`` form of the copyright-format URL is now allowed and
205 preferred in the ``Format`` field.
208 The Perl search path now includes multiarch directories. The vendor
209 directory for architecture-specific modules is now versioned to
213 New ``adventure`` virtual package for implementations of the classic
214 Colossal Cave Adventure game.
217 New ``httpd-wsgi3`` virtual package for Python 3 WSGI-capable HTTP
218 servers. The existing ``httpd-wsgi`` virtual package is for Python 2
219 WSGI-capable HTTP servers.
222 New ``virtual-mysql-client``, ``virtual-mysql-client-core``,
223 ``virtual-mysql-server``, ``virtual-mysql-server-core``, and
224 ``virtual-mysql-testsuite`` virtual packages for MySQL-compatible
230 Released April, 2016.
233 The menu system is deprecated in favor of the FreeDesktop menu
234 standard. New requirements set for FreeDesktop menu entries.
237 New instructions for registering media type handlers with the
238 FreeDesktop system, which automatically synchronizes with mailcap
239 and therefore replaces mailcap registration for packages using
245 Released February, 2016.
248 Symbolic links must not traverse above the root directory.
251 32bit UIDs in the range 65536-4294967293 are reserved for
252 dynamically allocated user accounts.
255 Empty field values in control files are only permitted in the
256 ``debian/control`` file of a source package.
259 ``debian/rules``: required targets must not attempt network access.
262 recommend to ship additional documentation for package ``pkg`` in a
263 separate package ``pkg-doc`` and install it into
264 ``/usr/share/doc/pkg``.
269 Released September, 2014.
272 The FHS is relaxed to allow a subdirectory of ``/usr/lib`` to hold a
273 mixture of architecture-independent and architecture-dependent
274 files, though directories entirely composed of
275 architecture-independent files should be located in ``/usr/share``.
278 The FHS requirement for ``/usr/local/lib64`` to exist if ``/lib64``
279 or ``/usr/lib64`` exists is removed.
282 An FHS exception has been granted for multiarch include files,
283 permitting header files to instead be installed to
284 ``/usr/include/triplet``.
287 Binaries must not be statically linked with the GNU C library, see
288 policy for exceptions.
291 It is clarified that signature appearing in debian/changelog should
292 be the details of the person who prepared this release of the
296 The default web document root is now ``/var/www/html``
299 ``java1-runtime`` and ``java2-runtime`` are removed,
300 ``javaN-runtime`` and ``javaN-runtime-headless`` are added for all N
304 Added ``httpd-wsgi`` for WSGI capable HTTP servers.
307 Perl packages should use the ``%Config`` hash to locate module paths
308 instead of hardcoding paths in ``@INC``.
311 Perl binary modules and any modules installed into
312 ``$Config{vendorarch}`` must depend on the relevant perlapi-\*
318 Released October, 2013.
321 Control data fields must not start with the hyphen character
322 (``-``), to avoid potential confusions when parsing clearsigned
323 control data files that were not properly unescaped.
326 ``Checksums-Sha1`` and ``Checksums-Sha256`` are now mandatory in
330 The ``DM-Upload-Allowed`` field is obsolete. Permissions are now
331 granted via *dak-commands* files.
334 New section documenting the ``Package-List`` field in Debian source
338 New section documenting the ``Package-Type`` field in source package
342 New section documenting the ``Dgit`` field in Debian source control
346 The exception to the FHS for the ``/selinux`` was removed.
349 Packages should remove all obsolete configuration files without
350 local changes during upgrades. The ``dpkg-maintscript-helper`` tool,
351 available from the dpkg package since *Wheezy*, can help with this.
354 The name of the files and directories installed by binary packages
355 must be encoded in UTF-8 and should be restricted to ASCII when
356 possible. In the system PATH, they must be restricted to ASCII.
359 Stop recommending to serve HTML documents from
360 ``/usr/share/doc/package``.
363 Packages distributing Info documents should use install-info's
364 trigger, and do not need anymore to depend on
365 ``dpkg (>= 1.15.4) | install-info``.
368 The ``escape`` capability is now documented.
371 ``mp3-decoder`` and ``mp3-encoder`` are removed.
376 Released August, 2012.
379 New *tasks* archive section.
382 ``build-arch`` and ``build-indep`` are now mandatory targets in
386 New section documenting the ``Vcs-*`` fields, which are already in
387 widespread use. Note the mechanism for specifying the Git branch
388 used for packaging in the Vcs-Git field.
391 The deprecated relations < and > now must not be used.
394 New ``Built-Using`` field, which must be used to document the source
395 packages for any binaries that are incorporated into this package at
396 build time. This is used to ensure that the archive meets license
397 requirements for providing source for all binaries.
400 Policy for dependencies between shared libraries and other packages
401 has been largely rewritten to document the ``symbols`` system and
402 more clearly document handling of shared library ABI changes.
403 ``symbols`` files are now recommended over ``shlibs`` files in most
404 situations. All maintainers of shared library packages should review
405 the entirety of this section.
408 Packages must not assume the ``/run`` directory exists or is usable
409 without a dependency on ``initscripts (>= 2.88dsf-13.3)`` until the
410 stable release of Debian supports ``/run``.
413 Packages including MIME configuration can now rely on triggers and
414 do not need to call update-mime.
417 New section documenting general requirements for alternate init
418 systems and specific requirements for integrating with upstart.
421 All copyright files must be encoded in UTF-8.
426 Released February, 2012.
429 New archive sections *education*, *introspection*, and
430 *metapackages* added.
433 The ``Architecture`` field in ``*.dsc`` files may now contain the
434 value ``any all`` for source packages building both
435 architecture-independent and architecture-dependent packages.
438 If a dependency is restricted to particular architectures, the list
439 of architectures must be non-empty.
442 ``/run`` is allowed as an exception to the FHS and replaces
443 ``/var/run``. ``/run/lock`` replaces ``/var/lock``. The FHS
444 requirements for the older directories apply to these directories as
445 well. Backward compatibility links will be maintained and packages
446 need not switch to referencing ``/run`` directly yet. Files in
447 ``/run`` should be stored in a temporary file system.
450 New section spelling out the requirements for packages that use
451 files in ``/run``, ``/var/run``, or ``/var/lock``. This generalizes
452 information previously only in 9.3.2.
455 Cron job file names must not contain ``.`` or ``+`` or they will be
456 ignored by cron. They should replace those characters with ``_``. If
457 a package provides multiple cron job files in the same directory,
458 they should each start with the package name (possibly modified as
459 above), ``-``, and then some suitable suffix.
462 Packages using doc-base do not need to call install-docs anymore.
465 Packages that declare the same ``conffile`` may see left-over
466 configuration files from each other even if they conflict.
469 The Policy rules around Motif libraries were just a special case of
470 normal rules for non-free dependencies and were largely obsolete, so
471 they have been removed.
474 ``debian/copyright`` is no longer required to list the Debian
475 maintainers involved in the creation of the package (although note
476 that the requirement to list copyright information is unchanged).
479 Version 1.0 of the "Machine-readable ``debian/copyright`` file"
480 specification is included.
483 This separate document has been retired and and its (short) contents
484 merged into Policy section 9.7. There are no changes to the
488 Packages may declare an interest in the perl-major-upgrade trigger
489 to be notified of major upgrades of perl.
492 ``ttf-japanese-{mincho, gothic}`` is renamed to
493 ``fonts-japanese-{mincho, gothic}``.
498 Released April, 2011.
501 Multiple clarifications throughout Policy where "installed" was used
502 and the more precise terms "unpacked" or "configured" were intended.
505 The maintainer address must accept mail from Debian role accounts
506 and the BTS. At least one human must be listed with their personal
507 email address in ``Uploaders`` if the maintainer is a shared email
508 address. The duties of a maintainer are also clearer.
511 All control fields are now classified as simple, folded, or
512 multiline, which governs whether their values must be a single line
513 or may be continued across multiple lines and whether line breaks
517 Parsers are allowed to accept paragraph separation lines containing
518 whitespace, but control files should use completely empty lines.
519 Ordering of paragraphs is significant. Field names must be composed
520 of printable ASCII characters except colon and must not begin with
524 The ``DM-Upload-Allowed`` field is now documented.
527 The system state maintainer scripts can rely upon during each
528 possible invocation is now documented. In several less-common cases,
529 this is stricter than Policy had previously documented. Packages
530 with complex maintainer scripts should be reviewed in light of this
534 The impact on system state when maintainer scripts that are part of
535 a circular dependency are run is now documented. Circular
536 dependencies are now a should not.
539 The system state when ``postinst`` and ``prerm`` scripts are run is
540 now documented, and the documentation of the special case of
541 dependency state for ``postrm`` scripts has been improved.
542 ``postrm`` scripts are required to gracefully skip actions if their
543 dependencies are not available.
546 GNU/Hurd systems are allowed ``/hurd`` and ``/servers`` directories
547 in the root filesystem.
550 Packages installing to architecture-specific subdirectories of
551 ``/usr/lib`` must use the value returned by
552 ``dpkg-architecture -qDEB_HOST_MULTIARCH``, not by
553 ``dpkg-architecture -qDEB_HOST_GNU_TYPE``; this is a path change on
554 i386 architectures and a no-op for other architectures.
557 ``mailx`` is now a virtual package provided by packages that install
558 ``/usr/bin/mailx`` and implement at least the POSIX-required
567 Date-based version components should be given as the four-digit
568 year, two-digit month, and then two-digit day, but may have embedded
572 Maintainer scripts must pass ``--package`` to ``dpkg-divert`` when
573 creating or removing diversions and must not use ``--local``.
576 Only ``dpkg-gencontrol`` supports variable substitution.
577 ``dpkg-genchanges`` (for ``*.changes``) and ``dpkg-source`` (for
581 Architecture restrictions and wildcards are also allowed in binary
582 package relationships provided that the binary package is not
583 architecture-independent.
586 ``Conflicts`` and ``Breaks`` should only be used when there are file
587 conflicts or one package breaks the other, not just because two
588 packages provide similar functionality but don't interfere.
591 The SONAME of a library should change whenever the ABI of the
592 library changes in a way that isn't backward-compatible. It should
593 not change if the library ABI changes are backward-compatible.
594 Discourage bundling shared libraries together in one package.
597 Ada Library Information (``*.ali``) files must be installed
601 Packages should normally not include a ``shlibs.local`` file since
602 we now have complete ``shlibs`` coverage.
605 The SONAME of a library may instead be of the form
606 ``name-major-version.so``.
609 Libtool ``.la`` files should not be installed for public libraries.
610 If they're required (for ``libltdl``, for instance), the
611 ``dependency_libs`` setting should be emptied. Library packages
612 historically including ``.la`` files must continue to include them
613 (with ``dependency_libs`` emptied) until all libraries that depend
614 on that library have removed or emptied their ``.la`` files.
617 Libraries no longer need to be built with ``-D_REENTRANT``, which
618 was an obsolete LinuxThreads requirement. Instead, say explicitly
619 that libraries should be built with threading support and to be
620 thread-safe if the library supports this.
623 ``/bin/sh`` scripts may assume that ``kill`` supports an argument of
624 ``-signal``, that ``kill`` and ``trap`` support the numeric signals
625 listed in the XSI extension, and that signal 13 (SIGPIPE) can be
626 trapped with ``trap``.
629 Use of ``/etc/logrotate.d/package`` for logrotate rules is now
633 Control information files should be owned by ``root:root`` and
634 either mode 644 or mode 755.
637 Packages providing alternatives for ``editor``, ``pager``,
638 ``x-terminal-emulator``, or ``x-window-manager`` should also provide
639 a slave alternative for the corresponding manual page.
642 Cgi-bin executable files may be installed in subdirectories of
643 ``/usr/lib/cgi-bin`` and web servers should serve out executables in
644 those subdirectories.
647 The GPL version 1 is now included in common-licenses and should be
648 referenced from there instead of included in the ``copyright`` file.
656 The required format for the date in a changelog entry and in the
657 Date control field is now precisely specified.
660 A control paragraph must not contain more than one instance of a
661 particular field name.
664 The ``Checksums-Sha1`` and ``Checksums-Sha256`` fields in ``*.dsc``
665 and ``*.changes`` files are now documented and recommended.
668 The ``Format`` field of ``.changes`` files is now 1.8. The
669 ``Format`` field syntax for source package ``.dsc`` files allows a
670 subtype in parentheses, and it is used for a different purpose than
671 the ``Format`` field for ``.changes`` files.
674 The syntax of the ``Maintainer`` field is now must rather than
678 The comma separating entries in ``Uploaders`` is now must rather
682 Architecture wildcards may be used in addition to specific
683 architectures in ``debian/control`` and ``*.dsc`` Architecture
684 fields, and in architecture restrictions in build relationships.
687 Maintainer scripts are no longer guaranteed to run with a
688 controlling terminal and must be able to fall back to noninteractive
689 behavior (debconf handles this). Maintainer scripts may abort if
690 there is no controlling terminal and no reasonable default for a
691 high-priority question, but should avoid this if possible.
694 ``Breaks`` should be used with ``Replaces`` for moving files between
698 ``Breaks`` should normally be used instead of ``Conflicts`` for
699 transient issues and moving files between packages. New
700 documentation of when each should be used.
703 Use ``Conflicts`` with ``Provides`` if only one provider of a
704 virtual facility can be installed at a time.
707 All shared library development files are no longer required to be in
708 the ``-dev`` package, only be available when the ``-dev`` package is
709 installed. This allows the ``-dev`` package to be split as long as
710 it depends on the additional packages.
713 The UID range of user accounts is extended to 1000-59999.
716 ``init.d`` scripts are a possible exception from the normal
717 requirement to use ``set -e`` in each shell script.
720 The UCB BSD license was removed from the list of licenses that
721 should be referenced from ``/usr/share/common-licenses/BSD``. It
722 should instead be included directly in ``debian/copyright``,
723 although it will still be in common-licenses for the time being.
726 ``SETTITLE`` is now documented (it has been supported for some
727 time). ``SETTITLE`` is like ``TITLE`` but takes a template instead
728 of a string to allow translation.
731 perl-base now provides perlapi-abiname instead of a package based
732 solely on the Perl version. Perl packages must now depend on
733 perlapi-$Config{debian\_abi}, falling back on ``$Config{version}``
734 if ``$Config{debian_abi}`` is not set.
737 Packages using ``Makefile.PL`` should use ``DESTDIR`` rather than
738 ``PREFIX`` to install into the package staging area. ``PREFIX`` only
739 worked due to a Debian-local patch.
744 Released January, 2010.
747 An FHS exception has been granted for multiarch libraries.
748 Permitting files to instead be installed to ``/lib/triplet`` and
749 ``/usr/lib/triplet`` directories.
752 Packages may not contain named pipes and should instead create them
753 in postinst and remove them in prerm or postrm.
756 ``/sys`` and ``/selinux`` directories are explicitly allowed as an
757 exception to the FHS.
762 Released August, 2009.
765 DEB\_\*\_ARCH\_CPU and DEB\_\*\_ARCH\_OS variables are now
766 documented and recommended over GNU-style variables for that
770 Source package Architecture fields may contain *all* in combination
771 with other architectures. Clarify when *all* and *any* may be used
772 in different versions of the field.
775 The Debian archive software does not support uploading to multiple
776 distributions with one ``*.changes`` file.
779 The Binary field may span multiple lines.
782 Shared library packages are no longer allowed to install libraries
783 in a non-standard location and modify ``ld.so.conf``. Packages
784 should either be installed in a standard library directory or
785 packages using them should be built with RPATH.
788 Installation directories for X programs have been clarified.
789 Packages are no longer required to pre-depend on x11-common before
790 installing into ``/usr/include/X11`` and ``/usr/lib/X11``.
793 Manual pages are no longer required to contain only characters
794 representable in the legacy encoding for that language.
797 Localized man pages should either be kept up-to-date with the
798 original version or warn that they're not up-to-date, either with
799 warning text or by showing missing or changed portions in the
803 install-info is now handled via triggers so packages no longer need
804 to invoke it in maintainer scripts. Info documents should now have
805 directory sections and entries in the document. Packages containing
806 info documents should add a dependency to support partial upgrades.
809 The requirement for Perl modules to have a versioned Depend and
810 Build-Depend on ``perl >= 5.6.0-16`` has been removed.
818 The list of archive sections has been significantly expanded. See
819 `this debian-devel-announce
820 message <http://lists.debian.org/debian-devel-announce/2009/03/msg00010.html>`__
821 for the list of new sections and rules for how to categorize
825 All packages must use debconf or equivalent for user prompting,
826 though essential packages or their dependencies may also fall back
830 The requirements for source package names are now explicitly spelled
834 Legacy XFree86 servers no longer get a special exception from the
835 FHS permitting ``/etc/X11/XF86Config-4``.
838 Removed obsolete dependency requirements for packages that use
842 Speedo fonts are now deprecated. The X backend was disabled starting
846 The GNU Free Documentation License version 1.3 is included in
847 common-licenses and should be referenced from there.
852 Released March, 2009.
855 Care should be taken when adding functionality to essential and such
856 additions create an obligation to support that functionality in
857 essential forever unless significant work is done.
860 Changelog files must be encoded in UTF-8.
863 Some format requirements for changelog files are now "must" instead
867 Alternative changelog formats have been removed. Debian only
868 supports one changelog format for the Debian Archive.
871 New nocheck option for DEB\_BUILD\_OPTIONS indicating any build-time
872 test suite provided by the package should not be run.
875 All control files must be encoded in UTF-8.
878 ``debian/control`` allows comment lines starting with # with no
879 preceding whitespace.
882 Init scripts ending in .sh are not handled specially. They are not
883 sourced and are not guaranteed to be run by ``/bin/sh`` regardless
884 of the #! line. This brings Policy in line with the long-standing
885 behavior of the init system in Debian.
888 The start action of an init script must exit successfully and not
889 start the daemon again if it's already running.
892 ``/var/run`` and ``/var/lock`` may be mounted as temporary
893 filesystems, and init scripts must therefore create any necessary
894 subdirectories dynamically.
897 ``/bin/sh`` scripts may assume that local can take multiple variable
898 arguments and supports assignment.
901 User mailboxes may be mode 600 and owned by the user rather than
902 mode 660, owned by user, and group mail.
910 The base section has been removed. contrib and non-free have been
911 removed from the section list; they are only categories. The base
912 system is now defined by priority.
915 If ``dpkg-source -x`` doesn't provide the source that will be
916 compiled, a debian/rules patch target is recommended and should do
917 whatever else is necessary.
920 Standardized the format of DEB\_BUILD\_OPTIONS. Specified permitted
921 characters for tags, required that tags be whitespace-separated,
922 allowed packages to assume non-conflicting tags, and required
923 unknown flags be ignored.
926 Added parallel=n to the standardized DEB\_BUILD\_OPTIONS tags,
927 indicating that a package should be built using up to n parallel
928 processes if the package supports it
931 Debian packages should not use convenience copies of code from other
932 packages unless the included package is explicitly intended to be
936 If dpkg-source -x doesn't produce source ready for editing and
937 building with dpkg-buildpackage, packages should include a
938 ``debian/README.source`` file explaining how to generate the patched
939 source, add a new modification, and remove an existing modification.
940 This file may also be used to document packaging a new upstream
941 release and any other complexity of the Debian build process.
944 The Uploaders field in debian/control may be wrapped.
947 An empty Debian revision is equivalent to a Debian revision of 0 in
951 New Homepage field for upstream web sites.
954 The Breaks field declares that this package breaks another and
955 prevents installation of the breaking package unless the package
956 named in Breaks is deconfigured first. This field should not be used
957 until the dpkg in Debian stable supports it.
960 Clarify which files should go into a shared library package, into a
961 separate package, or into the -dev package. Suggest -tools instead
962 of -runtime for runtime support programs, since that naming is more
966 Files in ``/etc/cron.{hourly,daily,weekly,monthly}`` must be
967 configuration files (upgraded from should). Mention the hourly
971 Packages providing ``/etc/X11/Xresources`` files need not conflict
972 with ``xbase (<< 3.3.2.3a-2)``, which is long-obsolete.
975 Manual pages in locale-specific directories should use either the
976 legacy encoding for that directory or UTF-8. Country names should
977 not be included in locale-specific manual page directories unless
978 indicating a significant difference in the language. All characters
979 in the manual page source should be representable in the legacy
980 encoding for a locale even if the man page is encoded in UTF-8.
983 The Apache 2.0 license is now in common-licenses and should be
984 referenced rather than quoted in ``debian/copyright``.
987 Packages in contrib and non-free should state in the copyright file
988 that the package is not part of Debian GNU/Linux and briefly explain
992 Underscore (``_``) is allowed in debconf template names.
997 Released December, 2007.
1000 Package version numbers may contain tildes, which sort before
1001 anything, even the end of a part.
1004 Scripts may assume that ``/bin/sh`` supports local (at a basic
1005 level) and that its test builtin (if any) supports -a and -o binary
1009 The substitution variable ${binary:Version} should be used in place
1010 of ${Source-Version} for dependencies between packages of the same
1014 Substantial reorganization and renaming of sections in the Debian
1015 menu structure. Packages with menu entries should be reviewed to see
1016 if the menu section has been renamed or if one of the new sections
1017 would be more appropriate.
1020 The Source field in a .changes file may contain a version number in
1024 The acceptable values for the Urgency field are low, medium, high,
1025 critical, or emergency.
1028 The shlibs file now allows an optional type field, indicating the
1029 type of package for which the line is valid. The only currently
1030 supported type is udeb, used with packages for the Debian Installer.
1033 Packages following the Debian Configuration management specification
1034 must allow for translation of their messages by using a
1035 gettext-based system such as po-debconf.
1038 GFDL 1.2, GPL 3, and LGPL 3 are now in common-licenses and should be
1039 referenced rather than quoted in debian/copyright.
1044 Released October, 2006.
1046 This release broke the normal rule against introducing normative changes
1047 without changing the major patch level.
1050 Maintainer scripts must not be world writeable (up from a should to
1056 Released April, 2006.
1059 Revert the cgi-lib change.
1064 Released April, 2006.
1067 It is now possible to create shared libraries without relocatable
1068 code (using -fPIC) in certain exceptional cases, provided some
1069 procedures are followed, and for creating static libraries with
1070 relocatable code (again, using -fPIC). Discussion on
1071 debian-devel@lists.debian.org, getting a rough consensus, and
1072 documenting it in README.Debian constitute most of the process.
1075 Packages should install any relevant files into the directories
1076 ``/usr/include/X11/`` and ``/usr/lib/X11/``, but if they do so, they
1077 must pre-depend on ``x11-common (>= 1:7.0.0)``
1082 Released April, 2006.
1085 Packages shipping web server CGI files are expected to install them
1086 in ``/usr/lib/cgi-lib/`` directories. This location change perhaps
1087 should be documented in NEWS
1090 Web server packages should include a standard scriptAlias of cgi-lib
1091 to ``/usr/lib/cgi-lib``.
1094 The version of FHS mandated by policy has been upped to 2.3. There
1095 should be no changes required for most packages, though new top
1096 level directories ``/media``, ``/srv``, etc. may be of interest.
1099 All fields, apart from the Uploaders field, in the control file are
1100 supposed to be a single logical line, which may be spread over
1101 multiple physical lines (newline followed by space is elided).
1102 However, any parser for the control file must allow the Uploaders
1103 field to be spread over multiple physical lines as well, to prepare
1107 When scripts are installed into a directory in the system PATH, the
1108 script name should not include an extension that denotes the
1109 scripting language currently used to implement it.
1112 packages that invoke initscripts now must use invoke-rc.d to do so
1113 since it also pays attention to run levels and other local
1116 11.8.5.2, 11.8.7, etc
1117 We no longer use ``/usr/X11R6``, since we have migrated away to
1118 using Xorg paths. This means, for one thing, fonts live in
1119 ``/usr/share/fonts/X11/`` now, and ``/usr/X11R6`` is gone.
1124 Released June, 2005.
1126 Recommend doc-base, and not menu, for registering package
1130 Run time support programs should live in subdirectories of
1131 ``/usr/lib/`` or ``/usr/share``, and preferably the shared lib is
1132 named the same as the package name (to avoid name collisions).
1135 It is recommended that HTTP servers provide an alias /images to
1136 allow packages to share image files with the web server
1141 Released August, 2003.
1144 Prompting the user should be done using debconf. Non debconf user
1145 prompts are now deprecated.
1150 Released July, 2003.
1152 Restructuring caused shifts in section numbers and bumping of the
1153 minor version number.
1155 Many packaging manual appendices that were integrated into policy
1156 sections are now empty, and replaced with links to the Policy. In
1157 particular, the appendices that included the list of control fields
1158 were updated (new fields like Closes, Changed-By were added) and the
1159 list of fields for each of control, .changes and .dsc files is now
1160 in Policy, and they're marked mandatory, recommended or optional
1161 based on the current practice and the behavior of the deb-building
1164 Elimination of needlessly deep section levels, primarily in the
1165 chapter Debian Archive, from which two new chapters were split out,
1166 Binary packages and Source packages. What remained was reordered
1167 properly, that is, some sects became sects etc.
1169 Several sections that were redundant, crufty or simply not designed
1170 with any sort of vision, were rearranged according to the formula
1171 that everything should be either in the same place or properly
1172 interlinked. Some things remained split up between different
1173 chapters when they talked about different aspects of files: their
1174 content, their syntax, and their placement in the file system. In
1175 particular, see the new sections about changelog files.
1178 Added Games/Simulation and Apps/Education to menu sub-policy
1181 Debian changelogs should be UTF-8 encoded.
1184 shared libraries must be linked against all libraries that they use
1185 symbols from in the same way that binaries are.
1188 build-depends-indep need not be satisfied during clean target.
1196 packages providing the x-terminal-emulator virtual package ought to
1197 ensure that they interpret the command line exactly like xterm does.
1200 Window managers compliant with the Window Manager Specification
1201 Project may add 40 points for ranking in the alternatives
1206 Released March, 2003.
1209 The section describing the Description: package field once again has
1210 full details of the long description format.
1213 Clarified that if a package has non-build-essential
1214 build-dependencies, it should have them listed in the Build-Depends
1215 and related fields (i.e. it's not merely optional).
1218 When asked to restart a service that isn't already running, the init
1219 script should start the service.
1222 If the purpose of a package is to provide examples, then the example
1223 files can be installed into ``/usr/share/doc/package`` (rather than
1224 ``/usr/share/doc/package/examples``).
1229 Released November, 2002.
1232 It is no longer necessary to keep a log of changes to the upstream
1233 sources in the copyright file. Instead, all such changes should be
1234 documented in the changelog file.
1237 Build-Depends, Build-Conflicts, Build-Depends-Indep, and
1238 Build-Conflicts-Indep must also be satisfied when the clean target
1242 A new Apps/Science menu section is available
1245 debconf specification cleared up, various changes.
1248 It is no longer recommended to create symlinks from nonexistent
1249 manual pages to undocumented(7). Missing manual pages for programs
1255 Released August, 2002.
1257 Packages no longer have to ask permission to call MAKEDEV in
1258 postinst, merely notifying the user ought to be enough.
1261 cryptographic software may now be included in the main archive.
1264 task packages are no longer permitted; tasks are now created by a
1265 special Tasks: field in the control file.
1268 window managers that support netwm can now add 20 points when they
1269 add themselves as an alternative for ``/usr/bin/x-window-manager``
1272 The default compilation options have now changed, one should provide
1273 debugging symbols in all cases, and optionally step back
1274 optimization to -O0, depending on the DEB\_BUILD\_OPTIONS
1275 environment variable.
1278 Added mention of build-arch, build-indep, etc, in describing the
1279 relationships with Build-Depends, Build-Conflicts,
1280 Build-Depends-Indep, and Build-Conflicts-Indep. May need to
1281 review the new rules.
1284 Changed rules on how, and when, to invoke ldconfig in maintainer
1285 scripts. Long rationale.
1287 *Added the last note in 3.5.6 upgrading checklist item regarding build
1288 rules, please see below*
1293 Released July, 2001.
1296 Emacs and TeX are no longer mandated by policy to be priority
1300 Programs that access docs need to do so via ``/usr/share/doc``, and
1301 not via ``/usr/doc/`` as was the policy previously
1304 Putting documentation in ``/usr/doc`` versus ``/usr/share/doc`` is
1305 now a "serious" policy violation.
1308 For web servers, one should not provide non-local access to the
1309 ``/usr/share/doc`` hierarchy. If one can't provide access controls
1310 for the http://localhost/doc/ directory, then it is preferred that
1311 one ask permission to expose that information during the install.
1314 There are new rules for build-indep/build-arch targets and there is
1315 a new Build-Depend-Indep semantic.
1323 Manpages should not rely on header information to have alternative
1324 manpage names available; it should only use symlinks or .so pages to
1327 *Clarified note in 3.5.3.0 upgrading checklist regarding examples
1328 and templates: this refers only to those examples used by scripts;
1329 see section 10.7.3 for the whole story*
1331 Included a new section 10.9.1 describing the use of
1332 dpkg-statoverride; this does not have the weight of policy
1334 Clarify Standards-Version: you don't need to rebuild your packages
1335 just to change the Standards-Version!
1338 Plugins are no longer bound by all the rules of shared libraries
1340 X Windows related things:
1342 Clarification of priority levels of X Window System related
1346 Rules for defining x-terminal-emulator improved
1349 X Font policy rewritten: you must read this if you provide fonts
1350 for the X Window System
1353 Packages must not ship ``/usr/X11R6/lib/X11/app-defaults/``
1356 X-related packages should usually use the regular FHS locations;
1357 imake-using packages are exempted from this
1360 OpenMotif linked binaries have the same rules as
1361 OSF/Motif-linked ones
1366 Released April, 2001.
1369 The system-wide mail directory is now /var/mail, no longer
1370 /var/spool/mail. Any packages accessing the mail spool should access
1371 it via /var/mail and include a suitable Depends field;
1374 The perl policy is now part of Debian policy proper. Perl programs
1375 and modules should follow the current Perl policy
1380 Released April, 2001.
1383 Build-Depends arch syntax has been changed to be less ambiguous.
1384 This should not affect any current packages
1387 Examples and templates files for use by scripts should now live in
1388 ``/usr/share/<package>`` or ``/usr/lib/<package>``, with symbolic
1389 links from ``/usr/share/doc/<package>/examples`` as needed
1394 Released February, 2001.
1397 X app-defaults directory has moved from
1398 ``/usr/X11R6/lib/X11/app-defaults`` to ``/etc/X11/app-defaults``
1403 Released February, 2001.
1406 dpkg-shlibdeps now uses objdump, so shared libraries have to be run
1407 through dpkg-shlibdeps as well as executables
1412 Released January, 2001.
1415 Font packages for the X Window System must now declare a dependency
1416 on ``xutils (>= 4.0.2)``
1421 Released January, 2001.
1423 This release broke the normal rule against introducing normative changes
1424 without changing the major patch level.
1427 Daemon startup scripts in ``/etc/init.d/`` should not contain
1428 modifiable parameters; these should be moved to a file in
1432 Files in ``/usr/share/doc`` must not be referenced by any program.
1433 If such files are needed, they must be placed in
1434 ``/usr/share/<package>/``, and symbolic links created as required in
1435 ``/usr/share/doc/<package>/``
1437 Much of the packaging manual has now been imported into the policy
1443 Released August, 2000.
1446 A package of priority standard or higher may provide two binaries,
1447 one compiled with support for the X Window System, and the other
1453 Released August, 2000.
1456 By default executables should not be built with the debugging option
1457 -g. Instead, it is recommended to support building the package with
1458 debugging information optionally.
1461 Policy for packages where the upstream uses HTML changelog files has
1462 been expanded. In short, a plain text changelog file should always
1463 be generated for the upstream changes
1465 Please note that the new release of the X window system (3.2) shall
1466 probably need sweeping changes in policy
1468 Policy for packages providing the following X-based features has
1472 X server (virtual package xserver)
1475 X terminal emulator (virtual package x-terminal-emulator)
1478 X window manager (virtual package x-window-manager, and
1479 ``/usr/bin/x-window-manager`` alternative, with priority
1480 calculation guidelines)
1483 X fonts (this section has been written from scratch)
1486 X application defaults
1489 Policy for packages using the X Window System and FHS issues has
1493 No package may contain or make hard links to conffiles
1496 Noted that newer dpkg versions do not require extreme care in always
1497 creating the shared lib before the symlink, so the unpack order be
1503 Released November, 1999.
1506 Correction to semantics of architecture lists in Build-Depends etc.
1507 Should not affect many packages
1512 Released October, 1999.
1515 ``/usr/doc/<package>`` has to be a symlink pointing to
1516 ``/usr/share/doc/<package>``, to be maintained by postinst and prerm
1520 Introduced source dependencies (Build-Depends, etc.)
1523 ``/etc/rc.boot`` has been deprecated in favour of ``/etc/rcS.d``.
1524 (Packages should not be touching this directory, but should use
1525 update-rc.d instead)
1528 update-rc.d is now the *only* allowable way of accessing the
1529 ``/etc/rc?.d/[SK]??*`` links. Any scripts which manipulate them
1530 directly must be changed to use update-rc.d instead. (This is
1531 because the file-rc package handles this information in an
1535 Architecture-specific examples go in ``/usr/lib/<package>/examples``
1536 with symlinks from ``/usr/share/doc/<package>/examples/*`` or from
1537 ``/usr/share/doc/<package>/examples`` itself
1540 Updated FHS to a 2.1 draft; this reverts ``/var/state`` to
1544 Added MIME sub-policy document
1547 VISUAL is allowed as a (higher priority) alternative to EDITOR
1550 Modified liblockfile description, which affects mailbox-accessing
1551 programs. Please see the policy document for details
1554 If a package provides a changelog in HTML format, a text-only
1555 version should also be included. (Such a version may be prepared
1556 using ``lynx -dump -nolist``.)
1559 Description of how to handle version numbers based on dates added
1564 Released July, 1999.
1567 Added the clarification that the .la files are essential for the
1568 packages using libtool's libltdl library, in which case the .la
1569 files must go in the run-time library package
1574 Released June, 1999.
1577 Debian formally moves from the FSSTND to the FHS. This is a major
1578 change, and the implications of this move are probably not all
1582 Only 3 digits of the Standards version need be included in control
1583 files, though all four digits are still permitted.
1586 The location of the GPL has changed to
1587 ``/usr/share/common-licenses``. This may require changing the
1588 copyright files to point to the correct location of the GPL and
1589 other major licenses
1592 Packages that use libtool to create shared libraries must include
1593 the .la files in the -dev packages
1596 Use logrotate to rotate log files
1599 section 5.8 has been rewritten (Programs for the X Window System)
1602 There is now an associated menu policy, in a separate document, that
1603 carries the full weight of Debian policy
1606 Programs which need to modify the files ``/var/run/utmp``,
1607 ``/var/log/wtmp`` and ``/var/log/lastlog`` must be installed setgid
1613 Released October, 1998.
1615 *Please note that section numbers below this point may not match the
1616 current Policy Manual.*
1618 - Rearranged the manual to create a new Section 4, Files
1620 - Section 3.3 ("Files") was moved to Section 4. The Sections that
1621 were Section 4 and Section 5 were moved down to become Section 5
1624 - What was Section 5.5 ("Log files") is now a subsection of the new
1625 Section 4 ("Files"), becoming section 4.8, placed after
1626 "Configuration files", moving the Section 4.8 ("Permissions and
1627 owners") to Section 4.9. All subsections of the old Section 5
1628 after 5.5 were moved down to fill in the number gap.
1630 - Modified the section about changelog files to accommodate upstream
1631 changelogs which were formatted as HTML. These upstream changelog
1632 files should now be accessible as
1633 ``/usr/doc/package/changelog.html.gz``
1635 - Symlinks are permissible to link the real, or upstream, changelog
1636 name to the Debian mandated name.
1638 - Clarified that HTML documentation should be present in some package,
1639 though not necessarily the main binary package.
1641 - Corrected all references to the location of the copyright files. The
1642 correct location is ``/usr/doc/package/copyright``
1644 - Ratified the architecture specification strings to cater to the HURD.
1649 Released April, 1998.
1651 Updated section 3.3.5 Symbolic links
1652 symbolic links within a toplevel directory should be relative,
1653 symbolic links between toplevel directories should be absolute (cf.,
1654 Policy Weekly Issue#6, topic 2)
1656 Updated section 4.9 Games
1657 manpages for games should be installed in ``/usr/man/man6`` (cf.,
1658 Policy Weekly Issue#6, topic 3)
1660 Updated Chapter 12 Shared Libraries
1661 ldconfig must be called in the postinst script if the package
1662 installs shared libraries (cf., Policy Weekly Issue #6,
1668 Released January, 1998
1670 Updated section 3.3.4 Scripts
1671 - /bin/sh may be any POSIX compatible shell
1673 - scripts including bashisms have to specify ``/bin/bash`` as
1676 - scripts which create files in world-writable directories (e.g.,
1677 in ``/tmp``) should use tempfile or mktemp for creating the
1680 Updated section 3.3.5 Symbolic Links
1681 symbolic links referencing compressed files must have the same file
1682 extension as the referenced file
1684 Updated section 3.3.6 Device files
1685 ``/dev/tty*`` serial devices should be used instead of ``/dev/cu*``
1687 Updated section 3.4.2 Writing the scripts in ``/etc/init.d``
1688 - all ``/etc/init.d`` scripts have to provide the following
1689 options: start, stop, restart, force-reload
1691 - the reload option is optional and must never stop and restart the
1694 Updated section 3.5 Cron jobs
1695 cron jobs that need to be executed more often than daily should be
1696 installed into ``/etc/cron.d``
1698 Updated section 3.7 Menus
1699 removed section about how to register HTML docs to \`menu' (the
1700 corresponding section in 4.4, Web servers and applications, has been
1701 removed in policy 2.2.0.0 already, so this one was obsolete)
1703 New section 3.8 Keyboard configuration
1704 details about how the backspace and delete keys should be handled
1706 New section 3.9 Environment variables
1707 no program must depend on environment variables to get a reasonable
1708 default configuration
1710 New section 4.6 News system configuration
1711 ``/etc/news/organization`` and ``/etc/news/server`` should be
1712 supported by all news servers and clients
1714 Updated section 4.7 Programs for the X Window System
1715 - programs requiring a non-free Motif library should be provided as
1716 foo-smotif and foo-dmotif package
1718 - if lesstif works reliably for such program, it should be linked
1719 against lesstif and not against a non-free Motif library
1721 Updated section 4.9 Games
1722 games for X Windows have to be installed in ``/usr/games``, just as
1728 Released September, 1997.
1730 - new section \`4.2 Daemons' including rules for ``/etc/services``,
1731 ``/etc/protocols``, ``/etc/rpc``, and ``/etc/inetd.conf``
1733 - updated section about \`Configuration files': packages may not touch
1734 other packages' configuration files
1736 - MUAs and MTAs have to use liblockfile
1741 Released July, 1997.
1743 - added section 4.1 \`Architecture specification strings': use
1744 <arch>-linux where <arch> is one of the following: i386, alpha, arm,
1745 m68k, powerpc, sparc.
1747 - detailed rules for ``/usr/local``
1751 - editor/pager policy
1757 - don't install shared libraries as executable
1759 - app-defaults files may not be conffiles
1764 Released March, 1997.
1766 - two programs with different functionality must not have the same name
1770 - "Standard for Console Messages"
1772 - Libraries should be compiled with ``-D_REENTRANT``
1774 - Libraries should be stripped with ``strip --strip-unneeded``
1779 Released November, 1996.
1781 - Some changes WRT shared libraries
1786 Released September, 1996.
1788 - No hard links in source packages
1790 - Do not use ``dpkg-divert`` or ``update-alternatives`` without
1793 - Shared libraries must be installed stripped
1798 Released August, 1996.
1800 - Upstream changelog must be installed too