Ctm est un système conçu par Poul-Henning Kamp pour distribuer les changements effectués sur une arborescence de source tous les jours par courrier électronique. C'est un bon moyen de rester à jour avec les sources actuelles ou l'arbre cvs sur vous avez une mauvaise connexion Internet (par exemple un modem).
Ctm utilise très peu de bande passante pour distribuer les changements dans les sources et les compresse en utilisant gzip -9.
L'idée de ctm est que vous vous inscrivez à une liste de discussion spécifique à une arborescence. Chaque jour vous recevez un message électronique contenant les changements sur l'arbre pendant cette période. Une série de différences est appelé un "delta".
Vous commencer avec une série de base sur laquelle vous appliquerez les deltas ultérieurs. Pour commencer avec ctm vous devez récupérer la dernière série de base ainsi que tous les deltas suivants. Une fois que vous avez traité tout ça, vous pouvez appliquer les deltas ultérieurs au fur et à mesure de leur réception. La série de base est découpée en morceaux de 1400k chacun pour permettre un téléchargement aisé au travers des mauvaises connexions. Vous pouvez même les mettre sur disquettes.
Les séries de base sont générées environ tous les 100 deltas, ce qui fait que vous n'avez jamais plus de 100 deltas à récupérer.
Comme mentionné précédemment, la série de base contient toutes les sources de l'arborescence au format TAR, ce qui peut être volumineux. Vous devez obtenir cette série de base ainsi que tous les deltas par ftp depuis les sites donnés ci-dessous. Les tailles sont :
Des mises à jour plus grosse à travers ctm sont rares, et seulement après une modification majeure des sources telle que binutils, perl...
Il y a plusieurs listes de diffusion pour ctm. Il y a une liste pour les mises à jour des mises à jour de l'arborescence cvs, une liste pour l'arborescence des sources, deux pour X11 (sources et cvs), une pour les ports et une pour les messages du générateur de delta ctm.
Les commandes suivantes vous inscrirons aux listes appropriées :
Pour l'arborescence cvs (sans la partie X11) :
echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org
Pour la partie X11 de l'arborescence cvs :
echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org
Pour l'arborescence des sources (sans la partie X11) :
echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org
Pour la partie X11 de l'arborescence des sources :
echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org
Pour l'arborescence des ports :
echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org
Pour la liste de messages ctm :
echo subscribe ctm-log | mail majordomo@OpenBSD.org
Il n'est pas nécessaire de garder ces fichiers, si vous êtes sur d'avoir une arborescence complète. Cependant, assurez vous de noter le numéro de la base avant de continuer.
Maintenant, vous avez besoin de récupérer les deltas qui ont été
générés depuis la création de la série de base. Allez sur l'un des
sites FTP ci-dessous dans le sous répertoire OpenBSD-cvs ou
OpenBSD-src et récupérez tous les fichiers dont le numéro est
Les adresses pour la série de base et les deltas sont :
Cela prendra quelque temps à intégrer tous les deltas, mais les utilisations journalières de ctm_rmail et ctm seront plus courtes.
Cela dépend de votre place disque entre autre. Étant donné que ctm n'agit pas sur des fichiers qui ont été modifié en dehors du processus ctm, le "meilleur" choix est sans doute l'arborescence cvs. De cette façon, vous pouvez récupérer une arborescence src depuis votre arborescence cvs et garder vos modifications locales dans votre arborescence des sources, laissant ainsi ctm ne toucher qu'à votre arborescence cvs.
Le désavantage par contre, est la quantité de place disque que cela prend. Une arborescence des sources est d'environ 300Mo, mais si vous avez une arborescence cvs, vous aurez besoin de 400Mo pour celle-ci, en plus des 300Mo pour les sources.
Ceci ne compte pas les 100Mo ou plus nécessaires à une compilation (cela dépend de l'architecture).
Si vous venez juste d'obtenir l'arborescence des source, vous aurez besoin de gérer les modifications locales. Une manière de faire ceci est d'utiliser le système de fichiers union, bien qu'il ait été rapporté que le système de fichiers union peut être instable si les couches inférieures et supérieures résident sur le même système de fichiers physique. Si vous placez vos couches supérieures et inférieures sur des systèmes de fichiers différents vous ne devriez avoir aucun problème. Un exemple :
Supposons que votre arborescence mise à jour de ctm se trouve dans
/usr/src-ctm et que votre véritable arborescence des sources
(à partir de laquelle vous faites vos modifications et compilations)
se trouve dans /usr/src. /usr/src doit initialement être
un répertoire vide. La commande suivante va configurer votre union
mount :
mount -t union -o -b /usr/src-ctm /usr/src
Les modifications faites aux fichiers se trouvant dans /usr/src
deviendront un fichier contenu dans /usr/src, masquant celui dans
src-ctm. Si des changements sont faits via ctm dans l'arborescence
src-ctm sous jacente, ces changements ne seront pas vus s'il y
a un fichier dans la couche supérieure les masquant.
Vous devriez démonter périodiquement l'union et chercher les fichiers
locaux au système de fichiers union.
umount /usr/src
find /usr/src -type f
Les commandes ls -W et rm -W seront utiles aussi,
car les objets nommés "whiteouts" dans /usr/src cacheront aussi des
fichiers dans src-ctm.
Si vous avez l'arborescence cvs, vous pouvez utiliser la commande "cvs
checkout" pour en récupérer une arborescence des sources, et à chaque
fois que vous mettez à jour avec ctm, vous pouvez utiliser "cvs
update" pour mettre à jour votre arborescence des sources.
Pour obtenir votre arborescence src originelle :
cd /usr
cvs -qd VOTRE_ARBORESCENCE_CVS checkout src
après chaque mise à jour ctm :
cd /usr/src
cvs -q update -PAd
Vous pouvez aussi contacter les listes de discussion OpenBSD ou moi-même si vous avez des difficultés avec ctm, bien que mon temps libre tend à être limité.
Résumé :
Je ferai les remarques et annonces importantes à propos de ctm dans :
REMARQUE : Si vous utilisez ctm pour OpenBSD, veuillez m'envoyer un courrier électronique de façon à ce que je sache combien de personnes l'utilise !
Bonne chance !
t