systemd unit functional, but not enabled by default issue

Patrick Schleizer patrick-mailinglists at whonix.org
Wed May 20 15:25:12 BST 2015


Hi!

Could you have a look at my package please? Created a minimal package
[1] for demonstration of this issue. (Just git clone it and run ./build.)

On a Debian jessie system systemd unit gets installed to
/lib/systemd/system/hellodaemon.service, is functional, but does not get
enabled by default for some reason.

The postinst script [2] just looks normal, includes

> deb-systemd-helper enable hellodaemon.service >/dev/null || true

which I confirmed to be executed. Manually started using

> sudo systemctl start hellodaemon

is functional as well.

Manually running 'sudo systemctl enable hellodaemon' would work, though.
The symlink would then be created and the daemon started at boot.

I am just wondering why the service does not get enabled by default
after package installation. 'sudo systemctl is-enabled
hellodaemon.service' outputs 'disabled'.

(Some more debug output. [3])

Cheers,
Patrick

[1] https://github.com/adrelanos/hellodaemon

[2]

#!/bin/sh
set -e
# Automatically added by dh_systemd_enable
# This will only remove masks created by d-s-h on package removal.
deb-systemd-helper unmask hellodaemon.service >/dev/null || true

# was-enabled defaults to true, so new installations run enable.
if deb-systemd-helper --quiet was-enabled hellodaemon.service; then
	# Enables the unit on first installation, creates new
	# symlinks on upgrades if the unit file has changed.
	deb-systemd-helper enable hellodaemon.service >/dev/null || true
else
	# Update the statefile to add new symlinks (if any), which need to be
	# cleaned up on purge. Also remove old symlinks.
	deb-systemd-helper update-state hellodaemon.service >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_installinit
if [ -x "/etc/init.d/hellodaemon" ]; then
	update-rc.d hellodaemon defaults >/dev/null
	invoke-rc.d hellodaemon start || exit $?
fi
# End automatically added section
# Automatically added by dh_systemd_start
if [ -d /run/systemd/system ]; then
	systemctl --system daemon-reload >/dev/null || true
	deb-systemd-invoke start hellodaemon.service >/dev/null || true
fi
# End automatically added section

[3] With a debian/hellodaemon.postinst with added debugging:

#!/bin/sh

set -x
set -e

export _DEB_SYSTEMD_HELPER_DEBUG=1

#DEBHELPER#

Output during installation:

+ set -e
+ export _DEB_SYSTEMD_HELPER_DEBUG=1
+ deb-systemd-helper unmask hellodaemon.service
(deb-systemd-helper DEBUG) is purge = no
(deb-systemd-helper DEBUG) action = unmask, scriptname =
hellodaemon.service, service_path = /lib/systemd/system/hellodaemon.service
(deb-systemd-helper DEBUG) rmdir_if_empty
/var/lib/systemd/deb-systemd-helper-masked
(deb-systemd-helper DEBUG)
rmdir(/var/lib/systemd/deb-systemd-helper-masked) failed (No such file
or directory)
+ deb-systemd-helper --quiet was-enabled hellodaemon.service
(deb-systemd-helper DEBUG) is purge = no
(deb-systemd-helper DEBUG) action = was-enabled, scriptname =
hellodaemon.service, service_path = /lib/systemd/system/hellodaemon.service
(deb-systemd-helper DEBUG) Reading state file
/var/lib/systemd/deb-systemd-helper-enabled/hellodaemon.service.dsh-also
(deb-systemd-helper DEBUG) Contents: $VAR1 = [];

(deb-systemd-helper DEBUG) All links present, considering
hellodaemon.service was-enabled.
+ deb-systemd-helper enable hellodaemon.service
(deb-systemd-helper DEBUG) is purge = no
(deb-systemd-helper DEBUG) action = enable, scriptname =
hellodaemon.service, service_path = /lib/systemd/system/hellodaemon.service
+ [ -x /etc/init.d/hellodaemon ]
+ [ -d /run/systemd/system ]
+ systemctl --system daemon-reload
+ deb-systemd-invoke start hellodaemon.service



More information about the Pkg-systemd-maintainers mailing list