我有一个定制的 Debian 软件包,现在可以正常安装和卸载,但有几个问题:

  1. 我想知道如何让卸载过程检查磁盘上的文件。假设文件 /etc/file.conf 存在,我不想卸载该软件包。那可能吗?我尝试将检查添加到 prerm 和 postrm,但是即使 prerm 和 postrm 脚本出现错误退出,软件包安装的所有文件仍然会被删除。

我猜想我应该在这些脚本中使用特定的退出代码?

  1. 在卸载过程中,有时软件包创建的某些目录不会被删除,因为它们不为空。错误是这样的: “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 中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top