X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=src%2Ffunctions.sh;h=5ea115de791635ee26667157ca8dce870b79862b;hb=2c023c2132b166ffc24941cd2a7c35f182c2468e;hp=5683139094d4cbd6f2907040a5a3e5395dee9c13;hpb=1f118208ec9f395e6b8aaee57ff9d00d0babd4b2;p=carnet-upgrade.git diff --git a/src/functions.sh b/src/functions.sh index 5683139..5ea115d 100644 --- a/src/functions.sh +++ b/src/functions.sh @@ -146,6 +146,12 @@ apt_download() { } dist_upgrade () { + log "Running upgrade ..." + apt-get -y$s upgrade || { + dpkg --configure -a + apt-get -y$s upgrade + } + log "Running dist-upgrade ..." apt-get -y$s dist-upgrade || { dpkg --configure -a @@ -153,6 +159,14 @@ dist_upgrade () { } } +apt_autoremove () { + log "Running autoremove ..." + apt-get -y$s --purge autoremove || { + dpkg --configure -a + apt-get -yf install + } +} + remove_x() { LC_MESSAGES=hr_HR dialog --backtitle "$title" --yesno "$msg_remove_x" 18 75 if [ $? -eq 0 ]; then @@ -536,23 +550,35 @@ check_reboot () { reboot_required () { local default_kernel kernel_package running_release running_version - # 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; }' ) + # try to get default kernel from grub2 + if [ -z "$default_kernel" -a -r "/boot/grub/grub.cfg" ]; then + default_kernel=$( awk ' + $0 ~ /^set default=".*"/ { + def = gensub(/default="(.*)"/, "\\1", "1", $2); + if (def !~ /^[0-9]+$/) { exit } + } + $1 == "menuentry" { menuentry+=1 } + $1 == "linux" && menuentry==def+1 { print $2; exit }' \ + /boot/grub/grub.cfg 2>/dev/null ) fi - # fallback to grub if lilo not installed + # try to get default kernel from grub-legacy if [ -z "$default_kernel" -a -r "/boot/grub/menu.lst" ]; then default_kernel=$( awk ' - $1 == "default" { default = $2; - if (default !~ /^[0-9]+$/) { exit } } + $1 == "default" { def = $2; + if (def !~ /^[0-9]+$/) { exit } } $1 == "title" { title+=1 } - $1 == "kernel" && title==default+1 { print $2; exit }' \ + $1 == "kernel" && title==def+1 { print $2; exit }' \ /boot/grub/menu.lst 2>/dev/null ) fi + # try to get default kernel from lilo + if [ -z "$default_kernel" ] && 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 + if [ -z "$default_kernel" ]; then log "Could not find default kernel" return 1 @@ -561,8 +587,12 @@ reboot_required () { log "Default kernel image: $default_kernel" if [ ! -e "$default_kernel" ]; then - log "Default kernel image doesn't exist!?" - return 1 + # /boot prefix might be missing + default_kernel="/boot/${default_kernel#/}" + if [ ! -e "$default_kernel" ]; then + log "Default kernel image doesn't exist!?" + return 1 + fi fi kernel_package=$( dpkg -S $default_kernel | cut -d: -f 1 ) @@ -801,98 +831,75 @@ restore_configs () { local hostname domain config_new memtotal memlimit # restore simple configs - if pkg kernel-2.6-cn && pkg procps lt 1:3.2.7-11; then + if pkg ntp-cn && pkg ntp lt 1:4.2.6.p2+dfsg-1+b1; then + if restore_file /etc/ntp.conf; then + postupgrade_reconfigure ntp-cn + fi + fi + + if pkg kernel-2.6-cn && pkg procps lt 1:3.2.8-9; then if restore_file /etc/sysctl.conf; then postupgrade_reconfigure kernel-2.6-cn fi fi - if pkg ntp-cn && pkg ntp lt 1:4.2.4p4+dfsg-8; then - if restore_file /etc/ntp.conf; then - postupgrade_reconfigure ntp-cn + if pkg kernel-2.6-cn && pkg libpam-modules lt 1.1.1-6.1; then + if restore_file /etc/security/limits.conf; then + postupgrade_reconfigure kernel-2.6-cn fi fi - if pkg apache2-cn && pkg apache2.2-common lt 2.2.9-10+lenny2; then - if restore_file /etc/apache2/ports.conf; then - postupgrade_reconfigure apache2-cn + if pkg vsftpd-cn && pkg vsftpd lt 2.3.2-3+squeeze2; then + if restore_file /etc/vsftpd.conf; then + postupgrade_reconfigure vsftpd-cn fi fi - if pkg postfix-cn && pkg sasl2-bin lt 2.1.22.dfsg1-23; then - if restore_file /etc/default/saslauthd; then - postupgrade_reconfigure postfix-cn + if pkg squirrelmail-cn && pkg squirrelmail lt 2:1.4.21-2; then + if restore_file /etc/squirrelmail/apache.conf; then + postupgrade_reconfigure squirrelmail-cn fi fi - if pkg bind9-cn && pkg bind9 lt 1:9.5.1.dfsg.P1-1; then - if restore_file /etc/bind/named.conf.options; then - postupgrade_reconfigure bind9-cn + if pkg spamassassin-cn && pkg spamassassin lt 3.3.1-1; then + if restore_file /etc/spamassassin/v310.pre; then + postupgrade_reconfigure spamassassin-cn fi fi - if pkg amavisd-cn && pkg amavisd-new lt 1:2.6.1.dfsg-1; then + if pkg amavisd-cn && pkg amavisd-new lt 1:2.6.4-3; then if restore_file /etc/cron.daily/amavisd-new; then rm -f /etc/cron.daily/amavisd-new.$backup_ext postupgrade_reconfigure amavisd-cn fi - fi - if pkg spamassassin-cn && pkg razor lt 1:2.85-1; then - if restore_file /etc/razor/razor-agent.conf; then - postupgrade_reconfigure spamassassin-cn + if restore_file /etc/amavis/conf.d/15-av_scanners; then + rm -f /etc/amavis/conf.d/15-av_scanners.$backup_ext + postupgrade_reconfigure amavisd-cn fi fi - if pkg kernel-2.6-cn && pkg libpam-modules lt 1.0.1-5; then - if restore_file /etc/security/limits.conf; then - postupgrade_reconfigure kernel-2.6-cn - fi + if pkg amavisd-cn lt 3:2.6.5; then + restore_file /etc/init.d/amavisd-cn fi - if pkg samba-cn && pkg samba-common lt 2:3.2.5-4lenny2; then - if restore_file /etc/samba/smb.conf; then - postupgrade_reconfigure samba-cn - fi + if pkg console-tools lt 1:0.2.3dbs-69.1; then + restore_file /etc/console-tools/config fi - if pkg base-files lt 5lenny2; then + if pkg base-files lt 6.0squeeze2; then restore_file /etc/issue restore_file /etc/issue.net fi - # restore php.ini - memtotal=$(awk '$1 == "MemTotal:" { print int($2/1024) }' /proc/meminfo) - if [ $memtotal -gt 1024 ]; then - memlimit=64 - elif [ $memtotal -ge 512 ]; then - memlimit=32 - else - memlimit=16 - fi - - if pkg php5-cn && pkg php5-cli lt 5.2.6.dfsg.1-1+lenny2; then - config_new=$(copy_template /etc/php5/cli/php.ini) - sed -i "s/^[[:space:]]*memory_limit[[:space:]]*=.*/memory_limit = ${memlimit}M/" $config_new - sed -i "s/^[[:space:]]*post_max_size[[:space:]]*=.*/post_max_size = ${memlimit}M/" $config_new - if restore_file /etc/php5/cli/php.ini $config_new; then - postupgrade_reconfigure php5-cn - fi - rm -f $config_new - fi - - if pkg php5-cn && pkg libapache2-mod-php5 lt 5.2.6.dfsg.1-1+lenny2; then - config_new=$(copy_template /etc/php5/apache2/php.ini) - sed -i "s/^[[:space:]]*memory_limit[[:space:]]*=.*/memory_limit = ${memlimit}M/" $config_new - sed -i "s/^[[:space:]]*post_max_size[[:space:]]*=.*/post_max_size = ${memlimit}M/" $config_new - if restore_file /etc/php5/apache2/php.ini $config_new; then - postupgrade_reconfigure php5-cn - fi - rm -f $config_new + # dovecot won't start with these options + if pkg dovecot-cn && pkg dovecot-common lt 1:1.2.15-7; then + sed -i 's/^\( *\)\(sieve\(_storage\)\?=.*\)/\1#\2/' \ + /etc/dovecot/dovecot.conf fi # check if monitrc is template based - if [ -f /etc/monit/monitrc ]; then + if [ -e /etc/monit/monitrc ]; then # monit is removed at this point # regenerate config from template hostname=$(hostname) domain=$(hostname --domain) @@ -972,6 +979,8 @@ is_orphaned () { remove_orphaned () { local package + apt_autoremove + for package in $orphaned_packages; do if is_orphaned $package; then pkgrm $package @@ -1034,14 +1043,6 @@ upgrade_apache2 () { upgrade_amavis () { local conf - # remove init script diversion before upgrade - if pkg amavisd-cn lt 3:2.6.1-1; then - if [ -L /etc/init.d/amavis -a -f /etc/init.d/amavis.amavisd-new ]; then - rm -vf /etc/init.d/amavis - dpkg-divert --remove /etc/init.d/amavis - fi - fi - # move old config aside for conf in /etc/amavisd.conf /etc/amavis/amavisd.conf; do if [ -e $conf -a ! -e $conf.$backup_ext ]; then @@ -1052,18 +1053,8 @@ upgrade_amavis () { # install new packages pkgadd amavisd-cn amavisd-new - # fix new packages - check_and_sed '^clamd.*5.clamav.log$' \ - 's/^\(clamd.*\)5.clamav.log$/\14\tsocket/g' \ - /etc/init.d/amavisd-cn || true - - # check if link got lost - if pkg amavisd-cn && [ ! -L /etc/init.d/amavis ]; then - apt-get install --reinstall --yes amavisd-cn - fi - # start new packages - /etc/init.d/amavis restart + /etc/init.d/amavisd-cn restart } # handle freerdius upgrade @@ -1160,7 +1151,7 @@ upgrade_munin () { local config backup hostname domain for pkg_name in munin munin-node; do - pkg $pkg_name lt '1.2.6-10~lenny1' || continue + pkg $pkg_name lt '1.4.5-3' || continue config=/etc/munin/$pkg_name.conf backup=$config.$backup_ext @@ -1250,11 +1241,15 @@ check_archives_space() { } check_kernel_space() { - local available_disk_space kernel_size linux_images pkg ret + local available_disk_space kernel_size linux_images metapkg pkg ret available_disk_space=$(free_space /) linux_images=$(apt-cache show kernel-2.6-cn | grep ^Depends: \ - | grep -o 'linux-image[^ ]*') - for pkg in $linux_images; do + | grep -o 'linux-image[^, ]*') + for metapkg in $linux_images; do + pkg=$(apt-cache show $metapkg | grep ^Depends: \ + | grep -o 'linux-image[^, ]*' | head -1) + [ "$pkg" ] || continue + kernel_size=$(installed_size $pkg) ret=$? [ $ret -eq 0 ] && break