Bug#832582: update-rc.d foo disable broken without insserv
Michael Biebl
biebl at debian.org
Wed Jul 27 09:48:00 BST 2016
Package: init-system-helpers
Version: 1.40
Severity: serious
In the latest upload, we dropped the insserv dependency and added some
fallback code for SysV init scripts for the case where insserv is not
installed [1].
Unfortunately, the disable case is not handled correctly. It removes all
symlinks:
# for "disable" we cannot rely on the init script still being present, as
# this gets called in postrm for purging. Just remove all symlinks.
if ("disable" eq $action) { unlink($_) for
glob("/etc/rc?.d/[SK][0-9][0-9]$scriptname"); return; }
On package upgrades, the SysV init script gets enabled again via
update-rc.d foo defaults. This means
1/ For SysV only service, we enable and start a service, overriding the
admins settings.
2/ For a package with native service files and a SysV init script, the
state gets out of sync.
I consider 1/ a blocker, which is why I'm marking this as RC.
The correct why to handle disable a SysV init script, is to turn
existing S symlinks in runlevel S,2,3,4,5 into K symlinks.
For this we don't need the LSB header, we simply have to check for the
existence symlinks on the disk.
The update-rc.d man page says that the sequence number of the K symlink
should be 100 minus the priority of the S symlink.
For simplicities reason, I would simply turn S symlinks into K01
symlinks.
Enable would be the reverse action. We check in runlevels S,2,3,4,5 for
K symlinks and turn them into S symlinks.
Again, I would just use priority S01 here.
So, a disable + enable on service foo might change the priority of that
SysV init script, but under systemd those priorities are ignored and if
sysvinit-core is installed, it will pull in insserv which will correct
the priorities. So we do not lose any relevant (admin) configuration.
Regards,
Michael
[1] http://anonscm.debian.org/cgit/collab-maint/init-system-helpers.git/commit/?id=f51e81cabe
-- System Information:
Debian Release: stretch/sid
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'unstable'), (200, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.6.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages init-system-helpers depends on:
ii perl-base 5.22.2-3
init-system-helpers recommends no packages.
init-system-helpers suggests no packages.
-- no debconf information
More information about the Pkg-systemd-maintainers
mailing list