2

我有一个 Debian 软件包,它必须更新一些文件。这些文件将在卸载 Debian 软件包后存在。当我调用apt-get remove时,我想将它们与我的包一起删除。

如果我将更新的文件添加到

/var/lib/dpkg/info/<package>.list

他们将被删除。

更新: 我将删除 postrm.debhelper 脚本中的文件夹

rm -rf 文件夹

但是感觉不对。;)

4

1 回答 1

3

首先,我想说这听起来有点像一个包的不当行为,删除安装前存在的卸载文件,我强烈建议不要在一个供公众使用的包中做任何此类事情。但是,如果是私人使用,并且相关人员了解它的作用,那应该没问题。

删除 prerm 或 postrm 中的文件听起来是最好的答案。但请确保您不要rm无条件执行;prerm 和 postrm 可以在除完全删除包之外的几种情况下调用。

postrm 比 prerm 更可取,除非您想完全确保在从文件系统中删除包自己的内容之前删除文件。

在 postrm 中,我建议做类似的事情

case "$1" in
    purge|disappear)
        rm -rf $your_folder
esac

您可以添加removepurge那里disappear,如果您希望即使在“删除”而不是“清除”包时也删除文件(“删除”意味着将保留包的配置文件;这通常意味着包的机会稍后再次安装)。

postrm 也将在正常的包升级时调用,或者当升级或初始安装失败时(操作、、、upgradefailed-upgrade)。请参阅 Debian 政策以获取有关如何以及何时使用它们的详细说明。在这些情况下,您几乎绝对不想执行。abort-installabort-upgraderm

于 2014-02-24T17:51:54.003 回答