我正在维护一个 debian 软件包,其中包括一些安装在 下的配置文件/etc/
。有没有办法让软件包--purge
在用户执行常规 时始终自动运行apt-get remove mypackage
?
原因是我在 /etc 中有一些配置文件,这些文件应该在删除二进制文件时删除,否则会导致奇怪的行为。但是我仍然想将它们视为 conf 文件,即确保 apt 不会在每次升级软件包时都清除它们。但它们应该在卸载软件包时被删除。
目前,我正在手动删除 postrm 脚本中的 /etc conf 文件。但是我刚刚发现这有一个不良的副作用:如果用户卸载然后重新安装该软件包,conf 文件将不会被重新安装,因为 apt 认为它们仍然在那里。那么,有没有办法可以手动触发 postrm 中的完全“清除”,以便 apt 知道 conf 文件已经消失了?
答案1
Debian 政策禁止您摆弄属于其他软件包和/或系统更改的文件。(或者至少我认为是这样)
教导你的用户
您可以指示用户使用purge
而不是remove
:
sudo apt-get purge mypackage
自动覆盖
如果需要覆盖配置文件,debian 可能会提示用户安装维护者配置文件:http://www.debian.org/doc/manuals/maint-guide/dother.en.html#conffiles
软件最让人恼火的事情之一就是你花费了大量的时间和精力来定制一个程序,结果升级却毁掉了你所做的一切。Debian 通过将配置文件标记为 conffiles 来解决此问题。[55] 当你升级软件包时,你会被问到是否要保留旧的配置文件。
默认强制使用新的配置文件
您可以在升级时自动执行此操作:
apt-get -o Dpkg::Options::="--force-confnew" dist-upgrade
资料来源:http://raphaelhertzog.com/2010/09/21/debian-conffile-configuration-file-managed-by-dpkg/和https://askubuntu.com/a/104912/5538
提供/冲突/替换
我对此不确定,但我认为您可以完全清除并用新软件包版本替换旧软件包版本。
阅读此处:http://www.debian.org/doc/debian-policy/ch-relationships.html#s-replaces
答案2
打开终端并输入此命令。
alias remove='apt-get remove --purge
它将创建一个名为 remove 的别名,并将其定义为包含 remove --purge
答案3
我偶尔会运行aptitude purge '~c'
清除所有之前未清除的内容。鼓励人们这样做。