openSuSE10.2 Updateserver selbst gemacht

Wer viele openSuSE-PCs im LAN betreibt, wünscht sich sicher einen lokalen Updateserver, den alle Clients via smart als Updatequelle nutzen können. Dies spart Bandbreite und die Updates können z.B. nachts oder am Wochende heruntergeladen werden.

Ich gehe davon aus, dass Sie wissen, wie man Pakete installiert, einen ftp-Server konfiguriert, Konfigurationsdateien schreibt/ändert usw. Beschrieben wird ein Update-Server für openSUSE10.2-Clients.

So gehts Schritt-für-Schritt:

Zuerst die Server-Installation:

  • Installieren Sie einen ftp-Server (z.B. vsftp).
  • Konfigurieren Sie diesen, dass er anonyme Anfragen zuläßt.
  • Hier in meinem LAN etwa ist das ftp-root /home/ftp/download auf dem Server samba. Mit folgendem Befehl erstellen Sie einen Mirror der Update-quellen: # mkdir /home/ftp/download/10.2
    cd /home/ftp/download/10.2
    /usr/bin/rsync -avrl --stats --delete --exclude-from=../list ftp5.gwdg.de::pub/linux/suse/ftp.suse.com/suse/update/10.2/ . 1>../you_server_update_result_10.2
    (Achtung: von /usr bis zum Ende der letzten Zeile alles in eine Zeile schreiben!).
    Ich nutze rsync. Der Parameter
    exclude-from=../list
    liest eine Datei "list" aus, die als Einträge
    *src*
    *ppc*
    *_64*
    *OpenOffice*
    hat. Dies sorgt dafür, dass nur die Architektur i386_32bit gespiegelt wird. OpenOffice wird über eine andere Quelle synchronisiert, deshalb ist es hier in der exclude-list enthalten. Der nächste Parameter nimmt Kontakt mit dem Server
    ftp5.gwdg.de::pub/linux/suse/ftp.suse.com/suse/update/10.2/
    auf. Der zweifache Doppelpunkt bewirkt, dass keine Username/Passwort-abfrage stattfindet, sondern dass man mit einem laufenden rsync-daemon auf dem Remotesystem spricht. Dies geschieht üblicherweise auf TCP/873. Auf dem Server ftp5.gwdg.de läuft so ein Daemon. Dann kommt der Punkt (.) für das Ziel, das aktuelle Verzeichnis. Der abschließende "/" hinter der Quelle sagt rsync, dass er vom Zielverzeichnis aus (.) nicht nochmal die gesamte Verzeichnisstruktur der Quelle aufbauen soll, sondern die gefundenen Dateien ohne vorangehende Verzeichnisstruktur ablegen soll. Schwierig zu erklären, siehe # man rsync 1>../you_server_update_result_10.2
    bewirkt, dass die Konsolausgaben in einer Logdatei landen, die ich hinterher per mail verschicken kann.
    Das erstmalige Synchronisieren dauert etwas (bei mir hier mit 1024kbps etwa 6 Stunden).
  • Danach liegen 3 Verzeichnisse im Verzeichnis 10.2:
    repodata
    rpm
    scripts

    repodata enthält v.a. xml-Dateien, die die Patches beschreiben, rpm enthält die eigentlichen Patches und scripts enthält ein script zum Holen von Mirco$oft-fonts. Naja. Der Prozess der Aktualisierung der drei Verzeichnisse läßt sich über cron prima automatisieren.

Jetzt gehts zu den Clients:

  • Installieren Sie smart. (Achtung, nicht die smartmon-tools, die sind zur Überwachung von IDE-Festplatten da.)
  • Erstellen Sie eine Datei /etc/smart/channels auf dem Client: [samba-oss10.2]
    type = rpm-md
    name = openSuSE 10.2 update repository
    baseurl = ftp://samba/download/10.2/
    Der Eintrag in [...] ist eine freie Zeichenkette. Nehmen Sie was sprechendes.
    type ist rpm-md
    name ist frei und sprechend
    baseurl ist das Verzeichnis über den drei oben genannten Verzeichnissen.
  • Geben Sie auf dem Client als root folgendes in eine Konsole ein:
    # smart channel --remove-all
    # smart channel -y --add /etc/smart/channels
    # smart update
    Dies leert erst mal den Cache des smart-clients.
    Dann fügt man den neuen Channel aus der Datei /etc/smart/channels hinzu.
    Zuletzt wird der lokale Cache wieder aufgefrischt, so dass der smart-Client weiß,
  • was er beim Befehl # smart upgrade patchen soll.
  • Das wars auch schon. smart upgrade läßt sich natürlich auch über cron steuern. Wer dies vor hat, sollte smart upgrade -y in die crontab schreiben, da damit alle Fragen von smart automatisch mit "ja" beantwortet werden.
  • Eine Liste von aktuellen smart-channels und mirrors findet sich hier .