【问题标题】:Debian package uninstall processDebian软件包卸载过程
【发布时间】:2012-07-26 13:29:05
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: debian apt-get dpkg


    【解决方案1】:

    我想知道如何使卸载过程检查磁盘上的文件。 假设如果文件 /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。

    【讨论】:

    • 奇怪,在 prerm 中添加检查和“退出 1”就可以了。正如我在问题中提到的那样,我确信我之前尝试过这个。还是非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2011-07-15
    相关资源
    最近更新 更多