diff --git a/install-php-extensions b/install-php-extensions index 4b1d4eb..a0ebb61 100755 --- a/install-php-extensions +++ b/install-php-extensions @@ -199,6 +199,7 @@ sortModulesToInstall() { # Set: # PACKAGES_PERSISTENT # PACKAGES_VOLATILE +# PACKAGES_PREVIOUS buildRequiredPackageLists() { buildRequiredPackageLists_persistent='' buildRequiredPackageLists_volatile='' @@ -634,6 +635,7 @@ buildRequiredPackageLists() { done PACKAGES_PERSISTENT='' PACKAGES_VOLATILE='' + PACKAGES_PREVIOUS='' if test -z "$buildRequiredPackageLists_persistent$buildRequiredPackageLists_volatile"; then return fi @@ -643,7 +645,6 @@ buildRequiredPackageLists() { ;; debian) DEBIAN_FRONTEND=noninteractive apt-get update -q - DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y -q ;; esac if test -n "$buildRequiredPackageLists_persistent"; then @@ -665,6 +666,13 @@ buildRequiredPackageLists() { done PACKAGES_VOLATILE="${PACKAGES_VOLATILE# }" fi + if test -n "$PACKAGES_PERSISTENT$PACKAGES_VOLATILE"; then + case "$buildRequiredPackageLists_distro" in + debian) + PACKAGES_PREVIOUS="$(dpkg --get-selections | grep -E '\sinstall$' | awk '{ print $1 }')" + ;; + esac + fi } # Get the full list of APT/APK packages that will be installed, given the required packages @@ -1290,6 +1298,14 @@ cleanup() { ;; esac fi + if test -n "$PACKAGES_PREVIOUS"; then + case "$cleanup_distro" in + debian) + printf '### RESTORING PREVIOUSLY INSTALLED PACKAGES ###\n' + DEBIAN_FRONTEND=noninteractive apt-get install -qqy $PACKAGES_PREVIOUS + ;; + esac + fi case "$cleanup_distro" in alpine) rm -rf /var/cache/apk/*