The general idea is to provide files for all three systems, and pick the right one to use at post-install time as described here, but with the added complication that we need systemd as well (for Ubuntu after 15.10, which uses systemd by default).
My postinstall file looks like this:
case "$1" in configure) ${DAEMON} ${DAEMON_ARGS} "--install" if [ -x /sbin/initctl ] && /sbin/initctl version | /bin/grep -q upstart; then # Early versions of upstart didn't support restarting a service that # wasn't already running: # https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/430883 /usr/sbin/service myservice stop 2>/dev/null || true /usr/sbin/service myservice start 2>/dev/null elif [ -x /bin/systemctl ]; then # Systemd /bin/systemctl enable myservice /bin/systemctl restart myservice elif [ -x "/etc/init.d/myservice" ]; then update-rc.d myservice defaults >/dev/null invoke-rc.d myservice start || exit $? fi
;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac
If you're using debhelper you need to make sure you're using at least version 9.20130504, when systemd support was added. Then, just like you do for Upstart and System V you need to put your systemd unit file in:
debian/mypackage.service
and it will be copied into
lib/systemd/system/package.service
in the package build directory as described here.
No comments:
Post a Comment