Bug#879771: init-system-helpers: update-rc.d falsly creates K-symlinks on installation which breaks switching init systems later
Daniel Reichelt
debian at nachtgeist.net
Wed Oct 25 17:13:39 BST 2017
Package: init-system-helpers
Version: 1.50
Severity: important
Tags: patch
Hi,
Assume this environment:
- debootstrap sid
- chroot apt-get install openssh-server
With init-system-helpers <1.50 you would now find S-symlinks in
etc/rc?.d. However with init-system-helpers 1.50, you'll see erroneously
created K-symlinks - which doesn't matter, systemd being used for init -
but...
...if you were now to switch the init system to sysv-rc or openrc,
update-rc.d would see the kill-symlinks, think they had been disabled by
the user and not touch them any further. This most likely leaves any
server system unusable after a reboot, ifupdown (/etc/init.d/networking)
or any other init-script-carrying package being affected as well.
Please find attached a patch for the update-rc.d script.
The initial discussion is available at [1].
Cheers
Daniel
[1] https://lists.debian.org/debian-devel/2017/10/msg00439.html
-------------- next part --------------
--- init-system-helpers-1.50/script/update-rc.d 2017-10-13 01:16:13.000000000 +0200
+++ patched/scriptsupdate-rc.d 2017-10-25 17:59:18.290021026 +0200
@@ -110,7 +110,7 @@
# for "defaults", parse Default-{Start,Stop} and create these links
my ($lsb_start_ref, $lsb_stop_ref) = parse_def_start_stop("/etc/init.d/$scriptname");
- my $start = $action = "defaults-disabled" ? "K" : "S";
+ my $start = $action eq "defaults-disabled" ? "K" : "S";
foreach my $lvl (@$lsb_start_ref) {
make_path("/etc/rc$lvl.d");
my $l = "/etc/rc$lvl.d/${start}01$scriptname";
More information about the Pkg-systemd-maintainers
mailing list