{{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.