如何在卸载时删除软件包的所有痕迹?

如何在卸载时删除软件包的所有痕迹?

我开发了一个软件包,正在 Ubuntu 系统上手动安装(使用apt)。卸载时使用:

sudo dpkg --purge <package-name>

我收到警告:

dpkg: warning: while removing <package-name>, directory '/opt/<package-name>' not empty so not removed 
dpkg: warning: while removing <package-name>, directory '/var/log/<package-name>' not empty so not removed

我想彻底卸载系统中的所有文件,而我收到警告的目录仅由我的软件包创建/使用。有没有办法强制删除它们(这是不是个坏主意)?

我考虑过删除包的 postrm 脚本中的目录,但我不确定这是否是最好的方法。任何建议都将不胜感激!

答案1

您可以使用postrm强制删除该文件夹,但需要注意两个可能的问题:

  1. postrmdpkg --remove在 a 期间和 期间被调用dpkg --purge,并且您的文件夹将始终被删除。
  2. 如果您写入共享文件夹,您还将删除使用该文件夹的其他应用程序。

为了防止出现问题 2,您可以先删除所有文件,然后检查目录是否为空,然后再将其删除。

如果您不关心问题 1,您可以强制删除,但为了区分 postrm 中的删除和清除,您可以:

if [ "$1" = "purge" ]; then
rmdir -R  /path/to/directory
fi

相关内容