Ctm ist ein System, das von Poul-Henning Kamp erschaffen wurde, um die täglichen Ä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 schlechte Internetverbindung hat, z.B. via Modem.
Ctm benutzt eine sehr kleine Bandbreite, um die Änderungen am source tree zu verschicken und komprimiert sie ausserdem per gzip -9.
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 zu erhalten. Du erhältst jeden Tag eine E-Mail mit den jeweiligen Änderungen dieses Tages. Ein Satz Änderungen wird "delta" genannt.
Du beginnst mit einem Basissatz gegen den dann später die deltas gepatched werden. Um mit ctm zu beginnen, musst du unbedingt die neueste Version des "base set" (Basissatz) und alle danach folgenden deltas herunterladen; nachdem du diese verarbeitet hast, kannst du mit denen weitermachen, die du per E-Mail erhältst. Die Basis-Sätze sin jeweils in 1440k Teile aufgeteilt, damit man sie leichter über eine schlechte Leitung herunterladen und auch auf Floppies plazieren kann.
Basen werden etwa nach 100 relativen deltas erstellt, so dass du nie mehr als 100 deltas herunterladen musst, um auf den aktuellen Stand zu kommen.
Wie oben schon erwähnt, enthält das Basisset einen vollen source tree in tar-format, und ist daher recht gross. Du musst das base set aber 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:
Größere ctm Updates sind selten, passieren aber meist nach dem Importieren von grossen Dingen wie etwa den binutils, perl, usw. in den source tree.
Es gibt verschiedene Mailinglisten für das Thema ctm. Es gibt eine Liste fü die Updates am CVS tree, 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.
Die folgenden Kommandos werden dich auch der entsprechenden Liste einschreiben:
Für den cvs tree (ohne die X11 Teile):
echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org
Für den X11 Teil des cvs tree:
echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org
Für den source tree (ohne den X11 Teil):
echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org
Für den X11 Teil des source tree:
echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org
Für den ports tree:
echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org
Für die ctm log Liste:
echo subscribe ctm-log | mail majordomo@OpenBSD.org
Es ist nicht länger notwendig diese Dateien zu behalten, wenn du sicher bist, einen kompletten Tree zu haben. Wie dem auch sei, du solltest unbedingt die Nummer des tree notieren, bevor du weitermachst.
Als nächstes holst du dir die deltas, die nach der Erzeugung des base trees
generiert wurden. Gehe auf die unten aufgeführte FTP-Seite und zwar z.B. in das
Unterverzeichnis
OpenBSD-cvs oder OpenBSD-src und lade alle Dateien herunter, deren Nummer
Die Adresse für base und deltas ist:
Es wird einige Zeit dauern, alle deltas durchlaufen zu lassen, aber die täglichen Aufrufe von ctm_rmail und ctm werden nicht mal annähernd so lange dauern.
Das hängt unter anderem von deinem verfügbaren Paltz auf der Festplatte ab. Da ctm noch nichts mit Dateien anfangen kann, die ausserhalb des ctm Prozesses modifziert wurden, ist die "bessere" Wahl wahrscheinlich der cvs-tree. Dann kannst du deinen funktionierenden source tree aus dem cvs-tree heraus updaten, und deine lokalen Änderungen in deinem source tree behalten, und es alleine ctm vorbehalten, den cvs-tree zu verändern.
Der Nachteil ist der dafür notwendige Plattenplatz. Ein 'checked-out' source tree benötigt etwa 300Mb, aber wenn du deinen eigenen cvs tree hast, brauchst du etwa 400Mb dafür, plus zusätzliche 300Mb für den "checked out" tree.
Das beinhaltet noch nicht die 100Mb oder mehr, die du für einen "build" brauchst (abhängig von der Archiktektur.)
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, obwohl es auch schon Berichte gegeben hat, das union Dateisystem könne unstabil sein, wenn die unteren und oberen "layers" auf dem selben physischen Dateisystem residieren. Wenn du aber obere und untere Layer auf verschiedene Dateisysteme plazierst, solltest du dieses Problem nicht haben. Ein Beispiel:
Nehmen wir an dein "ctm-updated" 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 zu Anfang 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 via ctm
am darunterliegen src-ctm tree gemacht werden, werden diese Änderungen nicht
sichtbar sein, wenn es eine Datei in der darüberliegenden Schicht gibt, die sie versteckt.
Das solltest regelmässig das union-Dateisystem "unmounten"
und nach Dateien suchen, die es nur im union Dateisystem gibt.
umount /usr/src
find /usr/src -type f
Die Kommandos ls -W und rm -W werden ebenfalls nützlich sein,
da Objekte namens "whiteouts" in /usr/src ebenso Dateien in src-ctm verstecken.
Wenn du den cvs-tree holst, kannst du das "cvs checkout" Komnmando benutzen, um
einen source tree zu erhalten, und jedesmal, wenn du mit ctm updatest, kannst du mit
"cvs update" deinen source tree auf den aktuellen Stand bringen.
Für einen ersten src tree:
cd /usr
cvs -qd YOUR_CVS_TREE checkout src
und nach jedem ctm update:
cd /usr/src
cvs -q update -PAd
Du kannst auch die OpenBSD Mailinglisten oder mich selbst kontaktieren, wenn du Schwierigkeiten mit ctm hast, obwohl meine Freizeit doch recht eingeschränkt ist.
Zusammenfassung:
Ich werde alle wichtigen Änderungen und Hinweise über ctm hier bekannt machen:
HINWEIS: Wenn du ctm für OpenBSD benutzt schicke mir doch bitte eine E-Mail, so dass ich weiss, wieviel Leute es benutzen !
Viel Glück!