Bug#879727: debhelper: dh_systemd_start script fails to start new units when an existing unit is updated (LP#1707880)

Niels Thykier niels at thykier.net
Wed Oct 25 07:19:03 BST 2017


Package: debhelper
Version: 10.10.3
Severity: important

Quote from [LP#1707880]:

"""
Upon upgrading apt from a version that only ships apt-daily.timer to the one that ships apt-daily.timer and apt-daily-upgrade.timer, the latter is not started on zesty and later.

I believe this may be a bug in dh_systemd_start:

# Automatically added by dh_systemd_start
if [ -d /run/systemd/system ]; then
 systemctl --system daemon-reload >/dev/null || true
 if [ -n "$2" ]; then
  _dh_action=try-restart
 else
  _dh_action=start
 fi
 deb-systemd-invoke $_dh_action apt-daily-upgrade.timer apt-daily.timer >/dev/null || true
fi
# End automatically added section

This reduces to:
deb-systemd-invoke try-restart apt-daily-upgrade.timer apt-daily.timer >/dev/null || true

which is (after calling/checking policy-rc.d) is:
systemctl try-restart apt-daily-upgrade.timer apt-daily.timer >/dev/null || true

This is correct, for the apt-daily.timer and does nothing for the apt-daily-upgrade.timer. Since apt-daily-upgrade.timer is not active, try-restart does not start it.

Imho, there should be an extra snippet in apt.postinst which does this:

if [ -d /run/systemd/system ]; then
 if dpkg --compare $2 with version that introduces apt-daily-upgrade.timer; then
         deb-systemd-invoke start apt-daily-upgrade.timer >/dev/null || true
 fi
fi
"""

I am not entirely sure this can be solved in debhelper, so we may need
some extra functionality from deb-systemd-invoke (as debhelper does
not know when a service was introduced and when it wasn't).

Thanks,
~Niels

[LP#1707880]: https://bugs.launchpad.net/ubuntu/+source/debhelper/+bug/1707880



More information about the Pkg-systemd-maintainers mailing list