-#!/bin/bash
+#!/bin/sh
set -e
-script="${0##*/}"
+# NOTE: This package name detection will only work on Debian.
+# If this postinst script ever starts doing work on Red Hat,
+# we'll need to adapt this code accordingly.
+script="$(basename "${0}")"
pkg="${script%.postinst}"
+systemd_unit="${pkg}.service"
case "${1}" in
configure)
- if which systemctl >/dev/null && [[ -e "/lib/systemd/system/${pkg}.service" ]]; then
- systemctl enable "${pkg}"
- systemctl start "${pkg}"
+ if [ -e /run/systemd/system ]; then
+ eval "$(systemctl -p UnitFileState show "${systemd_unit}")"
+ case "${UnitFileState}" in
+ disabled)
+ # Failing to enable or start the service is not a
+ # package error, so don't let errors here
+ # propagate up.
+ systemctl enable "${systemd_unit}" || true
+ systemctl start "${systemd_unit}" || true
+ ;;
+ enabled)
+ systemctl daemon-reload || true
+ systemctl reload-or-try-restart "${systemd_unit}" || true
+ ;;
+ esac
fi
;;
esac