Anonymous CVS ist eine Methode, um die lokale Kopie des OpenBSD-Quelltextbaums 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 Korrekturroutinen eines bestimmten Release zu folgen.
Der Hauptvorteil des »Anonymous CVS« gegenüber anderen Aktualisierungstechniken ist, dass es direkt mit einem zentralen Quelltext-Repositorium - oder einem seiner Spiegelserver - arbeitet. Dies bedeutet, dass dir der volle Satz an CVS-Kommandos zur Verfügung steht, um das Einbinden und Aktualisieren deiner Änderungen mit anderen Änderungen am Quelltext zu steuern, und dass die Durchführung von Differenzvergleichen, der Einsicht in die Änderungshistorie und andere Anfragen an das Zentralrepositorium möglich sind.
Das OpenBSD-Projekt besitzt im Moment vier aktive und zwei historische Quelltext-Repositorien:
Zusammenfassend kann man sagen, dass die Stärke des anonymen 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 Quelltextbaum 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.
CVS ist das Quelltext-Kontrollsystem, das benutzt wird, um den Quelltextbaum von OpenBSD zu verwalten. Das beinhaltet eine zentrales Repositorium 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, auf den Quelltextbaum zuzugreifen:
Die Hauptstärke von CVS ist seine Fähigkeit, intelligente Einfügungen von Änderungen des lokalen Quelltextes in das zentrale Repositorium oder auch umgekehrt zu machen. Das heißt, dass wenn du eine Änderung an einem Modul vornimmst und hinterher eine Aktualisierung per CVS durchführst, dann werden deine Änderungen nicht »in den Wind geschossen«, sondern CVS versucht alles, um Änderungen vom zentralen Repositorium 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 der Aktualisierung weitermacht.
WICHTIGER HINWEIS: Es gibt ein paar Dinge bezüglich Kryptographie, die jedem bewusst sein sollten:
Um den Quelltextbaum 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 Quelltextdateien, 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 Baums
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 Anwendungen aus dem Userland 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 synchron gehalten werden muss, musst du normalerweise alle Bäume einrichten.
Du kannst auch einfach cvs(1) verwenden, um dein "checkout" (die Arbeitskopie) des Quelltext-Repositoriums zu erzeugen. 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 wurde als einfacher Weg, Quelltexte herunterzuladen und auf dem aktuellen Stand zu halten, entworfen. Um zu beginnen, musst du wissen, ob du -current folgen willst oder einem »patch branch«. Der Baum -current beinhaltet alle Änderungen bis zur aktuellen Minute, während ein »patch branch« (Zweig für Korrekturroutinen) ein offizielles Release plus der dafür passenden Korrekturroutinen von der Seite Errata, sowie eventuell weitere Korrekturroutinen für kleinere Probleme enthält. Für weitere Informationen über die Aromata von OpenBSD siehe hier.
Sobald du entschieden hast, welchem Baum 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, ist es möglich, mit der auf der CD befindlichen CVS-Arbeitskopie zu beginnen, indem der oben genannten Methode gefolgt wird, um die Quellen auf die Maschinen zu transferieren. Hast du keine CD zur Hand, folge der unten aufgeführten Methode, um eine Arbeitskopie der Quellen zu erhalten.
(Wenn du -current folgst):
# cd /usr # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -P src
(Wenn du dem »patch-branch« für 5.2 folgst):
# cd /usr # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_5_2 -P src
(Wenn du -current folgst):
# cd /usr/src
# cvs -q up -Pd
(Wenn du dem »patch-branch« für 5.2 folgst):
# cd /usr/src
# cvs -q up -rOPENBSD_5_2 -Pd
Jedes Mal, wenn du das so ausführst, wird dein /usr/src-Baum mit dem des
CVS-Servers abgeglichen bzw. synchronisiert.
Deine lokalen Änderungen würden selbstverständlich nicht zerstört, sondern
- wenn möglich - eingebaut.
# cd /usr/src # cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs -q up -Pd
Die Verwendung von Portierungen funktioniert genauso wie bei src:
(Wenn du -current folgst):
# cd /usr # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -P ports
(Wenn du dem »patch-branch« für 5.2 folgst):
# cd /usr # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_5_2 -P ports
(Wenn du -current folgst):
# cd /usr/ports # cvs -q up -Pd
(Wenn du dem »patch-branch« für 5.2 folgst):
# cd /usr/ports
# cvs -q up -rOPENBSD_5_2 -Pd
Um einen Dateivergleich für ein lokal geändertes Modul zu erzeugen (hier cd.c), das man z. B. in eine Fehlermeldung einfügen kann:
# cd /usr
# cvs diff -u src/sys/scsi/cd.c > /tmp/patch
Die cvs(1)-Handbuchseite (liegt dem CVS-Quelltext bei) hat noch viel mehr Informationen, wie man CVS benutzen kann.
Warnung: Beim Benutzen von cvs solltest du darauf achten, dass du dich in der jeweiligen Wurzel des Verzeichnisses befindest, dass du herunterladen willst, oder aber in einem ganz anderen, wie z. B. /tmp. Kommandos wie »get« können willkürlich einen Unterbaum im momentanen Verzeichnis erzeugen, der bei jeder weiteren Aktualisierung rekursiv mit bearbeitet wird.
Der AnonCVS-Dienst gibt Entwicklern, die noch Grünschnäbel sind, eine Chance, CVS-Operationen kennenzulernen und gründlich in den Entwicklungsprozess eingeführt zu werden, bevor sie »commit«-Zugriff bekommen - als Resultat ihrer wertvollen und hochqualitativen Fähigkeiten werden sie selbstverständlich später vollen Entwicklerzugriff bekommen. Auch Leute, die Korrekturroutinen erstellen, können ihre Dateivergleiche gegen den CVS-Baum erstellen, was die Integration erleichtert.
Eine beispielhafte Nutzung eines AnonCVS-Servers wäre:
$ cd /tmp
$ cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs get src/sys/arch/sparc
[kopiert die Dateien vom Server auf deine Maschine]
$ cd src/sys/arch/sparc
$ cvs log locore.s
[zeigt das commit log für die ausgewählte Datei]
$ cvs diff -bc -r1.1 -r1.5 locore.s
[zeigt die Unterschiede zwischen der Version 1.1 und Version 1.5]
Hinweis: Wenn dein Server mit unvollständigen oder falschen Informationen aufgelistet wurde, kontaktiere bitte beck@openbsd.org
Du möchtest vielleicht traceroute(8) benutzen, um den Server zu finden, der dir am nächsten ist. Probleme mit dem Server sollten an den Maintainer des fraglichen Servers gerichtet werden.
Sollten dich lokale Richtlinien daran hindern, ausgehende Verbindungen zu dem Standard-Port von ssh, 22, aufzubauen - es gibt einige Server, die Verbindungen zu alternativen Ports zulassen (normalerweise 2022). Diese werden in obiger Liste aufgeführt. Um einen anderen Port zu nutzen, konfiguriere deinen ssh-Klienten neu, indem du einen »Host«-Eintrag zu $HOME/.ssh/config hinzufügst, z. B.:
Host anoncvs.ca.openbsd.org Port 2022
Wenn du einen neuen Spiegelserver für AnonCVS aufsetzen willst, der auch für die Allgemeinheit zugänglich sein soll, schreib bitte eine E-Mail an den AnonCVS-Betreuer. AnonCVS-Spiegelserver benötigen ungefähr 5 GB Platz (und mehr!) auf der Festplatte, und brauchen etwa 32 MB Swap pro AnonCVS-Benutzer (jedenfalls, wenn der Benutzer größere Dinge macht, ansonsten halt weniger, aber trotzdem benötigt AnonCVS mehr Rechnerleistung als FTP). Solche AnonCVS-Maschinen sollten eine exzellente Netzwerkanbindung haben - jedenfalls für das Areal, das sie bedienen sollen. Ein Dokument, das den Aufbau eines AnonCVS-Servers beschreibt, ist erhältlich.
Es ist wichtig zu verstehen, dass eine Aktualisierung von einem Release hin zu -current - dem aktuellsten Quelltext - recht kompliziert sein kann, und zwar auf Grund verschiedener Abhängigkeiten, die nicht offensichtlich sein müssen. Daher wird empfohlen, zunächst den aktuellsten Schnappschuss zu installieren, bevor du ein Übersetzen des neuesten Quelltextes versuchst.