# 10. 升级清单

## 10.1. 关于本清单

以下清单是为了简化旧软件包的升级过程而被制作出来。这个清单既不是正式的，也不具有规范性。它仅代表政策在不同版本之间的变更，以及你是否可能需要就这些变更对你的软件包做出一些相应的调整。如果你对某个话题产生了疑惑，或者你需要了解更多的细节，又或者你认为其他一些软件包没有遵循政策手册，请以政策手册为参考。

所有自3.0.0版本以来的变更指示了政策手册在哪个部分对相关话题进行了讨论。回溯至2.5.0发行版的变更所指示的编号应该仍是准确的。在那个发行版之前的变更所指示的编号大概率已经与现在政策手册的内容编号不相一致了。

如何利用本清单：首先明确你的软件包上一次被审核时所依据的政策手册是哪个版本的（版本号在你的源码包的 `Standards-Version` 字段中指明）。之后向上查询至顶端，检查清单中的哪个条目可能与你的软件包相关。明确政策手册在哪里就相关话题进行了讨论，然后去政策手册的相关部分了解细节。在你就当前变更对你的软件包做出了必要的调整之后，更新你的软件包的 `Standards-Version` 值来反映当前政策手册的版本号。

如果清单中的一个条目紧随一个带方括号的 Lintian 标签的名称，它意味着该标签对应着某个政策要求。缺少这样一个标志不意味不存在一个 Lintian 标签对着某个政策要求。我们目前已经做出的标志是不完整的，欢迎为当前清单打补丁。

本清单中的分章对应着 `Standards-Version` 字段中的值，并且没有包括不重要的补丁版本，除以下两个例外，即，在两个非常规的历史案例中，规范性要求在不重要的补丁版本中出现了变更。

## 10.2. Version 4.7.4

Released March, 2026.

8.4

  `*.so` files in shared library development packages may be linker scripts instead of symbolic links. See the relevant section for the constraints on linker scripts required by ldconfig.

12.5

  The requirement to explain in the copyright file why the package is not part of the Debian distribution also applies to packages in non-free-firmware.

## 10.3. Version 4.7.3

Released December, 2025.

5.6.6

  Specifying the `Priority` field in source package control fields is no longer recommended unless the priority needs to be changed from the default. If the field is omitted, the default source package priority is `optional`, and binary packages inherit the priority from the source package.

5.6.32 & 5.6.33

  New sections documenting the `Git-Tag-Tagger` and `Git-Tag-Info` fields in Debian source control and `.changes` files.

## 10.4. 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 another package installs a program of the same name with different functionality to a different 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 to non-conflicting names.

## 10.5. Version 4.7.1

Released February, 2025.

10.1

  Two different packages must not install programs with different functionality to the same filenames, even names under different directories, 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 via these 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 of any files under /usr/share/man.

12.2

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

## 10.6. 版本4.7.0

2024年4月发行

2.2.1

  记录 main 存档组中的源码包可以在 contrib 存档组中构建二进制软件包，不过，除非源码包不易被分离，否则不建议这么做。这一变更不放松以下要求，即 main 组中的源码包不能在该组外建立依赖关系。

2.2.2

  新增加了 `non-free-firmware` 存档组。

3.9

  维护者脚本应该尽可能使用本土的压倒性机制，而不是 dpkg-divert。维护者脚本不能转移 systemd 部件所使用的配置文件。

  维护者脚本不能为 systemd 服务配置文件使用别的替代系统。

4.8

  允许在源码包中使用硬链接。

4.9

  对于在 contrib 存档组中的软件包，以及 non-free 存档组中具有 `Autobuild: yes` 的软件包来说，不再允许 d/rules 中的必要目标尝试网络访问。在此之前，只对 main 组中的软件包有这样的限制。

5.6.13

  如果没有二进制软件包被上传，那么 `.changes` 文件中不应存在 `Description` 字段。

5.6.19

  如果没有二进制软件包被上传，那么 `.changes` 文件中不应存在 `Binary` 字段。

6.3

  会自动开启或停止系统服务的软件包必须包含 `systemd` 单元，除非该服务只被用于那些运行替代初始化系统的系统。

## 10.7. 版本4.6.2

2022年12月发行

3.8

  如果核心软件包之前至少被配置过一次，它们只需要在没有被配置的情况下提供其核心功能。

6.5 & 6.6

  新的软件包版本是继旧软件包版本之后作为附加于多个 `preinst`， `prerm`， 和 `postrm` 的维护者脚本行动的论证被提供的。

11.8.4

  在计算 `/usr/bin/x-window-manager` 的替代版本的优先性时，从40开始，不要从20开始，并且不要基于对（已被废弃的）Debian 菜单系统提供支持来提高优先性。

## 10.8. 版本4.6.1

2022年5月发行

9.1.1

  重新许可 non-64-bit 系统结构中的软件包在 `/usr/lib64/` 安装文件。

9.7.2 & 9.7.3

  这些章节的文本内容已经被更新，从而反映了将 bin:mime-support 的软件包分解为 bin:media-types 和 bin:mailcap。

## 10.9. 版本4.6.0

2021年8月发行

9.1.1

  禁止所有软件包在 `/usr/lib64/` 中安装文件。在此之前，这个禁止仅适用于 64-bit 系统构架的软件包。

12.1

  手册页除了被包含在它为其记录种种事宜的软件包中，也可以被包含在依赖关系中。

## 10.10. 版本4.5.1

2020年11月发行

2.3, 4.5 & 12.5

  当以下所有条件都被满足时，软件包中文件的版权信息必须逐字复制到 `/usr/share/doc/PACKAGE/copyright` 。

  1. 那些文件的发行许可证要求版权信息被包含在所有副本以及/或者二进制发行版本中；

  2. 文件要么以源码包的形式，要么以编译的形式被传递到二进制软件包中；以及

  3. 文件出现在二进制软件包中的形式不包括纯文本的版权声明。

  需要注意的是，对将所有许可证信息复制到 `/usr/share/doc/PACKAGE/copyright` 的要求没有改变。

  （此前，一直存在将所有许可证信息复制到 `/usr/share/doc/PACKAGE/copyright` 的要求。）

4.17

  软件包绝不能包含非默认系列的软件。也就是说， dpkg 的供应商特定补丁功能绝不能被用在 Debian 存档中的软件包上。

  （此前是“不应该”，而不是“绝不能”）

## 10.11. 版本4.5.0

2020年1月发行

9.2.1

  当维护者为软件包选择一个以新的硬编码生成的用户名，或者以动态形式被生成的用户名时，他们应该以下划线作为该用户名的开头。

9.3.1

  包含系统服务的软件包应当包含 `systemd` 服务单元来开始或终止那些服务。

  如果不存在 systemd 单元，那么鼓励包含一个单元脚本，如果已经存在一个 systemd 单元，那么是否包含一个脚本单元是可做可不做的（在此之前，推荐这样做。）

  通常情况下，一个软件包包含了单一的系统服务，该服务单元应当有同软件包名称一样的名称，外加一个 ".service" 拓展名。如果一个软件包含了一个单元脚本，那么它应该具有同systemd单元一样的名称。

9.3.2

  鼓励单元脚本支持 `status` 论证（在此之前，这样做是被推荐的）。

9.3.3

  如果软件包包含了一个单元脚本，对 update-rc.d 的使用是必要的（在此之前，政策在某个地方说过这是必要的，但是在另一个地方又说它是被推荐的）。

## 10.12. 版本4.4.1

2019年9月发行

5.6.26

  一个软件包的控制文件不能拥有多于一个的 `Vcs-<type>` 字段。

  如果一个软件包在多个版本的控制系统中被维护，那么维护者应当明确他们想要其他人使用的版本是哪个，并以此为基础软对软件包的变更做出提议。

9.10 & 11.5

  doc-base 注册现在是可选可不选的，而不再是被推荐的。

9.12

  记录 `/run/reboot-required` 机制。

版权-形式

  在 `Files:` 字段陈述一些语法上的限制。为了与目录中的内容相符合，使用通配符是必要的，空格区分了不同的模式，并且不能被跳过。

## 10.13. 版本4.4.0

2019年7月发行

4.9

  如果不存在好理由使用不同的方式，那么执行一个 Debian 软件包的构建过程的推荐方式是使用 `dh` 工具。这个推荐包含了 `debian/rules` 构建脚本中的内容。

  为使用不同方式执行软件包构建过程的好理由提供了一些相关的例子。对使用 `dh` 工具的推荐不总是适用的，并且，对其的使用不是被要求的。

5.6.26

  允许 Vcs-Hg 和 Vcs-Git 中的 `-b` 。

7.5

  记录被版本化的 Provides。

虚拟

  分别为提供 logind API（通过 D-Bus and sd-login(3)）的软件包和 Debian 偏好的执行提供新的 `logind` 和 `default-logind` 虚拟软件包。

## 10.14. 版本4.3.0

2018年12月发行

2.3 & 4.5

  如果一个软件包的发行许可证明确允许其版权信息可以不被包含在该软件包从源码构建出的二进制软件包的发行版中，那么通常而言，该软件包版权信息的逐字复制版仍然应该被包含在该软件包的版权文件中，但是如果构建和维护该版权信息的复制版本会十分费时费力，那么这就不是必须的。

4.9

  必要的目标绝不能在未解压的源码包树中之外撰写，TMPDIR， /tmp 和 /var/tmp 是例外。

4.17

  软件包不应该包含非默认系列文件。也就是说，dpkg 的供应商特定的补丁系列功能不应该被用于 Debian 存档内的软件包上。

10.1

  二进制文件应当通过使用 `strip --strip-unneeded --remove-section=.comment --remove-section=.note` 被删除（dh_strip 做的就是这个）。

10.1

  不再建议或推荐使用 `install -s` 来删除二进制文件，因为它会制造种种错误。

10.2

  当通过 strip(1) 来删除共享库的时候，你应该同时pass `--remove-section=.comment --remove-section=.note` （dh_strip 做的就是这个）。

虚拟

  分别为提供 D-Bus session bus 的软件包和 Debian 偏好的 D-Bus 执行提供新的 `dbus-session-bus` 和 `default-dbus-session-bus` 虚拟软件包。

## 10.15. 版本4.2.1

2018年8月发行

10.4 & perl

  对在Perl命令脚本开头的 #! 必须是 `#!/usr/bin/perl` 的要求从‘必须’放松至‘应该’。

## 10.16. 版本4.2.0

2018年8月发行

4.9

  软件包的构建应该在合理的情况下尽可能详尽。这意味 `debian/rules` 将选项传递给它调用的命令，从而导致它们产出详尽的输出。

4.9

  必要的目标可以通过回环接口尝试网络访问构建主机上由构建所启动的服务。

4.9.1

  新的 `terse` 标签可以出现在 `DEB_BUILD_OPTIONS` 中，从而使得软件包构建不那么详尽。

5.2 & 5.4

  强制 Standards-Version 字段，而不仅仅是推荐。

12.7

  在可行的情况下，上游发行的说明应该被安装为 `/usr/share/doc/package/NEWS.gz` 。上游更新日志可以在 `/usr/share/doc/package/changelog.gz` 获得。

  这是对旧版政策的放宽，旧版政策中说上游的更新日志应当以这种方式获得。现在这由维护者来谨慎决定安装它是否有用。

  允许将上游发行说明安装为 `/usr/share/doc/package/changelog.gz` ，但该实践现在已被弃用。

## 10.17. 版本4.1.5

2018年7月发行

4.9.2

  记录 `debian/rules` 和 `Rules-Requires-Root` 字段是如何互动的。

5.6.12

  你不应该在没有首先得到debian层面的共识的情况下改变软件包的 epoch，即使这个改变仅是实验性的。

5.6.12.1

  不应该为了返回一个软件包的旧版本而使用 epoch。使用 +really 这一惯例。

5.6.31

  记录 `Rules-Requires-Root` 字段。

9.1.1

  将 Debian 的 Filesystem Hierarchy Standard从2.3版本更新至3.0，并且更新集合了例外情况的清单。这个变化不应该导致软件包故障，如果导致了故障，也应该是非常小量的软件包出现故障。

9.3.2 & 10.4

  将壳脚本的 POSIX standard 版本从 SUSv3 更新至 POSIX.1-2017（在某些情境中也称为 SUSv4）。

## 10.18. 版本4.1.4

2018年4月发行

3.2.2

  版本号中 epoch 之后的部分不得再用于该包内容变更后的另一个版本，即使以前使用该版本号相关部分的那一个版本的软件包已经不在存档中出现。

3.2.2

  对于非本土的软件包来说，其上游版本绝不能为不同的上游源码重复使用，这样，每个源码包的名字和其上游版本号仅对应着一个原始的源码包存档内容。

4.9

  移除了 `get-orig-source` 规则目标。软件包应该被过渡到 `debian/watch` ，并在所有可能的情况下使用 uscan。

9.1.2

  如果不存在 `/etc/staff-group-for-usr-local` ，那么 `/usr/local` 和所有软件包构建的子目录都应该有0755的许可并所属于 `root:root` 。如果文件存在，那么旧的许可2775和其与 root:staff 的所属关系保持不变。

## 10.19. 版本4.1.3

2017年12月发行

5.6.26

  在VCS存储库支持的情况下，以 `VCS-*` 作为首部的URLs应当使用提供私密性的方案（例如，`https`）。 `[vcs-field-uses-insecure-uri]`

7.8

  仅在有许可证或者 DFSG 要求在存档中保持全部源码的情况下使用 `Built-Using` 。此前，字段中的描述意味着在其他情形下也可以使用它。

9.1.1

  `libc` 也可以在 `/lib64` 中安装文件。

9.3.3.1

  如果除非本地管理员明确要求，否则不得让一个软件的守护进程自动开启，那么软件包的 `postinst` 应使用 `update-rc.d` 的新 `defaults-disabled` 选项。

  不应再使用在软件包的 `/etc/default` 文件中包含 `DISABLED=yes` 的旧方法。

11.4

  澄清程序可以直接调用 `/usr/bin/editor` 和 `/usr/bin/pager` ，或者使用 `editor` 和 `pager`，并且依赖 PATH。

12.5

  The Creative Commons CC0 1.0 Universal license (CC0-1.0) 现在被包含在 `/usr/share/common-licenses` 中，并且不需要在软件的 `copyright` 文件中被逐字复制。

## 10.20. 版本4.1.2

2017年11月发行

3.1.1

  可能具有冒犯性内容的二进制软件包应为带有 `-offensive` 后缀。这替代了以前使用 `-off` 的惯例。一如既往，一个软件包的内容是否需要这种内容警告取决于维护者的审慎选择。

10.2

  私人共享对象文件应当在 `/usr/lib` 或 `/usr/lib/triplet` 的子目录中安装。这个变化允许私人共享对象文件利用 multiarch，并同时意味着将私人共享对象文件直接安装至 `/usr/lib/triplet` 不再是可行的。

10.4

  在Perl命令脚本开头的 #! 必须是 `#!/usr/bin/perl` 。（在此前这个要求是‘应该’，而不是‘必须’。）

## 10.21. 版本4.1.1

2017年9月发行

4.4

  debian/changelog 必须存在于源码包里。

9.2.3

  canonical不存在的主目录是 `/nonexistent` 。

## 10.22. 版本4.1.0

2017年8月发行

2.2.1

  允许 main 存档组中的软件包与 non-free 软件包之间存在非默认的可替代依赖关系。

4.11

  如果上游提供了 OpenPGP 签名，其中包含源码包中的上游签名密钥为 `debian/upstream/signing-key.asc` 并使用了 `debian/watch` 配置中的 `pgpsigurlmangle` 选项，推荐指明如何能找到新发行版本的上游签名。

4.15

  在某些因素持久不变的情况下，软件包应该以复制的方式构建；关于相关清单，见4.15。

4.15

  即使在构建路径和大部分环境变量允许变更的情况下，也推荐软件包以不断复制的方式构建。

9.1.1

  只有动态链接能够在 `/lib64/` 中安装文件。

  不允许任何64位结构的软件包在 `/lib64/` 或任何其他子目录中安装文件。

11.8.3

  澄清并更新了 `x-terminal-emulator -e` 的必要行为，从而替换掉了对 `xterm` 行为的错误声明。

  程序必须支持 `-e command` ，其中 `command` 可以包括多个论证，并且它们必须以假定已经跳过壳，并直接被转递给 `execvp` 的方式执行。

  如果执行失败，并且 `-e` 只有一个论证，那么 `xterm` 传递 `command` 给壳的回退行为是被允许的，但是不是必须的。

## 10.23. 版本4.0.1

2017年8月发行

2.5

  现在优先性仅被用于控制哪些软件是最小化或标准 Debian 安装的一部分，并且应该基于其给直接提供给用户的功能来决定（所以几乎所有的共享库的优先级都应该是 `optional` ）。软件包现在可以依赖低优先级别的软件包。

  优先级 `extra` 已经被弃用，并且应当被视为与 `optional` 同级。所有 `extra` 优先级都应该被换成 `optional` 。优先级别为 `optional` 的软件包可能彼此冲突（但是具有同样优先级别 `standard` 或者更高级别的软件包可能仍旧不会相互冲突）。

5.6.30

  新增新章节记录Debian源码控制文件中的 `Testsuite` 字段。

8.1.1。

  共享库现在必须通过触发器，而不是 mainscripts 来调用 ``ldconfig `` 。

9.3.3

  推荐软件包使用 debhelper 工具，而不是直接调用 `update-rc.d` 和 `invoke-rc.d` 。

9.3.3

  对本地系统管理员如何修改启动和终止 daemon 所运行的层级，以及初始化脚本可以如何依赖其他初始化脚本的政策描述已被移除。现在这些事情由 LSB headers 处理。

9.4

  政策对于应该由 `init.d` 脚本 emit 的控制台信息的明确描述已经被移除。现在它针对 sysvinit 由 LSB 定义，并且其他初始化系统不需要遵循它。

9.6

  安装 Free Desktop 输入的软件包绝不能同时安装 Debian 目录系统输入。

9.9

  禁止为了达到合理默认状态而依赖环境变量的要求仅适用于 PATH 系统上的程序，且仅适用于自定义环境变量设置（例如，不是一个 sane 的 PATH）。

## 10.24. 版本4.0.0

2017年5月发行

4.3

  `config.sub` 和 `config.guess` 应当在构建时被更新，或者被替换为来自 autotool-dev 的版本。

4.9

  增添了 `dpkg-architecture` 变量的新的 `TARGET` 以及新的 `DEB_*_ARCH_BITS` 和 `DEB_*_ARCH_ENDIAN` 变量。

4.9.1

  新的 `DEB_BUILD_OPTIONS` 标签， `nodoc` ，它表明了取缔产出文档（但是继续构建所有二进制软件包，包括文档软件包，让它们基本上是空白的就可以。）

5.2

  自动生成的 debug 软件包不需要在 `debian/control` 中有对应的 stanza。（这个实践已经存在；此政策更新旨在对此进行更加清晰的表达。）

5.6.12

  上游版本数字中禁止有冒号。

7.7

  现在支持新的 `Build-Depends-Arch` 和 `Build-Conflicts-Arch` 字段。

8.4

  对共享库的发展文件的推荐名称现在是 libraryname-dev 或者 librarynameapiversion-dev，而不再是 librarynamesoversion-dev。

9.1.1

  Debian的稳定发行支持 `/run` ，因此软件包现在可以预设它是存在的，并且不需要对某个版本的初始化脚本有任何特殊的依赖。

9.3.2

  如果新的可选 `try-restart` 标准初始化脚本论证已经运行，那么（如果得到支持），它应当重启服务，或者报告成功。

9.3.2

  推荐支持 `stat` 初始化脚本论证。

9.3.3.2

  即使是作为回退，软件包也绝不能直接调用 `/etc/init.d` 脚本，相反，它门必须永远使用 `invoke-rc.d` （这是 essential 的，并且不应该要求任何条件命令）。

9.11.1

  对 `upstart` 集成的操作说明被移除了，因为 `upstart` 不再由 Debian 维护。

10.1

  软件包不可以既安装在 `/path` 里，又安装在 `/usr/path` 里，并且必须管理所有向后兼容的符号链接，这样如果 `/path` 和 `/usr/path` 在同一个目录里，软件包不会被破坏。

10.6

  软件包应该预设设备文件在 `/dev` 中是接受动态管理的，并且不需要被软件包创建出来。当动态管理的设施在运行时，那些目的不是管理 `/dev` 的软件包绝不能在那里创造或移除文件。 `/dev` 之外的命名管道和设备文件通常情况下应该在初始化脚本，systemd 单元，或者相似机制的要求下被制造出来，但是如果它们必须在安装软件的过程中被制造出来，那么它们可以在维护者脚本中被制造或移除。

10.9

  不再要求在一个软件包中创建一个新的动态用户或者组的时候与 base-passwd 维护者核查。（或者这样做不再是可欲求的了）。

12.3

  对 *-doc 软件包的依赖最多只能是 Recommends（如果它们只被包含在附加形式的文档中，那么就是 Suggests）。

12.5

  Mozilla Public License 1.1 and 2.0 （MPL-1.1 and MPL-2.0）现在被包含在 `/usr/share/common-liscenses` ，并且不需要被逐字复制进软件包的 `copyright` 文件中。

版权-形式

  版权形式的URL的 `https` 形式在 `Format` 字段中是被允许且可取的。

perl

  Perl 的搜索路径现在包含了 maultiarch 目录。特定于构建模块的供应商目录的当前版本支持 multiarch。

虚拟

  经典的 Colossal Cave Adventure 游戏执行有了 `adventure` 虚拟软件包。

虚拟

  Python 3 WSGI-capable HTTP 服务器有了新的 `httpd-wsgi3` 虚拟软件包。当前的 `httpd-wsgi` 虚拟软件包是针对 Python 2 WSGI-capable HTTP服务器的。

虚拟

  针对 MySQL 兼容的软件有了新的 `virtual-mysql-client`， `virtual-mysql-client-core`， `virtual-mysql-server`， `virtual-mysql-server-core`， 和 `virtual-mysql-testsuite` 虚拟软件包。

## 10.25. 版本3.9.8

Released April, 2016.

9.6

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

9.7

  New instructions for registering media type handlers with the FreeDesktop system, which automatically synchronizes with mailcap and therefore replaces mailcap registration for packages using desktop entries.

## 10.26. 版本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 for dynamically allocated user accounts.

5.1

  Empty field values in control files are only permitted in the `debian/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 package `pkg` in a separate package `pkg-doc` and install it into `/usr/share/doc/pkg`.

## 10.27. 版本3.9.6

Released September, 2014.

9.1

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

9.1

  The FHS requirement for `/usr/local/lib64` to exist if `/lib64` or `/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, see policy for exceptions.

4.4

  It is clarified that signature appearing in debian/changelog should be the details of the person who prepared this release of the package.

11.5

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

虚拟

  `java1-runtime` and `java2-runtime` are removed, `javaN-runtime` and `javaN-runtime-headless` are added for all N between 5 and 9.

虚拟

  Added `httpd-wsgi` for WSGI capable HTTP servers.

perl

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

perl

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

## 10.28. 版本3.9.5

Released October, 2013.

5.1

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

5.4, 5.6.24

  `Checksums-Sha1` and `Checksums-Sha256` are now mandatory in `.dsc` files.

5.6.25, 5.8.1

  The `DM-Upload-Allowed` field is obsolete. Permissions are now granted via dak-commands files.

5.6.27

  New section documenting the `Package-List` field in Debian source control files.

5.6.28

  New section documenting the `Package-Type` field in source package control files.

5.6.29

  New section documenting the `Dgit` field in Debian source control files.

9.1.1.8

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

10.7.3

  Packages should remove all obsolete configuration files without local changes during upgrades. The `dpkg-maintscript-helper` tool, available from the dpkg package since Wheezy, can help with this.

10.10

  The name of the files and directories installed by binary packages must be encoded in UTF-8 and should be restricted to ASCII when possible. 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's trigger, and do not need anymore to depend on `dpkg (>= 1.15.4) | install-info`.

debconf

  The `escape` capability is now documented.

虚拟

  `mp3-decoder` and `mp3-encoder` are removed.

## 10.29. 版本3.9.4

Released August, 2012.

2.4

  New tasks archive section.

4.9

  `build-arch` and `build-indep` are now mandatory targets in `debian/rules`.

5.6.26

  New section documenting the `Vcs-*` fields, which are already in widespread use. Note the mechanism for specifying the Git branch used for packaging in the Vcs-Git field.

7.1

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

7.8

  New `Built-Using` field, which must be used to document the source packages for any binaries that are incorporated into this package at build time. This is used to ensure that the archive meets license requirements for providing source for all binaries.

8.6

  Policy for dependencies between shared libraries and other packages has been largely rewritten to document the `symbols` system and more clearly document handling of shared library ABI changes. `symbols` files are now recommended over `shlibs` files in most situations. All maintainers of shared library packages should review the entirety of this section.

9.1.1

  Packages must not assume the `/run` directory exists or is usable without a dependency on `initscripts (>= 2.88dsf-13.3)` until the stable release of Debian supports `/run`.

9.7

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

9.11

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

12.5

  All copyright files must be encoded in UTF-8.

## 10.30. 版本3.9.3

Released February, 2012.

2.4

  New archive sections education, introspection, and metapackages added.

5.6.8

  The `Architecture` field in `*.dsc` files may now contain the value `any all` for source packages building both architecture-independent and architecture-dependent packages.

7.1

  If a dependency is restricted to particular architectures, the list of 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 FHS requirements for the older directories apply to these directories as well. Backward compatibility links will be maintained and packages need 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 use files in `/run`, `/var/run`, or `/var/lock`. This generalizes information previously only in 9.3.2.

9.5

  Cron job file names must not contain `.` or `+` or they will be ignored by cron. They should replace those characters with `_`. If a package provides multiple cron job files in the same directory, they should each start with the package name (possibly modified as above), `-`, 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 same `conffile` may see left-over configuration files from each other even if they conflict.

11.8

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

12.5

  `debian/copyright` is no longer required to list the Debian maintainers involved in the creation of the package (although note that the requirement to list copyright information is unchanged).

版权-形式

  Version 1.0 of the "Machine-readable `debian/copyright` file" specification is included.

mime

  This separate document has been retired and and its (short) contents merged into Policy section 9.7. There are no changes to the requirements.

perl

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

虚拟

  `ttf-japanese-{mincho, gothic}` is renamed to `fonts-japanese-{mincho, gothic}`.

## 10.31. 版本3.9.2

Released April, 2011.

*

  Multiple clarifications throughout Policy where "installed" was used and the more precise terms "unpacked" or "configured" were intended.

3.3

  The maintainer address must accept mail from Debian role accounts and the BTS. At least one human must be listed with their personal email address in `Uploaders` if the maintainer is a shared email address. The duties of a maintainer are also clearer.

5

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

5.1

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

5.6.25

  The `DM-Upload-Allowed` field is now documented.

6.5

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

7.2

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

7.2

  The system state when `postinst` and `prerm` scripts are run is now documented, and the documentation of the special case of dependency state for `postrm` scripts has been improved. `postrm` scripts are required to gracefully skip actions if their dependencies are not available.

9.1.1

  GNU/Hurd systems are allowed `/hurd` and `/servers` directories in the root filesystem.

9.1.1

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

虚拟

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

## 10.32. 版本3.9.1

Released July, 2010.

3.2.1

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

3.9

  Maintainer scripts must pass `--package` to `dpkg-divert` when creating or removing diversions and must not use `--local`.

4.10

  Only `dpkg-gencontrol` supports variable substitution. `dpkg-genchanges` (for `*.changes`) and `dpkg-source` (for `*.dsc`) do not.

7.1

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

7.4

  `Conflicts` and `Breaks` should only be used when there are file conflicts or one package breaks the other, not just because two packages provide similar functionality but don't interfere.

8.1

  The SONAME of a library should change whenever the ABI of the library changes in a way that isn't backward-compatible. It should not 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 installed read-only.

8.6.1, 8.6.2, 8.6.5

  Packages should normally not include a `shlibs.local` file since we now have complete `shlibs` coverage.

8.6.3

  The SONAME of a library may instead be of the form `name-major-version.so`.

10.2

  Libtool `.la` files should not be installed for public libraries. If they're required (for `libltdl`, for instance), the `dependency_libs` setting should be emptied. Library packages historically including `.la` files must continue to include them (with `dependency_libs` emptied) until all libraries that depend on that library have removed or emptied their `.la` files.

10.2

  Libraries no longer need to be built with `-D_REENTRANT`, which was an obsolete LinuxThreads requirement. Instead, say explicitly that libraries should be built with threading support and to be thread-safe if the library supports this.

10.4

  `/bin/sh` scripts may assume that `kill` supports an argument of `-signal`, that `kill` and `trap` support the numeric signals listed in the XSI extension, and that signal 13 (SIGPIPE) can be trapped with `trap`.

10.8

  Use of `/etc/logrotate.d/package` for logrotate rules is now recommended.

10.9

  Control information files should be owned by `root:root` and either mode 644 or mode 755.

11.4, 11.8.3, 11.8.4

  Packages providing alternatives for `editor`, `pager`, `x-terminal-emulator`, or `x-window-manager` should also provide a 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 in those subdirectories.

12.5

  The GPL version 1 is now included in common-licenses and should be referenced from there instead of included in the `copyright` file.

## 10.33. 版本3.9.0

Released June, 2010.

4.4, 5.6.15

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

5.1

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

5.4, 5.5, 5.6.24

  The `Checksums-Sha1` and `Checksums-Sha256` fields in `*.dsc` and `*.changes` files are now documented and recommended.

5.5, 5.6.16

  The `Format` field of `.changes` files is now 1.8. The `Format` field syntax for source package `.dsc` files allows a subtype in parentheses, and it is used for a different purpose than the `Format` field for `.changes` files.

5.6.2

  The syntax of the `Maintainer` field is now must rather than should.

5.6.3

  The comma separating entries in `Uploaders` is now must rather than should.

5.6.8, 7.1, 11.1.1

  Architecture wildcards may be used in addition to specific architectures in `debian/control` and `*.dsc` Architecture fields, and in architecture restrictions in build relationships.

6.3

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

7.3, 7.6.1

  `Breaks` should be used with `Replaces` for moving files between packages.

7.4

  `Breaks` should normally be used instead of `Conflicts` for transient issues and moving files between packages. New documentation of when each should be used.

7.5

  Use `Conflicts` with `Provides` if only one provider of a virtual facility can be installed at a time.

8.4

  All shared library development files are no longer required to be in the `-dev` package, only be available when the `-dev` package is installed. This allows the `-dev` package to be split as long as it 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 normal requirement to use `set -e` in each shell script.

12.5

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

debconf

  `SETTITLE` is now documented (it has been supported for some time). `SETTITLE` is like `TITLE` but takes a template instead of a string to allow translation.

perl

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

perl

  Packages using `Makefile.PL` should use `DESTDIR` rather than `PREFIX` to install into the package staging area. `PREFIX` only worked due to a Debian-local patch.

## 10.34. 版本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 them in postinst and remove them in prerm or postrm.

9.1.1

  `/sys` and `/selinux` directories are explicitly allowed as an exception to the FHS.

## 10.35. 版本3.8.3

Released August, 2009.

4.9

  DEB_*_ARCH_CPU and DEB_*_ARCH_OS variables are now documented and recommended over GNU-style variables for that information.

5.6.8

  Source package Architecture fields may contain all in combination with other architectures. Clarify when all and any may be used in different versions of the field.

5.6.14

  The Debian archive software does not support uploading to multiple distributions 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 libraries in a non-standard location and modify `ld.so.conf`. Packages should either be installed in a standard library directory or packages 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 before installing into `/usr/include/X11` and `/usr/lib/X11`.

12.1

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

12.1

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

12.2

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

perl

  The requirement for Perl modules to have a versioned Depend and Build-Depend on `perl >= 5.6.0-16` has been removed.

## 10.36. 版本3.8.2

Released June, 2009.

2.4

  The list of archive sections has been significantly expanded. See this debian-devel-announce message for the list of new sections and rules for how to categorize packages.

3.9.1

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

5.6.1

  The requirements for source package names are now explicitly spelled out.

9.1

  Legacy XFree86 servers no longer get a special exception from the FHS 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 starting in lenny.

12.5

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

## 10.37. 版本3.8.1

Released March, 2009.

3.8

  Care should be taken when adding functionality to essential and such additions create an obligation to support that functionality in essential 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" instead of "should."

4.4.1

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

4.9.1

  New nocheck option for DEB_BUILD_OPTIONS indicating any build-time test 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 no preceding whitespace.

9.3

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

9.3.2

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

9.3.2

  `/var/run` and `/var/lock` may be mounted as temporary filesystems, and init scripts must therefore create any necessary subdirectories dynamically.

10.4

  `/bin/sh` scripts may assume that local can take multiple variable arguments and supports assignment.

11.6

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

## 10.38. 版本3.8.0

Released June, 2008.

2.4, 3.7

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

4.9

  If `dpkg-source -x` doesn't provide the source that will be compiled, a debian/rules patch target is recommended and should do whatever else is necessary.

4.9.1, 10.1

  Standardized the format of DEB_BUILD_OPTIONS. Specified permitted characters for tags, required that tags be whitespace-separated, allowed packages to assume non-conflicting tags, and required unknown 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 parallel processes if the package supports it

4.13

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

4.14

  If dpkg-source -x doesn't produce source ready for editing and building with dpkg-buildpackage, packages should include a `debian/README.source` file explaining how to generate the patched source, add a new modification, and remove an existing modification. This file may also be used to document packaging a new upstream release 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 in a 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 and prevents installation of the breaking package unless the package named in Breaks is deconfigured first. This field should not be used until the dpkg in Debian stable supports it.

8.1, 8.2

  Clarify which files should go into a shared library package, into a separate package, or into the -dev package. Suggest -tools instead of -runtime for runtime support programs, since that naming is more common in Debian.

9.5

  Files in `/etc/cron.{hourly,daily,weekly,monthly}` must be configuration files (upgraded from should). Mention the hourly directory.

11.8.6

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

12.1

  Manual pages in locale-specific directories should use either the legacy encoding for that directory or UTF-8. Country names should not be included in locale-specific manual page directories unless indicating a significant difference in the language. All characters in the manual page source should be representable in the legacy encoding 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 be referenced rather than quoted in `debian/copyright`.

12.5

  Packages in contrib and non-free should state in the copyright file that the package is not part of Debian GNU/Linux and briefly explain why.

debconf

  Underscore (`_`) is allowed in debconf template names.

## 10.39. 版本3.7.3

Released December, 2007.

5.6.12

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

10.4

  Scripts may assume that `/bin/sh` supports local (at a basic level) and that its test builtin (if any) supports -a and -o binary logical operators.

8.5

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

menu policy

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

5.6.1

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

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 the type of package for which the line is valid. The only currently supported type is udeb, used with packages for the Debian Installer.

3.9.1

  Packages following the Debian Configuration management specification must allow for translation of their messages by using a gettext-based system such as po-debconf.

12.5

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

## 10.40. 版本3.7.2.2

Released October, 2006.

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

6.1

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

## 10.41. 版本3.7.2

Released April, 2006.

11.5

  Revert the cgi-lib change.

## 10.42. 版本3.7.1

Released April, 2006.

10.2

  It is now possible to create shared libraries without relocatable code (using -fPIC) in certain exceptional cases, provided some procedures are followed, and for creating static libraries with relocatable code (again, using -fPIC). Discussion on debian-devel@lists.debian.org, getting a rough consensus, and documenting 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, they must pre-depend on `x11-common (>= 1:7.0.0)`

## 10.43. 版本3.7.0

Released April, 2006.

11.5

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

11.5

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

9.1.1

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

5.1, 5.6.3

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

10.4

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

9.3.3.2

  packages that invoke initscripts now must use invoke-rc.d to do so since it also pays attention to run levels and other local constraints.

11.8.5.2, 11.8.7, etc

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

## 10.44. 版本3.6.2

Released June, 2005.

> Recommend doc-base, and not menu, for registering package documentation.

8.1

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

11.5

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

## 10.45. 版本3.6.1

Released August, 2003.

3.10.1

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

## 10.46. 版本3.6.0

Released July, 2003.

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

Many packaging manual appendices that were integrated into policy sections are now empty, and replaced with links to the Policy. In particular, the appendices that included the list of control fields were updated (new fields like Closes, Changed-By were added) and the list of fields for each of control, `.changes` and `.dsc` files is now in Policy, and they're marked mandatory, recommended or optional based on the current practice and the behavior of the deb-building tool-chain.

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

Several sections that were redundant, crufty or simply not designed with any sort of vision, were rearranged according to the formula that everything should be either in the same place or properly interlinked. Some things remained split up between different chapters when they talked about different aspects of files: their content, their syntax, and their placement in the file system. In particular, 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 use symbols from in the same way that binaries are.

7.6

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

## 10.47. 版本3.5.10

Released May, 2003.

11.8.3

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

11.8.4

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

## 10.48. 版本3.5.9

Released March, 2003.

3.4.2

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

4.2

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

9.3.2

  When asked to restart a service that isn't already running, the init script should start the service.

12.6

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

## 10.49. 版本3.5.8

Released November, 2002.

12.7

  It is no longer necessary to keep a log of changes to the upstream sources in the copyright file. Instead, all such changes should be documented in the changelog file.

7.6

  Build-Depends, Build-Conflicts, Build-Depends-Indep, and Build-Conflicts-Indep must also be satisfied when the clean target is 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 manual pages to undocumented(7). Missing manual pages for programs are still a bug.

## 10.50. 版本3.5.7

Released August, 2002.

> Packages no longer have to ask permission to call MAKEDEV in postinst, 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 a special Tasks: field in the control file.

11.8.4

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

10.1

  The default compilation options have now changed, one should provide debugging symbols in all cases, and optionally step back optimization to -O0, depending on the DEB_BUILD_OPTIONS environment variable.

7.6, 4.8

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

8

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

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

## 10.51. 版本3.5.6

Released July, 2001.

2.5

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

11.5

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

12.3

  Putting documentation in `/usr/doc` versus `/usr/share/doc` is now 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 controls for the http://localhost/doc/ directory, then it is preferred that one ask permission to expose that information during the install.

7

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

## 10.52. 版本3.5.5

Released May, 2001.

12.1

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

  Clarified note in 3.5.3.0 upgrading checklist regarding examples and 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 of dpkg-statoverride; this does not have the weight of policy

  Clarify Standards-Version: you don't need to rebuild your packages just 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 related packages

  11.8.3

    Rules for defining x-terminal-emulator improved

  11.8.5

    X Font policy rewritten: you must read this if you provide fonts for 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 as OSF/Motif-linked ones

## 10.53. 版本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 access it via /var/mail and include a suitable Depends field;

11.9; perl-policy

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

## 10.54. 版本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 symbolic links from `/usr/share/doc/<package>/examples` as needed

## 10.55. 版本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.56. 版本3.5.1

Released February, 2001.

8.1

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

## 10.57. 版本3.5.0

Released January, 2001.

11.8.5

  Font packages for the X Window System must now declare a dependency on `xutils (>= 4.0.2)`

## 10.58. 版本3.2.1.1

Released January, 2001.

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

9.3.2

  Daemon startup scripts in `/etc/init.d/` should not contain modifiable 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 policy document

## 10.59. 版本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 other without

## 10.60. 版本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 with debugging information optionally.

12.8

  Policy for packages where the upstream uses HTML changelog files has been expanded. In short, a plain text changelog file should always be generated for the upstream changes

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

  Policy for packages providing the following X-based features has been 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 priority calculation 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 has been 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 always creating the shared lib before the symlink, so the unpack order be correct

## 10.61. 版本3.1.1

Released November, 1999.

7.1

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

## 10.62. 版本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 prerm scripts.

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 use update-rc.d instead)

9.3.3

  update-rc.d is now the only allowable way of accessing the `/etc/rc?.d/[SK]??*` links. Any scripts which manipulate them directly must be changed to use update-rc.d instead. (This is because the file-rc package handles this information in an incompatible way.)

12.7

  Architecture-specific examples go in `/usr/lib/<package>/examples` with 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-accessing programs. Please see the policy document for details

12.7

  If a package provides a changelog in HTML format, a text-only version should also be included. (Such a version may be prepared using `lynx -dump -nolist`.)

3.2.1

  Description of how to handle version numbers based on dates added

## 10.63. 版本3.0.1

Released July, 1999.

10.2

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

## 10.64. 版本3.0.0

Released June, 1999.

9.1

  Debian formally moves from the FSSTND to the FHS. This is a major change, and the implications of this move are probably not all known.

4.1

  Only 3 digits of the Standards version need be included in control files, 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 the copyright files to point to the correct location of the GPL and other major licenses

10.2

  Packages that use libtool to create shared libraries must include the .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, that carries 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 setgid utmp

## 10.65. 版本2.5.0

Released October, 1998.

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

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

  - Section 3.3 ("Files") was moved to Section 4. The Sections that were Section 4 and Section 5 were moved down to become Section 5 and Section 6.

  - What was Section 5.5 ("Log files") is now a subsection of the new Section 4 ("Files"), becoming section 4.8, placed after "Configuration files", moving the Section 4.8 ("Permissions and owners") to Section 4.9. All subsections of the old Section 5 after 5.5 were moved down to fill in the number gap.

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

- Symlinks are permissible to link the real, or upstream, changelog name 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. The correct location is `/usr/doc/package/copyright`

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

## 10.66. 版本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 package installs shared libraries (cf., Policy Weekly Issue #6, fixes:bug#20515)

## 10.67. 版本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` as interpreter

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

Updated section 3.3.5 Symbolic Links

  symbolic links referencing compressed files must have the same file extension 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 following options: start, stop, restart, force-reload

  - the reload option is optional and must never stop and restart the service

Updated section 3.5 Cron jobs

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

Updated section 3.7 Menus

  removed section about how to register HTML docs to `menu' (the corresponding section in 4.4, Web servers and applications, has been removed 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 reasonable default configuration

New section 4.6 News system configuration

  `/etc/news/organization` and `/etc/news/server` should be supported 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 as foo-smotif and foo-dmotif package

  - if lesstif works reliably for such program, it should be linked against 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 as non-X games

## 10.68. 版本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 touch other packages' configuration files

- MUAs and MTAs have to use liblockfile

## 10.69. 版本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.70. 版本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 with `strip --strip-unneeded`

## 10.71. 版本2.1.2

Released November, 1996.

- Some changes WRT shared libraries

## 10.72. 版本2.1.1

Released September, 1996.

- No hard links in source packages

- Do not use `dpkg-divert` or `update-alternatives` without consultation

- Shared libraries must be installed stripped

## 10.73. 版本2.1.0

Released August, 1996.

- Upstream changelog must be installed too