File: postinst

package info (click to toggle)
unattended-upgrades 2.8
  • links: PTS
  • area: main
  • in suites: bullseye
  • size: 1,188 kB
  • sloc: python: 3,896; sh: 443; makefile: 78
file content (143 lines) | stat: -rw-r--r-- 5,927 bytes parent folder | download | duplicates (4)
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