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.)
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, sodass 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.
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:
Es gibt verschiedene Mailinglisten zum Thema CTM. Es gibt eine Liste für die Aktualisierungen am CVS-Repository, eine Liste für den Source-Tree, eine Liste für den X11-Teil und eine für den Ports-Tree, sowie eine für die Log-Messages des CTM-Delta-Generators.
Für das CVS-Repository (CVSROOT-, ports-, src- und www-Module, aber ohne die X11- und XF4-Module):
echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org
Für das X11-Modul des CVS-Trees:
echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org
Für das XF4-Modul des CVS-Repositorys:
echo subscribe OpenBSD-cvs-xf4 | mail majordomo@OpenBSD.org
Für eine ausgecheckte Kopie des src-Moduls:
echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org
Für eine ausgecheckte Kopie des X11-Moduls:
echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org
Für eine ausgecheckte Kopie des Ports-Trees:
echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org
Für die CTM-Logliste:
echo subscribe CTM-log | mail majordomo@OpenBSD.org
cat split/OpenBSD-cvs.1500A.gz.* > OpenBSD-cvs.1500A.gz
cd target
CTM -v -v -v .../OpenBSD-cvs.1500A.gz
oder
cat split/OpenBSD-cvs.1450.tar.gz.* > OpenBSD-cvs.1450.tar.gz
cd target
tar -xzvf .../OpenBSD-cvs.1450.tar.gz
wobei split das Verzeichnis ist, in dem du die heruntergeladenen Dateien abgelegt hast und target der Platz ist, den du für das Auspacken des Sourcesets gewählt hast.
Es ist nicht notwendig, die Dateien weiter zu behalten, sobald du einmal einen kompletten Tree hast. Aber du kannst die Basissatz-Dateien aus Backupgründen behalten. Auf jeden Fall musst du aber die Nummer des Basissatzes notieren, bevor du weitermachen kannst.
cd target
CTM -v -v -v deltas/OpenBSD-cvs.*
wobei target das Verzeichnis ist, wo dein Sourceset-Tree ist, und deltas der Platz ist, wo deine Deltas gespeichert sind.
CTM_rmail -p /tmp -d deltas -b target folder
wobei folder Der Mailordner ist, der die Delta-Mail enthält. Das wird das CTM Delta dekodieren und im deltas-Verzeichnis speichern. Das Delta wird eine Datei der Form OpenBSD-cvs.XXXX.gz sein, wobei XXXX die Nummer des Deltas ist. Dann wird das Delta in den Directory-Tree unter target, eingearbeitet, dem Platz, an dem du den Basissatz ausgepackt hast.
Wiederhole diesen letzten Schritt jedes Mal, wenn du ein Delta von der Mailingliste erhältst. Wenn du magst, kannst du diesen Schritt mit Hilfe von procmail, maildrop oder ähnlichen Programmen aus der Ports-Kollektion automatisieren.
Hier ist die Liste der FTP-Server die CTM-Deltas bereithalten:
ftp://togetic.kd85.com:/pub/OpenBSD-ctm/ .
Dieser Server wird normalerweise automatisch vom CTM-Delta-Erzeugungsprozess aktualisiert. Basissätze sind als eine große Datei im base-Verzeichnis zu finden. Die split-Dateien sind in base-split.
Dieser Server wird durch CTM-Deltas aktualisiert, die von der Mailingliste eintreffen. Er hat zusätzlich die ,split base'-Deltas im base-Unterverzeichnis. Gespiegelt vom ftp://togetic.kd85.com:/pub/OpenBSD-ctm/ .
ist identisch mit
und ist ein ,mirror' von ftp://ctm.se.OpenBSD.org .
HINWEIS: Ich bin sehr an weiteren Sites interessiert, die die Deltas spiegeln möchten.
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 modifiziert 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 Architektur), sprich das Kompilieren der Sourcen.
Wenn du das CVS-Repository hast, kannst du das cvs checkout-Kommando benutzen, um daraus einen Source-Tree zu machen, und jedes Mal, 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
Wichtigen Änderungen und Hinweise über CTM werden auf der announce@OpenBSD.org-Mailingliste bekannt gegeben.
Das OpenBSD/CTM-Logo wurde für das OpenBSD-Projekt von Phillip F Knaack entworfen.