题 如何让apt-get跳过所有安装后配置步骤?


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

虽然在大多数情况下这很好,但在某些情况下(例如,当您已经在所需端口上运行服务时),这会失败 apt-get 彻底失败了。

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

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


11
2018-01-09 02:26




serverfault.com/search?q=policy-rc.d - Zoredache
可能重复 如何让apt-get跳过任何交互式的安装后配置步骤? - Ian Mackinnon
这个问题类似但不同。这是关于跳过所有步骤,而不仅仅是交互式步骤。某些任务会自动执行并非总是需要的脚本。 - Wolph


答案:


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

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

编辑:是的,这是为了在安装后跳过(好吧,自动化) 问题,对不对。

没有办法跳过安装后 脚本。官方Debian策略是编辑脚本以返回非终端错误,或修复脚本。看到 http://www.debian-administration.org/articles/251

听起来你正在为许多服务器自动执行此操作,在这种情况下,您可能希望制作自己的软件包版本并进行部署。另一个选择是通过电子邮件发送软件包维护人员并讨论启动失败是否应该是安装后的终端错误(我不相信它适用于其他软件包,例如apache或lighttpd,但我可能是错的。)


8
2018-01-09 03:28



这只是为了跳过交互式步骤。这些不是问题,这些都是非交互式的 post-install 如果有的话会失败的步骤 service rabbitmq-server start 失败。 - Wolph
更新。这有帮助吗? - Brett Dikeman
它确实,更好地知道它是不可能的,不知道它是否:) :)感谢您的帮助。 - Wolph
如果您使用的是sudo,则环境变量的导出将不起作用,但您可以这样做: sudo DEBIAN_FRONTEND=noninteractive apt-get -y [packagename] - aculich


您可能想要做的是与 政策的rc.d。有关invoke-rc.d的信息,请参见手册页。您可以设置策略,以便不会自动启动服务。


4
2018-01-09 08:16



这是一种解决它的方法,但这是我假设的临时措施? Atleast ...我认为你会全局禁用所有服务启动。 - Wolph


这应该工作

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

1
2017-09-15 12:46



对于这种情况有点hacky和非常具体,但它确实有很大帮助!谢谢 :) - Wolph