]> git.saurik.com Git - apt.git/blobdiff - debian/apt.postinst
The entire concept of PendingError() is flawed :/.
[apt.git] / debian / apt.postinst
old mode 100644 (file)
new mode 100755 (executable)
index 6236acd..1f98fce
@@ -2,24 +2,6 @@
 
 set -e
 
-# set the proxy based on the admin users gconf settings 
-# 
-set_apt_proxy_from_gconf() {
-    admin_user=$(getent group admin|cut -d: -f4|cut -d, -f1)
-    if [ -n "$admin_user" ] && [ -x /usr/bin/sudo ] && [ -z "$http_proxy" ] && [ -x /usr/bin/gconftool ]; then
-       use=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/use_http_proxy 2>/dev/null)
-       host=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/host 2>/dev/null)
-       port=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/port 2>/dev/null)
-       if [ "$use" = "true" ] && [ -n "$host" ] && [ -n "$port" ]; then
-           APT_CONF_PROXY=""
-           eval $(apt-config shell APT_CONF_PROXY Acquire::http::proxy)
-           if [ -z "$APT_CONF_PROXY" ]; then
-               echo "Acquire::http::proxy \"http://$host:$port/\";" >> /etc/apt/apt.conf
-           fi
-       fi
-    fi
-}
-
 # summary of how this script can be called:
 #        * <postinst> `configure' <most-recently-configured-version>
 #        * <old-postinst> `abort-upgrade' <new version>
@@ -33,16 +15,55 @@ set_apt_proxy_from_gconf() {
 
 case "$1" in
     configure)
-        if ! test -f /etc/apt/trusted.gpg; then
-                cp /usr/share/apt/ubuntu-archive.gpg /etc/apt/trusted.gpg
-        fi
+       if dpkg --compare-versions "$2" lt 1.1~exp4; then
+           # apt-key before 0.9.10 could leave empty keyrings around
+           find /etc/apt/trusted.gpg.d/ -name '*.gpg' | while read keyring; do
+               if ! test -s "$keyring"; then
+                   rm -f "$keyring"
+               fi
+           done
+           # apt-key before 0.9.8.2 could create 0600 trusted.gpg file
+           if test -e /etc/apt/trusted.gpg ; then
+               chmod -f 0644 /etc/apt/trusted.gpg || true
+           fi
+       fi
+
+       if dpkg --compare-versions "$2" lt-nl 0.9.9.5; then
+           # we are using tmpfiles for both
+           rm -f /etc/apt/trustdb.gpg
+           # this removal was done unconditional since 0.8.15.3
+           SECRING='/etc/apt/secring.gpg'
+           # test if secring is an empty normal file
+           if test -f $SECRING -a ! -s $SECRING; then
+               rm -f $SECRING
+           fi
+       fi
+
+       # add unprivileged user for the apt methods
+       adduser --force-badname --system --home /nonexistent  \
+           --no-create-home --quiet _apt || true
+
+       # Fixup any mistake in the home directory of the _apt user
+       if dpkg --compare-versions "$2" lt-nl 1.1~exp10~; then
+           usermod --home /nonexistent _apt
+       fi
 
-       # mvo: get gconf defaults once and write to a file, reason is
-       #      that sudo no longer honors http_proxy
-       # this can be removed after lucid is released
-       if dpkg --compare-versions "$2" lt-nl "0.7.25.3ubuntu2"; then
-           set_apt_proxy_from_gconf
+       # deal with upgrades from experimental
+       if dpkg --compare-versions "$2" 'eq' '1.1~exp3'; then
+           # libapt will setup partial/ at runtime
+           chown -R root:root /var/lib/apt/lists /var/cache/apt/archives || true
        fi
+
+        # ensure tighter permissons on the logs, see LP: #975199
+        if dpkg --compare-versions "$2" lt-nl 0.9.7.7; then
+            # ensure permissions are right
+            chmod -f 0640 /var/log/apt/term.log* || true
+        fi
+
+        # create kernel autoremoval blacklist on update
+        if dpkg --compare-versions "$2" lt 0.9.9.3; then
+            /etc/kernel/postinst.d/apt-auto-removal
+        fi
     ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)