X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=src%2Ffunctions.sh;h=c51c2d29d150cd62332c9b421c4b53ef8779bf5d;hb=2373fadf91162cd602cbb0d0ad425f98809ac19a;hp=2399e2de1f6e591e6f1bc6f71b73908a5ea1d639;hpb=8399eac47011395722b0fec41a51c69524843081;p=carnet-upgrade.git diff --git a/src/functions.sh b/src/functions.sh index 2399e2d..c51c2d2 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: @@ -346,6 +408,9 @@ fix_sarge_sources () { # install fixed version cp -av $fixed_sources $apt_sources + + # update the database + apt_update fi # delete temporary @@ -380,7 +445,7 @@ check_apache_version () { if pkg apache-cn && ! pkg apache2-cn; then notice " -Prije prelaska na Debian Etch potrebno je napraviti nadogradnju sa Apache 1.3 na Apache 2.0. +Prije prelaska na Debian Lenny potrebno je napraviti nadogradnju sa Apache 1.3 na Apache 2.0. Pokrenite: # apt-get update @@ -402,10 +467,10 @@ check_grsec_kernel () { return 0 fi - if [ "$ver" = "${ver#2.6.2[4-9]}" ]; then + 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 @@ -418,6 +483,53 @@ Nakon toga ponovno pozovite ovu skriptu." fi } +# check if the latest kernel is booted +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; }' ) + + if [ -z "$default_kernel" ]; then + log "Could not find default kernel" + return 1 + fi + + log "Default kernel image: $default_kernel" + + if [ ! -e "$default_kernel" ]; then + log "Default kernel image doesn't exist!?" + return 1 + fi + + kernel_package=$( dpkg -S $default_kernel | cut -d: -f 1 ) + + if [ -z "$kernel_package" ]; then + log "Default kernel not installed from a package" + return 1 + fi + + log "Default kernel package: $kernel_package" + + if [ "$kernel_package" != "kernel-2.6-cn" ]; then + log "Default kernel package is not kernel-2.6-cn" + return 1 + fi + + running_release=$( uname -r ) + running_version=$( uname -v ) + log "Running kernel: $running_release $running_version" + + if grep -q "$running_release .* $running_version" $default_kernel; then + log "Latest kernel version is running." + return 1 + else + log "Reboot to latest version required." + return 0 + fi +} + upgrade () { local i to_install packages case "$1" in @@ -896,11 +1008,11 @@ comment_force_overwrite () { fix_issue () { cat > /etc/issue < /etc/issue.net <