Debian – Creating .deb with systemd service but without SysV init scripts

debdebianinit.dpackagingsystemd

I'm trying to add a systemd service file to an existing Debian package. I followed https://wiki.debian.org/Teams/pkg-systemd/Packaging, so I created debian/packagename.service. Because my debhelper is version 9.x, I also:

  • added dh-systemd to Build-Depends in debian/control
  • added --with systemd to the dh command in debian/rules.

Now when I rebuild the package with debuild -i -us -uc -b, it fails with this output:

Now running lintian...
[...]
W: packagename: init.d-script-not-marked-as-conffile etc/init.d/packagename
E: packagename: init.d-script-not-included-in-package etc/init.d/packagename

It seems like the build script expects an init.d script if there is a .service file. And indeed, the generated DEBIAN/postinst includes this section:

# Automatically added by dh_installinit
if [ -x "/etc/init.d/infinoted" ]; then
        update-rc.d infinoted defaults >/dev/null
        invoke-rc.d infinoted start || exit $?
fi
# End automatically added section

Is this expected behavior? Should I always include SysV init scripts when I include a .service file? If not, what is the recommended way to prevent the generation of this section?

My system is Debian Jessie.

Best Answer

Overriding dh_installinit worked for me. I just added this to debian/rules:

override_dh_installinit:
        true

It still installs the systemd unit and everything seems to work as expected.

But I still don't know if this is expected behavior or a bug. Note that I did not test this on Debian Stretch or Sid, only on Jessie.