diff options
Diffstat (limited to 'debian/systemd.postinst')
-rw-r--r-- | debian/systemd.postinst | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/debian/systemd.postinst b/debian/systemd.postinst new file mode 100644 index 0000000..26d8f07 --- /dev/null +++ b/debian/systemd.postinst @@ -0,0 +1,87 @@ +#!/bin/sh + +set -e + +_systemctl() { + if [ -z "$DPKG_ROOT" ] && [ -d /run/systemd/system ]; then + systemctl "$@" + fi +} + +_update_catalog() { + journalctl ${DPKG_ROOT:+--root="$DPKG_ROOT"} --update-catalog || true +} + +_update_binfmt() { + # If binfmt-support is installed and active do not restart + # systemd-binfmt.service. It will unregister all currently registered + # binary formats in ExecStop and not all packages with a binfmt-support + # configuration ship a corresponding binfmt.d snippet yet. + # Once this is the case, this additional safety check can be removed. + if ! _systemctl -q is-active binfmt-support.service; then + _systemctl try-restart systemd-binfmt.service || true + fi +} + +# Update Message Catalogs database and binfmt registrations in response to dpkg triggers +if [ "$1" = "triggered" ]; then + shift + for trigger in $@; do + case $trigger in + /usr/lib/systemd/catalog) + _update_catalog + ;; + /usr/lib/binfmt.d) + _update_binfmt + ;; + esac + done + exit 0 +fi + +# Enable getty and remote-fs.target by default on new installs +if [ -z "$2" ]; then + systemctl ${DPKG_ROOT:+--root="$DPKG_ROOT"} enable getty@tty1.service || true + systemctl ${DPKG_ROOT:+--root="$DPKG_ROOT"} enable remote-fs.target || true +fi + +# Enable systemd-pstore by default on new installs and upgrades, see #952767 +if dpkg --compare-versions "$2" lt "245.4-4~"; then + systemctl ${DPKG_ROOT:+--root="$DPKG_ROOT"} enable systemd-pstore.service || true +fi + +# Create /etc/machine-id +systemd-machine-id-setup ${DPKG_ROOT:+--root="$DPKG_ROOT"} + +# Enable persistent journal, in auto-mode, by default on new installs and upgrades +if dpkg --compare-versions "$2" lt "244.1-2~"; then + mkdir -p "$DPKG_ROOT/var/log/journal" +fi + +# Initial update of the Message Catalogs database +_update_catalog + +if dpkg --compare-versions "$2" lt-nl "245.4-4~"; then + # systemd-pstore.service is now enabled via sysinit.target + rm -f /etc/systemd/system/systemd-remount-fs.service.wants/systemd-pstore.service + rmdir --ignore-fail-on-non-empty /etc/systemd/system/systemd-remount-fs.service.wants 2> /dev/null || true +fi + +if dpkg --compare-versions "$2" lt-nl "245.4-5~"; then + # Clean up removed ondemand service + rm -f /etc/systemd/system/multi-user.target.wants/ondemand.service +fi + +#DEBHELPER# + +if [ -n "$2" ]; then + _systemctl daemon-reexec || true + # do not restart logind + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919509 + if dpkg --compare-versions "$2" lt-nl "246.2-2~"; then + # the socket configuration changed + _systemctl stop systemd-networkd.socket || true + fi + _systemctl try-restart systemd-networkd.service || true + _systemctl try-restart systemd-journald.service || true +fi |