Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:aktualisierung_des_servers:verspaetetes_upgrade_von_ver._4.0.4_4.0.5_4.0.6_auf_ver._5.0.x]] 

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 # <schmitt@lmz-bw.de>
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 # <schmitt@lmz-bw.de>
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.

 [[anwenderwiki:aktualisierung_des_servers:verspaetetes_upgrade_von_ver._4.0.4_4.0.5_4.0.6_auf_ver._5.0.x]] anwenderwiki/aktualisierung_des_servers/verspaetetes_upgrade_von_ver._4.0.4_4.0.5_4.0.6_auf_ver._5.0.x.txt · Zuletzt geändert: 2013/01/09 21:46 von 127.0.0.1