1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
#!/bin/sh
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 https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
create_config_from_template() {
local config="$1"
local template="$2"
local lastver="$3"
if [ "$4" != "--" ]; then
echo "create_config_from_template called with the wrong number of arguments" >&2
return 1
fi
for _ in $(seq 1 4); do
shift
done
if [ -n "$2" ] && dpkg --compare-versions -- "$2" gt "$lastver"; then
# The package is already configured, and the version that's been
# configured is new enough to contain the config file
if [ -e "$config.dpkg-backup" ]; then
# The package had been configured in the past and has
# subsequently been removed without purging, so a backup of
# the config file is still present on the disk. Restore it
mv -f "$config.dpkg-backup" "$config"
return 0
else
# We're doing a regular upgrade. Don't change anything
return 0
fi
else
# We're either installing from scratch, or upgrading from a version
# that didn't have the config file yet. Make a copy of the template
# in the appropriate location and with the expected permissions
install -o root -g root -m 0600 "$template" "$config"
return 0
fi
}
finish_conffile_transfer() {
local conffile="$1"
local lastver="$2"
local pkgfrom="$3"
local pkgto="$4"
if [ "$5" != "--" ]; then
echo "finish_conffile_transfer called with the wrong number of arguments" >&2
return 1
fi
for _ in $(seq 1 5); do
shift
done
# If we're upgrading rather than installing from scratch, we can assume
# the transfer must have happened at some point in the past and stop here
if [ -n "$2" ]; then
return 0
fi
if [ -e "$conffile.dpkg-transfer" ]; then
# Complete the process started in $pkgfrom's preinst by restoring the
# version of the conffile containing local modifications
echo "Finishing transfer of config file $conffile (from $pkgfrom to $pkgto) ..."
mv -f "$conffile.dpkg-transfer" "$conffile"
return 0
fi
if [ -e "$conffile.dpkg-disappear" ]; then
# The conffile had been deleted by the admin, so let's return to
# that state
rm -f "$conffile" "$conffile.dpkg-disappear"
return 0
fi
}
case "$1" in
configure)
create_config_from_template \
"/etc/libvirt/qemu/networks/default.xml" \
"/usr/share/libvirt/networks/default.xml" \
"6.9.0-2~" \
-- \
"$@"
finish_conffile_transfer \
"/etc/libvirt/qemu/networks/default.xml" \
"6.9.0-2~" \
"libvirt-daemon-system" \
"libvirt-daemon-config-network" \
-- \
"$@"
# Since we might have changed the on-disk configuration for some
# services, restart them so that they can pick up the new settings
if [ -d /run/systemd/system ]; then
systemctl --system daemon-reload >/dev/null || true
if systemctl is-active -q virtnetworkd; then
systemctl restart virtnetworkd
fi
if systemctl is-active -q libvirtd; then
systemctl restart libvirtd
fi
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0
|