Ubuntu – “loop involving service”: apt-get install breaks dpkg

Apache2aptdpkgpackage-management

One apt-get install went bad, now every apt command fails.

Obligatory dump from sudo apt-get install apache2

Reading package lists... Done
Building dependency tree       
Reading state information... Done
**apache2 is already the newest version.**
0 upgraded, 0 newly installed, 0 to remove and 17 not upgraded.
**1 not fully installed or removed.**
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] 

Now e
Then, when I respond 'Y':

Setting up apache2 (2.4.12-2ubuntu2) ...
insserv: warning: script 'S99logd_pub_sub' missing LSB tags and overrides
insserv: warning: script 'logd_pub_sub' missing LSB tags and overrides
insserv: There is a loop between service rc.local and procps if started
insserv:  loop involving service procps at depth 2
insserv:  loop involving service udev at depth 1
insserv: Starting logd_pub_sub depends on rc.local and therefore on system facility `$all' which can not be true!
~snip 99 iterations~
insserv: Max recursions depth 99 reached
insserv: Starting logd_pub_sub depends on rc.local and therefore on system facility `$all' which can not be true!
insserv: There is a loop at service rc.local if started
insserv: Starting logd_pub_sub depends on rc.local and therefore on system facility `$all' which can not be true!
~snip 10 or so iterations~
insserv:  loop involving service networking at depth 4
insserv: There is a loop between service rc.local and urandom if started
insserv:  loop involving service urandom at depth 4
insserv:  loop involving service hwclock at depth 3
insserv: There is a loop between service logd_pub_sub and mountkernfs if started
insserv:  loop involving service mountkernfs at depth 1
insserv: Starting logd_pub_sub depends on rc.local and therefore on system facility `$all' which can not be true!
~snip~
insserv: Starting logd_pub_sub depends on rc.local and therefore on system facility `$all' which can not be true!
insserv: There is a loop between service logd_pub_sub and dns-clean if started
insserv:  loop involving service dns-clean at depth 1
insserv: Starting logd_pub_sub depends on rc.local and therefore on system facility `$all' which can not be true!
insserv: Starting logd_pub_sub depends on rc.local and therefore on system facility `$all' which can not be true!
insserv: exiting now without changing boot order!
update-rc.d: error: insserv rejected the script header
dpkg: error processing package apache2 (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 apache2
E: Sub-process /usr/bin/dpkg returned an error code (1)

The machine is running Ubuntu 15.10

Best Answer

Turns out the problem was there was an unrelated script in /etc/init.d that was breaking dpkg. The fix was to remove the offending script. The general case would be to check all of your init.d scripts and make sure they actually run before trying to run apt.