systemd/debian/systemd.postinst
2022-06-09 08:57:09 +02:00

105 lines
3.5 KiB
Bash

#!/bin/sh
set -e
_systemctl() {
if [ -d /run/systemd/system ]; then
systemctl "$@"
fi
}
_update_catalog() {
journalctl --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 enable getty@tty1.service || true
systemctl 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 enable systemd-pstore.service || true
fi
# Create /etc/machine-id
systemd-machine-id-setup
# Setup system users and groups
addgroup --quiet --system systemd-journal
adduser --quiet --system --group --no-create-home --home /run/systemd \
--gecos "systemd Network Management" systemd-network
adduser --quiet --system --group --no-create-home --home /run/systemd \
--gecos "systemd Resolver" systemd-resolve
# 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 /var/log/journal
# Applying ACLs requires a mounted /proc and systemd-tmpfiles will fail if
# /proc is not available. Skip systemd-tmpfiles in this case. This should
# be fine, as this typically means we are inside a chroot and systemd is
# not currently active. The permissions will be applied on the next boot.
# https://github.com/systemd/systemd/issues/14745
if mountpoint -q /proc; then
systemd-tmpfiles --create --prefix /var/log/journal
fi
fi
# Initial update of the Message Catalogs database
_update_catalog
if [ -n "$2" ]; then
_systemctl daemon-reexec || true
# do not restart logind; this can be done again once this gets implemented:
# https://github.com/systemd/systemd/issues/1163
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-resolved.service || true
_systemctl try-restart systemd-journald.service || true
fi
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#