%PDF- %PDF-
Direktori : /var/lib/dpkg/info/ |
Current File : /var/lib/dpkg/info/libvirt-daemon-system.postinst |
#!/bin/sh # postinst script for libvirt-daemon-system # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * <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 # the debian-policy package # Source debconf library. . /usr/share/debconf/confmodule # Allocated UID and GID for libvirt-qemu LIBVIRT_QEMU_UID=64055 LIBVIRT_QEMU_GID=64055 add_users_groups() { if ! getent group libvirt >/dev/null; then if getent group libvirtd >/dev/null; then gid=`getent group libvirtd | getent group libvirtd | cut -d: -f3` groupadd --system --non-unique --gid "$gid" libvirt else addgroup --quiet --system libvirt fi fi # Add each admin user to the libvirt group - for systems installed # before precise for u in $(getent group admin | sed -e "s/^.*://" -e "s/,/ /g"); do adduser "$u" libvirt >/dev/null || true done # Add each sudo user to the libvirt group for u in $(getent group sudo | sed -e "s/^.*://" -e "s/,/ /g"); do adduser "$u" libvirt >/dev/null || true done if ! getent group kvm >/dev/null; then addgroup --quiet --system kvm fi # user and group libvirt runs qemu/kvm instances with if ! getent passwd libvirt-qemu >/dev/null; then # set uid if available (expected); don't fail otherwise. PARAMETER_UID='' if ! getent passwd $LIBVIRT_QEMU_UID >/dev/null; then PARAMETER_UID="--uid $LIBVIRT_QEMU_UID" fi adduser --quiet \ --system \ --ingroup kvm \ --quiet \ --disabled-login \ --disabled-password \ --home /var/lib/libvirt \ --no-create-home \ --gecos "Libvirt Qemu" \ $PARAMETER_UID \ libvirt-qemu fi if ! getent group libvirt-qemu >/dev/null; then # set gid if available (expected); don't fail otherwise. PARAMETER_GID='' if ! getent group $LIBVIRT_QEMU_GID >/dev/null; then PARAMETER_GID="--gid $LIBVIRT_QEMU_GID" fi addgroup --quiet --system $PARAMETER_GID libvirt-qemu adduser --quiet libvirt-qemu libvirt-qemu fi if ! getent group libvirt-dnsmasq >/dev/null; then addgroup --quiet --system libvirt-dnsmasq fi if ! getent passwd libvirt-dnsmasq >/dev/null; then adduser --quiet \ --system \ --ingroup libvirt-dnsmasq \ --disabled-login \ --disabled-password \ --home /var/lib/libvirt/dnsmasq \ --no-create-home \ --gecos "Libvirt Dnsmasq" \ libvirt-dnsmasq fi # For upgrades that still have the insecure libvirt group (too much privileges) if [ -n "$2" ] && dpkg --compare-versions -- "$2" le-nl "4.0.0-1ubuntu5~"; then if [ "$(id -r -g -n libvirt-dnsmasq)" == "libvirt" ]; then echo "assigning libvirt-dnsmasq a less privileged group (libvirt->libvirt-dnsmasq)" usermod libvirt-dnsmasq -g libvirt-dnsmasq fi fi } includes_addr() { addr=${1} mask=${2} viraddr=${3} for n in $(seq 1 4); do curaddrcomponent=$(echo "${addr}" | awk -F. '{ print $'"${n}"' }') tgtaddrcomponent=$(echo "${viraddr}" | awk -F. '{ print $'"${n}"' }') cmp=$((mask/8)) if [ "${cmp}" -ge "${n}" ]; then if [ "${curaddrcomponent}" -ne "${tgtaddrcomponent}" ]; then echo "false" return fi elif [ "$((cmp+1))" -ge "${n}" ]; then # do we bother comparing partial (i.e. /25)? : else break fi done echo "true" return } set_autostart() { echo "Enabling libvirt default network" if [ ! -e /etc/libvirt/qemu/networks/autostart/default.xml ]; then ln -s /etc/libvirt/qemu/networks/default.xml \ /etc/libvirt/qemu/networks/autostart/ fi } # on first install, don't set default network to autostart if we already # have a conflicting network. Good for instance for nested libvirt. maybe_set_autostart() { # 122 is the common default, but iterate a few more options for thirdoctet in $(seq 122 128); do tryip="192.168.${thirdoctet}.1" found=0 for pair in $(ip addr show | grep "inet\>" |awk '{ print $2 }'); do a=$(echo "$pair" | awk -F/ '{ print $1}') m=$(echo "$pair" | awk -F/ '{ print $2}') res=$(includes_addr "${a}" "${m}" "${tryip}") if [ "${res}" = "true" ]; then found=1 fi done if [ $found -ne 1 ]; then # found a free subnet if [ "${thirdoctet}" -ne "122" ]; then echo "Default libvirt network on 192.168.122.1/24 already taken" echo "Changing to free 192.168.${thirdoctet}.1/24" sed -i 's/192.168.122/192.168.'"${thirdoctet}"'/g' /etc/libvirt/qemu/networks/default.xml fi set_autostart return fi done echo "Not enabling default network as no free network was found" } add_statoverrides() { ROOT_DIRS="\ /var/lib/libvirt/images/ \ /var/lib/libvirt/boot/ \ /var/cache/libvirt/ \ " QEMU_DIRS="\ /var/lib/libvirt/qemu/ \ /var/cache/libvirt/qemu/ \ /var/lib/libvirt/qemu/channel/ \ /var/lib/libvirt/qemu/channel/target/ \ " SANLOCK_DIR="/var/lib/libvirt/sanlock" QEMU_CONF="/etc/libvirt/qemu.conf" for dir in ${ROOT_DIRS}; do if ! dpkg-statoverride --list "${dir}" >/dev/null 2>&1; then [ ! -e "${dir}" ] || chown root:root "${dir}" [ ! -e "${dir}" ] || chmod 0711 "${dir}" fi done for dir in ${QEMU_DIRS}; do if ! dpkg-statoverride --list "${dir}" >/dev/null 2>&1; then [ ! -e "${dir}" ] || chown libvirt-qemu:libvirt-qemu "${dir}" [ ! -e "${dir}" ] || chmod 0750 "${dir}" fi done if ! dpkg-statoverride --list "${SANLOCK_DIR}" >/dev/null 2>&1; then [ ! -e "${SANLOCK_DIR}" ] || chown root:root "${SANLOCK_DIR}" [ ! -e "${SANLOCK_DIR}" ] || chmod 0700 "${SANLOCK_DIR}" fi if ! dpkg-statoverride --list "${QEMU_CONF}" >/dev/null 2>&1; then [ ! -e "${QEMU_CONF}" ] || chown root:root "${QEMU_CONF}" [ ! -e "${QEMU_CONF}" ] || chmod 0600 "${QEMU_CONF}" fi } case "$1" in configure) add_users_groups add_statoverrides # Make sure the directories don't get removed on package removal since # logrotate chokes otherwise. for dir in qemu uml lxc; do touch /var/log/libvirt/"${dir}"/.placeholder done # Remove left over empty directory from pre 1.2.7 [ ! -d /etc/apparmor.d/libvirtd ] || rmdir --ignore-fail-on-non-empty /etc/apparmor.d/libvirtd # Force virtlockd to reexec if enabled if [ -d /run/systemd/system ]; then ! systemctl is-active -q virtlogd || systemctl reload virtlogd.service >/dev/null ! systemctl is-active -q virtlockd || systemctl reload virtlockd.service >/dev/null fi # Force refresh of capabilties (#731815) rm -f /var/cache/libvirt/qemu/capabilities/*.xml # 1. On an initial package install, create the default network autostart # symlink. # 2. If the default.xml existed before upgrade, make sure it is # recreated. # This won't be a problem on most upgrades, but when upgrading from a # version where the symlink came with the package, it will. # 3. If upgrading from one of the bad libvirt versions which deleted the # symlink wrongly, recreate it EXISTED="/etc/libvirt/qemu/networks/autostart/TMP_defaultexisted" if [ -z $2 ]; then maybe_set_autostart elif [ -e "$EXISTED" ]; then # on upgrade, if default network was previously autostarted, # continue to do so. rm -f "$EXISTED" set_autostart fi # transition from packaged to dh_apparmor generated local aa includes # all other cases (no delta rm, abort, ...) are handled by rm_conffile # can be dropped >18.04 if [ -n "$2" ] && dpkg --compare-versions -- "$2" le-nl "3.5.0-1ubuntu1~"; then for CONFFILE in /etc/apparmor.d/local/usr.sbin.libvirtd /etc/apparmor.d/local/usr.lib.libvirt.virt-aa-helper; do if [ -e "$CONFFILE.dpkg-backup" ]; then echo "Obsolete conffile $CONFFILE has been modified by you." echo "These local includes are now generated by dh_apparmor" echo "Carrying over your changes into $CONFFILE ..." mv -f "$CONFFILE.dpkg-backup" "$CONFFILE" fi done fi ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac db_stop # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. # Automatically added by dh_apparmor/2.12-4ubuntu5.1 aa_is_enabled() { if command aa-enabled >/dev/null 2>&1; then # apparmor >= 2.10.95-2 aa-enabled --quiet 2>/dev/null else # apparmor << 2.10.95-2 # (This should be removed once Debian Stretch and Ubuntu 18.04 are out.) rc=0 aa-status --enabled 2>/dev/null || rc=$? [ "$rc" = 0 ] || [ "$rc" = 2 ] fi } if [ "$1" = "configure" ]; then APP_PROFILE="/etc/apparmor.d/usr.lib.libvirt.virt-aa-helper" if [ -f "$APP_PROFILE" ]; then # Add the local/ include LOCAL_APP_PROFILE="/etc/apparmor.d/local/usr.lib.libvirt.virt-aa-helper" test -e "$LOCAL_APP_PROFILE" || { mkdir -p `dirname "$LOCAL_APP_PROFILE"` install --mode 644 /dev/null "$LOCAL_APP_PROFILE" } # Reload the profile, including any abstraction updates if aa_is_enabled; then apparmor_parser -r -T -W "$APP_PROFILE" || true fi fi fi # End automatically added section # Automatically added by dh_apparmor/2.12-4ubuntu5.1 aa_is_enabled() { if command aa-enabled >/dev/null 2>&1; then # apparmor >= 2.10.95-2 aa-enabled --quiet 2>/dev/null else # apparmor << 2.10.95-2 # (This should be removed once Debian Stretch and Ubuntu 18.04 are out.) rc=0 aa-status --enabled 2>/dev/null || rc=$? [ "$rc" = 0 ] || [ "$rc" = 2 ] fi } if [ "$1" = "configure" ]; then APP_PROFILE="/etc/apparmor.d/usr.sbin.libvirtd" if [ -f "$APP_PROFILE" ]; then # Add the local/ include LOCAL_APP_PROFILE="/etc/apparmor.d/local/usr.sbin.libvirtd" test -e "$LOCAL_APP_PROFILE" || { mkdir -p `dirname "$LOCAL_APP_PROFILE"` install --mode 644 /dev/null "$LOCAL_APP_PROFILE" } # Reload the profile, including any abstraction updates if aa_is_enabled; then apparmor_parser -r -T -W "$APP_PROFILE" || true fi fi fi # End automatically added section # Automatically added by dh_systemd_enable/11.1.6ubuntu2 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then # This will only remove masks created by d-s-h on package removal. deb-systemd-helper unmask 'libvirt-guests.service' >/dev/null || true # was-enabled defaults to true, so new installations run enable. if deb-systemd-helper --quiet was-enabled 'libvirt-guests.service'; then # Enables the unit on first installation, creates new # symlinks on upgrades if the unit file has changed. deb-systemd-helper enable 'libvirt-guests.service' >/dev/null || true else # Update the statefile to add new symlinks (if any), which need to be # cleaned up on purge. Also remove old symlinks. deb-systemd-helper update-state 'libvirt-guests.service' >/dev/null || true fi fi # End automatically added section # Automatically added by dh_systemd_enable/11.1.6ubuntu2 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then # This will only remove masks created by d-s-h on package removal. deb-systemd-helper unmask 'libvirtd.service' >/dev/null || true # was-enabled defaults to true, so new installations run enable. if deb-systemd-helper --quiet was-enabled 'libvirtd.service'; then # Enables the unit on first installation, creates new # symlinks on upgrades if the unit file has changed. deb-systemd-helper enable 'libvirtd.service' >/dev/null || true else # Update the statefile to add new symlinks (if any), which need to be # cleaned up on purge. Also remove old symlinks. deb-systemd-helper update-state 'libvirtd.service' >/dev/null || true fi fi # End automatically added section # Automatically added by dh_systemd_enable/11.1.6ubuntu2 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then # This will only remove masks created by d-s-h on package removal. deb-systemd-helper unmask 'virtlockd.service' >/dev/null || true # was-enabled defaults to true, so new installations run enable. if deb-systemd-helper --quiet was-enabled 'virtlockd.service'; then # Enables the unit on first installation, creates new # symlinks on upgrades if the unit file has changed. deb-systemd-helper enable 'virtlockd.service' >/dev/null || true else # Update the statefile to add new symlinks (if any), which need to be # cleaned up on purge. Also remove old symlinks. deb-systemd-helper update-state 'virtlockd.service' >/dev/null || true fi fi # End automatically added section # Automatically added by dh_systemd_enable/11.1.6ubuntu2 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then # This will only remove masks created by d-s-h on package removal. deb-systemd-helper unmask 'virtlockd.socket' >/dev/null || true # was-enabled defaults to true, so new installations run enable. if deb-systemd-helper --quiet was-enabled 'virtlockd.socket'; then # Enables the unit on first installation, creates new # symlinks on upgrades if the unit file has changed. deb-systemd-helper enable 'virtlockd.socket' >/dev/null || true else # Update the statefile to add new symlinks (if any), which need to be # cleaned up on purge. Also remove old symlinks. deb-systemd-helper update-state 'virtlockd.socket' >/dev/null || true fi fi # End automatically added section # Automatically added by dh_systemd_enable/11.1.6ubuntu2 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then # This will only remove masks created by d-s-h on package removal. deb-systemd-helper unmask 'virtlogd.service' >/dev/null || true # was-enabled defaults to true, so new installations run enable. if deb-systemd-helper --quiet was-enabled 'virtlogd.service'; then # Enables the unit on first installation, creates new # symlinks on upgrades if the unit file has changed. deb-systemd-helper enable 'virtlogd.service' >/dev/null || true else # Update the statefile to add new symlinks (if any), which need to be # cleaned up on purge. Also remove old symlinks. deb-systemd-helper update-state 'virtlogd.service' >/dev/null || true fi fi # End automatically added section # Automatically added by dh_systemd_enable/11.1.6ubuntu2 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then # This will only remove masks created by d-s-h on package removal. deb-systemd-helper unmask 'virtlogd.socket' >/dev/null || true # was-enabled defaults to true, so new installations run enable. if deb-systemd-helper --quiet was-enabled 'virtlogd.socket'; then # Enables the unit on first installation, creates new # symlinks on upgrades if the unit file has changed. deb-systemd-helper enable 'virtlogd.socket' >/dev/null || true else # Update the statefile to add new symlinks (if any), which need to be # cleaned up on purge. Also remove old symlinks. deb-systemd-helper update-state 'virtlogd.socket' >/dev/null || true fi fi # End automatically added section # Automatically added by dh_systemd_start/11.1.6ubuntu2 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then if [ -d /run/systemd/system ]; then systemctl --system daemon-reload >/dev/null || true if [ -n "$2" ]; then _dh_action=restart else _dh_action=start fi deb-systemd-invoke $_dh_action 'virtlockd.socket' >/dev/null || true fi fi # End automatically added section # Automatically added by dh_systemd_start/11.1.6ubuntu2 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then if [ -d /run/systemd/system ]; then systemctl --system daemon-reload >/dev/null || true deb-systemd-invoke start 'virtlockd.service' 'virtlockd.socket' >/dev/null || true fi fi # End automatically added section # Automatically added by dh_installdeb/11.1.6ubuntu2 dpkg-maintscript-helper mv_conffile /etc/default/libvirt-bin /etc/default/libvirtd 1.2.6-1~ libvirt-bin -- "$@" # End automatically added section # Automatically added by dh_installdeb/11.1.6ubuntu2 dpkg-maintscript-helper mv_conffile /etc/init.d/libvirt-bin /etc/init.d/libvirtd 1.2.6-1~ libvirt-bin -- "$@" # End automatically added section # Automatically added by dh_installdeb/11.1.6ubuntu2 dpkg-maintscript-helper rm_conffile /etc/apparmor.d/libvirtd/TEMPLATE 1.2.7-5~ libvirt-bin -- "$@" # End automatically added section # Automatically added by dh_installdeb/11.1.6ubuntu2 dpkg-maintscript-helper rm_conffile /etc/apparmor.d/libvirtd/TEMPLATE 1.2.7-5~ libvirt-daemon-system -- "$@" # End automatically added section # Automatically added by dh_installdeb/11.1.6ubuntu2 dpkg-maintscript-helper rm_conffile /etc/polkit-1/rules.d/60-libvirt.rules 1.2.9-3~ -- "$@" # End automatically added section # Automatically added by dh_installdeb/11.1.6ubuntu2 dpkg-maintscript-helper rm_conffile /etc/apparmor.d/libvirt/TEMPLATE 1.2.7-5~ libvirt-bin -- "$@" # End automatically added section # Automatically added by dh_installdeb/11.1.6ubuntu2 dpkg-maintscript-helper rm_conffile /etc/apparmor.d/libvirt/TEMPLATE 1.2.7-5~ libvirt-daemon-system -- "$@" # End automatically added section # Automatically added by dh_installdeb/11.1.6ubuntu2 dpkg-maintscript-helper rm_conffile /etc/init.d/virtlockd 3.5.0-1ubuntu1~ -- "$@" # End automatically added section # Automatically added by dh_installdeb/11.1.6ubuntu2 dpkg-maintscript-helper rm_conffile /etc/apparmor.d/local/usr.sbin.libvirtd 3.5.0-1ubuntu1~ -- "$@" # End automatically added section # Automatically added by dh_installdeb/11.1.6ubuntu2 dpkg-maintscript-helper rm_conffile /etc/apparmor.d/local/usr.lib.libvirt.virt-aa-helper 3.5.0-1ubuntu1~ -- "$@" # End automatically added section # Automatically added by dh_installdeb/11.1.6ubuntu2 dpkg-maintscript-helper rm_conffile /etc/cron.daily/libvirt-daemon-system 3.10.0-1ubuntu1~ -- "$@" # End automatically added section # Automatically added by dh_installinit/11.1.6ubuntu2 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then if [ -x "/etc/init.d/virtlogd" ]; then update-rc.d virtlogd defaults >/dev/null invoke-rc.d virtlogd start || exit 1 fi fi # End automatically added section # Automatically added by dh_installinit/11.1.6ubuntu2 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then if [ -x "/etc/init.d/libvirtd" ]; then update-rc.d libvirtd defaults 28 72 >/dev/null if [ -n "$2" ]; then _dh_action=restart else _dh_action=start fi invoke-rc.d libvirtd $_dh_action || exit 1 fi fi # End automatically added section # Automatically added by dh_installinit/11.1.6ubuntu2 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then if [ -x "/etc/init.d/libvirt-guests" ]; then update-rc.d libvirt-guests defaults 29 71 >/dev/null invoke-rc.d libvirt-guests start || exit 1 fi fi # End automatically added section # We need this after the debhelper generated code so that dpkg-maintscript # can do its renamming first. if [ "$1" = "configure" ]; then # Configure dnsmasq if [ -f /etc/dnsmasq.d-available/libvirt-daemon ]; then echo "Setting up libvirt-daemon dnsmasq configuration." mkdir -p /etc/dnsmasq.d if [ ! -e /etc/dnsmasq.d/libvirt-daemon ]; then ln -s /etc/dnsmasq.d-available/libvirt-daemon \ /etc/dnsmasq.d/libvirt-daemon fi # if maintscripts removed /etc/dnsmasq.d-available/libvirt-bin # also remove the depending link created here - can be removed >=18.10 if [ ! -e /etc/dnsmasq.d-available/libvirt-bin ]; then # ensure to delete only if it is unmodified from the default if [ "$(readlink /etc/dnsmasq.d/libvirt-bin)" = "/etc/dnsmasq.d-available/libvirt-bin" ]; then rm -f /etc/dnsmasq.d/libvirt-bin fi fi # Try to restart a potential system wide dnsmasq invoke-rc.d dnsmasq restart 2>/dev/null || true fi # Make sure libvirtd.service is enabled/disabled if # libvirt-bin.service was. if [ -f /etc/libvirt/TMP_libvirt-bin-enabled ]; then deb-systemd-helper enable libvirtd.service rm -f /etc/libvirt/TMP_libvirt-bin-enabled elif [ -f /etc/libvirt/TMP_libvirt-bin-disabled ]; then deb-systemd-helper disable libvirtd.service rm -f /etc/libvirt/TMP_libvirt-bin-disabled fi fi exit 0