2

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

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

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

  1. 在卸载过程中,有时某些由包创建的目录不会被删除,因为它们不是空的。错误类似于:“dpkg:警告:删除包名时,目录 '/opt/packagename/' 不为空,因此未删除。” 尽管有内容,有没有办法强制删除软件包安装的所有文件?

我已经通过文档几次寻找答案,但似乎我没有找到正确的地方。

4

1 回答 1

2

我想知道如何使卸载过程检查磁盘上的文件。假设如果文件 /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:警告:删除包名时,目录 '/opt/packagename/' 不为空,因此未删除。” 尽管有内容,有没有办法强制删除软件包安装的所有文件?

软件包安装的文件将被删除。该警告表示在应用程序生命周期内创建的文件。您可以使用 postrm 脚本来删除它们。

附带说明一下,包不应该将东西放入 /opt。

于 2012-07-27T19:34:34.897 回答