Eigene Patch-CD für SuSE Linux

22.03.2005 von Mike Hartmann
Auch ein Linux-System ist nur dann wirklich sicher, wenn es regelmäßig aktualisiert wird. Wie Sie sich alle relevanten Patches komfortabel herunterladen und sie per CD oder USB-Stick einspielen, zeigt dieser Beitrag.

SuSE bietet mit dem YaST Online Update (You) eine komfortable Möglichkeit, die Linux-Installation automatisch oder per Knopfdruck zu aktualisieren. YaST verbindet sich dabei mit einem Update-Server, holt eine Liste aller Aktualisierungen und gleicht diese dann mit dem System ab. Alle geänderten Pakete werden nun zum Download angeboten, und der Anwender kann auswählen, welche er wirklich einspielen will.

Aus zwei Gründen kann diese Vorgehensweise allerdings nicht erwünscht sein.

Zum einen macht es bei mehreren zu wartenden Systemen keinen Sinn, für jeden Rechner einzeln die Updates herunterzuladen. Und zum anderen ist es durchaus möglich, dass das zu aktualisierende System nur über eine schmalbandige Internet-Anbindung verfügt. Der Download mehrerer hundert MByte an Updates würde dann viel zu lange dauern.

Anstatt You zu verwenden, können Sie die Updates allerdings auch manuell laden und dann über ein Wechselmedium wie CD, DVD oder USB-Stick oder ein Netzwerk-Laufwerk auf den Rechnern einspielen. Wenn Sie in der Firma Updates für Ihr privates System laden wollen, sollte Ihr Arbeitgeber der privaten Nutzung des Internet-Zugangs zugestimmt haben. Andernfalls können arbeitsrechtliche Probleme auftreten.

Grundvoraussetzungen

Wenn Sie eine Patch-CD, einen USB-Stick oder ein Netzwerk-Laufwerk als Quelle für Updates verwenden wollen, müssen die Update-Informationen in einer bestimmten Verzeichnisstruktur auf dem Medium abgelegt sein. YaST erwartet zunächst die Angabe der Architektur. Die wichtigsten Architektur-Bezeichnungen im Intel- und AMD-Umfeld sind i386, ia64 und x86_64.

Architektur-Kürzel

Kürzel

Beschreibung

i386

32-Bit-Intel und kompatibel, also ab 386 aufwärts bis P4 und Xeon, sowie AMD und Cyrix

ia64

Intel Itanium und Itanium2

x86_64

64-Bit-Extended. AMD Athlon64, Hammer und Opteron sowie Intel Prescott, Nocona und Potomac

Unterhalb des Verzeichnisses, das die Architektur angibt, folgt ein Ordner namens update und darunter einer, der die Version kennzeichnet - also beispielsweise 9.2. Ein Update-Ordner für ein SuSE Linux 9.2 mit Paketen für einen Intel P4 würde also i386/update/9.2 heißen.

Weiterverwenden der You-Pakete

Die erste Option besteht darin, dass Sie die von YaST Online Update heruntergeladenen Pakete auch bei anderen Installationen weiter verwenden. You legt alle empfangenen Pakete im Verzeichnis /var/lib/YaST2/you/mnt/i386/update/<version> ab. Bei SuSE Linux 9.2 also in /var/lib/YaST2/you/mnt/i386/update/9.2.

Voraussetzung ist dabei, dass Sie die heruntergeladenen Pakete nach der Installation nicht automatisch löschen lassen. Deshalb wählen Sie beim Update die Option "Quellpakete nach der Installation löschen" ab.

Laden der Patches mittels FTP

You lädt nur Aktualisierungen für installierte Pakete herunter. Dementsprechend macht die Variante mit You nur Sinn, wenn Sie identische SuSE-Installationen haben. Sie können jedoch auch alle vorhandenen Patches herunterladen. Dazu benötigen Sie zunächst ein Verzeichnis, in dem Sie die benötigte Verzeichnisstruktur anlegen - beispielsweise

mkdir -p /tmp/updateroot/i386/update/9.2

Danach gehen Sie mit einem FTP-Client auf einen Mirror-Server von SuSE und wechseln in das entsprechende Spiegelverzeichnis. Auf ftp.leo.org ist das beispielsweise /mirrors/ftp.suse.com/suse. Die Updates finden Sie im Unterverzeichnis i386/update/9.2. Kopieren Sie die Ordner patches, scripts und misc komplett auf Ihr lokales System in den Ordner /tmp/updateroot/i386/update/9.2/, so dass die Verzeichnisse auch auf Ihrem System eingerichtet werden.

Legen Sie dann ein lokales Unterverzeichnis deltas an. In dieses transferieren Sie vom FTP-Server aus dem Verzeichnis delta alle Dateien mit der Maske *.i586.delta.rpm. Verfügen Sie über ein 64-Bit-Extended-System, kopieren Sie stattdessen *.x86_64.delta.rpm.

RPMs per FTP

Zu guter Letzt kommen die eigentlichen RPMs an die Reihe. Legen Sie lokal ein Verzeichnis namens rpm unterhalb von 9.2 an und wechseln Sie auf dem FTP-Server in den gleichnamigen Ordner. Dort finden Sie die vier Unterordner i586, noarch, src und x86_64.

Beim Kopieren des Ordners i586 ist jedoch zu beachten, dass Sie nur die Dateien mit der Maske *.i586.patch.rpm herunterladen, sofern Sie Zugriff auf die Original-SuSE-CD haben. Denn die Patch-Dateien enthalten nur die Unterschiede zum Original. Andernfalls benötigen Sie nur die Dateien mit der Maske *.i586.rpm.

Der Grund: Auf dem Update-Server sind alle Pakete einmal als die Original-Datei (paketname_inkl_version.i586.rpm) und als Verweis (paketname.rpm) auf die Original-Datei abgelegt. Machen Sie diese Einschränkung nicht, wird jede Datei doppelt heruntergeladen.

Auf jeden Fall benötigen Sie die kompletten Kernel-Pakete. Also je nach System Dateien mit kernel-default*, kernel-bigsmp* oder kernel-smp*. Für alle Systeme brauchen Sie kernel-syms*, und den Sourcecode finden Sie in kernel-source*. Zusätzlich sind die Dateien mit der Endung *.info hilfreich, denn sie enthalten zu jedem Update-Paket eine Beschreibung.

Laden der Patches mittels rsync

Einfacher und komfortabler können Sie die relevanten Update-Dateien mittels rsync auf Ihren Rechner holen. Per Default wird rsync bei SuSE Linux 9.2 allerdings nicht installiert, Sie müssen es also zunächst auf Ihrem System per YaST einrichten.

Nach der Installation von rsync können Sie von einem FTP-Server, der auch rsync unterstützt, mittels einer Kommandozeile automatisch alle Updates holen lassen. Das Praktische an diesem Verfahren ist, dass folgende Aufrufe derselben Befehlssequenz nur neue oder geänderte Dateien übertragen. Sie könnten also beispielsweise in einem cron-Job jeden Morgen ein Shell-Script aufrufen, das die neuesten Updates herunterlädt.

Ein FTP-Server mit Unterstützung für rsync ist beispielsweise ftp.leo.org. Ziel ist wiederum, nur bestimmte Dateien zu laden und andere auszulassen. Im Beispiel benötigen wir alle Dateien außer denen in Verzeichnissen namens src (--exclude "src"), denen für die Extended Architecture (--exclude "x86_64/" und --exclude "*.x86_64.delta.rpm") und den vollen Paketen (--exclude "*.i586.rpm"). Da mit Letzterem auch der Kernel ausgeschlossen wird, sorgen die drei Include-Befehle dafür, dass er explizit wieder in die Liste aufgenommen wird.

rsync -rltuzv --stats --progress --delete --delete-excluded \\
--include "kernel-default*.i586.rpm" \\
--include "kernel-source*.i586.rpm" \\
--include "kernel-syms*.i586.rpm" \\
--exclude "*.i586.rpm" \\
--exclude "src/" \\
--exclude "x86_64/" \\
--exclude "*.x86_64.delta.rpm" \\
ftp.leo.org.de::suse/i386/update/9.2 /tmp/updateroot/i386/update/

Brennen der Update-Dateien auf CD

Nun können Sie alle Verzeichnisse unterhalb von updateroot einfach auf einen USB-Stick kopieren oder auf eine CD brennen. Letzteres erledigen Sie schnell mit folgenden Kommandozeilen. Mittels

mkisofs -v -r -J -V "SuSE Update CD" -o /tmp/image.img /tmp/updateroot/

erstellen Sie ein ISO-Image und mit

cdrecord -v -eject dev=/dev/hdc driveropts=burnproof /tmp/image.img

schreiben Sie es auf den CD-Rohling. Dabei müssen Sie lediglich /dev/hdc durch den Device-Bezeichner Ihres Brenners ersetzen.

Einspielen der Updates vom Medium

Um die Updates dann auf dem Zielsystem einzuspielen, legen Sie das Medium ein, mounten es und starten YaST. Dort wählen Sie "Online-Update" und geben als Installationsquelle "Benutzerdefinierter Pfad" an. Unter Pfad tragen Sie den Mount-Point des Mediums ein. Im Falle einer CD als Medium können Sie auch einfach "Patch CD-Update" anwählen, dann ist das CD-Laufwerk als Quellmedium schon vorgewählt.

Dann wählen Sie wie gehabt die zu aktualisierenden Pakete aus, und YaST übernimmt den Rest. Wollen Sie in einem Netzwerk zentral mehrere SuSE-Stationen auf dem neuesten Stand halten, verwenden Sie eine als Update-Server, der per rsync und cron-Job regelmäßig alle neuesten Patches in einem per SMB-Freigabe zugänglichen Pfad ablegt.

Auf den Stationen richten Sie über YaST ein vollautomatisches Update ein, das als Installationsquelle die Freigabe verwendet und sie regelmäßig auf neue Dateien überprüft. (mha)