14

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

3

3 Answers 3

12

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.)

4
  • 1
    That's just to skip interactive steps. Those are not the problem here, these are the non-interactive post-install steps that fail if something like service rabbitmq-server start fails.
    – Wolph
    Jan 9, 2012 at 4:57
  • Updated. Does that help? Jan 9, 2012 at 5:39
  • it does, better to know that it's not possible than wondering if it is :) Thanks for the help.
    – Wolph
    Jan 9, 2012 at 7:07
  • If you're using sudo the export of the environment variable won't work, but you can do it this way: sudo DEBIAN_FRONTEND=noninteractive apt-get -y [packagename]
    – aculich
    Oct 31, 2012 at 21:09
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.

1
  • That's a way to work around it, but that would be a temporary measure I assume? Atleast... I think that way you would globally disable all service starts.
    – Wolph
    Jan 9, 2012 at 18:19
3

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
1
  • A bit hacky and very specific to this case, but it does help a lot! Thanks :)
    – Wolph
    Jan 6, 2018 at 17:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .