[OpenBSD]

CVS Anonyme


Table des matières


Qu'est ce que le CVS Anonyme ?

Le CVS Anonyme est une méthode qui permet de garder à jour votre copie locale des sources d'OpenBSD. En plus de suivre les dernières nouveautés du développement, il est aussi possible de suivre les correctifs et les errata d'une version.

L'avantage majeur du CVS Anonyme sur les autres techniques de mise à jour est que cela fonctionne directement à partir d'un serveur central où réside le code source ou d'un miroir. Cela vous permet d'avoir accès à toutes les commandes de CVS pour intégrer et mettre à jour vos changements avec d'autres changements dans les sources, d'effectuer des diffs, de voir l'historique des changements et plein d'autres types de requêtes.

Le projet OpenBSD comporte actuellement quatre modules actifs et deux historiques regroupant ses sources :

Pour résumer, CVS Anonyme est un système de contrôle du code source "tolérant" et c'est ce qui fait sa force. Il respecte les changements que vous avez effectués dans vos sources et fait les "meilleurs efforts" pour mettre à jour votre arborescence des sources, plutôt que de vous faire une liste de problèmes ésotériques à résoudre avant de pouvoir continuer.

Qu'est ce que CVS ?

CVS est le système de contrôle du code source utilisé pour gérer les sources d'OpenBSD. Il met oeuvre un dépôt central pour toutes les sources officiellement disponible tout en permettant aux développeurs de maintenir des copies locales du code source avec leurs changements personnels. Il y a deux niveaux d'accès à l'arbre des sources :

La grande force de CVS est sa capacité à effectuer une intégration intelligente des changements venant du serveur central contenant les sources avec les changements que vous avez effectués dans votre copie locale. Cela signifie que si vous faites des changements à un module et que vous effectuez une mise à jour, vos changements ne seront pas détruits. CVS fait en sorte d'intégrer les changements dans les sources aux côtés des changements que vous avez effectués.

Au cas où les changements ne peuvent pas être complètement intégrés, CVS fournit une "chute en douceur", dans le sens qu'il vous fournit des changements annotés à votre copie locale en préservant celle-ci et continue de mettre à jour les autres sources comme demandé.

Débuter avec le CVS Anonyme

Si vous pouvez télécharger l'arbre des sources complet depuis un serveur AnonCVS, vous pouvez souvent gagner beaucoup de temps et épargner de la bande passante en "prechargeant" votre arbre des sources avec les fichiers source contenus soit depuis le CD d'OpenBSD, soit depuis un serveur FTP. Ceci est particulièrement vrai si vous utilisez -stable, car relativement peu de fichiers changent entre - release et -stable.

Pour extraire l'arbre des sources depuis le CD vers /usr/src (en supposant que le CD est monté dans /mnt) :

	# cd /usr/src
	# tar xzf /mnt/src.tar.gz
	# cd /usr
	# tar xzf /mnt/xenocara.tar.gz
	# tar xzf /mnt/ports.tar.gz
Les fichiers source à télécharger sur les serveurs FTP sont séparés en deux fichiers afin de réduire le temps de téléchargement requis pour ceux qui ne veulent travailler qu'avec une partie de l'arbre. Les deux fichiers sont sys.tar.gz, qui contient les fichiers utilisés pour créer le noyau, et src.tar.gz qui contient le reste des applications du "userland". Cependant, vous voudrez généralement les installer tous deux. En supposant que les fichiers téléchargés src.tar.gz, sys.tar.gz et xenocara.tar.gz soient dans /usr :
	# cd /usr/src
	# tar xzf ../sys.tar.gz
	# tar xzf ../src.tar.gz
	# cd /usr
	# tar xzf xenocara.tar.gz
	# tar xzf ports.tar.gz

Toutes les personnes ne voudront pas décompresser la totalité des sets de fichiers, mais vous devrez généralement configurer tous les sets afin d'avoir un système synchronisé.

Vous pouvez aussi simplement utiliser cvs(1) afin de faire un "checkout" du dépôt des sources pour vos besoins. Ceci est évoqué dans la section suivante.

Après cela, /usr/src sera un répertoire où toutes les commandes cvs(1) fonctionneront correctement.

Utiliser CVS pour récupérer et mettre à jour son arbre source

CVS a été mis au point dans le but d'être un moyen simple de récupérer et de mettre à jour vos sources. Vous devez tout d'abord décider si vous voulez suivre la branche current ou la branche des patchs. L'arborescence current possède tous les derniers changements et la branche correctifs contient une version d'OpenBSD avec tous les correctifs de l'errata et d'autres problèmes moindres appliqués. Pour plus d'informations sur ces "flavors" d'OpenBSD, consultez ceci.

Une fois que vous avez décidé quelle est la branche que vous voulez suivre, vous devez sélectionner le serveur de CVS Anonyme que vous allez utiliser. Une liste de ces serveurs est disponible ci-dessous.

Une fois que vous avez choisi le serveur de CVS Anonyme que vous allez utiliser, et quelle méthode vous allez utiliser, vous pouvez démarrer. Pour ceux qui aurait le CD, vous pouvez démarrer avec la version du CVS qui se trouve sur le CD avec les méthodes décrites ci-dessus pour installer les sources sur votre système. Si vous n'avez pas le CD sous la main, utilisez la méthode ci-dessous pour récupérer les sources. Cette méthode place l'arborescence des sources d'OpenBSD dans /usr/src.

	# cd /usr; cvs checkout -P src

La méthode ci-dessus va récupérer (checkout) l'arborescence current des sources. Beaucoup d'entre vous désirerons sûrement la branche correctifs (patch) des sources. Pour récupérer une branche patch, vous devez le spécifier avec votre commande (tag). Exemple :

	# cd /usr; cvs checkout -P -rOPENBSD_4_8 src

Ou OPENBSD_4_7 pour 4.7, etc.

Le tag OPENBSD_4_8 contient les sources et les erratas sur les sources déjà appliqués.

Serveurs CVS Anonymes disponibles

Consultez la remarque ci-dessous en ce qui concerne l'utilisation de ssh ou rsh !

Remarque : Si votre serveur est listé ici avec des informations inexactes, veuillez contacter beck@openbsd.org

Vous pouvez utiliser traceroute(8) pour trouver le serveur le plus proche de vous. Les problèmes avec un serveur doivent être adressés directement au mainteneur du serveur en question.

Obtenir les sources crypto par cvs(1)

REMARQUE IMPORTANTE : Il existe quelques remarques au sujet des logiciels cryptographiques que tout le monde doit connaître :

A cause de la politique commerciale de l'US Dept, les logiciels de crypto ne peuvent être exportés qu'au Canada depuis les Etats-Unis.

Exemples d'utilisation de cvs(1)

AVERTISSEMENT : si vous souhaitez mettre à jour une branche (telle qu'une branche de correctifs) vers current, vous devez ajouter l'option -A à la commande cvs mais autrement, cette option est inutile. D'anciennes versions de la documentation OpenBSD recommandait l'usage de cette option dans de nombreux exemples. Nous ne la recommandons plus, sauf lorsqu'elle est absolument nécessaire.

Un exemple d'utilisation d'un serveur anoncvs pourrait être :

$ cd /tmp
$ cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs get src/sys/arch/sparc
        [copie les fichiers depuis le serveur sur la machine]
$ cd src/sys/arch/sparc
$ cvs log locore.s
        [montre le journal des commit pour le fichier donné]
$ cvs diff -bc -r1.1 -r1.5 locore.s
        [Montre les changements entre les versions 1.1 et 1.5]

Pour pouvoir utiliser cvs avec ``pserver'' (une connexion TCP directe plutôt que l'utilisation de ssh ou rsh) vous devez vous connecter une fois :

$ cvs -d :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs login
(Connexion à anoncvs@anoncvs1.ca.openbsd.org)
CVS password: anoncvs
        [Cela écrit une ligne dans ~/.cvspass (le nom de fichier est
        écrasé par CVS_PASSFILE).]
        [Une ligne d'exemple de mon ~/.cvspass après avoir
        tapé 'blah' ]
        [password is:                                                            ]
        [:pserver:anoncvs@anoncvs5.usa.openbsd.org:/cvs Au'yc                    ]
        [...après s'être connecté une fois, le CVSROOT ci-dessus fonctionnera    ]
$ cvs -d :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs get ksrc-i386 ksrc-common
        [Vous permet de ne récupérer QUE ce qui est
        nécessaire pour créer un noyau i386 ]

Voici comment quelqu'un qui utilise anoncvs met à jour son arborescence des sources :

Pour utiliser les ports, il faut procéder de la même façon qu'avec src :

Dans l'exemple précédent, -q est optionnel, et n'est là que pour minimiser la sortie cvs. Pour ceux qui aime avoir des écrans bien pleins, il peut être enlevé.

Pour faire un diff sur un module corrigé en local (ici cd.c) à inclure avec un rapport de bug :

        # cd /usr
        # cvs diff -u src/sys/scsi/cd.c > /tmp/patch

La page du manuel CVS(1) (inclue avec les sources de CVS) a beaucoup plus d'informations sur la manière d'utiliser CVS.

Avertissement : Quand vous utilisez cvs il vous faudra prendre garde que votre répertoire courant est soit la racine de l'arborescence des ports ou une autre place telle que /tmp. Quelques commandes telles que "get" peuvent créer une sous-arborescence arbitrairement dans le répertoire courant, et chaque mise à jour successive ira mettre à jour cette sous- arborescence.

Le serveur anoncvs donne une chance aux apprentis développeurs d'apprendre les opérations cvs et de devenir ainsi impliqué dans le développement des sources avant d'obtenir un accès "commit". De plus, les gens fournissant des correctifs peuvent les créer avec des diffs relatifs à l'arborescence CVS, ce qui facilitera l'intégration.

Utiliser rsh(1) ou ssh(1)?

CVS supporte trois méthodes d'accès entre le serveur CVS et le client :

REMARQUE : Les utilisateurs voulant utiliser rsh devraient tout d'abord régler la variable d'environnement CVS_RSH pour qu'elle pointe sur le programme rsh(1) lancé :

Par défaut, le client CVS d'OpenBSD utilise ssh ("secure shell": OpenSSH) pour dialoguer avec le serveur CVS.

De nombreux sites CVS ne supportent plus rsh ou pserver pour des raisons de sécurité. Des problèmes locaux tels que des pare-feu ou des émulateurs de protocole imparfaits tels que slirp peuvent aussi réduire l'utilisation de rsh. Cependant, si vous souhaitez utiliser rsh, vous devez régler la variable d'environnement CVS_RSH pour qu'elle pointe sur rsh (typiquement, /usr/bin/rsh).

Si la politique locale empêche les connexions sortantes vers le port par défaut de ssh (22), le port 2022 peut être utilisé à la place. Notez cependant que tous les serveurs anoncvs n'acceptent pas les connexions sur ce port. De plus, la plupart des serveurs anoncvs n'acceptent plus le chiffrement nul, puisqu'il est désactivé dans les versions récentes de ssh pour raison de sécurité. De plus, ne soyez pas tentés d'activer la compression : CVS compresse déjà.

Vous pouvez spécifier quelque chose comme ce qui suit dans le fichier de configuration $HOME/.ssh/config pour éviter les écueils et restrictions mentionnées ci- dessus :

        Host anoncvs.ca.openbsd.org
            Compression no
            Port 2022

CVS est un peu "bavard" au démarrage, pour éviter ceci, il peut être utile de définir ceci :

	$ export CVS_CLIENT_PORT=-1

Faire un miroir du dépôt CVS via sup(1)

Les utilisateurs qui souhaitent faire un miroir de l'arbre CVS d'OpenBSD doivent maintenant le faire de anoncvs.usa.openbsd.org ou anoncvs3.usa.openbsd.org (ce sont des machines différentes). Il faut remarquer que c'est l'arbre cvs, pas une récupération de l'arbre des sources. C'est seulement utile si vous voulez être capable de faire des opérations cvs rapidement (diff, annotate, etc) ou si vous avez plusieurs arbres des sources et que vous voulez seulement transférer des nouvelles données une fois (vous pouvez récupérer un arbre de votre miroir cvs local).

Un exemple de supfile serait :

	cvs host=anoncvs.usa.openbsd.org hostbase=/ base=/home delete

qui fera un miror de l'arbre cvs dans /home/cvs avec les fichiers de données sup dans le répertoire /home/sup. L'arbre cvs complet d'OpenBSD a actuellement une taille de 5Go, et continuera évidemment de grandir.

Mettre en place un miroir anoncvs

Si vous souhaitez mettre en place un site miroir anoncvs et de le mettre à disposition du public, contactez le mainteneur anoncvs. Les miroirs anoncvs nécessite 5GB de disque (et cela continuera de grossir !) et peuvent utiliser jusqu'à 32MB de swap par utilisateur anoncvs (en supposant que l'utilisateur fasse une opération d'envergure, de plus petites opérations nécessiteront moins de ressources, mais dans tous les cas, anoncvs utilise beaucoup plus de ressources que ftp ou sup). De telles machines anoncvs se doivent d'avoir une excellente connexion réseau pour la zone qu'elles ont l'intention de servir. Un document qui décrit comment mettre en place les serveurs anoncvs est disponible.

Remarques finales

Après avoir mis à jour l'arborescence des sources, vous pouvez lire les commentaire en haut de /usr/src/Makefile avant d'essayer de compiler. De plus vous devez construire un nouveau noyau avant de faire un make build si possible. Dans certains cas, il est indispensable de reconstruire et installer l'utilitaire config avant de reconstruire le noyau. Si config GENERIC ne fonctionne pas, c'en est probablement la cause.

Il est important de noter que mettre à jour d'une version d'OpenBSD vers une arborescence courante (current) est difficile à cause des dépendances qui ne sont pas toujours évidentes. Il est donc conseillé d'installer tout d'abord le dernier snapshot avant de tenter de recompiler les sources.


OpenBSD www@openbsd.org
$OpenBSD: anoncvs.html,v 1.141 2011/01/17 09:42:43 ajacoutot Exp $