我如何要求apt-get跳过所有安装后配置步骤?


11

在Debian / Ubuntu机器上安装某些软件包(例如RabbitMQ)时,该post-install步骤默认为启动服务。

尽管这在大多数情况下都很好,但在某些情况下(例如,当您已经在需要的端口上运行了服务时),此操作将失败,这将apt-get导致完全失败。

有没有办法告诉apt-get您跳过所有这些post-install步骤,以便仍然可以正确安装?

注意这与安装过程中的问题无关,即使在交互式会话中,这些安装也会失败,因为post-install步骤失败失败无法正确处理




1
这个问题相似但又不同。这是关于跳过所有步骤,而不仅仅是交互步骤。某些任务会自动执行并非总是需要的脚本。
Wolph '18年

Answers:


8

我如何要求apt-get跳过任何交互式的安装后配置步骤?

export DEBIAN_FRONTEND=noninteractive
apt-get install -y [packagename]

编辑:是的,那是为了跳过(以及自动化)安装后问题,是的,对不起。

无法跳过安装后脚本。Debian的官方政策是编辑脚本以返回非终端错误,或修复脚本。见http://www.debian-administration.org/articles/251

听起来您要针对许多服务器自动执行此操作,在这种情况下,您可能需要制作自己的软件包版本并进行部署。另一种选择是给软件包维护者发送电子邮件,并讨论启动失败是否应该是安装后的终端错误(例如,我不认为它是针对其他软件包(例如apache或lighttpd)的,但我可能是错的)


这只是跳过交互步骤。这些不是这里的问题,这些是非交互式post-install步骤,如果类似的操作service rabbitmq-server start失败,它们就会失败。
Wolph

更新。有帮助吗?
Brett Dikeman

的确如此,最好知道这是不可能的,而不是想知道它是否是:)谢谢您的帮助。
Wolph

如果您使用sudo,则环境变量的导出将不起作用,但是您可以通过以下方式做到这一点:sudo DEBIAN_FRONTEND=noninteractive apt-get -y [packagename]
aculich 2012年

4

您可能想对policy-rc.d做些事情。请参见手册页以获取invoke-rc.d。您可以设置一个策略,以使服务不会自动启动。


这是解决该问题的方法,但这是我认为的临时措施?Atleast ...我认为您将在全局范围内禁用所有服务启动。
沃尔夫

2

这应该工作

echo exit 101 > /usr/sbin/policy-rc.d
chmod +x /usr/sbin/policy-rc.d
apt-get install <packagename>
rm -f /usr/sbin/policy-rc.d

有点骇人听闻,非常针对这种情况,但这确实有很大帮助!谢谢:)
Wolph '18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.