我正在构建我自己的 debian 软件包的新版本,有些地方发生了变化,现在应该删除一些文件(例如不应该执行更多的旧 upstart 脚本)。我刚刚从 debian 包中删除了这些文件,看起来它们在生成的 deb 文件中丢失了。此外,如果我在干净的机器上安装新版本,一切都很好,但是当我升级现有安装时,删除的文件仍然存在并出现在包文件拥有的列表中:(dpkg -L <package name>
或者/var/lib/dpkg/info/<package-name>.list
显然是同一件事)。
所以我的问题是:我应该如何正确删除这些文件?
答案是,当涉及到 conffiles 时,包的用户打算自己解决 cruft 的清理问题。
我不确定从 Debian 打包策略的角度来看的细节,但是如果您需要在升级中删除、重新定位或修改 conffile,您可以在各种 preinst/postinst 挂钩脚本之一中处理它。我知道我已经在一定程度上看到了现有的软件包。
/var/lib/dpkg/info/grub-common.postinst
这是来自 grub postinst脚本的示例。对dpkg-maintscript-helper rm_conffile的调用将在某些条件下删除配置。