X-Git-Url: http://ftp.carnet.hr/pub/carnet-debian/scm?a=blobdiff_plain;f=src%2Ffunctions.sh;h=2b557d75d91cabe837dc12e7162255a5139fde7c;hb=1f6237172592f804666f42f4d0596e3b5ac4c5de;hp=466e7702259f063689d0d5f60c920ed669ab138a;hpb=34bbbf9ae392e67c2f8bc27e93b2e8d6f2eac369;p=carnet-upgrade.git diff --git a/src/functions.sh b/src/functions.sh index 466e770..2b557d7 100644 --- a/src/functions.sh +++ b/src/functions.sh @@ -447,23 +447,53 @@ check_my_version () { rm -f $packages } -# if apache is installed make sure it's version 2 -check_apache_version () { +# if php is installed make sure it's version 5 +check_php_version () { + + if pkg php4-cn && ! pkg php5-cn; then + # prepare for php upgrade by installing php5 extensions + install_php5_extensions - 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 PHP 4 na PHP 5. Pokrenite: # apt-get update - # apt-get install apache2-cn + # apt-get install php5-cn -Nakon toga ponovno pozovite ovu skriptu." - log "carnet-upgrade aborted, upgrade to apache2-cn needed." +Nakon sto provjerite da sve web aplikacije rade ispravno, ponovno pozovite ovu skriptu." + log "carnet-upgrade aborted, upgrade to php5-cn needed." exit 1 fi } +# install php5 extensions based on installed php4 extensions +install_php5_extensions () { + local php4_list php5_pkg + + # get a list of installed php4 packages + php4_list=$(mktemp /var/lib/carnet-upgrade/php4_list.XXXXXX) + dpkg -l php4-\* | awk '/^ii/ { + pkg=$2; sub("^php4", "php5", pkg); print pkg }' > $php4_list + + # compare it with the list of available php5 packages + php5_pkg=$(apt-cache search -n ^php5- | cut -d' ' -f 1 \ + | grep -F -x -f $php4_list | grep -F -x -v php5-cn) + + # handle special cases + if pkg php4-xslt; then + php5_pkg="$php5_pkg php5-xsl" + fi + + # install the required php5 modules + if [ "$php5_pkg" ]; then + pkgadd $php5_pkg + fi + + # cleanup + rm -f $php4_list +} + # if grsec is installed make sure it is fresh check_grsec_kernel () { local ver=`uname -r` @@ -659,7 +689,7 @@ backup_slapd_db () { [ -x /etc/init.d/freeradius ] && /etc/init.d/freeradius start || true else log "slapd backup already at $ldap_backup, skipping." - notice "Backup slapd baze u $ldap_backup vec postoji!" + #notice "Backup slapd baze u $ldap_backup vec postoji!" fi } @@ -683,7 +713,7 @@ backup_etc_dir () { umask $old_umask else log "/etc backup already present in $etc_backup, skipping." - notice "Backup /etc direktorija u $etc_backup vec postoji!" + #notice "Backup /etc direktorija u $etc_backup vec postoji!" fi } @@ -786,6 +816,9 @@ restore_configs () { restore_config spamassassin-cn razor 1:2.85-1 /etc/razor/razor-agent.conf restore_config kernel-2.6-cn libpam-modules 1.0.1-5 /etc/security/limits.conf restore_config samba-cn samba-common 2:3.2.5-4lenny2 /etc/samba/smb.conf + restore_config '' base-files 5lenny2 /etc/issue /etc/issue.net + restore_config php5-cn php5-cli 5.2.6.dfsg.1-1+lenny2 /etc/php5/cli/php.ini + restore_config php5-cn libapache2-mod-php5 5.2.6.dfsg.1-1+lenny2 /etc/php5/apache2/php.ini # check if monitrc is template based if [ -f /etc/monit/monitrc -a ! -f /etc/monit/monitrc.$backup_ext ]; then @@ -810,8 +843,6 @@ restore_configs () { rm -f $config_new fi -# restore_config base-files 4 /etc/issue /etc/issue.net -# restore_config base-files 4 /etc/issue /etc/issue.net # restore_config login 1:4.0.18.1 /etc/pam.d/login # restore_config mysql-server 5.0.3 /etc/init.d/mysql \ # /etc/logrotate.d/mysql-server \ @@ -899,6 +930,12 @@ remove_skey () { fi } +# remove unsupported php version +remove_php4 () { + # leave the configuration just in case + pkgrm_only php4-common || true +} + # check if package is orphaned (nothing depends on it) is_orphaned () { local package deps @@ -941,21 +978,20 @@ disable_monit () { # make a silent upgrade to new libc6 upgrade_libc () { - DEBIAN_FRONTEND=noninteractive pkgadd libc6 + DEBIAN_FRONTEND=noninteractive pkgadd libc6 tzdata } -# upgrade apache2 to etch +# upgrade apache2 to lenny upgrade_apache2 () { local package packages for package in \ - libapache2-mod-php4 \ - php4-cli \ - php4-cgi \ - php4-cn \ + libapache2-mod-php5 \ + php5-cli \ + php5-cn \ apache2-cn \ - php4-odbc \ - php4-suhosin \ + php5-odbc \ + php5-suhosin \ php-suhosin-cn do if pkg $package; then @@ -963,11 +999,6 @@ upgrade_apache2 () { fi done - # enable suhosin downgrade to etch version - if pkg php4-suhosin; then - pkgrm php4-suhosin php-suhosin-cn - fi - eval pkgadd $packages } @@ -1008,7 +1039,7 @@ upgrade_amavis () { # handle freerdius config files upgrade upgrade_freeradius () { - local template config_new password realm + local template config_new password realm hostname basedn pkg freeradius-aai lt 2.1.3-0lenny0 || return 0 @@ -1016,10 +1047,24 @@ upgrade_freeradius () { restore_config freeradius-aai freeradius 2.1.3-0lenny0 \ /etc/freeradius/clients.conf \ /etc/freeradius/hints \ - /etc/freeradius/ldap.attrmap \ - /etc/freeradius/radiusd.conf + /etc/freeradius/ldap.attrmap # handle template based configs + template=/usr/share/carnet-upgrade/files/etc/freeradius/radiusd.conf.template + config_new=$(mktemp /var/lib/carnet-upgrade/radiusd.conf.XXXXXX) + basedn=$(sed -n '/^[[:space:]]*suffix[[:space:]]*/ { + s///; s/"//g; p; q }' /etc/ldap/slapd.conf) + hostname=$(hostname -f) + cp $template $config_new + sed -i "s/#HOSTNAME#/$hostname/" $config_new + sed -i "s/#BASEDN#/$basedn/" $config_new + if cmp -s $config_new /etc/freeradius/radiusd.conf >/dev/null; then + log "Restoring config file /etc/freeradius/radiusd.conf" + cp -v /usr/share/carnet-upgrade/files/etc/freeradius/radiusd.conf.restore \ + /etc/freeradius/radiusd.conf + fi + rm -f $config_new + template=/usr/share/carnet-upgrade/files/etc/freeradius/eap.conf.template config_new=$(mktemp /var/lib/carnet-upgrade/eap.conf.XXXXXX) password=$(grep -s '^[[:space:]]*private_key_password[[:space:]]*=' \ @@ -1111,7 +1156,7 @@ upgrade_postgresql () { # upgrade the MTA upgrade_postfix () { - pkgadd postfix-cn + pkgadd sasl2-bin postfix-cn if pkg postgrey; then pkgrm postgrey # not used by postfix-cn anymore @@ -1220,6 +1265,7 @@ comment_force_overwrite () { fix_issue () { cat > /etc/issue < /etc/issue.net <