A.8. Benutzen von CVSup (veraltet)

A.8.1. Einführung

CVSup ist eine Anwendung, die Verzeichnisbäume von einem entfernten CVS-Server bereitstellt und aktualisiert. Die Quellen von FreeBSD werden in einem CVS-Repository auf einer Entwicklungsmaschine in Kalifornien gepflegt. Mit CVSup können sich FreeBSD-Benutzer den eigenen Quellbaum auf aktuellem Stand halten.

Zum Aktualisieren benutzt CVSup die Pull-Methode, bei der die Aktualisierungen vom Client angefragt werden. Der Server wartet dabei passiv auf Anfragen von Clients, das heißt er verschickt nicht unaufgefordert Aktualisierungen. Somit gehen alle Anfragen vom Client aus und die Benutzer müssen CVSup entweder manuell starten oder einen cron Job einrichten, um regelmäßig Aktualisierungen zu erhalten.

CVSup in genau dieser Schreibweise bezeichnet die Anwendung, die aus dem Client cvsup und dem Server cvsupd besteht. cvsup läuft auf den Maschinen der Benutzer, cvsupd läuft auf jedem der FreeBSD-Spiegel.

Anmerkung:

Mit csup gibt es in inzwischen auch eine in C geschriebene Neuimplementierung von CVSup. Der größte Vorteil dieser neuen Version ist neben einer höheren Geschwindigkeit der, dass dieses Programm nicht von der Sprache Modula-3 abhängig ist und Sie daher dieses Paket nicht mitinstallieren müssen. csup ist bereits im Basissystem enthalten und kann sofort verwendet werden. Wollen Sie künftig csup einsetzen, überspringen Sie in den folgenden Ausführungen einfach den Abschnitt zur Installation von CVSup und ersetzen alle Vorkommen von CVSup durch csup.

A.8.2. Installation von CVSup

CVSup können Sie leicht installieren, wenn Sie das vorkompilierte Paket net/cvsup aus der Ports-Sammlung benutzen. Alternativ können Sie net/cvsup auch ausgehend von den Quellen bauen, doch seien Sie gewarnt: net/cvsup hängt vom Modula-3 System ab, das viel Zeit und Platz zum Herunterladen und Bauen braucht.

Anmerkung:

Wenn Sie CVSup auf einer Maschine ohne Xorg (also beispielsweise auf einem Server), benutzen, stellen Sie bitte sicher, dass Sie den Port ohne das CVSup-GUI, (net/cvsup-without-gui) verwenden.

A.8.3. Konfiguration von CVSup

Das Verhalten von CVSup wird mit einer Konfigurationsdatei gesteuert, die supfile genannt wird. Beispiele für Konfigurationsdateien finden Sie in dem Verzeichnis file://localhost/usr/share/examples/cvsup/.

Ein supfile enthält die folgenden Informationen:

In den folgenden Abschnitten erstellen wir ein typisches supfile indem wir nach und nach diese Punkte klären. Zuerst beschreiben wir aber den Aufbau dieser Konfigurationsdatei.

Ein supfile ist eine Textdatei. Kommentare beginnen mit einem # und gelten bis zum Zeilenende. Leerzeilen und Zeilen, die nur Kommentare enthalten, werden ignoriert.

Die anderen Zeilen legen die Dateien fest, die ein Benutzer erhalten will. Der Server organisiert verschiedene Dateien in einer Sammlung, deren Name auf einer Zeile angegeben wird. Nach dem Namen der Sammlung können mehrere durch Leerzeichen getrennte Felder folgen, die die oben angesprochenen Informationen festlegen. Es gibt zwei Arten von Feldern: Felder, die Optionen festlegen und Felder mit Parametern. Optionen bestehen aus einem Schlüsselwort, wie delete oder compress und stehen alleine. Ein Parameterfeld beginnt mit einem Schlüsselwort, dem = und ein Parameter, wie in release=cvs, folgt. Dieses Feld darf keine Leerzeichen enthalten.

In einem supfile werden normalerweise mehrere Sammlungen angefordert. Die erforderlichen Felder können explizit für jede Sammlung angegeben werden, dann werden jedoch die Zeilen ziemlich lang. Außerdem ist dieses Vorgehen sehr unhandlich, da die meisten Felder für alle Sammlungen gleich sind. CVSup bietet die Möglichkeit, Vorgaben für die Felder der Sammlungen festzulegen. Zeilen, die mit der Pseudo-Sammlung *default beginnen, legen Optionen und Parameter für nachfolgende Sammlungen im supfile fest. Der Vorgabewert kann in der Zeile einer bestimmten Sammlung überschrieben werden. Durch Hinzufügen weiterer *default Zeilen können die Vorgaben auch mitten im supfile überschrieben oder erweitert werden.

Mit diesem Wissen können wir nun ein supfile erstellen, das den Quellbaum von FreeBSD-CURRENT anfordert und aktualisiert.

  • Welche Dateien wollen Sie empfangen?

    Dateien werden von CVSup in Sammlungen organisiert. Die erhältlichen Sammlungen werden später beschrieben. Wir wollen den Quellbaum von FreeBSD empfangen, der in der Sammlung src-all enthalten ist. Das supfile enthält pro Zeile eine Sammlung, in diesem Fall also nur eine einzige Zeile:

    src-all
  • Welche Versionen der Dateien werden benötigt?

    Mit CVSup können Sie jede Version der Quellen bekommen, da der cvsupd-Server seine Daten direkt aus dem CVS-Repository bezieht. Sie können die benötigten Versionen in den Parameterfeldern tag= und date= angeben.

    Warnung:

    Achten Sie darauf, dass Sie das richtige tag=-Feld angeben. Einige Tags sind nur für spezielle Sammlungen gültig. Wenn Sie ein falsches Tag angeben oder sich verschreiben, wird CVSup Dateien löschen, die Sie wahrscheinlich gar nicht löschen wollten. Achten Sie insbesondere bei den ports-*-Sammlungen darauf, ausschließlich tag=. zu verwenden.

    Mit tag= wird ein symbolischer Name aus dem Repository angegeben. Es gibt zwei verschiedene Tags: Tags, die Revisionen bezeichnen und Tags, die Zweige bezeichnen. Die ersteren sind statisch und fest an eine Revision gebunden. Ein Tag, das einen Zweig bezeichnet, bezieht sich dagegen zu einem gegebenen Zeitpunkt immer auf die aktuellste Revision. Da ein Tag eines Zweiges nicht an eine bestimmte Revision gebunden ist, kann sich dessen Bedeutung von heute auf morgen ändern.

    Abschnitt A.9, „CVS-Tags“ zählt für Benutzer relevante Tags auf. Wenn Sie in der Konfigurationsdatei ein Tag, wie RELENG_8, angeben, müssen Sie diesem tag= vorstellen: tag=RELENG_8. Denken Sie daran, dass es für die Ports-Sammlung nur tag=. gibt.

    Warnung:

    Achten Sie darauf, dass Sie den Namen eines Tags richtig angeben. CVSup kann nicht zwischen richtigen und falschen Tags unterscheiden. Wenn Sie sich bei der Angabe eines Tags vertippen, nimmt CVSup an, Sie hätten ein gültiges Tag angegeben, dem nur keine Dateien zugeordnet sind. Die Folge davon ist, dass Ihre vorhandenen Quellen gelöscht werden.

    Wenn Sie ein Tag angeben, das sich auf einen Zweig bezieht, erhalten Sie die aktuellsten Revisionen der Dateien auf diesem Zweig. Wenn Sie eine frühere Revision erhalten möchten, können Sie diese im date= Feld angeben. Einzelheiten dazu finden Sie in der Manualpage von cvsup.

    Wir möchten gerne FreeBSD-CURRENT beziehen und fügen die folgende Zeile am Anfang der Konfigurationsdatei ein:

    *default tag=.

    Eine wichtige Ausnahme ist wenn Sie weder ein tag=-Feld noch ein date=-Feld angeben. In diesem Fall erhalten Sie anstelle einer speziellen Revision die wirklichen RCS-Dateien aus dem CVS-Repository des Servers. Diese Vorgehensweise wird von Entwicklern bevorzugt, da sie mit einem eigenen Repository leicht die Entwicklungsgeschichte und Veränderungen von Dateien verfolgen können. Dieser Vorteil muss allerdings mit sehr viel Plattenplatz bezahlt werden.

  • Woher sollen die Dateien bezogen werden?

    Im host=-Feld wird angegeben, woher cvsup die Dateien holen soll. Sie können hier jeden der CVSup-Spiegel angeben, doch sollten Sie einen Server in Ihrer Nähe auswählen. Für dieses Beispiel wollen wir den erfundenen Server cvsup99.FreeBSD.org verwenden:

    *default host=cvsup99.FreeBSD.org

    Bevor Sie CVSup laufen lassen, sollten Sie hier einen existierenden Server einsetzen. Den zu verwendenden Server können Sie auf der Kommandozeile mit -h hostname überschreiben.

  • Wo sollen die Dateien gespeichert werden?

    Im prefix=-Feld teilen Sie cvsup mit, wo die Dateien gespeichert werden sollen. In diesem Beispiel werden wir die Quelldateien direkt im Verzeichnisbaum für Quellen /usr/src ablegen. Das Verzeichnis src ist schon in der Sammlung, die wir beziehen enthalten, so dass wir die folgende Zeile angeben:

    *default prefix=/usr
  • Wo sollen die Statusinformationen von cvsup gespeichert werden?

    cvsup legt in einem Verzeichnis Statusinformationen ab, die festhalten, welche Versionen schon empfangen wurden. Wir verwenden das Verzeichnis /var/db:

    *default base=/var/db

    Wenn das Verzeichnis für die Statusinformationen nicht existiert, sollten Sie es jetzt anlegen, da cvsup ohne dieses Verzeichnis nicht startet.

  • Verschiedene Einstellungen:

    Eine weitere Zeile sollte normalerweise in jedem supfile sein:

    *default release=cvs delete use-rel-suffix compress

    Mit release=cvs wird angegeben, dass der Server das FreeBSD-Haupt-Repository abfragen soll, was praktisch immer der Fall ist (die Ausnahmen werden in diesem Text nicht diskutiert).

    delete erlaubt es CVSup, Dateien zu löschen. Diese Option sollten Sie immer angeben, damit CVSup Ihren Quellbaum auch wirklich aktuell halten kann. CVSup löscht nur Dateien für die es auch verantwortlich ist. Andere Dateien, die sich in einem Baum unter Kontrolle von CVSup befinden, werden nicht verändert.

    Wenn Sie wirklich etwas über das obskure use-rel-suffix erfahren wollen, lesen Sie bitte in der Manualpage nach, ansonsten geben Sie es einfach an und vergessen es.

    Wenn Sie compress angeben, werden Daten auf dem Kommunikationskanal komprimiert. Wenn Sie über eine T1-Leitung oder eine schnellere Netzanbindung verfügen, brauchen Sie diese Option vielleicht nicht. In allen anderen Fällen beschleunigt sie aber den Ablauf.

  • Zusammenfassung:

    Das vollständige supfile unseres Beispiels sieht nun so aus:

    *default tag=.
    *default host=cvsup99.FreeBSD.org
    *default prefix=/usr
    *default base=/var/db
    *default release=cvs delete use-rel-suffix compress
    
    src-all

A.8.3.1. Die refuse Datei

CVSup benutzt die Pull-Methode, das heißt wenn sich ein Client mit einem Server verbindet, erhält er eine Liste der verfügbaren Sammlungen und wählt aus diesen die herunterzuladenden Dateien aus. In der Voreinstellung wählt der Client alle Dateien aus, die zu einer gegebenen Sammlung und zu einem gegebenen Tag passen. Um nur einen Teil des Baumes herunterzuladen, benutzen Sie die refuse Datei.

Mit einer refuse Datei können Sie bestimmte Dateien einer Sammlung von der Übertragung ausschließen. Der Ort der refuse ist base/sup/refuse, wobei base in Ihrem supfile festgelegt wurde. Wir verwenden das Verzeichnis /var/db, der Ort der refuse Datei ist daher /var/db/sup/refuse.

Das Format der refuse Datei ist einfach: Sie enthält eine Liste der Dateien und Verzeichnisse, die Sie nicht herunterladen wollen. Zum Beispiel:

bin/
	  usr.bin/

Die refuse Datei spart Anwendern von CVSup, die über eine langsame Internetanbindung verfügen oder deren Internetverbindung zeitlich abgerechnet wird, Zeit, da sie Dateien, die sie nicht benötigen, nicht mehr herunterladen müssen. Weitere Informationen zu refuse Dateien und anderen Eigenschaften von CVSup entnehmen Sie bitte der Manualpage.

A.8.4. Ausführen von CVSup

Wir können nun eine Aktualisierung mit der folgenden Kommandozeile starten:

# cvsup supfile

supfile gibt dabei das eben erstelle supfile an. Wenn Sie X11 benutzen, wird cvsup ein GUI starten. Drücken Sie go und schauen Sie zu.

Das Beispiel aktualisiert die Dateien im Verzeichnisbaum /usr/src. Sie müssen cvsup als root starten, damit Sie die nötigen Rechte haben, die Dateien zu aktualisieren. Sie sind vielleicht ein bisschen nervös weil Sie das Programm zum ersten Mal anwenden und möchten zuerst einmal einen Testlauf durchführen. Legen Sie dazu ein temporäres Verzeichnis an und übergeben es auf der Kommandozeile von cvsup:

# mkdir /var/tmp/dest
# cvsup supfile /var/tmp/dest

Aktualisierungen werden dann nur in dem angegebenen Verzeichnis vorgenommen. CVSup untersucht die Dateien in /usr/src, wird aber keine dieser Dateien verändern. Die veränderten Dateien finden Sie stattdessen in /var/tmp/dest/usr/src. Die Statusdateien von CVSup werden ebenfalls nicht geändert, sondern in dem angegebenen Verzeichnis abgelegt. Wenn Sie Leseberechtigung in /usr/src haben, brauchen Sie das Programm noch nicht einmal unter root laufen zu lassen.

Wenn Sie X11 nicht benutzen wollen oder keine GUIs mögen, sollten Sie cvsup wie folgt aufrufen:

# cvsup -g -L 2 supfile

-g verhindert den Start des GUIs. Wenn Sie kein X11 laufen haben, passiert das automatisch, ansonsten müssen Sie diesen Schalter angeben.

Mit -L 2 gibt CVSup Einzelheiten zu jeder Aktualisierung aus. Die Wortfülle der Meldungen können Sie von -L 0 bis -L 2 einstellen. In der Voreinstellung -L 0 werden nur Fehlermeldungen ausgegeben.

Eine Zusammenfassung der Optionen von CVSup erhalten Sie mit cvsup -H. Genauere Informationen finden Sie in der Manualpage von CVSup.

Wenn Sie mit dem Ablauf der Aktualisierung zufrieden sind, können Sie CVSup regelmäßig aus cron(8) ausführen. In diesem Fall sollten Sie natürlich nicht das GUI benutzen.

A.8.5. CVSup Sammlungen

Die CVSup Sammlungen sind hierarchisch organisiert. Es gibt wenige große Sammlungen, die in kleinere Teilsammlungen unterteilt sind. Wenn Sie eine große Sammlung beziehen, entspricht das dem Beziehen aller Teilsammlungen. Der Hierarchie der Sammlung wird in der folgenden Aufzählung durch Einrückungen dargestellt.

Die am häufigsten benutzte Sammlung ist src-all.

cvs-all release=cvs

Das FreeBSD-Haupt-Repository einschließlich der Kryptographie-Module.

distrib release=cvs

Dateien, die zum Verteilen und Spiegeln von FreeBSD benötigt werden.

projects-all release=cvs

Quelltexte der verschiedenen FreeBSD-Projekte.

src-all release=cvs

Die FreeBSD-Quellen einschließlich der Kryptographie-Module.

src-base release=cvs

Verschiedene Dateien unter /usr/src.

src-bin release=cvs

Benutzer-Werkzeuge die im Einzelbenutzermodus gebraucht werden (/usr/src/bin).

src-cddl release=cvs

Werkzeuge und Bibliotheken, die der CDDL-Lizenz unterliegen (/usr/src/cddl).

src-contrib release=cvs

Werkzeuge und Bibliotheken, die nicht aus dem FreeBSD Project stammen und wenig verändert übernommen werden. (/usr/src/contrib).

src-crypto release=cvs

Kryptographische Werkzeuge und Bibliotheken, die nicht aus dem FreeBSD Project stammen und wenig verändert übernommen werden. (/usr/src/crypto).

src-eBones release=cvs

Kerberos und DES (/usr/src/eBones). Wird in aktuellen Releases von FreeBSD nicht benutzt.

src-etc release=cvs

Konfigurationsdateien des Systems (/usr/src/etc).

src-games release=cvs

Spiele (/usr/src/games).

src-gnu release=cvs

Werkzeuge, die unter der GNU Public License stehen (/usr/src/gnu).

src-include release=cvs

Header Dateien (/usr/src/include).

src-kerberos5 release=cvs

Kerberos5 (/usr/src/kerberos5).

src-kerberosIV release=cvs

KerberosIV (/usr/src/kerberosIV).

src-lib release=cvs

Bibliotheken (/usr/src/lib).

src-libexec release=cvs

Systemprogramme, die von anderen Programmen ausgeführt werden (/usr/src/libexec).

src-release release=cvs

Dateien, die zum Erstellen eines FreeBSD Releases notwendig sind (/usr/src/release).

src-rescue release=cvs

Statisch gelinkte Programme zur Wiederherstellung eines defekten Systems. Lesen Sie dazu auch die Manualpage rescue(8) (/usr/src/rescue).

src-sbin release=cvs

Werkzeuge für den Einzelbenutzermodus (/usr/src/sbin).

src-secure release=cvs

Kryptographische Bibliotheken und Befehle (/usr/src/secure).

src-share release=cvs

Dateien, die von mehreren Systemen gemeinsam benutzt werden können (/usr/src/share).

src-sys release=cvs

Der Kernel (/usr/src/sys).

src-sys-crypto release=cvs

Kryptographie Quellen des Kernels (/usr/src/sys/crypto).

src-tools release=cvs

Verschiedene Werkzeuge zur Pflege von FreeBSD (/usr/src/tools).

src-usrbin release=cvs

Benutzer-Werkzeuge (/usr/src/usr.bin).

src-usrsbin release=cvs

System-Werkzeuge (/usr/src/usr.sbin).

distrib release=self

Die Konfigurationsdateien des CVSup Servers. Diese werden von den CVSup benutzt.

gnats release=current

Die GNATS Datenbank, in der Problemberichte verwaltet werden.

mail-archive release=current

Das Archiv der FreeBSD-Mailinglisten.

A.8.6. Weiterführende Informationen

Die CVSup FAQ und weitere Informationen über CVSup finden Sie auf The CVSup Home Page.

FreeBSD spezifische Diskussionen über CVSup finden auf der Mailingliste FreeBSD technical discussions statt. Dort und auf der Liste FreeBSD announcements werden neue Versionen von CVSup angekündigt.

Bei Fragen und Problemberichten zu CVSup lesen Sie bitte die CVSup FAQ.

A.8.7. CVSup-Server

Die folgende Aufzählung enthält CVSup Server für FreeBSD:

Hauptserver,

(aktualisiert am: UTC)

Hauptserver
  • cvsup.FreeBSD.org

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.

Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.