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 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
#!/bin/sh
# see: dh_installdeb(1)
set -e
# Do debconf stuff here
. /usr/share/debconf/confmodule
# 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
rm_known () {
if [ -e "$1" ]; then
if egrep -q "^$(md5sum $1 | cut -d' ' -f1)" "$2"; then
rm "$1"
fi
fi
}
# ensure the right permissions for the logdir (#757438)
if [ -d /var/log/unattended-upgrades ]; then
chown root:adm /var/log/unattended-upgrades || true
chmod 0750 /var/log/unattended-upgrades
fi
uu_running() {
python3 -c 'import apt; import apt_pkg; import sys; sys.exit(1 if apt_pkg.get_lock("/var/run/unattended-upgrades.lock") >= 0 else 0)'
}
case "$1" in
configure)
# *sigh* typo in filename in version 0.51ubuntu1
if [ -e /etc/pm/sleep.d/10_unatteded-upgrades-hibernate ]; then
rm -f /etc/pm/sleep.d/10_unatteded-upgrades-hibernate
fi
db_get unattended-upgrades/enable_auto_updates || true
CONFIG="/etc/apt/apt.conf.d/20auto-upgrades"
if [ "${RET}" = "true" ]; then
NEWFILE="/usr/share/unattended-upgrades/20auto-upgrades"
ucf --three-way --debconf-ok "$NEWFILE" "$CONFIG"
ucfr unattended-upgrades "$CONFIG"
elif [ "${RET}" = "false" ] && [ -e "$CONFIG" ]; then
# disable again
NEWFILE="/usr/share/unattended-upgrades/20auto-upgrades-disabled"
ucf --three-way --debconf-ok "$NEWFILE" "$CONFIG"
ucfr unattended-upgrades "$CONFIG"
fi
CONFIG="/etc/apt/apt.conf.d/50unattended-upgrades"
NEWFILE="/usr/share/unattended-upgrades/50unattended-upgrades"
dpkg-maintscript-helper rm_conffile $CONFIG 0.86.4~ -- "$@"
# also fix conffile which was not properly migrated to ucf earlier
if dpkg --compare-versions "$2" lt "1.8~" \
&& [ -e $CONFIG.ucftmp ]; then
dpkg-maintscript-helper rm_conffile $CONFIG -- "$@"
mv $CONFIG.ucftmp $CONFIG
rm_known "$CONFIG.dpkg-bak" "$NEWFILE.md5sum"
rm_known "$CONFIG.ucf-old" "$NEWFILE.md5sum"
fi
ucf --three-way --debconf-ok "$NEWFILE" "$CONFIG"
ucfr unattended-upgrades "$CONFIG"
# Recover from broken dh_installinit override in versions < 0.93.1+nmu1 (or < 0.93.1ubuntu3 in Ubuntu)
if ([ "$(lsb_release -i -s)" != "Ubuntu" ] \
&& ( dpkg --compare-versions "$2" lt "0.93.1+nmu1" \
|| (dpkg --compare-versions "$2" ge "1.5~" \
&& dpkg --compare-versions "$2" lt "1.7~" ) ) ) || \
([ "$(lsb_release -i -s)" = "Ubuntu" ] \
&& ( dpkg --compare-versions "$2" lt "0.93.1ubuntu3" \
|| (dpkg --compare-versions "$2" ge "1.5ubuntu1~" \
&& dpkg --compare-versions "$2" lt "1.5ubuntu4~" ) \
|| (dpkg --compare-versions "$2" ge "1.7~" \
&& dpkg --compare-versions "$2" lt "1.7ubuntu1~" ) ) ); then
if [ -f /etc/rc0.d/K[0-9][0-9]unattended-upgrades ] \
&& [ -f /etc/rc6.d/K[0-9][0-9]unattended-upgrades ] ; then
update-rc.d -f unattended-upgrades remove
fi
# If running systemd, explicitely disable the service otherwise
# the shutdown.target symlink will remain (See Debian Bug #797108)
if [ -d /run/systemd/system ]; then
if deb-systemd-helper --quiet was-enabled unattended-upgrades.service \
|| (dpkg --compare-versions "$2" ge "1.7~" \
&& dpkg --compare-versions "$2" lt "1.7ubuntu1~"); then
deb-systemd-helper disable unattended-upgrades.service >/dev/null || true
fi
fi
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
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#
# Explicitly enable and start the service. Debian Bug #797108 for
# deb-systemd-helper fails to correctly enable the unit. It checks for
# enablement using the content of the WantedBy= which has changed so it
# sees the service as disable and will not enable it.
case "$1" in
configure)
if ( ([ "$(lsb_release -i -s)" != "Ubuntu" ] \
&& ( dpkg --compare-versions "$2" lt "0.93.1+nmu1" \
|| (dpkg --compare-versions "$2" ge "1.5~" \
&& dpkg --compare-versions "$2" lt "1.7~" ) ) ) || \
([ "$(lsb_release -i -s)" = "Ubuntu" ] \
&& ( dpkg --compare-versions "$2" lt "0.93.1ubuntu3" \
|| (dpkg --compare-versions "$2" ge "1.5ubuntu1~" \
&& dpkg --compare-versions "$2" lt "1.5ubuntu4~" ) \
|| (dpkg --compare-versions "$2" ge "1.7~" \
&& dpkg --compare-versions "$2" lt "1.7ubuntu1~" ) ) ) ) \
&& [ -d /run/systemd/system ]; then
# workaround systemd bug with enable --now which
# fails to start the unit
systemctl enable unattended-upgrades >&2 || true
if uu_running; then
echo "Skipping starting unattended-upgrades.service because unattended-upgrades is running" >&2
else
deb-systemd-invoke start unattended-upgrades.service >&2 || true
fi
fi
;;
esac
exit 0
|