如何从新版本的软件包中删除已弃用的文件?

如何从新版本的软件包中删除已弃用的文件?

我正在构建我自己的 debian 软件包的新版本,有些东西已经更改,现在应该删除一些文件(例如,旧的 upstart 脚本不应该再执行了)。我刚刚从 debian 软件包中删除了这些文件,看起来它们在生成的 deb 文件中丢失了。此外,如果我在干净的机器上安装新版本,一切都很好,但是当我升级现有安装时,删除的文件仍然存在,并出现在软件包文件所拥有的列表中:(dpkg -L <package name>或显然/var/lib/dpkg/info/<package-name>.list是同一件事)。

所以我的问题是:我应该如何正确删除这些文件?

答案1

答案是,当涉及 conffiles 时,包的用户打算自己解决清理垃圾的问题。

从 Debian 打包策略的角度来看,我不确定具体细节,但如果您需要在升级过程中删除、重新定位或修改 conffile,您可以在各种 preinst/postinst 钩子脚本之一中处理它。我知道我已经看到现有软件包在一定程度上这样做了。

以下是 grub postinst 脚本的一个示例/var/lib/dpkg/info/grub-common.postinst。调用dpkg-maintscript-helper rm_conffile将会在特定条件下删除配置。

#!/bin/sh
set -e
# Automatically added by dh_installdeb
dpkg-maintscript-helper rm_conffile /etc/grub.d/10_freebsd 2.00-14~ -- "$@"
# End automatically added section
# Automatically added by dh_installdeb
dpkg-maintscript-helper rm_conffile /etc/grub.d/10_hurd 2.00-14~ -- "$@"
# End automatically added section

相关内容