GästebuchIhr Eintrag in unser Gästebuch KontaktNehmen Sie Kontakt mit den Autoren auf ArchivAlle Unixwerk- Artikel seit 2003
28. Juni 2004

Wie kann ich von einer älteren Slackware-Version auf 10.0 upgraden?

Inhalt

  1. Umbenennen aller installierten Pakete
  2. Das System in den Single-User-Mode bringen
  3. Neue »glibc« installieren
  4. Neue »pkgtools« installieren
  5. Alle gewünschten Pakete neu installieren
  6. Alte Pakete deinstallieren
  7. Alle gewünschten Pakete noch einmal installieren
  8. Anpassen der Start-Skripts und einiger Konfigurationsdateien
  9. Warum das ganze?

 

Seit Version 8.1 verwendet Patrick Volkerding für seine Linux-Distribution eine andere Namenskonvention für Pakete. Dies war Anlass für Patrick ein Verfahren zum Upgrade von 8.0 (oder einer älteren Version) auf 8.1 zu veröffentlichen, das auf den ersten Blick zwar gruselig aussah, jedoch in der Praxis überzeugen konnte.

Möchte man nun sein System aber von einer späteren Version (8.1 - 9.1) auf 10.0 hochziehen, kann man nicht auf dieses Verfahren zurückgreifen, da die Namenskonvention für Pakete beibehalten wurde.

Dieses Dokument beschreibt einen Weg, dieses Verfahren in abgewandelter Form dennoch anzuwenden.

 

I. Umbenennen aller installierten Pakete

 darkstar# cd /var/log/packages
 darkstar# for i in * ; do mv $i _remove_$i ; done
 darkstar# cd /var/log/scripts
 darkstar# for i in * ; do mv $i _remove_$i ; done

Pakete, die Sie beibehalten möchten, weil sie aus anderen Quellen kommen (z.B. von www.LinuxPackages.net), benennen Sie einfach wieder um.

 

II. Das System in den Single-User-Mode bringen

 darkstar# telinit 1

 

III. Neue »glibc« installieren

Angenommen die Slackware-CD ist unter /cdrom in den Verzeichnisbaum eingehängt:

 darkstar# installpkg /cdrom/slackware/a/glibc-solibs-*.tgz

 

IV. Neue »pkgtools« installieren

 darkstar# installpkg /cdrom/slackware/a/pkgtools-*.tgz

 

V. Alle gewünschten Pakete neu installieren

Dies kann auf mehrere Arten geschehen. Paketserien, die komplett installiert werden sollen, werden wie folgt installiert. Im Beispiel werden die wichtigsten Paketserien a, ap und n komplett installiert:

 darkstar# installpkg /cdrom/slackware/a/*.tgz

 darkstar# installpkg /cdrom/slackware/ap/*.tgz
 darkstar# installpkg /cdrom/slackware/n/*.tgz

Weitere Paketserien müssen an dieser Stelle nicht unbedingt schon installiert werden; es reicht wenn diese unter VII. einmal installiert werden. Das spart Zeit.

Möchten Sie die genannten Serien nicht komplett installieren, können Sie die Skripts install-packages verwenden, die für alle Paketserien zur Verfügung stehen, also z.B.

 darkstar# cd /cdrom/slackware/n/
 darkstar# ./install-packages

Aus interaktiven Menüs können die gewünschten Pakete ausgewählt werden. Als Alternative empfiehlt sich pkgtool. Ich hatte Probleme mit install-packages bei diesem Upgrade.

 

VI. Alte Pakete deinstallieren

Nun können die alten Pakete, die wir unter I. umbenannt hatten, deinstalliert werden:

 darkstar# cd /var/log/packages
 darkstar# removepkg _remove_*

Falls Sie Probleme mit dem obigen removepkg-Befehl haben ([: Too many arguments oder etwas von der Sorte), benutzen Sie stattdessen find:

 darkstar# cd /var/log/packages
 darkstar# find -name '_remove_*' -exec removepkg {} \;

Jetzt ist Kaffeetrinken angesagt, da der Inhalt jedes einzelnen zu löschenden Paketes gegen den Inhalt aller anderen Pakete gecheckt wird, bevor es gelöscht wird. Das kann gut und gerne ein paar Stunden dauern.

 

VII. Alle gewünschten Pakete noch einmal installieren

Zu diesem Zeitpunkt kann endlich alles installiert werden, was gewünscht wird. Dies umschließt zwingend auch alle unter VI. bereits installierten Pakete.

Wie unter VI. bereits beschrieben, kann für die Installation ganzer Paketserien installpkg verwendet werden; ansonsten bietet sich das Skript install-packages an.

 

VIII. Anpassen der Start-Skripts und einiger Konfigurationsdateien

Die alten Start-Skripts im Verzeichnis /etc/rc.d wurden durch diesen Upgrade-Prozess nicht überschrieben. Dies hat den Vorteil, dass beispielsweise die IP-Konfiguration des Systems ebenso erhalten geblieben ist wie die Einträge in /etc/rc.d/rc.local.

Der Nachteil ist, dass Änderungen im Boot-Prozess, die Bestandteil der neuen Slackware-Version sind, nicht nachgezogen wurden. Die zur Version 10.0 passenden Skripts liegen im Verzeichnis /etc/rc.d/ mit der Endung .new. Die meisten können einfach über die alten kopiert werden.

Ausnahmen sind:

a) In der Datei rc.inet1.conf sollten die Werte für

oder

angepasst werden. Gegebenenfalls ebenfalls die Werte für die zweite Netzwerkkarte. Falls Sie von 9.1 auf 10.0 upgraden, können Sie rc.inet1.conf.new einfach löschen, da sich das Format nicht geändert hat.

b) In der Datei rc.modules muss das Kommentarzeichen ('#') vor den Modulen, die bereits beim Systemstart geladen werden sollen, entfernt werden. Ersatzweise kann -- wenn keine neue Hardware vorhanden ist -- die alte Datei beibehalten werden.

c) Die Datei rc.local muss nicht durch die neue Version ersetzt werden.

Eine ganze Reihe von Konfigurationsdateien im /etc-Verzeichnis werden durch das Upgrade ebenfalls nicht angefasst, sondern mit der Endung .new neben die alten kopiert. Bei mir sah es so aus:

 darkstar# cd /etc

 darkstar# find . -name '*.new'
 ./csh.login.new
 ./profile.new
 ./profile.d/lang.csh.new
 ./profile.d/lang.sh.new
 ./passwd.new
 ./shadow.new
 ./group.new
 ./hotplug/blacklist.new
 ./ifhp.conf.new
 ./inetd.conf.new
 ./lftp.conf.new
 ./lpd.perms.new
 ./lpd.conf.new
 ./apache/mod_ssl.conf.new
 ./ssh/sshd_config.new
 ./identd.conf.new
 ./mail/sendmail.cf.new
 ./login.defs.new

Dateien, die man niemals angepasst hat, wird man durch die neuen ersetzen wollen; für die anderen muss im Einzelfall geprüft werden, ob die alte Konfigurationsdatei beibehalten werden kann oder die neue angepasst werden muss.

Insbesondere bei den Dateien /etc/group, /etc/passwd und /etc/shadow, sollte man überprüfen, ob neue Systembenutzer bzw. -gruppen hinzugekommen sind. Beim Upgrade von 9.1 auf 10.0 ist dies nicht der Fall; die alten Dateien können also beibehalten werden.

Ein Hinweis an dieser Stelle zum X-Server. Da Slackware, wie viele andere Distributionen auch, von XFree zu X.org gewechselt ist, wird die alte Konfigurationsdatei nicht mehr gelesen. Die neue heißt jetzt /etc/X11/xorg.conf. Kopieren Sie einfach /etc/X11/XF86Config über die neue. Das Format hat sich nicht geändert.

 

IX. Warum das ganze?

Bleibt die Frage, was das ganze soll. Wäre eine Neuinstallation nicht der einfachere und sauberere Weg?

Der Vorteil des beschriebenen Upgrades gegenüber einer Neuinstallation ist, dass wichtige Verzeichnisse wie /home oder nicht über die Paketverwaltung nachinstallierte Software unter /opt bestehen bleiben und das zeitaufwendige Rücksichern solcher Bereiche entfällt.

Auf diese Weise lassen sich auch Systeme, die über kein (bootfähiges) CDROM-Laufwerk verfügen über Netz updaten.

Darüberhinaus bleiben die Einträge in den vielen Konfigurationsdateien unter /etc bestehen.