这个字段类似于 Depends,但它还会强制 dpkg 在开始声明前的包安装之前完成命名包的安装。它的工作原理是这样的,当要解包一个声明了 pre-dependency 的包时,如果所依赖的包已经完全配置,或者即使所依赖的包只是解包或处于“Half-Configured”状态,只要它们在过去的某个时刻正确配置过(并且没有被移除或部分移除),pre-dependency 就能够满足。
在这种情况下,先前配置过的版本和当前已解包或“Half-Configured”的版本都必须满足 Pre-Depends 字段中的任何版本限定条件。当要配置声明了 pre-dependency 的包时,pre-dependency 将被视为普通的 Depends。只有在所依赖的包已经正确配置的情况下,pre-dependency 才会被认为已满足。然而,与 Depends 不同,Pre-Depends 不允许打破循环依赖关系。如果在尝试满足 Pre-Depends 时遇到循环依赖关系,则安装将被中止。
如果 preinst 脚本依赖于指定的包,则也需要使用 Pre-Depends。最好尽量避免出现这种情况。应该谨慎使用 Pre-Depends,最好只由可能会妨碍系统继续进行任何正在进行的升级的包来使用。
较小版本:
请查看Debian政策手册7.2节以获取更多详细信息。我在此引用了两个最相关的部分,但该部分(以及第7章的其他内容)中还有其他信息可以帮助说明依赖关系的工作原理。
Pre-Depends
这个字段类似于
Depends
,但它还会强制dpkg
在开始安装声明了预先依赖的软件包之前,完成对先前命名的软件包的安装,具体如下:当一个声明了预先依赖的软件包即将被解压缩时,如果所依赖的软件包已经完全配置,或者即使所依赖的软件包只是被解压缩或处于“半配置”状态,只要它们在过去的某个时间点上已经正确配置过(并且没有被删除或部分删除),那么预先依赖可以得到满足。在这种情况下,先前配置的版本和当前解压缩或“半配置”的版本都必须满足
Pre-Depends
字段中的任何版本条件。当声明了预先依赖的软件包即将被配置时,预先依赖将被视为普通的
Depends
。只有在所依赖的软件包已经正确配置的情况下,才会认为预先依赖得到满足。然而,与Depends
不同,Pre-Depends
不允许打破循环依赖。如果在尝试满足Pre-Depends
时遇到循环依赖,安装将被中止。如果
preinst
脚本依赖于指定的软件包,则还需要Pre-Depends
。最好尽量避免这种情况的发生。应该谨慎使用
Pre-Depends
,最好只由那些过早升级或安装可能妨碍系统继续进行任何可能正在进行的升级的软件包使用。在未经
debian-devel
邮件列表讨论并达成一致意见之前,不应为软件包指定Pre-Depends
条目。请参阅Dependencies, Section 3.5。