Automatically enable systemd services installed using deb?
Actually, you don't need to add anything in override_dh_auto_install
.
You need --with systemd
(without the dash between with
and systemd
) in the rules
and the package dh-systemd
installed.
I've worked around the problem by calling dh_systemd_enable (to make the service run by default) and dh_systemd_start (to actually start it after installation) manually from the override_dh_auto_install target in rules, so it looks like this:
%:
dh $@ --with-systemd
override_dh_auto_install:
dh_auto_install
dh_systemd_enable || true
dh_systemd_start || true
I ran into this issue as well. It turns out that dh_systemd_enable
has certain expectations about the content of a foo.service
file.
You can see this in lines 187-215 of deb-systemd-helper.
In particular, ensuring that the foo.service
file has an [Install]
section and has at least an Alias
field where the alias does NOT equal foo.service
will cause the call to deb-systemd-helper enable
to detect the needed service. If you want the service to be automatically started adding WantedBy=multi-user.target
is also needed.
Below is a lightly modified version of my foo.service
file:
[Unit]
Description=foo service, foos
After=bar.service
Requires=bar.service
[Service]
ExecStart=/path/to/my/script/foo
Restart=always
RestartSec=5
[Install]
Alias=foo
WantedBy=multi-user.target
I was able to determine this by enabling a couple debug flags and adding debug statements in the deb-systemd-helper
perl script. On an Ubuntu 16.04 system I found it here: /usr/bin/deb-systemd-helper
.
So repeatedly running the following and adding debug statements got me to the bottom of the problem.
$ sudo DPKG_MAINTSCRIPT_PACKAGE=1 _DEB_SYSTEMD_HELPER_DEBUG=1 deb-systemd-helper enable foo.service