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