@@ -20,28 +20,34 @@ _apt update || die "Could not update package sources"
2020
2121while true ; do
2222 echo " Fetching list of upgradeable packages"
23- mapfile -t upgradeable_packages < <( _chroot apt list --upgradable 2> /dev/null | awk -F/ ' NR>1 {print $1}' | grep -v ' ^WARNING' | grep -v ' ^Listing' | grep -v ' ^$' )
23+ mapfile -t all_upgradeable_packages < <( _chroot apt list --upgradable 2> /dev/null | awk -F/ ' NR>1 {print $1}' | grep -v ' ^WARNING' | grep -v ' ^Listing' | grep -v ' ^$' )
2424
25- if [ ${# upgradeable_packages [@]} -eq 0 ]; then
25+ if [ ${# all_upgradeable_packages [@]} -eq 0 ]; then
2626 echo " No more packages to upgrade. Exiting loop."
2727 break
2828 fi
2929
30- echo " Upgradeable packages:"
31- printf ' %s\n' " ${upgradeable_packages[@]} "
32-
33- # Remove held packages from upgrade list
34- upgradeable_packages=($( printf " %s\n" " ${upgradeable_packages[@]} " | grep -v -E " $( printf " |%s" " ${packages_to_hold[@]} " ) " ) )
30+ echo " Filtering out held packages..."
31+ upgradeable_packages=()
32+ for pkg in " ${all_upgradeable_packages[@]} " ; do
33+ if [[ " ${packages_to_hold[*]} " =~ " $pkg " ]]; then
34+ echo " Skipping held package: $pkg "
35+ else
36+ upgradeable_packages+=(" $pkg " )
37+ fi
38+ done
3539
3640 if [ ${# upgradeable_packages[@]} -eq 0 ]; then
3741 echo " No more non-held packages to upgrade. Exiting loop."
3842 break
3943 fi
4044
41- last_package=" ${upgradeable_packages[-1]} "
45+ echo " Upgradeable packages:"
46+ printf ' %s\n' " ${upgradeable_packages[@]} "
4247
43- echo " Upgrading last package: $last_package "
44- _op _chroot apt install -y " $last_package " || die " Failed to upgrade $last_package "
48+ echo " Upgrading package: ${upgradeable_packages[0]} "
49+ _op _chroot apt install -y " ${upgradeable_packages[0]} " || echo " Failed to upgrade ${upgradeable_packages[0]} "
50+
4551done
4652
4753echo " Releasing held packages..."
0 commit comments