123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- #!/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 :
|