X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=src%2Ffunctions.sh;h=ccbb79b5cd3e7e38e99f503f761aa640ed34059c;hb=52549f701db44118d4691cf59478299fbc1e830a;hp=970d3db2f5fd6ebf841dbf72b3a0893f84ad6a87;hpb=34fae0d4853ef205525f1fc864652e3181117160;p=carnet-upgrade.git diff --git a/src/functions.sh b/src/functions.sh index 970d3db..ccbb79b 100644 --- a/src/functions.sh +++ b/src/functions.sh @@ -105,7 +105,7 @@ pkgadd () { pkgrm () { [ -n "$*" ] || return 0 - log "Removing $* ..." + log "Purging $* ..." apt-get -y$s --purge remove $* || { dpkg --configure -a apt-get -yf install @@ -113,6 +113,17 @@ pkgrm () { } } +pkgrm_only () { + [ -n "$*" ] || return 0 + log "Removing $* ..." + apt-get -y$s remove $* || { + dpkg --configure -a + apt-get -yf install + apt-get -y$s remove $* + } +} + + apt_update() { log "Running apt-get update ..." apt-get -y$s update || { @@ -202,6 +213,57 @@ remove_bloat() { eval pkgrm $pkgs_to_remove } +remove_cn_bloat() { + local installed pkg cn_pkgs dialog_list selection cn_del to_del del_pkgs + + # get installed packages + installed=$(mktemp /var/lib/carnet-upgrade/pkglist.XXXXXX) + COLUMNS=200 dpkg -l | awk '$1 ~ /^.i/ { print $2 }' >$installed + + # detect installed CN packagees + for pkg in $(echo "$cn_bloats" | cut -d' ' -f1); do + if grep -qx $pkg $installed; then + cn_pkgs="$cn_pkgs $pkg" + dialog_list="$dialog_list $pkg '' off" + fi + done + rm -f $installed + + # report status or finish if no CN packages found + if [ "$cn_pkgs" ]; then + log "Found CN packages:$cn_pkgs" + else + log "No CN packages found." + return + fi + + # user selects the packages to delete + selection=$(mktemp /var/lib/carnet-upgrade/selection.XXXXXX) + eval LC_MESSAGES=hr_HR dialog --nocancel --backtitle \""$title"\" \ + --checklist \""$msg_remove_cn_bloat"\" 20 75 6 $dialog_list 2>$selection + + # expand the package list to include the services + for pkg in $(cat $selection); do + pkg=${pkg%\"} + pkg=${pkg#\"} + cn_del="$cn_del $pkg" + to_del=$(echo "$cn_bloats" | grep ^$pkg) + del_pkgs="$del_pkgs $to_del" + done + rm -f $selection + + # report selection or finish if no service selected + if [ "$cn_del" ]; then + log "Removing CN services:$cn_del" + else + log "No CN services selected for removal." + return + fi + + # delete the cn packages and relevant services + pkgrm_only $del_pkgs +} + post_upgrade() { touch "$post_upgrade_queuetab" if ! grep -q "true $*" "$post_upgrade_queuetab"; then