【问题标题】:How do I gracefully exit a deb install from a maintainer script?如何从维护者脚本中优雅地退出 deb 安装?
【发布时间】:2016-07-12 22:32:37
【问题描述】:

我正在构建一个 deb,它使用 debconf 来询问用户是否真的想要安装它(简单的布尔模板)。什么是优雅退出安装的最佳方式,以便稍后用户可以apt-get install pkg-name 并看到新的配置菜单?

我目前的解决方案是检查preinst 脚本中的值,如下所示:

db_get pkg-name/confirm_install
if [ "$RET" = "false" ]; then
      db_purge
      exit 1
fi

exit 1 是防止apt-get 继续并认为已安装软件包所必需的,并且 db_purge 允许用户使用干净的 debconf db 重新安装。但是,它会抛出一个令人讨厌的错误:

dpkg: error processing pkg-name (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 pkg-name
E: Sub-process /usr/bin/dpkg returned an error code (1)

有没有更好的方法来处理从 deb 维护者脚本中退出安装?

【问题讨论】:

  • 怎么样db_get pkg-name/confirm_install | true

标签: debian deb debconf


【解决方案1】:

我不相信有。从 dpkg 的角度来看,用户要求安装软件包,如果最终没有发生,则需要提供尽可能多的解释以表明它没有发生以及为什么没有发生。

相反,您可能允许包干净地完成安装,但不启用包提供的任何额外行为,直到用户运行特殊的“重新配置”脚本(或标准 dpkg-reconfigure $yourpkg)。

【讨论】:

  • 恐怕你是对的,这是有道理的。经过大量搜索,我似乎找不到任何方法来做到这一点。我会给它几天,直到我接受你的回答,看看其他人是否有想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 2016-03-15
  • 2013-06-24
  • 2011-01-21
  • 2012-01-07
  • 2014-04-30
  • 1970-01-01
相关资源
最近更新 更多