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

Wolph
  • 865
  • 1
  • 7
  • 12
  • http://serverfault.com/search?q=policy-rc.d – Zoredache Jan 09 '12 at 08:36
  • 2
    Possible duplicate of [How do I ask apt-get to skip any interactive post-install configuration steps?](https://serverfault.com/questions/227190/how-do-i-ask-apt-get-to-skip-any-interactive-post-install-configuration-steps) – Ian Mackinnon Jan 06 '18 at 12:36
  • 1
    That question is similar but different. This is about skipping all steps, not just the interactive ones. Some tasks automatically execute scripts which are not always wanted. – Wolph Jan 06 '18 at 16:44

3 Answers3

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

Brett Dikeman
  • 364
  • 2
  • 8
  • 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 09 '12 at 04:57
  • Updated. Does that help? – Brett Dikeman Jan 09 '12 at 05:39
  • it does, better to know that it's not possible than wondering if it is :) Thanks for the help. – Wolph Jan 09 '12 at 07: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 '12 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.

Zoredache
  • 130,897
  • 41
  • 276
  • 420
  • 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 09 '12 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
Diego Roccia
  • 348
  • 1
  • 6