15

When installing some packages (like RabbitMQ) on Debian/Ubuntu machines, the post-install step defaults to starting the service.

While this is great in most cases, in some cases (when you already have a service running on the needed port for example) this fails which makes apt-get fail completely.

Is there a way to tell apt-get to skip all those post-install steps so it can still install properly?

Note This is not about questions during install, even in interactive sessions these installs fail because the post-install step fails failure is not handled correctly

Wolph
  • 883

3 Answers3

13

How do I ask apt-get to skip any interactive post-install configuration steps?

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

Edit: yes, that was for skipping (well, automating) post-install questions, true - sorry.

There is no way to skip post-install scripts. The official Debian policy is to edit the script to return a non-terminal error, or fix the script. See http://www.debian-administration.org/articles/251

It sounds like you're automating this for many servers, in which case, you'll probably want to make your own version of the package and deploy that. Another option is to email the package maintainer and discuss whether a failure-to-start should be a terminal error for post-install (I don't believe it is for other packages like apache or lighttpd, for example, but I could be wrong.)

5

What you may want to do is something with the policy-rc.d. See the man page for invoke-rc.d. You can set a policy so services will not be automatically started.

Zoredache
  • 133,737
4

this should work

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