From 8b5078f47fd44e8c2b1eee8e21d6c14ee1a36ccf Mon Sep 17 00:00:00 2001 From: Michele Locati Date: Thu, 23 Jan 2020 14:50:55 +0100 Subject: [PATCH] Restore previously installed APT packages --- install-php-extensions | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) 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/*