[OpenBSD]

Anonymous CVS


Inhaltsverzeichnis


Was ist Anonymous CVS?

Anonymous CVS ist eine Methode, um die lokale Kopie des OpenBSD-Source-Trees auf dem Laufenden zu halten, sodass er den Veränderungen folgt, die an den aktuellen OpenBSD-Quelltexten (current) gemacht werden. Zusätzlich ist es möglich, der Entwicklung ganz dicht auf den Fersen zu sein; ebenso ist es möglich, den Patches eines bestimmten Releases zu folgen.

Der Hauptvorteil von Anonymous CVS gegenüber anderen Update-Techniken ist, dass es direkt mit einem zentralen Quellcode-Repository - oder einem ,mirror' davon - arbeitet. Das bedeutet, dass du den vollen Satz an CVS-Kommandos zur Verfügung hast, um das Einbinden und Aktualisieren von deinen Quelltext-Änderungen mit anderen durchführen kannst. Das beinhaltet auch das Bilden von sogenannten Diffs, also Dateien, die den Unterschied zwischen zwei verschiedenen Dateien enthalten, ebenso wie das Abändern von Histories und anderen Abfragen, die an das zentrale Repository gerichtet sind.

Das OpenBSD-Projekt hat momentan vier Haupt-Quelltext-Repositorys:

Zusammenfassend kann man sagen, dass die Stärke von Anonymous CVS darin liegt, dass es ein ,tolerantes' Quelltext-Verwaltungsprogramm ist - es respektiert Veränderungen, die du an deinen lokalen Quellen gemacht hast und versucht alles, um deinen Source-Tree auf den neuesten Stand zu bringen, anstatt dir eine lange Liste mit geheimnisvollen Fehlern zu hinterlassen, die beseitigt werden müssen, bevor du weitermachen kannst.

Was ist CVS?

CVS ist das Quelltext- (source) Kontrollsystem, das benutzt wird, um den Source-Tree von OpenBSD zu verwalten. Das beinhaltet eine zentrales Repository für alle offiziell veröffentlichten Quelltexte und -änderungen, während den Entwicklern ermöglicht wird, lokale Kopien des Quelltextes mit ihren lokalen Änderungen zu verwalten. Es gibt zwei Arten des Source-Tree-Zugriffs:

Die Hauptstärke von CVS ist seine Fähigkeit, intelligente Einfügungen von Änderungen des lokalen Quelltextes in das zentrale Repository oder auch umgekehrt zu machen. Das heißt, wenn du Änderungen an einem Modul machst und hinterher ein Update per CVS, dann werden deine Änderungen nicht ,in den Wind geschossen', sondern CVS versucht alles, um Änderungen vom zentralen Repository mit deinen lokalen in Einklang zu bringen.

Falls ein Einfügen nicht so einfach möglich ist, stellt CVS ein ,soft fallback' bereit, indem es kommentierte Änderungen an deinem lokalen Quelltext macht, eine unveränderte Kopie deines Quelltextes erzeugt und dann mit dem Rest des Updates weitermacht.

Den Anfang mit Anonymous CVS finden

Obwohl du den gesamten Source-Tree von einem AnonCVS-Server herunterladen kannst, kannst du durch das ,Vorladen' deines Source-Trees mit Source-Dateien von der OpenBSD-CD oder eines FTP-Servers häufig Zeit und auch Bandbreite sparen. Dies ist insbesondere dann der Fall, wenn du -stable verwendest, da sich relativ wenige Dateien zwischen -release und -stable ändern.

Um den Source-Tree von der CD in das Verzeichnis /usr/src zu entpacken (angenommen die CD ist unter /mnt gemountet):

    # cd /usr/src
    # tar xzf /mnt/src.tar.gz
    # cd /usr
    # tar xzf /mnt/xenocara.tar.gz
    # tar xzf /mnt/ports.tar.gz
Die Source-Dateien, die zum Download von FTP-Servern gedacht sind, sind in zwei Dateien unterteilt, um die Zeit, die zum Herunterladen benötigt wird, für jene zu minimieren, die nur mit einem der Teile des Trees arbeiten möchten. Die beiden Dateien sind sys.tar.gz, die die Dateien beinhaltet, die zum Erzeugen des Kernels verwendet werden, und src.tar.gz, die all die anderen Userland-Anwendungen beinhaltet. Generell gilt jedoch, dass du sie beide installieren möchtest. Angenommen, die heruntergeladenen Dateien src.tar.gz, sys.tar.gz und xenocara.tar.gz befinden sich in /usr:
    # cd /usr/src
    # tar xzf ../sys.tar.gz
    # tar xzf ../src.tar.gz
    # cd /usr
    # tar xzf xenocara.tar.gz
    # tar xzf ports.tar.gz

Nicht alle Leute möchten diese Dateisets entpacken, aber da das System ,in sync' gehalten werden muss, musst du normalerweise alle Trees einrichten.

Du kannst auch einfach cvs(1) verwenden, um das ,checkout' vom Source-Repository für dich ausführen zu lassen. Dies wird in der nächsten Sektion besprochen.

Danach wird /usr/src ein guter Startpunkt sein, an dem alle cvs(1)-Kommandos einwandfrei arbeiten werden.

CVS benutzen, um den Source-Tree zu holen und zu aktualisieren

CVS wurde entworfen, um ein einfacher Weg zu sein, Quelltexte zu holen und auf dem aktuellen Stand zu halten. Um zu beginnen, musst du wissen, ob du current folgen willst oder einem ,patch branch'. Der current-Tree hat alle Änderung bis zur aktuellen Minute, während ein ,patch branch' ein offizielles Release plus der dafür passenden Patches von der Errata-Seite enthält sowie Patches für kleinere Probleme. Für weitere Informationen über die ,flavors' von OpenBSD siehe hier.

Sobald du entschieden hast, welchem Tree du folgen willst, musst du einen Anonymous-CVS-Server finden, den du dafür benutzen willst. Eine Liste dieser Server gibt es weiter unten.

Nachdem du einen Anonymous-CVS-Server ausgewählt hast, kannst du damit anfangen, cvs zu benutzen. Für diejenigen von euch, die eine CD haben: Ihr könnt mit dem CVS-,checkout' auf der CD anfangen, indem ihr die oben genannte Methode benutzt, um den Quelltext auf eure Maschinen zu bekommen. Wenn du keine CD zur Hand hast, benutze die unten aufgeführte Methode, um einen ,checkout' der Quellen zu machen. Diese Methode packt den Quelltext in /usr/src.

       # cd /usr; cvs checkout -P src

Das oben beschriebene wird einen ,checkout' mit dem current-Source-Tree machen. Viele von euch werden aber nur die ,patch branch'-Quellen wollen. Um eben nur den Quelltext des ,patch branchs' zu bekommen, musst du dem Kommando ein ,Tag' hinzufügen. Beispiel:

       # cd /usr; cvs checkout -P -rOPENBSD_4_3 src

Oder OPENBSD_4_2 für 4.2 etc.

Der OPENBSD_4_3-Tag enthält die Release-Quellen und bereits eingefügte Patches.

Verfügbare Anonymous-CVS-Server

Bitte beachte den Hinweis über die Benutzung von ssh ./. rsh weiter unten!