CTM for OpenBSD

Was ist ctm?

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.

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 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.

Wieviel Bandbreite braucht ctm ?

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.

Wie man benutzt man ctm?

Sollte ich den source oder cvs tree nehmen?

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

Wie stabil ist ctm für OpenBSD?

Ctm wird seit über einem Jahr in OpenBSD benutzt, und in FreeBSD seit einer ganzen Reihe von Jahren. Ctm ist ziemlich zuverlässig und stabil.

Mehr Informationen

Wenn du Probleme mit ctm hast, ist das FreeBSD Handbuch ein guter Platz für Hilfe: Es gibt auch man pages für alle ctm Utilities, die sich im source package befinden. Wenn du OpenBSD hast solltest du man pages, source, und binaries bereits haben. Wenn nicht, kannst du sie von der FTP-Site weiter oben holen.

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 !

Danksagungen

  • Poul-Henning Kamp (phk@FreeBSD.org) für ctm und die Hilfe für die delta Generierung.
  • Theo de Raadt (deraadt@theos.com) für OpenBSD und dafür, dass er mir die Ressourcen gegeben hat, die ctm deltas auf cvs.OpenBSD.org zu erstellen (inzwischen werden sie an einem anderen Ort generiert) und für die Nameserver-Magie
  • Todd C. Miller (millert@OpenBSD.org) für das Einrichten und Pflegen der ctm Mailinglisten
  • Bob Beck (beck@OpenBSD.org), Artur Grabowski (art@OpenBSD.org), Magnus Holmberg (mho@OpenBSD.org) und Wolfram Schneider (wosch@FreeBSD.org) für das Einrichten des ftp space für die bases und deltas auf ctm.*OpenBSD.org
  • ... und all den anderen, die indirekt dazu beigetragen haben...

    Viel Glück!


    Thomas Graichen

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


    OpenBSD www@openbsd.org
    Originally [OpenBSD: ctm.html,v 1.12 ]
    $Translation: ctm.html,v 1.2 2000/11/18 14:44:54 jufi Exp $
    $OpenBSD: ctm.html,v 1.2 2000/11/18 14:50:50 jufi Exp $