X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=src%2Ffunctions.sh;h=bdb78e9bb72efd5024a1e06d06204b2ce47fc5bd;hb=33da5f865daf104ca29d21bb1780d490ac6ea023;hp=9d074becb8a875a088068a279c3269f40efd092c;hpb=e76fc3cda8ecc8c284a8a0118a848f797b5f16bd;p=carnet-upgrade.git diff --git a/src/functions.sh b/src/functions.sh index 9d074be..bdb78e9 100644 --- a/src/functions.sh +++ b/src/functions.sh @@ -157,7 +157,7 @@ remove_x() { LC_MESSAGES=hr_HR dialog --backtitle "$title" --yesno "$msg_remove_x" 18 75 if [ $? -eq 0 ]; then log "Removing X Window System" - pkgrm xlibs + pkgrm x11-common else log "Skipping X Window System removal" fi @@ -376,7 +376,7 @@ check_upgrade () { if [ "$upgrade" ]; then notice " -Prije prelaska na Debian Lenny potrebno je napraviti nadogradnju ovih paketa: +Prije prelaska na Debian Squeeze potrebno je napraviti nadogradnju ovih paketa: $upgrade Pokrenite: @@ -455,7 +455,7 @@ check_php_version () { install_php5_extensions notice " -Prije prelaska na Debian Lenny potrebno je napraviti nadogradnju sa PHP 4 na PHP 5. +Prije prelaska na Debian Squeeze potrebno je napraviti nadogradnju sa PHP 4 na PHP 5. Pokrenite: # apt-get update @@ -507,7 +507,7 @@ check_grsec_kernel () { if [ "$ver" = "${ver#2.6.2[4-9]}" ]; then # kernel too old notice " -Prije prelaska na Debian Lenny potrebno je napraviti nadogradnju na najnoviji kernel. +Prije prelaska na Debian Squeeze potrebno je napraviti nadogradnju na najnoviji kernel. Pokrenite: # apt-get update @@ -536,23 +536,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 +573,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 ) @@ -600,7 +616,14 @@ upgrade () { return 1 esac - pkgadd_if_installed $packages + pkgupgrade $packages +} + +# install packages introduced in this release +install_new () { + if [ "$new_packages" ]; then + pkgadd $new_packages + fi } # funkcija utrpa ispravan sources.list @@ -924,7 +947,7 @@ apt_listchanges () { # make a silent installation of carnet and srce keyrings install_keyrings () { pkgadd carnet-keyring srce-keyring debian-archive-keyring - pkgadd_if_installed dpkg apt debconf python-apt dpkg-dev + pkgupgrade dpkg apt debconf python-apt dpkg-dev dpkg-reconfigure carnet-keyring srce-keyring debian-archive-keyring apt_update @@ -1002,7 +1025,7 @@ grep_installed () { } # only upgrade packages if they are already installed -pkgadd_if_installed () { +pkgupgrade () { local packages packages=$( grep_installed $* ) @@ -1014,13 +1037,13 @@ pkgadd_if_installed () { # make a silent upgrade to new libc6 upgrade_libc () { - DEBIAN_FRONTEND=noninteractive pkgadd_if_installed libc6 libc6-dev tzdata + DEBIAN_FRONTEND=noninteractive pkgupgrade libc6 libc6-dev tzdata } -# upgrade apache2/php5 to lenny +# upgrade apache2/php5 upgrade_apache2 () { pkgrm apache-common # prevents installation of apache2-suexec - pkgadd_if_installed libapache2-mod-php5 php5-cli php5-cn apache2-cn \ + pkgupgrade libapache2-mod-php5 php5-cli php5-cn apache2-cn \ php5-odbc php5-suhosin php-suhosin-cn } @@ -1059,51 +1082,15 @@ upgrade_amavis () { /etc/init.d/amavis restart } -# handle freerdius config files upgrade +# handle freerdius upgrade upgrade_freeradius () { local template config_new password realm hostname basedn pkg freeradius-aai lt 2.1.3-0lenny0 || return 0 - # handle static configs - restore_file /etc/freeradius/clients.conf - restore_file /etc/freeradius/hints - restore_file /etc/freeradius/ldap.attrmap - - # handle template based configs - basedn=$(sed -n '/^[[:space:]]*suffix[[:space:]]*/ { - s///; s/"//g; p; q }' /etc/ldap/slapd.conf) - hostname=$(hostname -f) - config_new=$(copy_template /etc/freeradius/radiusd.conf) - sed -i "s/#HOSTNAME#/$hostname/" $config_new - sed -i "s/#BASEDN#/$basedn/" $config_new - restore_file /etc/freeradius/radiusd.conf $config_new - rm -f $config_new - - password=$(grep -s '^[[:space:]]*private_key_password[[:space:]]*=' \ - /etc/freeradius/eap.conf) - config_new=$(copy_template /etc/freeradius/eap.conf) - sed -i "s/.*#PASSWORD#.*/$password/" $config_new - restore_file /etc/freeradius/eap.conf $config_new - rm -f $config_new - - realm=$(sed -n '/^[[:space:]]*suffix[[:space:]]*/ { - s///; s/"//g; s/,dc=/./g; s/dc=//; s/.hr$//; p; q }' /etc/ldap/slapd.conf) - config_new=$(copy_template /etc/freeradius/proxy.conf) - sed -i "s/#REALM#/$realm/" $config_new - restore_file /etc/freeradius/proxy.conf $config_new - rm -f $config_new - - # install the new packages - if ! apt-get -y install freeradius; then - # freeradius upgrade fails here, try to fix it by creating certificates - [ -x /etc/freeradius/certs/bootstrap ] && /etc/freeradius/certs/bootstrap - - dpkg --configure -a - apt-get -y -f install - fi - - # finally try to cleanup this mess + # aai team prevents a clean upgrade + cp -av /etc/freeradius /etc/freeradius.$backup_ext + pkgrm freeradius-aai freeradius-ldap freeradius pkgadd freeradius-aai } @@ -1166,6 +1153,13 @@ upgrade_postfix () { fi } +# upgrade bind separately so DNS is not down for too long +# or breaks postinst scripts of other cn packages that depend on +# working resolver +upgrade_bind() { + pkgadd bind9-cn +} + get_variable () { local name=$1 file=$2 val @@ -1177,38 +1171,6 @@ get_variable () { echo $val } -# preserve mail location on upgrade -upgrade_dovecot () { - local default_mail_env mail_location - - # check if already upgraded - if ! pkg dovecot-common lt 1.0; then - return - fi - - # save old mail location - default_mail_env=$(get_variable default_mail_env /etc/dovecot/dovecot.conf) - - # silently upgrade package - restore_file /etc/dovecot/dovecot.conf - pkgadd dovecot-cn - - # insert old mail location - mail_location=$(get_variable mail_location /etc/dovecot/dovecot.conf) - if [ "$default_mail_env" -a ! "$mail_location" ]; then - check_and_sed '^#mail_location[[:space:]]*=' \ - "s|#mail_location[[:space:]]*=.*|mail_location = $default_mail_env|" /etc/dovecot/dovecot.conf || return 0 - - if [ -x /etc/init.d/dovecot ]; then - if [ -x /usr/sbin/invoke-rc.d ]; then - /usr/sbin/invoke-rc.d dovecot restart - else - /etc/init.d/dovecot restart - fi - fi - fi -} - # restore munin configs for silent upgrade upgrade_munin () { local config backup hostname domain @@ -1265,15 +1227,22 @@ comment_force_overwrite () { fi } +# try not to overwrite user modified issue files fix_issue () { - cat > /etc/issue </dev/null; then + cp -av /etc/issue /etc/issue.$backup_ext + cat > /etc/issue < /etc/issue.net </dev/null; then + cp -av /etc/issue.net /etc/issue.net.$backup_ext + cat > /etc/issue.net <