[debhelper-devel] Bug#837528: debhelper: dh_installinit --no-restart-on-upgrade now restarts after upgrade

Simon McVittie smcv at debian.org
Mon Sep 12 08:19:38 UTC 2016


Package: debhelper
Version: 10
Severity: normal

dbus contains a service that explicitly does not support being restarted
without a reboot (it would require an init-style stateful re-exec with a
lot of state to be transferred, which hasn't been implemented), so for a
long time we've used

        dh_installinit -pdbus -r

(where -r is the short form of --no-restart-on-upgrade) to suppress the
restart that debhelper would normally put in the maintainer scripts.

After upgrading dbus to compat level 10, I see this:

       --- /var/lib/dpkg/info/dbus.postinst	2016-08-15 22:05:45.000000000 +0100
       +++ dbus_1.10.10-2_amd64/DEBIAN/postinst	2016-08-26 11:07:56.000000000 +0100
       @@ -97,15 +97,18 @@
        if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ]; then
        	if [ -x "/etc/init.d/dbus" ]; then
        		update-rc.d dbus defaults >/dev/null
       -		invoke-rc.d dbus start || exit $?
       +		if [ -n "$2" ]; then
       +			_dh_action=restart
       +		else
       +			_dh_action=start
       +		fi
       +		invoke-rc.d dbus $_dh_action || exit $?
        	fi
        fi
        # End automatically added section

i.e. the change of default in compat level 10 has meant we would now
restart the service. Is this intended?

It looks as though it'll be possible to work around this with

    dh_installinit -pdbus --no-restart-on-upgrade --no-restart-after-upgrade

but that seems counter-intuitive: I would have expected

    dh_installinit -pdbus --no-restart-on-upgrade

to be enough?

I think this pseudo-patch would do what I expect:

        			if (! $dh{NO_START}) {
       -				if ($dh{RESTART_AFTER_UPGRADE}) {
       +				if ($dh{RESTART_AFTER_UPGRADE} && ! $dh{R_FLAG}) {

On the other hand, this change would likely also affect compat
levels < 10 if they did

    dh_installinit -pdbus --no-restart-on-upgrade --restart-after-upgrade

which has an unclear meaning: it isn't obvious what that should do, and
which of the two contradictory-looking options should "win".

Regards,
    S

-- System Information:
Debian Release: stretch/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.7.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages debhelper depends on:
ii  autotools-dev            20160430.1
ii  binutils                 2.27-8
ii  dh-autoreconf            12
ii  dh-strip-nondeterminism  0.027-1
ii  dpkg                     1.18.10
ii  dpkg-dev                 1.18.10
ii  file                     1:5.28-4
ii  libdpkg-perl             1.18.10
ii  man-db                   2.7.5-1
ii  perl                     5.22.2-5
ii  po-debconf               1.0.19

debhelper recommends no packages.

Versions of packages debhelper suggests:
pn  dh-make  <none>

-- no debconf information




More information about the debhelper-devel mailing list