题
我有一个定制的 Debian 软件包,现在可以正常安装和卸载,但有几个问题:
- 我想知道如何让卸载过程检查磁盘上的文件。假设文件
/etc/file.conf
存在,我不想卸载该软件包。那可能吗?我尝试将检查添加到 prerm 和 postrm,但是即使 prerm 和 postrm 脚本出现错误退出,软件包安装的所有文件仍然会被删除。
我猜想我应该在这些脚本中使用特定的退出代码?
- 在卸载过程中,有时软件包创建的某些目录不会被删除,因为它们不为空。错误是这样的: “dpkg:警告:删除 packagename 时,目录 '/opt/packagename/' 不为空,因此未删除。” 有没有办法强制删除包安装的所有文件,不管内容如何?
我已经多次查看文档来寻找答案,但似乎我没有找到正确的地方。
解决方案
我想知道如何让卸载过程检查磁盘上的文件。假设文件 /etc/file.conf 存在,我不希望卸载该包。那可能吗?我尝试将检查添加到 prerm 和 postrm,但是即使 prerm 和 postrm 脚本因错误退出,> 软件包安装的所有文件仍然会被删除。
prerm 脚本的非零退出 将不会 删除所有已安装的文件。
#!/bin/sh
if [ -x /etc/file.conf ]; then
echo "You shall not remove me" >&2
exit 1
fi
在卸载过程中,有时包装创建的一些目录不会被删除,因为它们不是空的。错误是这样的:“dpkg:警告:在删除packagename时,目录'/opt/packageName/'不删除。
该软件包安装的文件将被删除。该警告信号在应用程序寿命期间创建的文件。您可以使用posttrm脚本将其删除。
附带说明一下,包不应该将内容放入 /opt 中。
不隶属于 StackOverflow