CTM for OpenBSD

Was ist CTM?

CTM ist ein System, das von Poul-Henning Kamp erschaffen wurde, um die regelmäßigen Änderungen an einem Source-Tree per E-Mail verfügbar zu machen. Das ist ein guter Weg, um beim ,-current source' auf dem Laufenden zu bleiben, selbst wenn man eine langsame Internetverbindung hat, z. B. via Modem.

OpenBSD-CTM enthält alle Module des OpenBSD-CVS-Repository plus einige vereinzelte Gesamtversionen von verschiedenen Modulen. CTM benutzt eine sehr kleine Bandbreite, um die Änderungen am Source-Tree zu verschicken und komprimiert sie außerdem per gzip -9. Im Gegensatz zu CVSup ist CTM in normalem C geschrieben und daher für jede Plattform verfügbar, die von OpenBSD unterstützt wird. CTM implementiert ein sogenanntes ,push'-System, während alle anderen Methoden, die Zugriff auf das OpenBSD-CVS-Repository nehmen, ,pull'-Systeme sind.

Bei jeglichen Problemen, Vorschlägen, Berichten und Fragen bezüglich CTM wende dich bitte an den CTM-Maintainer Hans Günter Weigand. (Bitte keine anderen OpenBSD-Leute um CTM-Unterstützung, da sie mit anderen Dingen beschäftigt sind. Danke.)

Wie funktioniert es?

Die grundsätzliche Idee von CTM ist, dass du dich auf einer bestimmten Mailingliste einschreibst, sie also abonnierst, um einen bestimmten Teil des Source-Trees oder eines CVS-Moduls zu erhalten. Du erhältst jeden Tag eine E-Mail mit den jeweiligen Änderungen dieses Tages. Ein solcher Satz Änderungen wird delta genannt. Tatsächlich macht der CTM-Server alle 12 Stunden neue Deltas.

Du beginnst mit einem Basissatz gegen den dann später die Deltas gepatcht werden. Um mit CTM zu beginnen, musst du unbedingt die neueste Version des Basissatz (base set) und alle danach folgenden Deltas herunterladen; nachdem du diese verarbeitet hast, kannst du mit denen weitermachen, die du per E-Mail erhältst. Die Basissätze sind jeweils in 1440-k-Teile aufgeteilt, damit man sie leichter über eine langsame Verbindung herunterladen kann.

Basen werden nach 50 relativen Deltas erstellt, so dass du nie mehr als 50 Deltas herunterladen musst, um auf den aktuellen Stand zu kommen.

Es gibt zurzeit zwei verschiedene Arten von Basisdateien. Eine ganze Zeit lang haben wir tar.gz-Dateien per Hand erstellt, aber wir sind jetzt wieder bei echten CTM-Basisdeltas. Die letzteren enthalten md5(1)-Prüfsummen und werden automatisch erstellt, sind also etwas sicherer. Du kannst diese beiden Arten anhand ihres Dateinamens unterscheiden. Ein Beispiel für eine tar.gz-Datei ist OpenBSD-cvs.1450.tar.gz, während ein CTM Basissatz den folgenden Namen hätte: OpenBSD-cvs.1500A.gz. Siehe unten für detaillierte Anweisungen.

Wieviel Bandbreite braucht CTM?

Du musst den Basissatz haben und alle relativen Deltas bis zum jetzigen Datum dazu, und zwar per FTP von der unten aufgeführten Liste. Sie haben die folgenden Größen:

Wie benutzt man CTM?

Hinweis: Die Beispiele unten decken nur OpenBSD-cvs ab, einfach zur Klärung. Die anderen Sourcesets müssen auf die gleiche Art behandelt werden.

Hier ist die Liste der FTP-Server die CTM-Deltas bereithalten:

HINWEIS: Ich bin sehr an weiteren Sites interessiert, die die Deltas spiegeln möchten.

Sollte ich den Source-Tree oder das CVS-Repository nehmen?

Das hängt unter anderem von deinem verfügbaren Platz auf der Festplatte ab. Da CTM nicht besonders gut mit Dateien umgehen kann, die außerhalb des CTM-Prozesses modifziert wurden, ist die bessere Wahl sicherlich das CVS-Repository. Du kannst deine Arbeitskopie des Source-Trees dann aus deinem CVS-Repository auschecken, einem ,stable branch' folgen und auch deine lokalen Änderungen in deinem Source-Tree behalten. CVS ist klug genug, um deine lokalen Änderungen einzufügen. Du kannst die gesamte Palette an CVS-Kommandos mit Ausnahme von Kommandos wie etwa commit oder cvs tag benutzen.

Der Nachteil ist der dafür notwendige Plattenplatz. Ein ,checked-out' Source-Tree benötigt etwa 370 MB, aber wenn du dein eigenes CVS-Repository hast, brauchst du etwa 1 GB dafür, plus zusätzliche 370 MB für den ,checked out' Tree. Das beinhaltet noch nicht die 100 MB oder mehr, die du für erzeugte Dateien während dem Erzeugen brauchst (abhängig von der Archiktektur), sprich das Kompilieren der Sourcen.

Wenn du nur den Source-Tree holst, musst du dich mit lokalen Veränderungen anfreunden. Ein Weg, um das zu tun, ist die Nutzung des union-Dateisystems, (siehe mount_union(8)), obwohl es auch schon Berichte gegeben hat, das union-Dateisystem könne instabil sein, wenn die unteren und oberen Schichten auf dem selben physischen Dateisystem residieren. Wenn du aber obere und untere Schichten auf verschiedene Dateisysteme plazierst, solltest du dieses Problem nicht haben. Ein Beispiel:

Nehmen wir an, dein CTM-aktualisierter Tree sei in /usr/src-CTM, und dein realer Source-Tree, der, an dem du deine Änderungen durchführst und deine ,builds' machst, sei in /usr/src. /usr/src sollte anfangs ein leeres Verzeichnis sein. Das folgende Kommando wird den union-mount setzen:

mount -t union -o -b /usr/src-ctm /usr/src

Änderungen an Dateien in /usr/src werden zu einer Datei, die in /usr/src enthalten ist, und die in src-ctm versteckt. Wenn Änderungen per CTM am darunterliegendem src-ctm-Tree gemacht werden, werden diese Änderungen nicht sichtbar sein, wenn es eine Datei in der darüberliegenden Schicht gibt, die sie versteckt.

Du solltest regelmäßig das union-Dateisystem ,unmounten' und nach Dateien suchen, die es nur im union-Dateisystem gibt.

       umount /usr/src
       find /usr/src -type f

Die Befehle ls -W und rm -W werden auch nützlich sein, da Objekte in /usr/src, die ,whiteouts' im Namen beinhalten, auch Dateien in src-ctm verstecken.

Wenn du das CVS-Repository hast, kannst du das cvs checkout-Kommando benutzen, um daraus einen Source-Tree zu machen, und jedesmal, wenn du mit CTM ein Update durchgeführt hast, kannst du ein cvs update benutzen, um deinen Source-Tree zu aktualisieren.

Um ein erstes src-Repository zu bekommen:

       cd /usr
       cvs -qd YOUR_CVS_REPOSITORY checkout -P src

und nach jedem CTM-Update:

       cd /usr/src
       cvs -q update -Pd

Wie stabil ist CTM für OpenBSD?

CTM wird seit über fünf Jahren in OpenBSD benutzt und in FreeBSD noch länger. CTM ist ziemlich zuverlässig und stabil.

Was hält die Zukunft für CTM bereit?

Es gibt zahlreiche mögliche Verbesserungen und (kleine) Änderungen. Darunter sind: Maile mir deine Meinung oder Wünsche!

Mehr Informationen

Wenn du mehr über CTM lernen willst, ist das FreeBSD-Handbuch ein guter Platz für Hilfe: Es gibt auch Manualseiten für alle CTM-Utilitys.

Zusammenfassung:

Wichtigen Änderungen und Hinweise über CTM werden auf der announce@OpenBSD.org-Mailingliste bekannt gegeben.

Danksagungen

Das OpenBSD/CTM-Logo wurde für das OpenBSD-Projekt von Phillip F Knaack entworfen.


OpenBSD www@openbsd.org
$OpenBSD: ctm.html,v 1.26 2005/12/07 15:31:43 saad Exp $