CTM for OpenBSD

Qu'est ce que CTM ?

CTM est un système conçu par Poul-Henning Kamp pour distribuer, de façon régulière et par courrier électronique, les changements effectués sur une arborescence de sources. C'est un bon moyen de rester à jour avec les sources actuelles ou l'arbre CVS si vous avez une mauvaise connexion Internet (par exemple un modem).

Le CTM d'OpenBSD distribue tous les modules du dépôt CVS OpenBSD ainsi que des versions extraites de plusieurs de ces modules. CTM utilise très peu de bande passante pour distribuer les changements dans les sources et les compresse en utilisant gzip -9. En comparaison avec CVSup, CTM est écrit en langage C et est donc dispnible pour toutes les plates- formes supportées par OpenBSD.

Pour tous problèmes, suggestions et questions ayant un rapport avec CTM, veuillez contacter le mainteneur de CTM Hans Günter Weigand. (Veuillez ne pas demander à d'autres personnes du projet OpenBSD une aide sur CTM, elles sont occupées à d'autres choses. Merci).

Comment est-ce que cela fonctionne ?

L'idée de CTM est que vous vous inscrivez à une liste de discussion spécifique à un module CVS ou à une arborescence donnée. 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. Le serveur de CTM génère des deltas toutes les douzes heures.

Vous commencer avec une série de base sur laquelle vous appliquerez les deltas ultérieurs. Pour commencer avec CTM vous devez télécharger la dernière série de base ainsi que tous les deltas générés après elle. 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.

Les séries de base sont générées environ tous les 50 deltas, ce qui fait que vous n'avez jamais plus de 50 deltas à récupérer.

Il y a pour l'instant deux types de fichiers de base. Pendant un certain temps, nous avons fait des fichiers tar.gz à la main, mais nous sommes maintenant revenus à de vrais deltas CTM de base. Ceux- ci contiennent une somme md5(1) et sont générés automatiquement, les rendants donc plus sûrs. Vous pouvez distinguer les deux types de sets de base grâce à leurs noms. Un example pour un fichier tar.gz est OpenBSD-cvs.1450.tar.gz alors qu'un delta CTM de base serait nommé OpenBSD- cvs.1500A.gz. Voir ci-dessous pour des instructions détaillées.

Quel est la bande passante utilisée par CTM ?

Vous obtenez la série de base ainsi que tous les deltas par ftp depuis les sites donnés ci-dessous. Les tailles sont :

Comment utiliser CTM ?

Remarque : Les exemples ci-dessous ne couvrent que OpenBSD-cvs pour plus de clarté. Les autres sources sont à gérer de la même façon.

Voici la liste des serveurs FTP contenant les deltas CTM :

REMARQUE Je suis très interessé pour trouver d'autres sites à travers le monde qui voudraient faire un miroir de ces deltas.

Dois-je utiliser l'arborescence src ou cvs ?

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, suivre une branche stable et conserver vos modifications locales dans votre arborescence des sources. CVS est assez "intelligent" pour intégrer vos changements locaux. Vous pouvez aussi utiliser toutes les commandes CVS à l'exception des commandes telles que cvs commit et cvs tag.

Le désavantage par contre, est la quantité de place disque que cela prend. Une arborescence des sources est d'environ 370Mo, mais si vous avez une arborescence CVS, vous aurez besoin de 1Go pour celle- ci, en plus des 370Mo pour les sources. Ceci ne compte pas les 100Mo pour les fichiers gérérés lors d'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 (voir mount_union(8)), 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_DEPOT_CVS checkout -P src

après chaque mise à jour CTM :

    cd /usr/src
    cvs -q update -Pd

Est-ce que ctm est stable sous OpenBSD ?

CTM est utilisé depuis plus de cinq ans par OpenBSD, et par FreeBSD depuis encore plus longtemps. CTM est stable et solide.

Quel futur pour CTM ?

Il y a un certain nombre de changements et optimisations possibles (bien que petits). Parmi ceux-ci :
  • CTM n'envoie jamais un delta de plus de 5Mo par email. Cela pourrait être changé de deux façons : la taille maximale des deltas pourrait être changées, ou une file pourrait être installée, depuis laquelle, seuls un certain nombre de messages seraient envoyés journalièrement. Par exemple, si un delta a une taille de 6Mo, il est découpé en 96 emails. Le premier jour, les 50 premiers messages sont envoyés, et le second jour, les 46 restants sont envoyés, ainsi que les 4 messages du delta suivant.
  • Le logiciel CTM pourrait être réécrit, ou au moins corrigé. Sa mise ne oeuvre en C n'est pas un exemple de bonne programmation. Ça serait de plus une bonne opportunité pour ajouter de nouvelles fonctionnalités comme la signature des deltas CTM avec PGP.
Envoyez moi un courrier électronique pour me donner vos avis et souhaits !

Plus d'informations

Si vous voulez en savoir plus sur CTM, un bon endroit pour démarrer est le manuel FreeBSD : Il y a aussi des pages de manuel pour les utilitaires CTM.

Résumé :

Les annonces et remarques importantes à propos de CTM seront postées sur la liste de diffusion announce@OpenBSD.org.

Remerciements

  • Poul-Henning Kamp (phk@FreeBSD.org) pour avoir rendu CTM possible et avoir aidé dans le processus de génération de deltas.
  • Theo de Raadt (deraadt@theos.com) pour avoir rendu OpenBSD possible et avoir donné les ressources nécessaires pour créer les premiers deltas ctm sur cvs.OpenBSD.org (maintenant ils sont générés ailleurs) et pour la magie du serveur de noms.
  • Todd C. Miller (millert@OpenBSD.org) pour la mise en place et l'entretien des listes de discussion CTM.
  • Bob Beck (beck@OpenBSD.org), Artur Grabowski (art@OpenBSD.org), Magnus Holmberg (mho@OpenBSD.org) et Wolfram Schneider (wosch@FreeBSD.org) pour la mise en place de l'espace ftp pour les séries de base et les deltas sur ctm.*OpenBSD.org
  • Thomas Graichen (graichen@OpenBSD.org) pour avoir commencé CTM pour OpenBSD et l'avoir maintenu pendant des années
  • Wim Vandeputte (wvdputte@OpenBSD.org) pour l'hébergement de CTM
  • ... et tous les autres qui ont contribué indirectement

Le logo OpenBSD/CTM a été dessiné pour le projet OpenBSD par Phillip F Knaack.


OpenBSD www@openbsd.org
$OpenBSD: ctm.html,v 1.20 2005/05/24 04:28:05 saad Exp $