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
|
#!/bin/sh
set -e
case "${1}" in
install|upgrade)
mkdir -p /usr/lib/container/divert
for FILE in halt poweroff reboot shutdown coldreboot
do
# DEP17 M18 duplicated diversion. Once trixie is
# released, remove the aliased diversions in postinst
# and only have the canonical one with --rename here.
TRUENAME="$(dpkg-divert --truename "/sbin/${FILE}")"
if [ "$(dpkg-divert --truename "/usr/sbin/${FILE}")" != "/usr/sbin/${FILE}" ]
then
: # Canonically diverted already. Nothing to rename.
elif [ "${TRUENAME}" = "/lib/container/divert/${FILE}.orig.usr-is-merged" ]
then
: # Aliased diversion as expected. Nothing to rename.
elif [ "${TRUENAME}" != "/sbin/${FILE}" ]
then
# Aliased diversion with earlier target. Fix target.
dpkg-divert --remove --no-rename "/sbin/${FILE}"
if [ -e "${DPKG_ROOT}${TRUENAME}" ] || [ -h "${DPKG_ROOT}${TRUENAME}" ]
then
mv "${DPKG_ROOT}${TRUENAME}" "${DPKG_ROOT}/lib/container/divert/${FILE}.orig.usr-is-merged"
fi
elif dpkg -S "/sbin/${FILE}" >/dev/null 2>&1
then
# Not diverted yet. Installed as aliased.
mv "${DPKG_ROOT}/sbin/${FILE}" "${DPKG_ROOT}/lib/container/divert/${FILE}.orig.usr-is-merged"
elif [ -e "${DPKG_ROOT}/usr/sbin/${FILE}" ] || [ -h "${DPKG_ROOT}/usr/sbin/${FILE}" ]
then
# Not diverted yet. Installed as canonical.
mv "${DPKG_ROOT}/usr/sbin/${FILE}" "${DPKG_ROOT}/usr/lib/container/divert/${FILE}.orig"
fi
# All necessary moving has been done. Hence --no-rename.
dpkg-divert --package progress-linux-container --quiet --add --no-rename --divert "/lib/container/divert/${FILE}.orig.usr-is-merged" "/sbin/${FILE}"
dpkg-divert --package progress-linux-container --quiet --add --no-rename --divert "/usr/lib/container/divert/${FILE}.orig" "/usr/sbin/${FILE}"
done
for FILE in pm-hibernate pm-suspend pm-suspend-hybrid
do
TRUENAME="$(dpkg-divert --truename "/usr/sbin/${FILE}")"
if [ "${TRUENAME}" = "/usr/sbin/${FILE}" ]
then
# Not diverted yet.
dpkg-divert --package progress-linux-container --quiet --add --rename --divert "/usr/lib/container/divert/${FILE}.orig" "/usr/sbin/${FILE}"
elif [ "${TRUENAME}" != "/usr/lib/container/divert/${FILE}.orig" ]
then
# Upgrading from pre-trixie. Update the diversion target from aliased to canonical.
dpkg-divert --package progress-linux-container --quiet --remove --no-rename "/usr/sbin/${FILE}"
dpkg-divert --package progress-linux-container --quiet --add --no-rename --divert "/usr/lib/container/divert/${FILE}.orig" "/usr/sbin/${FILE}"
if [ "${TRUENAME}" != "/lib/container/divert/${FILE}.orig" ]
then
# Diversion target differs in more than aliasing.
if [ -e "${DPKG_ROOT}${TRUENAME}" ] || [ -h "${DPKG_ROOT}${TRUENAME}" ]
then
mv "${DPKG_ROOT}${TRUENAME}" "${DPKG_ROOT}/usr/lib/container/divert/${FILE}.orig"
fi
fi
fi
done
;;
abort-upgrade)
;;
*)
echo "preinst called with unknown argument \`${1}'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0
|