7c15b9b0ea
The systemctl in Debian unstable fails when trying to disable a removed service. The manpage do not mention a switch to change this behaviour. But it says: Note that this operation creates only the suggested symlinks for the units. While this command is the recommended way to manipulate the unit configuration directory, the administrator is free to make additional changes manually by placing or removing symlinks in the directory. So a simple rm should be fine.
184 lines
6.4 KiB
Bash
Executable File
184 lines
6.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# postinst script for core-agent-linux
|
|
#
|
|
# see: dh_installdeb(1)
|
|
|
|
set -e
|
|
|
|
# The postinst script may be called in the following ways:
|
|
# * <postinst> 'configure' <most-recently-configured-version>
|
|
# * <old-postinst> 'abort-upgrade' <new version>
|
|
# * <conflictor's-postinst> 'abort-remove' 'in-favour' <package>
|
|
# <new-version>
|
|
# * <postinst> 'abort-remove'
|
|
# * <deconfigured's-postinst> 'abort-deconfigure' 'in-favour'
|
|
# <failed-install-package> <version> 'removing'
|
|
# <conflicting-package> <version>
|
|
#
|
|
# For details, see http://www.debian.org/doc/debian-policy/ or
|
|
# https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html or
|
|
# the debian-policy package
|
|
|
|
|
|
debug() {
|
|
if [ "${DEBDEBUG}" == "1" ]; then
|
|
echo -e ""$@""
|
|
fi
|
|
}
|
|
|
|
systemdPreload() {
|
|
# Debian systemd helper does not yet honour preset, therefore use
|
|
# systemctl preset on each unit file (not using preset-all either since
|
|
# wheezy does not support it) listed in 75-qubes-vm.preset.
|
|
|
|
systemctl --no-reload preset-all > /dev/null 2>&1 && PRESET_FAILED=0 || PRESET_FAILED=1
|
|
|
|
# Mask any static unit files that are marked to be disabled
|
|
grep '^[[:space:]]*[^#;]' /lib/systemd/system-preset/75-qubes-vm.preset | while read action unit_name; do
|
|
case "${action}" in
|
|
disable)
|
|
if [ -e "/lib/systemd/system/${unit_name}" ]; then
|
|
if ! fgrep -q '[Install]' "/lib/systemd/system/${unit_name}"; then
|
|
deb-systemd-helper mask "${unit_name}" > /dev/null 2>&1 || true
|
|
fi
|
|
fi
|
|
;;
|
|
*)
|
|
# preset-all is not available in wheezy; so preset each unit file listed in 75-qubes-vm.preset
|
|
if [ "${PRESET_FAILED}" -eq 1 ]; then
|
|
systemctl --no-reload preset "${unit_name}" > /dev/null 2>&1 || true
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
|
|
systemctl daemon-reload
|
|
}
|
|
|
|
installSerialConf() {
|
|
debug "Installing over-ridden serial.conf init script..."
|
|
if [ -e /etc/init/serial.conf ]; then
|
|
cp /usr/share/qubes/serial.conf /etc/init/serial.conf
|
|
fi
|
|
}
|
|
|
|
case "${1}" in
|
|
configure)
|
|
# Initial installation of package only
|
|
# ($2 contains version number on update; nothing on initial installation)
|
|
if [ -z "${2}" ]; then
|
|
|
|
debug "FIRST INSTALL..."
|
|
# Create NetworkManager configuration if we do not have it
|
|
if ! [ -e /etc/NetworkManager/NetworkManager.conf ]; then
|
|
echo '[main]' > /etc/NetworkManager/NetworkManager.conf
|
|
echo 'plugins = keyfile' >> /etc/NetworkManager/NetworkManager.conf
|
|
echo '[keyfile]' >> /etc/NetworkManager/NetworkManager.conf
|
|
fi
|
|
/usr/lib/qubes/qubes-fix-nm-conf.sh
|
|
|
|
# Location of files which contains list of protected files
|
|
PROTECTED_FILE_LIST='/etc/qubes/protected-files.d'
|
|
|
|
# ensure that hostname resolves to 127.0.1.1 resp. ::1 and that /etc/hosts is
|
|
# in the form expected by qubes-sysinit.sh
|
|
if ! grep -rq "^/etc/hostname$" "${PROTECTED_FILE_LIST}" 2>/dev/null; then
|
|
for ip in '127\.0\.1\.1' '::1'; do
|
|
if grep -q "^${ip}\(\s\|$\)" /etc/hosts; then
|
|
sed -i "/^${ip}\s/,+0s/\(\s`hostname`\)\+\(\s\|$\)/\2/g" /etc/hosts || true
|
|
sed -i "s/^${ip}\(\s\|$\).*$/\0 `hostname`/" /etc/hosts || true
|
|
else
|
|
echo "${ip//\\/} `hostname`" >> /etc/hosts || true
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# remove hostname from 127.0.0.1 line (in debian the hostname is by default
|
|
# resolved to 127.0.1.1)
|
|
if ! grep -rq "^/etc/hosts$" "${PROTECTED_FILE_LIST}" 2>/dev/null; then
|
|
sed -i "/^127\.0\.0\.1\s/,+0s/\(\s`hostname`\)\+\(\s\|$\)/\2/g" /etc/hosts || true
|
|
fi
|
|
|
|
chown user:user /home_volatile/user
|
|
|
|
# Set default "runlevel"
|
|
rm -f /etc/systemd/system/default.target
|
|
ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
|
|
|
|
# Systemd preload-all
|
|
systemdPreload
|
|
|
|
# Maybe install overridden serial.conf init script
|
|
installSerialConf
|
|
fi
|
|
|
|
debug "UPDATE..."
|
|
# disable some Upstart services
|
|
for init in plymouth-shutdown \
|
|
prefdm \
|
|
splash-manager \
|
|
start-ttys \
|
|
tty ; do
|
|
dpkg-divert --divert /etc/init/${init}.conf.qubes-disabled --package qubes-core-agent --rename --add /etc/init/${init}.conf
|
|
done
|
|
dpkg-divert --divert /etc/init/serial.conf.qubes-orig --package qubes-core-agent --rename --add /etc/init/serial.conf
|
|
|
|
# Remove old firmware updates link
|
|
if [ -L /lib/firmware/updates ]; then
|
|
rm -f /lib/firmware/updates
|
|
fi
|
|
|
|
# remove old symlinks
|
|
if [ -L /etc/systemd/system/sysinit.target.wants/qubes-random-seed.service ]; then
|
|
rm /etc/systemd/system/sysinit.target.wants/qubes-random-seed.service
|
|
fi
|
|
if [ -L /etc/systemd/system/multi-user.target.wants/qubes-mount-home.service ]; then
|
|
rm /etc/systemd/system/multi-user.target.wants/qubes-mount-home.service
|
|
fi
|
|
|
|
if ! dpkg-statoverride --list /var/lib/qubes/dom0-updates >/dev/null 2>&1; then
|
|
dpkg-statoverride --update --add user user 775 /var/lib/qubes/dom0-updates
|
|
fi
|
|
|
|
# Update Qubes App Menus
|
|
/usr/lib/qubes/qubes-trigger-sync-appmenus.sh || true
|
|
;;
|
|
|
|
abort-upgrade|abort-remove|abort-deconfigure)
|
|
exit 0
|
|
;;
|
|
|
|
triggered)
|
|
for trigger in ${2}; do
|
|
case "${trigger}" in
|
|
|
|
/usr/share/applications)
|
|
debug "Updating Qubes App Menus..."
|
|
/usr/lib/qubes/qubes-trigger-sync-appmenus.sh || true
|
|
;;
|
|
|
|
# Install overridden serial.conf init script
|
|
/etc/init/serial.conf)
|
|
installSerialConf
|
|
;;
|
|
|
|
esac
|
|
done
|
|
exit 0
|
|
;;
|
|
|
|
*)
|
|
echo "postinst called with unknown argument \`${1}'" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# dh_installdeb will replace this with shell code automatically
|
|
# generated by other debhelper scripts.
|
|
|
|
#DEBHELPER#
|
|
|
|
exit 0
|
|
|
|
# vim: set ts=4 sw=4 sts=4 et :
|