{{tag> }} ====== Verspätetes Upgrade von Ver. 4.0.4, 4.0.5 und 4.0.6 auf Ver. 5.0.x ====== ===== Der Ist-Zustand ===== Der eine oder andere hat es vielleicht versäumt, seinen Server rechtzeitig von Ver. 4.0.x (x >= 4) auf Ver. 5.0.x zu aktualisieren. Rechtzeitig heißt: solange die Lenny-Paketquellen sich noch an der ursprünglichen Stelle befinden, nämlich unter http://ftp.de.debian.org/. Später wurden die Paketquellen nach http://archive.debian.org/ verschoben, und damit ergeben sich beim "normalen" Upgrade von 4.0.x auf 5.0.x Probleme: * Das Online-Upgrade funktioniert grundsätzlich nicht mehr, weil das LMZ die ISO-Dateien der paedML nicht mehr zur Verfügung stellt. * Das CDROM-Upgrade geht davon aus, daß sich die Lenny-Paketquellen am ursprünglichen, jetzt nicht mehr verfügbaren Ort befinden. Deswegen klappt das Upgrade ebenfalls nicht ohne besondere Maßnahmen. ===== Hintergrund ===== Was geschieht u. a. beim CROM-Upgrade? * Von CDROM wird das Upgrade-Skript **paedml50-cdrom-ugrade** aufgerufen. * Am Anfang dieses Skripts wird eine neue Version des deb-Pakets **linuxmuster-base.*.deb** installiert: ''dpkg -i --force-confold --force-confdef /cdrom/pool/main/l/linuxmuster/linuxmuster-base_*.deb'' * Dadurch werden u. a. * die Datei **/usr/share/linuxmuster/upgrade/paedml50-upgrade.sh** erzeugt (diese Datei enthält jedoch die alten, ungültigen Adressen der Lenny-Paketquellen), * das Verzeichnis **/var/lib/linuxmuster/config-static/etc/apt/** mit einigen Unterverzeichnissen und Dateien erzeugt * und in diesem Verzeichnis die Datei **/var/lib/linuxmuster/config-static/etc/apt/sources.list** erzeugt (auch diese Datei enthält jedoch die alten, ungültigen Adressen der Lenny-Paketquellen). * Am Ende des Upgrade-Skripts wird auf diese Verzeichnisse bzw. Dateien zugegriffen: ''. $DATADIR/upgrade/paedml50-upgrade.sh 2>&1 | tee -a $LOGDIR/paedml50-upgrade.log'', und das geht nun natürlich schief. ===== Die Abhilfe ===== * Erzeuge Versionen der Dateien **sources.list** und **paedml50-upgrade.sh**, welche die neuen, jetzt gültigen Adressen der Lenny-Paketquellen enthalten, * Kopiere das Upgrade-Skript **paedml50-cdrom-upgrade** von CDROM auf den Server. * Modifiziere dieses Skript so, daß zwischen seinem Anfang und seinem Ende die modifizierten Dateien **sources.list** und **paedml50-upgrade.sh** an die entsprechenden Stellen des Dateibaums kopiert werden, * Starte den Upgradeprozeß durch Aufruf des modifizierten Upgrade-Skripts. ===== Das Vorgehen ===== * Binde das CDROM-Laufwerk ein: **''mount /dev/sdc0 /cdrom''** (/dev/scd0 abhängig davon, wie das CDROM-Laufwerk erkannt wird). * Erzeuge auf dem Server das Verzeichnis **/root/lml**: **''md /root/lml''** Dieses Verzeichnis kann natürlich weitgehend beliebig gewählt werden. * Kopiere das CDROM-Upgrade-Skript auf den Server: **''cp /cdrom/paedml50-cdrom-upgrade /root/lml/''**. * Modifiziere dieses Skript. * Erzeuge in **/root/lml** die modifizierten Dateien **sources.list** und **paedml50-upgrade.sh**. * Wechsle in das Verzeichnis **/root/lml** und starte den Upgradeprozeß durch **''./paedml50-cdrom-upgrade''**. Falls der Upgradeprozeß nach einiger Zeit anhält, wird er durch Drücken der Leertaste fortgesetzt. * Starte den Server nach Abschluß des Upgradeprozesses neu. Er meldet sich als "**openML Linux 5.0.4 / codename Glufamichel**". ===== Die modifizierten Dateien ===== ==== paedml50-cdrom-upgrade ==== Die Datei wurde weitgehend von CDROM übernommen. Eingefügt wurden die Zeilen 12 und 54 bis 57, modifiziert wurde Z. 70. 01 #!/bin/bash 02 # 03 # upgrade paedML 4.0.x to 5.0.x 04 # cdrom wrapper script 05 # 06 # 26.10.2010 07 # Thomas Schmitt 08 # 09 # GPL V3 10 # 11 12 LMLMOD=/root/lml/ 13 14 if [ "$1" = "--force" ]; then 15 echo "--force angegeben: überspringe Versionsprüfung!" 16 echo 17 else 18 if [ "$(cat /etc/debian_version)" != "4.0" ]; then 19 echo "Das Upgrade funktioniert nur mit Debian 4.0!" 20 exit 0 21 fi 22 if ! grep -q "[op][pa][e][nd]ML Linux 4\.0\.[4-9]" /etc/issue; then 23 echo "Das Upgrade funktioniert nur ab openML/paedML Linux 4.0.4!" 24 exit 0 25 fi 26 fi # force 27 28 curdir="${0%/*}" 29 cd $curdir 30 curdir=`pwd` 31 32 # check cdrom 33 cd /cdrom 34 if ! grep -q Glufamichel .disk/info &> /dev/null; then 35 echo "Das ist keine openML/paedML 5.0.x Installations-CD!" 36 exit 1 37 fi 38 39 # check md5 sums 40 echo -n "Pruefe CDROM ... " 41 md5sum --status -c md5sum.txt ; RC=$? 42 if [ "$RC" = "0" ]; then 43 echo "Ok!" 44 else 45 echo "Pruefsummenfehler!" 46 echo 47 exit 1 48 fi 49 echo 50 51 # update linuxmuster-base from cdrom 52 dpkg -i --force-confold --force-confdef /cdrom/pool/main/l/linuxmuster/linuxmuster-base_*.deb || exit 1 53 54 cp $LMLMOD/sources.list /etc/apt/sources.list 55 cp $LMLMOD/sources.list /var/lib/linuxmuster/config-static/etc/apt/sources.list 56 cp $LMLMOD/paedml50-upgrade.sh /usr/share/linuxmuster/upgrade/paedml50-upgrade.sh 57 echo 58 59 read linuxmuster environment 60 . /usr/share/linuxmuster/config/dist.conf || exit 1 61 . $HELPERFUNCTIONS || exit 1 62 echo 63 64 if ! check_free_space /var 1000000; then 65 echo "Zuwenig Speicherplatz unter /var. Stellen Sie sicher, dass dort 1GB freier Platz zur Verfügung steht." 66 exit 1 67 fi 68 69 # copy packages from cdrom to cache 70 cd /cdrom/pool || exit 1 71 echo "Kopiere Pakete ..." 72 for i in `find . -name \*.deb`; do 73 cp -v "$i" /var/cache/apt/archives 74 done 75 cd .. 76 77 . $DATADIR/upgrade/paedml50-upgrade.sh 2>&1 | tee -a $LOGDIR/paedml50-upgrade.log Bei der Übernahme dieses Textes mit Paste and Copy stören natürlich die Zeilennummern. Sie können entfernt werden, indem man den Text z. B. mit dem Freeware-Programm notepad++ bearbeitet und darin den regulären Ausdruck "[0-9][0-9] " (ohne Anführungszeichen) durch nichts ersetzt. ==== sources.list ==== # deb http://ftp.de.debian.org/debian/ lenny main contrib non-free # deb-src http://ftp.de.debian.org/debian/ lenny main contrib non-free # deb http://security.debian.org/ lenny/updates main contrib non-free # deb-src http://security.debian.org/ lenny/updates main contrib non-free # deb http://volatile.debian.org/debian-volatile lenny/volatile main # deb-src http://volatile.debian.org/debian-volatile lenny/volatile main deb http://archive.debian.org/debian/ lenny main contrib non-free deb-src http://archive.debian.org/debian/ lenny main contrib non-free deb http://archive.debian.org/debian-security/ lenny/updates main contrib non-free deb-src http://archive.debian.org/debian-security/ lenny/updates main contrib non-free deb http://archive.debian.org/debian-volatile/ lenny/volatile main deb-src http://archive.debian.org/debian-volatile/ lenny/volatile main ==== paedml50-upgrade.sh ==== Die Datei wird weitgehend so übernommen, wie sie durch das Update-Skript bei der Installation der Datei linuxmuster-base.* deb erzeugt wird. Die Zeilen 38 bis 41 bis wurden auskommentiert, neu eingefügt wurden die Zeilen 43 bis 46. 001 # 002 # paedML upgrade from 4.0.x to 5.0.x 003 # main script 004 # 005 # Thomas Schmitt 006 # 007 # GPL V3 008 # 009 # $Id: paedml50-upgrade.sh 1069 2011-04-18 09:35:22Z tschmitt $ 010 # 011 012 # environment variables 013 DHCPDYNTPLDIR=$DYNTPLDIR/03_dhcp3-server 014 BINDDYNTPLDIR=$DYNTPLDIR/04_bind9 015 LDAPDYNTPLDIR=$DYNTPLDIR/15_ldap 016 QUOTDYNTPLDIR=$DYNTPLDIR/18_quota 017 HORDDYNTPLDIR=$DYNTPLDIR/21_horde3 018 NAGIDYNTPLDIR=$DYNTPLDIR/22_nagios 019 FREEDYNTPLDIR=$DYNTPLDIR/55_freeradius 020 OPENML=`dpkg -l | grep "schulkonsole-templates-openlml" | grep ^i` 021 TEMPLBASE=`dpkg -l | grep "linuxmuster-schulkonsole-templates-base" | grep ^i | awk '{ print $2 }'` 022 PYKOTA=`dpkg -l | grep "linuxmuster-pk " | grep ^i` 023 BITTORRENT=`dpkg -l | grep " bittorrent " | grep ^i` 024 FREERADIUS=`dpkg -l | grep linuxmuster-freeradius | grep ^i` 025 PHPMYADMIN=`dpkg -l | grep phpmyadmin | grep ^i` 026 PHPPGADMIN=`dpkg -l | grep phppgadmin | grep ^i` 027 COPSPOT=`dpkg -l | grep linuxmuster-ipcop-addon-copspot | grep ^i` 028 NFSCOMMON=`dpkg -l | grep nfs-common | grep ^i | awk '{ print $2 }'` 029 NFSSERVER=`dpkg -l | grep nfs-kernel-server | grep ^i | awk '{ print $2 }'` 030 PKGSTOREMOVE="linuxmuster-freeradius linux-image-server phpmyadmin phppgadmin \ 031 linuxmuster-schulkonsole-templates-openlml mindi mondo nagios2 \ 032 nagios2-common nagios2-doc linuxmuster-nagios-base \ 033 postgresql-7.4 postgresql-8.1 postgresql-client-8.1 \ 034 libpq4 samba linuxmuster-pkpgcounter \ 035 python-egenix-mxtools python-egenix-mxdatetime \ 036 linuxmuster-pykota linuxmuster-pk linuxmuster-linbo sophomorix2 \ 037 sophomorix-base sophomorix-pgldap" 038 # PKGREPOS="ftp.de.debian.org/debian/ \ 039 # ftp.de.debian.org/debian-volatile/ \ 040 # security.debian.org \ 041 # pkg.lml.support-netz.de/paedml50-updates/" 042 043 PKGREPOS="archive.debian.org/debian/ \ 044 archive.debian.org/debian-volatile/ \ 045 archive.debian.org/debian-security \ 046 pkg.lml.support-netz.de/paedml50-updates/" 047 048 NOW=`date` 049 050 # messages for config file headers 051 message1="##### Do not change this file! It will be overwritten!" 052 message2="##### This configuration file was automatically created by paedml50-upgrade!" 053 message3="##### Last Modification: $NOW" 054 055 056 echo 057 echo "####################################################################" 058 echo "# paedML/openML Linux Distributions-Upgrade auf Debian 5.0.3 Lenny #" 059 echo "# Startzeit: $NOW #" 060 echo "####################################################################" 061 echo 062 063 064 echo "######################" 065 echo "# Internetverbindung #" 066 echo "######################" 067 cd /tmp 068 for i in $PKGREPOS; do 069 echo -n " * $i ... " 070 wget -q http://$i ; RC="$?" 071 rm index.html &> /dev/null 072 if [ "$RC" = "0" ]; then 073 echo "Ok!" 074 else 075 echo "keine Verbindung!" 076 exit 1 077 fi 078 done 079 echo 080 081 . /usr/share/linuxmuster/config/dist.conf 082 . $HELPERFUNCTIONS 083 084 echo "#######################" 085 echo "# Umgebungs-Variablen #" 086 echo "#######################" 087 for i in servername domainname internmask internsubrange imaging sambasid workgroup; do 088 RET=`echo get linuxmuster-base/$i | debconf-communicate` 089 RET=${RET#[0-9] } 090 esc_spec_chars "$RET" 091 if [ -z "$RET" ]; then 092 if [ "$i" = "imaging" ]; then 093 echo "set linuxmuster-base/imaging rembo" | debconf-communicate 094 RET=rembo 095 if grep -q ^imaging $NETWORKSETTINGS; then 096 sed -e 's/^imaging=.*/imaging=rembo/' -i $NETWORKSETTINGS 097 else 098 echo "imaging=rembo" >> $NETWORKSETTINGS 099 fi 100 else 101 echo " Fehler! $i ist nicht gesetzt!" 102 exit 1 103 fi 104 fi 105 eval $i=$RET 106 echo " * $i=$RET" 107 unset RET 108 done 109 internsub=`echo $internsubrange | cut -f1 -d"-"` 110 internbc=`echo $internsubrange | cut -f2 -d"-"` 111 serverip=10.$internsub.1.1 112 echo " * serverip=$serverip" 113 if ! validip "$serverip"; then 114 echo " Fehler! serverip ist ungueltig!" 115 exit 1 116 fi 117 ipcopip=10.$internsub.1.254 118 echo " * ipcopip=$ipcopip" 119 if ! validip "$ipcopip"; then 120 echo " Fehler! ipcopip ist ungueltig!" 121 exit 1 122 fi 123 broadcast=10.$internbc.255.255 124 echo " * broadcast=$broadcast" 125 internalnet=10.$internsub.0.0 126 echo " * internalnet=$internalnet" 127 basedn="dc=`echo $domainname|sed 's/\./,dc=/g'`" 128 echo " * basedn=$basedn" 129 echo 130 131 132 echo "######################" 133 echo "# Postgres-DB-Backup #" 134 echo "######################" 135 for i in `psql -t -l -U postgres | awk '{ print $1 }'`; do 136 case $i in 137 postgres|template0|template1) continue ;; 138 esac 139 if [ -s "$BACKUPDIR/$i/$i.lenny-upgrade.pgsql.gz" ]; then 140 echo "Sicherung von $i-Datenbank gefunden. Lasse $i aus!" 141 continue 142 fi 143 echo "Sichere $i-Datenbank nach $BACKUPDIR/$i/$i.lenny-upgrade.pgsql.gz ..." 144 RC=1 145 pg_dump --encoding=UTF8 -U postgres $i > /var/tmp/$i.lenny-upgrade.pgsql ; RC="$?" 146 if [ "$RC" != "0" ]; then 147 echo "Fehler bei der Sicherung der $i-Datenbank!" 148 rm -f /var/tmp/$i.lenny-upgrade.pgsql 149 exit 1 150 fi 151 mkdir -p "$BACKUPDIR/$i" 152 RC=1 153 gzip -c9 /var/tmp/$i.lenny-upgrade.pgsql > $BACKUPDIR/$i/$i.lenny-upgrade.pgsql.gz ; RC="$?" 154 if [ "$RC" != "0" ]; then 155 echo "Fehler bei der Komprimierung der $i-Datenbank!" 156 rm -f $BACKUPDIR/$i/$i.lenny-upgrade.pgsql.gz 157 exit 1 158 fi 159 done 160 echo 161 162 163 echo "#####################" 164 echo "# apt-Konfiguration #" 165 echo "#####################" 166 [ -e /etc/apt/sources.list.lenny-upgrade ] || cp /etc/apt/sources.list /etc/apt/sources.list.lenny-upgrade 167 [ -e /etc/apt/apt.conf ] && mv /etc/apt/apt.conf /etc/apt/apt.conf.lenny-upgrade 168 [ -d /etc/apt/sources.list.d.lenny-upgrade ] || mv /etc/apt/sources.list.d /etc/apt/sources.list.d.lenny-upgrade 169 cp -a $STATICTPLDIR/etc/apt/* /etc/apt 170 171 tweak_apt() { 172 export DEBIAN_FRONTEND=noninteractive 173 export DEBIAN_PRIORITY=critical 174 export DEBCONF_TERSE=yes 175 export DEBCONF_NOWARNINGS=yes 176 echo 'DPkg::Options {"--force-configure-any";"--force-confmiss";"--force-confold";"--force-confdef";"--force-bad-verify";"--force-overwrite";};' > /etc/apt/apt.conf.d/99upgrade 177 echo 'APT::Get::AllowUnauthenticated "true";' >> /etc/apt/apt.conf.d/99upgrade 178 } 179 180 # force apt to do an unattended upgrade 181 echo "Aktualisiere Paketlisten ..." 182 tweak_apt 183 if ! aptitude update; then 184 echo 185 echo "Fehler: Kann Paketlisten nicht aktualisieren." 186 exit 1 187 fi 188 echo 189 190 191 echo "#########################" 192 echo "# Pakete deinstallieren #" 193 echo "#########################" 194 aptitude -y remove $PKGSTOREMOVE 195 echo 196 197 198 echo "###############################" 199 echo "# Konfiguration aktualisieren #" 200 echo "###############################" 201 # uml utilities 202 echo " uml-utilities ..." 203 CONF=/etc/default/uml-utilities 204 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 205 cp $STATICTPLDIR/$CONF $CONF 206 207 # limits 208 echo " limits ..." 209 CONF=/etc/security/limits.conf 210 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 211 cp $STATICTPLDIR/$CONF $CONF 212 213 # bootlogd 214 echo " bootlogd ..." 215 CONF=/etc/default/bootlogd 216 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 217 cp $STATICTPLDIR/$CONF $CONF 218 219 # slapd 220 echo " slapd ..." 221 for i in /etc/ldap/slapd.conf /etc/default/slapd /var/lib/ldap/DB_CONFIG; do 222 [ -e "$i.lenny-upgrade" ] || cp $i $i.lenny-upgrade 223 if stringinstring slapd.conf $i; then 224 ldapadminpw=`grep ^rootpw $i | awk '{ print $2 }'` 225 sed -e "s/@@message1@@/${message1}/ 226 s/@@message2@@/${message2}/ 227 s/@@message3@@/${message3}/ 228 s/@@basedn@@/${basedn}/g 229 s/@@ipcopip@@/${ipcopip}/g 230 s/@@serverip@@/${serverip}/g 231 s/@@ldappassword@@/${ldapadminpw}/" $LDAPDYNTPLDIR/`basename $i` > $i 232 else 233 cp $STATICTPLDIR/$i $i 234 fi 235 done 236 chown root:openldap /etc/ldap/slapd.conf* 237 chmod 640 /etc/ldap/slapd.conf* 238 chown openldap:openldap /var/lib/ldap -R 239 chmod 700 /var/lib/ldap 240 chmod 600 /var/lib/ldap/* 241 242 # smbldap-tools 243 echo " smbldap-tools ..." 244 CONF=/etc/smbldap-tools/smbldap.conf 245 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 246 sed -e "s/@@sambasid@@/${sambasid}/ 247 s/@@workgroup@@/${workgroup}/ 248 s/@@basedn@@/${basedn}/" $LDAPDYNTPLDIR/`basename $CONF` > $CONF 249 CONF=/etc/smbldap-tools/smbldap_bind.conf 250 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 251 sed -e "s/@@message1@@/${message1}/ 252 s/@@message2@@/${message2}/ 253 s/@@message3@@/${message3}/ 254 s/@@basedn@@/${basedn}/g 255 s/@@ldappassword@@/${ldapadminpw}/g" $LDAPDYNTPLDIR/`basename $CONF` > $CONF 256 chmod 600 ${CONF}* 257 258 # apache2 259 echo " apache2 ..." 260 CONF=/etc/apache2/apache2.conf 261 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 262 cp $STATICTPLDIR/$CONF $CONF 263 rm -f /etc/apache2/mods-enabled/mime_magic.* 264 265 # nagios2 266 if [ -d /etc/nagios2 ]; then 267 echo " nagios2 ..." 268 CONF=/etc/nagios2/resource.cfg 269 [ -e "$CONF" ] || touch $CONF 270 CONF=/etc/apache2/conf.d/nagios2.conf 271 if [ -e "$CONF" ]; then 272 backup_file $CONF 273 rm -f $CONF 274 fi 275 fi 276 277 # saslauthd 278 echo " saslauthd ..." 279 CONF=/etc/default/saslauthd 280 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 281 cp $STATICTPLDIR/$CONF $CONF 282 283 # dhcp 284 echo " dhcp ..." 285 CONF=/etc/dhcp3/dhcpd.conf 286 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 287 sed -e "s/@@servername@@/${servername}/g 288 s/@@domainname@@/${domainname}/g 289 s/@@serverip@@/${serverip}/g 290 s/@@ipcopip@@/${ipcopip}/g 291 s/@@broadcast@@/${broadcast}/g 292 s/@@internmask@@/${internmask}/g 293 s/@@internsub@@/${internsub}/g 294 s/@@internalnet@@/${internalnet}/g" $DHCPDYNTPLDIR/`basename $CONF`.$imaging > $CONF 295 296 # bind9 297 echo " bind9 ..." 298 for i in db.10 db.linuxmuster named.conf.linuxmuster; do 299 CONF=/etc/bind/$i 300 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 301 sed -e "s/@@servername@@/${servername}/g 302 s/@@domainname@@/${domainname}/g 303 s/@@serverip@@/${serverip}/g 304 s/@@ipcopip@@/${ipcopip}/g 305 s/@@internsub@@/${internsub}/g" $BINDDYNTPLDIR/$i > $CONF 306 done 307 rm -f /etc/bind/*.jnl 308 309 # horde 3 310 echo " horde3 ..." 311 CONF=/etc/horde/horde3/registry.php 312 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 313 cp $STATICTPLDIR/$CONF $CONF 314 CONF=/etc/horde/horde3/conf.php 315 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 316 hordepw="$(grep "^\$conf\['sql'\]\['password'\]" $CONF | awk -F\' '{ print $6 }')" 317 sed -e "s/\$conf\['auth'\]\['admins'\] =.*/\$conf\['auth'\]\['admins'\] = array\('$WWWADMIN'\);/ 318 s/\$conf\['problems'\]\['email'\] =.*/\$conf\['problems'\]\['email'\] = '$WWWADMIN@$domainname';/ 319 s/\$conf\['mailer'\]\['params'\]\['localhost'\] =.*/\$conf\['mailer'\]\['params'\]\['localhost'\] = '$servername.$domainname';/ 320 s/\$conf\['problems'\]\['maildomain'\] =.*/\$conf\['problems'\]\['maildomain'\] = '$domainname';/ 321 s/\$conf\['sql'\]\['password'\] =.*/\$conf\['sql'\]\['password'\] = '$hordepw';/" $STATICTPLDIR/$CONF > $CONF 322 # imp 323 CONF=/etc/horde/imp4/conf.php 324 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 325 cp $STATICTPLDIR/$CONF $CONF 326 CONF=/etc/horde/imp4/servers.php 327 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 328 cyradmpw="$(cat /etc/imap.secret)" 329 sed -e "s/'@@servername@@.@@domainname@@'/'$servername.$domainname'/g 330 s/'@@domainname@@'/'$domainname'/g 331 s/'@@cyradmpw@@'/'$cyradmpw'/" $HORDDYNTPLDIR/imp4.`basename $CONF` > $CONF 332 # ingo 333 CONF=/etc/horde/ingo1/conf.php 334 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 335 cp $STATICTPLDIR/$CONF $CONF 336 # kronolith 337 CONF=/etc/horde/kronolith2/conf.php 338 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 339 sed -e "s/\$conf\['storage'\]\['default_domain'\] =.*/\$conf\['storage'\]\['default_domain'\] = '$domainname';/ 340 s/\$conf\['reminder'\]\['server_name'\] =.*/\$conf\['reminder'\]\['server_name'\] = '$servername.$domainname';/ 341 s/\$conf\['reminder'\]\['from_addr'\] =.*/\$conf\['reminder'\]\['from_addr'\] = '$WWWADMIN@$domainname';/" $STATICTPLDIR/$CONF > $CONF 342 # mnemo 343 CONF=/etc/horde/mnemo2/conf.php 344 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 345 cp $STATICTPLDIR/$CONF $CONF 346 # nag 347 CONF=/etc/horde/nag2/conf.php 348 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 349 cp $STATICTPLDIR/$CONF $CONF 350 # turba 351 CONF=/etc/horde/turba2/conf.php 352 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 353 cp $STATICTPLDIR/$CONF $CONF 354 # permissions 355 chown root:www-data /etc/horde -R 356 find /etc/horde -type f -exec chmod 440 '{}' \; 357 358 # php5 359 echo " php5 ..." 360 CONF=/etc/php5/conf.d/paedml.ini 361 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 362 cp $STATICTPLDIR/$CONF $CONF 363 CONF=/etc/php5/apache2/php.ini 364 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 365 cp $STATICTPLDIR/$CONF $CONF 366 CONF=/etc/php5/cli/php.ini 367 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 368 cp $STATICTPLDIR/$CONF $CONF 369 370 # mindi 371 echo " mindi ..." 372 CONF=/etc/mindi/mindi.conf 373 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 374 cp $STATICTPLDIR/$CONF $CONF 375 376 # warnquota 377 echo " warnquota ..." 378 CONF=/etc/warnquota.conf 379 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 380 sed -e "s|@@administrator@@|$ADMINISTRATOR|g 381 s|@@domainname@@|$domainname|g" $QUOTDYNTPLDIR/$(basename $CONF) > $CONF 382 383 # udev 384 echo " udev ..." 385 CONF="/etc/udev/persistent-net-generator-rules /etc/udev/rules.d/z25_persistent-net.rules" 386 for i in $CONF; do 387 [ -e "$i" ] && mv $i $i.lenny-upgrade 388 done 389 cp $STATICTPLDIR/etc/udev/rules.d/* /etc/udev/rules.d 390 391 # webmin 392 echo " webmin ..." 393 CONF=/etc/webmin/config 394 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 395 cp $STATICTPLDIR/$CONF $CONF 396 397 # fixing backup.conf 398 echo " backup ..." 399 CONF=/etc/linuxmuster/backup.conf 400 [ -e "$CONF.lenny-upgrade" ] || cp $CONF $CONF.lenny-upgrade 401 sed -e 's|postgresql-8.1|postgresql-8.3|g 402 s|nagios2|nagios3|g' -i $CONF 403 404 echo 405 406 407 echo "#########################" 408 echo "# Distributions-Upgrade #" 409 echo "#########################" 410 echo 411 412 echo "#############" 413 echo "# apt-utils #" 414 echo "#############" 415 aptitude -y install apt-utils tasksel debian-archive-keyring dpkg locales 416 tweak_apt 417 aptitude update 418 echo 419 420 echo "##############" 421 echo "# postgresql #" 422 echo "##############" 423 # tweaking kdm 424 CONF=/etc/init.d/kdm 425 if [ -e "$CONF" ]; then 426 mv $CONF $CONF.lenny-upgrade 427 echo "#!/bin/sh" > $CONF 428 echo "exit 0" >> $CONF 429 chmod 755 $CONF 430 fi 431 aptitude -y install postgresql 432 for i in postgresql postgresql-8.3 postgresql-client-8.3; do 433 # check installed ok 434 dpkg -s $i | grep -q ^"Status: install ok installed" || aptitude -y install $i 435 done 436 [ -e "$CONF.lenny-upgrade" ] && mv $CONF.lenny-upgrade $CONF 437 /etc/init.d/postgresql-8.3 stop 438 pg_dropcluster 8.3 main &> /dev/null 439 pg_createcluster 8.3 main 440 cp $STATICTPLDIR/etc/postgresql/8.3/main/* /etc/postgresql/8.3/main 441 /etc/init.d/postgresql-8.3 start 442 update-rc.d -f postgresql-7.4 remove 443 update-rc.d -f postgresql-8.1 remove 444 echo 445 446 # restore databases 447 for i in ldap moodle mrbs pykota; do 448 if [ -e "/var/tmp/$i.lenny-upgrade.pgsql" ]; then 449 dbuser=$i 450 case $i in 451 ldap) dbpw="$(grep ^Password /etc/linuxmuster/schulkonsole/db.conf | awk -F\= '{ print $2 }')" ;; 452 moodle) dbpw="$(grep \$CFG\-\>dbpass /etc/moodle/config.php | awk -F\' '{ print $2 }')" ;; 453 mrbs) dbuser="" 454 for p in /var/www/apache2-default /etc/www; do 455 if [ -e "$p/$i/config.inc.php" ]; then 456 dbuser="$(grep ^\$db_login $p/$i/config.inc.php | awk -F\" '{ print $2 }')" 457 [ -z "$dbuser" ] && dbuser="$(grep ^\$db_login $p/$i/config.inc.php | awk -F\' '{ print $2 }')" 458 dbpw="$(grep ^\$db_password $p/$i/config.inc.php | awk -F\" '{ print $2 }')" 459 [ -z "$dbpw" ] && dbpw="$(grep ^\$db_password $p/$i/config.inc.php | awk -F\' '{ print $2 }')" 460 fi 461 done ;; 462 pykota) dbuser=pykotaadmin 463 dbpw="$(grep -w ^storageadminpw /etc/pykota/pykotadmin.conf | awk -F\: '{ print $2 }' | awk '{ print $1 }')" 464 pkuser=pykotauser 465 pkpw="$(grep -w ^storageuserpw /etc/pykota/pykota.conf | awk -F\: '{ print $2 }' | awk '{ print $1 }')" ;; 466 *) dbuser="" ;; 467 esac 468 if [ -z "$dbuser" ]; then 469 echo "WARNUNG: Konnte Benutzer für Datenbank $i nicht bestimmen!" 470 echo "Überspringe das Wiederanlegen von $i. Bitte legen Sie die Datenbank nach dem Upgrade von Hand selbst an." 471 sleep 5 472 continue 473 fi 474 dbname=$i 475 [ "$i" = "mrbs" ] && dbname="mrbs " 476 echo "################################" 477 echo "# Restauriere Datenbank $dbname #" 478 echo "################################" 479 createuser -U postgres -S -D -R $dbuser 480 psql -U postgres -d template1 -qc "ALTER USER $dbuser WITH PASSWORD '"$dbpw"';" 481 if [ "$i" = "pykota" ]; then 482 createuser -U postgres -S -D -R $pkuser 483 psql -U postgres -d template1 -qc "ALTER USER $pkuser WITH PASSWORD '"$pkpw"';" 484 createdb -U postgres -O postgres $i 485 else 486 createdb -U postgres -O $dbuser $i 487 fi 488 psql -U postgres $i < /var/tmp/$i.lenny-upgrade.pgsql 489 fi 490 echo 491 done 492 493 echo "###############" 494 echo "# base-passwd #" 495 echo "###############" 496 tweak_apt 497 aptitude -y install passwd 498 # check for bittorrent user 499 id bittorrent &> /dev/null && BTUSER=yes 500 aptitude -y install base-passwd 501 # recreate bittorrent user removed by update-passwd 502 if [ -n "$BTUSER" ]; then 503 if ! grep -q ^bittorrent: /etc/group; then 504 groupadd -r bittorrent 505 fi 506 if ! grep -q ^bittorrent: /etc/passwd; then 507 useradd -r -d /home/bittorrent -c "bittorrent user" -g bittorrent -s /bin/bash bittorrent 508 fi 509 fi 510 echo 511 512 if [ -n "$BITTORRENT" ]; then 513 echo "##############" 514 echo "# bittorrent #" 515 echo "##############" 516 aptitude -y install bittorrent 517 chown bittorrent /var/log/bittorrent -R 518 chown bittorrent /var/lib/bittorrent -R 519 echo 520 fi 521 522 echo "################" 523 echo "# dist-upgrade #" 524 echo "################" 525 tweak_apt 526 aptitude -y safe-upgrade 527 aptitude -y dist-upgrade 528 aptitude -y dist-upgrade 529 aptitude -y purge avahi-daemon 530 echo 531 532 echo "##############" 533 echo "# sophomorix #" 534 echo "##############" 535 tweak_apt 536 rm $INSTALLED 537 aptitude -y install sophomorix2 538 touch $INSTALLED 539 echo 540 541 echo "###############" 542 echo "# common task #" 543 echo "###############" 544 tweak_apt 545 linuxmuster-task --unattended --install=common 546 echo 547 548 echo "###############" 549 echo "# server task #" 550 echo "###############" 551 tweak_apt 552 linuxmuster-task --unattended --install=server 553 echo 554 555 echo "############" 556 echo "# openldap #" 557 echo "############" 558 /etc/init.d/slapd stop 559 RC=1 560 slapcat > /var/tmp/ldap.ldif ; RC="$?" 561 if [ "RC" = "0" ]; then 562 mkdir -p $BACKUPDIR/ldap 563 gzip -c9 /var/tmp/ldap.ldif > $BACKUPDIR/ldap/ldap.lenny-upgrade.ldif.gz 564 rm -rf /etc/ldap/slapd.d 565 mkdir -p /etc/ldap/slapd.d 566 chattr +i /var/lib/ldap/DB_CONFIG 567 rm /var/lib/ldap/* &> /dev/null 568 chattr -i /var/lib/ldap/DB_CONFIG 569 slapadd < /var/tmp/ldap.ldif 570 chown openldap:openldap /var/lib/ldap -R 571 slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d 572 chown -R openldap:openldap /etc/ldap/slapd.d 573 fi 574 /etc/init.d/slapd start 575 echo 576 577 echo "################" 578 echo "# imaging task #" 579 echo "################" 580 tweak_apt 581 linuxmuster-task --unattended --install=imaging-$imaging 582 echo 583 584 if [ -n "$FREERADIUS" ]; then 585 echo "##########################" 586 echo "# linuxmuster-freeradius #" 587 echo "##########################" 588 tweak_apt 589 aptitude -y install freeradius freeradius-ldap 590 aptitude -y install linuxmuster-freeradius 591 CONF=/etc/freeradius/clients.conf 592 if [ -s "$CONF" -a -d "$FREEDYNTPLDIR" -a ! -e "$CACHEDIR/.freeradius.upgrade50.done" ]; then 593 echo "Aktualisiere freeradius ..." 594 # fetch radiussecret 595 found=false 596 while read line; do 597 if [ "$line" = "client $ipcopip {" ]; then 598 found=true 599 continue 600 fi 601 if [ "$found" = "true" -a "${line:0:6}" = "secret" ]; then 602 radiussecret="$(echo "$line" | awk -F\= '{ print $2 }' | awk '{ print $1 }')" 603 fi 604 [ -n "$radiussecret" ] && break 605 done <$CONF 606 # patch configuration 607 for i in $FREEDYNTPLDIR/*.target; do 608 targetcfg=`cat $i` 609 sourcetpl=`basename $targetcfg` 610 [ -e "$targetcfg" ] && cp $targetcfg $targetcfg.lenny-upgrade 611 sed -e "s|@@package@@|linuxmuster-freeradius| 612 s|@@date@@|$NOW| 613 s|@@radiussecret@@|$radiussecret| 614 s|@@ipcopip@@|$ipcopip| 615 s|@@ldappassword@@|$ldapadminpw| 616 s|@@basedn@@|$basedn|" $FREEDYNTPLDIR/$sourcetpl > $targetcfg 617 chmod 640 $targetcfg 618 chown root:freerad $targetcfg 619 done # targets 620 touch $CACHEDIR/.freeradius.upgrade50.done 621 fi 622 echo 623 fi 624 625 if [ -n "$COPSPOT" ]; then 626 echo "###########" 627 echo "# copspot #" 628 echo "###########" 629 aptitude -y install linuxmuster-ipcop-addon-copspot 630 echo 631 fi 632 633 if [ -n "$PYKOTA" ]; then 634 echo "##################" 635 echo "# linuxmuster-pk #" 636 echo "##################" 637 tweak_apt 638 aptitude -y install linuxmuster-pk 639 echo 640 fi 641 642 if [ -n "$PHPMYADMIN" ]; then 643 echo "##############" 644 echo "# phpmyadmin #" 645 echo "##############" 646 tweak_apt 647 aptitude -y install phpmyadmin 648 echo 649 fi 650 651 if [ -n "$PHPPGADMIN" ]; then 652 echo "##############" 653 echo "# phppgadmin #" 654 echo "##############" 655 tweak_apt 656 aptitude -y install phppgadmin 657 echo 658 fi 659 660 if [ -n "$OPENML" ]; then 661 echo "##########" 662 echo "# openML #" 663 echo "##########" 664 tweak_apt 665 echo "deb http://www.linuxmuster.net/openlml-unsupported/ openlml/" > /etc/apt/sources.list.d/openml.list 666 aptitude update 667 aptitude -y install linuxmuster-schulkonsole-templates-openlml 668 echo 669 else 670 echo "##########" 671 echo "# paedML #" 672 echo "##########" 673 indexpage="$(ls -t /var/cache/apt/archives/linuxmuster-indexpage_5.0*.deb 2> /dev/null | head -1)" 674 schukotempl="$(ls -t /var/cache/apt/archives/linuxmuster-schulkonsole-templates-paedml_*.deb 2> /dev/null | head -1)" 675 [ -s "$indexpage" ] && dpkg -i $indexpage 676 if [ -s "$schukotempl" ]; then 677 [ -n "$TEMPLBASE" ] && dpkg -r --force-all $TEMPLBASE &> /dev/null 678 dpkg -i $schukotempl 679 fi 680 echo 681 fi 682 683 # horde3, db and pear upgrade 684 echo "##########" 685 echo "# horde3 #" 686 echo "##########" 687 HORDEUPGRADE=/usr/share/doc/horde3/examples/scripts/upgrades/3.1_to_3.2.mysql.sql 688 KRONOUPGRADE=/usr/share/doc/kronolith2/examples/scripts/upgrades/2.1_to_2.2.sql 689 MNEMOUPGRADE=/usr/share/doc/mnemo2/examples/scripts/upgrades/2.1_to_2.2.sql 690 NAGUPGRADE=/usr/share/doc/nag2/examples/scripts/upgrades/2.1_to_2.2.sql 691 TURBAUPGRADE=/usr/share/doc/turba2/examples/scripts/upgrades/2.1_to_2.2_add_sql_share_tables.sql 692 for i in $HORDEUPGRADE $KRONOUPGRADE $MNEMOUPGRADE $NAGUPGRADE $TURBAUPGRADE; do 693 t="$(echo $i | awk -F\/ '{ print $5 }')" 694 if [ -e "$CACHEDIR/.${t}.upgrade50.done" ]; then 695 echo "$t wurde schon aktualisiert. Überspringe $t." 696 continue 697 elif [ ! -s "$i" ]; then 698 echo " Fehler: $i nicht gefunden! Überspringe $t!" 699 continue 700 else 701 echo " Aktualisiere $t ..." 702 fi 703 mysql horde < $i && touch $CACHEDIR/.${t}.upgrade50.done 704 done 705 echo 706 707 # check for nfs 708 if [ -n "$NFSSERVER" ]; then 709 echo "##############" 710 echo "# nfs-server #" 711 echo "##############" 712 aptitude -y install $NFSSERVER 713 else 714 if [ -n "$NFSCOMMON" ]; then 715 echo "##############" 716 echo "# nfs-common #" 717 echo "##############" 718 aptitude -y install $NFSCOMMON 719 fi 720 fi 721 722 echo "#############" 723 echo "# Aufräumen #" 724 echo "#############" 725 # remove apt.conf stuff only needed for upgrade 726 rm -f /etc/apt/apt.conf.d/99upgrade 727 # final stuff 728 dpkg-reconfigure linuxmuster-base 729 linuxmuster-nagios-setup 730 if grep paedML /etc/issue; then 731 sed -e 's|openML|paedML|g' -i /etc/nagios3/conf.d/linuxmuster_main.cfg 732 else 733 sed -e 's|paedML|openML|g' -i /etc/nagios3/conf.d/linuxmuster_main.cfg 734 fi 735 736 echo 737 738 echo "######################" 739 echo "# Workstationsimport #" 740 echo "######################" 741 # temporarily deactivation of internal firewall 742 . /etc/default/linuxmuster-base 743 [ "$START_LINUXMUSTER" = "[Yy][Ee][Ss]" ] && sed -e 's|^START_LINUXMUSTER=.*|START_LINUXMUSTER=no|' -i /etc/default/linuxmuster-base 744 import_workstations 745 [ "$START_LINUXMUSTER" = "[Yy][Ee][Ss]" ] && sed -e 's|^START_LINUXMUSTER=.*|START_LINUXMUSTER=yes|' -i /etc/default/linuxmuster-base 746 echo 747 748 echo "#############################################" 749 echo "# Beendet um `date`. #" 750 echo "# Starten Sie den Server neu! #" 751 echo "#############################################" 752 echo Bei der Übernahme dieses Textes mit Paste and Copy stören natürlich die Zeilennummern. Sie können entfernt werden, indem man den Text z. B. mit dem Freeware-Programm notepad++ bearbeitet und darin den regulären Ausdruck "[0-9][0-9][0-9] " (ohne Anführungszeichen) durch nichts ersetzt. ==== Non-free Komponente ==== Beim Upgrade wird der bisherige Skin der Schulkonsole durch eine sehr abgespeckte Variante ersetzt, da der Skin keine "freie" Komponente ist. Der Skin wird wieder hergestellt, indem an der Konsole die Datei **paedML_Linux_5.0.1-nonfree-components_201104061.run** ausgeführt ist. Diese Datei erhält man als Kunde beim LMZ.