#!/bin/sh set -e log_debug() { echo "Debug: piuparts exception for package $PIUPARTS_OBJECTS" } is_installed() { local pkg="$1" dpkg-query -s "$pkg" >/dev/null 2>&1 || return 1 local status="$(dpkg-query -W -f '${Status}' $pkg)" test "$status" != "unknown ok not-installed" || return 1 test "$status" != "deinstall ok config-files" || return 1 return 0 } dbconfig_enable_purge() { log_debug echo "$1 $1${2+/$2}/dbconfig-remove boolean true" | debconf-set-selections echo "$1 $1${2+/$2}/purge boolean true" | debconf-set-selections } if [ "$PIUPARTS_DISTRIBUTION_NEXT" = "squeeze" ]; then case ${PIUPARTS_OBJECTS%%=*} in crm114) #562946 log_debug echo "crm114 crm114/forceupgrade boolean true" | debconf-set-selections ;; slapd|\ slapd-dbg) # squeeze postinst wants to restore a backup from lenny that was never created log_debug dpkg --purge slapd slapd-dbg ;; esac # squeeze does not properly upgrade adduser.conf, so generate a new one if [ -f /etc/adduser.conf ]; then md5="$(md5sum /etc/adduser.conf | awk '{ print $1 }')" # 5b577c9cb18e4852fc7e45830d230ec1: adduser/lenny pristine # 28928669e36f1ab616dfda39af3d79a7: adduser/lenny + dpsyco-lib/lenny if [ "$md5" = "5b577c9cb18e4852fc7e45830d230ec1" ] || \ [ "$md5" = "28928669e36f1ab616dfda39af3d79a7" ] then rm -fv /etc/adduser.conf fi fi # prevent disappearance of /etc/udev/rules.d/ if is_installed libticables3; then log_debug touch /etc/udev/rules.d/.piuparts.dummy fi # isc-dhcp-server.postinst unconditionally overwrites conffile /etc/dhcp/dhcpd.conf if is_installed dhcp3-server; then log_debug rm -fv /etc/dhcp3/dhcpd.conf fi fi if [ "$PIUPARTS_DISTRIBUTION_NEXT" = "wheezy" ]; then case ${PIUPARTS_OBJECTS%%=*} in cnews) # dpkg 1.16 does not like the bad cnews version number cr.g7-40.4 # cnews was removed after lenny log_debug dpkg --purge cnews ;; lcl-utils|\ lcl) # WORKSAROUND #696075: lcl-utils: directory vs. symlink mess after squeeze => wheezy upgrade: /etc/lazarus # the renaming was performed in the postinst of lcl-utils-0.9.30.4, # which was not the owner of the old /etc/lazarus, # therefore dpkg does never forget about the old conffiles log_debug if [ -d /etc/lazarus ] && [ ! -L /etc/lazarus ]; then mv -v /etc/lazarus /etc/lazarus.bak fi ;; nfsbooted) # sysv-rc fails migration to dependency based boot sequence if nfsbooted is installed # nfsbooted was removed after lenny log_debug dpkg --purge nfsbooted ;; pdns-backend-mysql) # WORKSAROUND #698562: upgrade from squeeze => wheezy fails if database has not been created before the upgrade log_debug dpkg --purge pdns-backend-mysql ;; pdns-backend-pgsql) # WORKSAROUND #698562: upgrade from squeeze => wheezy fails if database has not been created before the upgrade log_debug dpkg --purge pdns-backend-pgsql ;; esac # E: Could not perform immediate configuration on ... #645713, #677805, #706641 case ${PIUPARTS_OBJECTS%%=*} in bug-buddy|\ gnome|\ gnome-accessibility|\ gnome-core|\ gnome-dbg|\ gnome-desktop-environment|\ libgd-text-perl|\ open-cobol|\ python-sugar-toolkit-0.86|\ speechd-el|\ sucrose-0.86|\ sugar-browse-activity-0.86|\ sugar-chat-activity-0.86|\ sugar-read-activity-0.86) log_debug echo "Disabling APT::Immediate-Configure" echo 'APT::Immediate-Configure "No";' >> /etc/apt/apt.conf.d/piuparts-disable-immediate-configure ;; esac # WORKSAROUND #655969: lirc: prompting due to modified conffiles which where not modified by the user: /etc/lirc/hardware.conf if [ -f /etc/lirc/hardware.conf ]; then log_debug sed -i '/^DRIVER=/s/.*/DRIVER="UNCONFIGURED"/' /etc/lirc/hardware.conf fi fi if [ "$PIUPARTS_DISTRIBUTION_NEXT" = "jessie" ]; then case ${PIUPARTS_OBJECTS%%=*} in *cyrus*) # something was not working properly during the upgrade from 2.2 to 2.4 if is_installed cyrus-common && [ ! -d /var/lib/cyrus/db ]; then echo "FIXING missing /var/lib/cyrus/db" cyrus-makedirs --cleansquat fi ;; debian-edu-archive-keyring|\ debian-ports-archive-keyring|\ emdebian-archive-keyring|\ emdebian-grip-server) # https://bugs.debian.org/687611 log_debug for keyring in /etc/apt/trusted.gpg.d/*.gpg~ do if [ -f "${keyring}" ]; then mv -v "${keyring}" "${keyring%~}" fi done ;; ekeyd-uds) # ekeyd-uds was removed after squeeze, maintainer scripts are incompatible with udev/jessie log_debug dpkg --purge ekeyd-uds ;; otrs2) #707075: cannot automatically upgrade from wheezy to jessie due to mysql storage engine change if is_installed mysql-server; then log_debug dbconfig_enable_purge otrs2 dpkg --purge otrs2 fi ;; esac #825650: libreoffice-common: prompting due to modified conffiles which were not modified by the user: /etc/libreoffice/sofficerc # migration did not work properly while upgrading from squeeze to wheezy, # gets messed up further while upgrading from wheezy to jessie, # eventually leading to problems while upgrading from jessie to stretch if is_installed openoffice.org-common; then if [ -f /etc/openoffice/sofficerc ] && [ -f /etc/libreoffice/sofficerc ]; then log_debug for file in sofficerc soffice.sh psprint.conf do if [ -f /etc/openoffice/$file ] && [ -f /etc/libreoffice/$file ]; then rm -v /etc/openoffice/$file fi done fi fi fi if [ "$PIUPARTS_DISTRIBUTION" = "stretch" ]; then case ${PIUPARTS_OBJECTS%%=*} in design-desktop*) #850948: needrestart/stretch may hang during upgrade log_debug dpkg-divert --rename /usr/lib/needrestart/apt-pinvoke ;; esac fi