X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=src%2Ffunctions.sh;h=e097bc00cb0a977ccecb7cc560626f61b7946a9b;hb=377dfa6f055c46f66e60c614bfc98c9ee955047a;hp=970d3db2f5fd6ebf841dbf72b3a0893f84ad6a87;hpb=34fae0d4853ef205525f1fc864652e3181117160;p=carnet-upgrade.git diff --git a/src/functions.sh b/src/functions.sh index 970d3db..e097bc0 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 @@ -307,7 +369,7 @@ check_upgrade () { if [ "$upgrade" ]; then notice " -Prije prelaska na Debian Etch potrebno je napraviti nadogradnju ovih paketa: +Prije prelaska na Debian Lenny potrebno je napraviti nadogradnju ovih paketa: $upgrade Pokrenite: @@ -408,7 +470,7 @@ check_grsec_kernel () { if [ "$ver" = "${ver#2.6.2[4-9]}" ] || reboot_required; then # kernel too old notice " -Prije prelaska na Debian Etch potrebno je napraviti nadogradnju na najnoviji grsec kernel. +Prije prelaska na Debian Lenny potrebno je napraviti nadogradnju na najnoviji kernel. Pokrenite: # apt-get update @@ -425,9 +487,22 @@ Nakon toga ponovno pozovite ovu skriptu." reboot_required () { local default_kernel kernel_package running_release running_version - default_kernel=$( lilo -t -v 2>/dev/null \ - | grep -B3 '[*]$' \ - | sed -n -e '/^Boot image: / { s///p; q; }' ) + # try to get default kernel from lilo + if type lilo >/dev/null 2>&1; then + default_kernel=$( lilo -t -v 2>/dev/null \ + | grep -B3 '[*]$' \ + | sed -n -e '/^Boot image: / { s///p; q; }' ) + fi + + # fallback to grub if lilo not installed + if [ -z "$default_kernel" -a -r "/boot/grub/menu.lst" ]; then + default_kernel=$( awk ' + $1 == "default" { default = $2; + if (default != /^[[:digit:]]+$/) { exit } } + $1 == "title" { title+=1 } + $1 == "kernel" && title==default+1 { print $2; exit }' \ + /boot/grub/menu.lst 2>/dev/null ) + fi if [ -z "$default_kernel" ]; then log "Could not find default kernel" @@ -738,10 +813,10 @@ apt_listchanges () { # make a silent installation of carnet and srce keyrings install_keyrings () { - pkgadd carnet-keyring srce-keyring + pkgadd carnet-keyring srce-keyring debian-archive-keyring pkgadd dpkg apt debconf python-apt - dpkg-reconfigure carnet-keyring srce-keyring + dpkg-reconfigure carnet-keyring srce-keyring debian-archive-keyring apt_update } @@ -946,11 +1021,11 @@ comment_force_overwrite () { fix_issue () { cat > /etc/issue < /etc/issue.net <