在 Debian/Ubuntu 机器上安装某些软件包(如 RabbitMQ)时,该post-install
步骤默认为启动服务。
虽然这在大多数情况下都很好,但在某些情况下(例如当您已经在所需端口上运行服务时)这会失败,从而导致apt-get
彻底失败。
有没有办法apt-get
跳过所有这些post-install
步骤以便它仍然可以正确安装?
笔记这与安装过程中的问题无关,即使在交互式会话中,这些安装也会失败,因为post-install
步骤失败没有得到正确处理
答案1
export DEBIAN_FRONTEND=noninteractive
apt-get install -y [packagename]
编辑:是的,这是为了跳过(好吧,自动化)安装后问题,没错——抱歉。
没有办法跳过安装后脚本。Debian 官方政策是编辑脚本以返回非终端错误,或修复脚本。请参阅http://www.debian-administration.org/articles/251
听起来你正在为许多服务器自动执行此操作,在这种情况下,你可能希望制作自己的软件包版本并部署它。另一个选择是给软件包维护者发送电子邮件,讨论启动失败是否应该是安装后的终端错误(我不认为它适用于其他软件包,例如 apache 或 lighttpd,但我可能是错的。)
答案2
你可能想做的是策略-rc.d。请参阅invoke-rc.d 的手册页。您可以设置策略,这样服务就不会自动启动。
答案3
这应该可行
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