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 a actuellement trois branches principales :
Pour résumer, la force du CVS anonyme est que c'est un système de contrôle du code source "tolérant". 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.
CVS est le système de contrôle du code source utilisé pour gérer les sources d'OpenBSD. Il met en oeuvre un "dépôt" central pour tout le source officiellement disponible tout en permettant aux développeurs de maintenir des copies locales du code source avec leurs changements personnels. Les développeurs avec un "accès en écriture" peuvent soumettre des changements directement dans les sources d'OpenBSD, tandis que les utilisateurs du CVS anonyme ont un "accès en lecture" et peuvent garder leurs copies des sources à jour et émettre des requêtes vers le serveur.
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 avec les 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é.
La dernière version de CVS est disponible chez Cyclic. Les versions plus anciennes que 1.6 ne sont pas recommandées et pourraient ne pas fonctionner. Si vous avez déjà OpenBSD d'installé, CVS est inclus.
Les personnes qui possèdent un CD d'OpenBSD y ont sans doute vu des répertoires CVS/. La raison est que sur le CD se trouve une version du module src d'OpenBSD utilisable pour faire des mises à jour depuis un serveur CVS anonyme. Utiliser cette arborescence est beaucoup plus rapide que de récupérer complètement les sources d'OpenBSD. Il y a deux manières d'utiliser le CD :
# cd /mnt; pax -rw CVS Makefile [a-z]* /usr/src
# mount -t union -o -b /mnt /usr/src
Pour ceux qui n'ont pas de CD sous la main, vous pouvez utiliser cvs(1) pour récupérer les sources. C'est décrit dans la section suivante.
Après ça, /usr/src sera un répertoire où les commandes cvs(1) fonctionneront correctement.
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 une branche de correctifs (patch). 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 appliqués.
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. Remarquez tout de même qu'il existe trois possibilités pour accéder à ces serveurs.
REMARQUE : - Pour les utilisateurs qui souhaitent utiliser ssh, il faut d'abord définir la variable CVS_RSH à ssh.
$ export CVS_RSH="/usr/bin/ssh"
$ setenv CVS_RSH /usr/bin/ssh
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 une 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_2_8 srcOu OPENBSD_2_6 pour 2.6, etc...
Actuellement, seul le tag OPENBSD_2_8 contient les sources et les erratas sur les sources déjà appliqués.
Il existe deux niveaux d'accès à l'arborescence des sources :
Voyez la remarque ci-dessous en ce qui concerne l'utilisation de ssh contre 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.
REMARQUE IMPORTANTE : Il existe quelques remarques au sujet des logiciels cryptographiques que tout le monde doit connaître :
Un exemple d'utilisation d'un serveur anoncvs pourrait être :
% setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs
% cd /tmp
% cvs get src/sys/arch/sparc
[copie les fichiers depuis le serveur sur la machine]
% cvs log src/sys/arch/sparc/sparc/locore.s
[montre le journal des commit pour le fichier donné]
% cvs diff -bc -r1.1 -r1.5 src/sys/arch/sparc/sparc/locore.s
[Montre les changements entre les versions 1.1 et 1.5]
[ *REMARQUE* Vous devez utiliser cvs version 1.8 ou supérieur pour faire ceci ]
% setenv CVSROOT :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs
% 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 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 :
(Si vous suivez current):
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs # cd /usr # cvs -q get -PA src
(Si vous suivez la branche des correctifs pour 2.8) :
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs # cd /usr # cvs -q get -rOPENBSD_2_7 -P src
(Si vous suivez current):
# cd /usr/src # cvs -q up -PAd
(Si vous suivez la branche des correctifs pour 2.8) :
# cd /usr/src # cvs -q up -rOPENBSD_2_8 -PdÀ chaque fois que vous lancerez ceci, cela synchronisera votre arborescence /usr/src. Cela ne détruira aucun de vos changements locaux, mais tentera d'y intégrer les changements. Si vous utilisez les répertoires obj (pas les liens symboliques obj), vous pouvez passer l'option "-I obj" sur la ligne de commande, qui permettra d'éviter que cvs n'émette un avertissement au sujet de tous les répertoires obj qu'il va rencontrer et qui ne se situent pas sur le serveur.
-A de cvs, ou vous allez vous mettre à suivre
current.
(Si vous suivez current) :
# cd /usr/src # cvs -d $CVSROOT -q up -PAd
(Si vous suivez la branche des correctifs) :
# cd /usr/src # cvs -d $CVSROOT -q up -Pd
Pour utiliser les ports, il faut procéder de la même façon qu'avec src :
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs # cd /usr # cvs -q get -PA ports
# cd /usr # cvs -q up -PAd ports
ou 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.
Arborescence des sources X11
Les miroirs anoncvs comportent aussi l'arborescence des sources
X11. Vous pouvez adapter les recettes ci-dessus pour mettre à jour
votre arborescence des source X11 depuis le deuxième CD. Vous pouvez
soit copier soit utiliser un union mount pour obtenir les sources de
X11 dans /usr/X11 :
# cd /mnt; cp -Rp X11 /usr
# mount -t union -o -b /mnt/X11 /usr/X11
# cd /usr/X11
# cvs -q update -PAd
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.
Anoncvs : rsh contre ssh
Par défaut, le client CVS utilise rsh pour communiquer avec un serveur
CVS. De nombreux sites CVS ne supportent plus rsh pour des raisons de
sécurité ou à cause d'un pare feu ou d'un mauvais relais protocolaire.
L'alternative est d'utiliser une connexion avec "secure shell" en
utilisant soit : OpenSSH (*GRATUIT ET
LIBRE*) or ssh (non commercial
et commercial).
Les serveurs anoncvs OpenBSD supporte le protocole SSH1 mais pas le protocole SSH2 à cause d'une "politique de licence strictement non commerciale".
Une fois que ssh est installé, il faut définir la variable d'environnement CVS_RSH pour pointer sur ssh (typiquement /usr/bin/ssh). Si votre site vous empêche les connexions vers le port 22 (ce que ssh utilise par défaut) utilisez le port 2022.
Il n'est pas nécessaire d'activer la compression étant donné que CVS compresse déjà. Utilisez quelque chose de semblable à la ligne suivante dans votre fichier $HOME/.ssh/config. Remarquez que tous les serveurs anoncvs n'autorise pas l'accès par le port 2022 et que la plupart des serveurs n'accèpte plus l'algorithme de chiffrement none étant donné qu'il est désactivé dans les versions récentes de ssh pour des raisons de sécurité.
Host anoncvs.ca.openbsd.org Port 2022
CVS est un peu "bruyant" au démarrage, pour éviter ceci, il peut être utile de définir ceci :
setenv CVS_CLIENT_PORT -1
Si vous souhaitez changer de serveur CVS pour un autre (votre serveur habituel est tombé, ou pour d'autres raisons), la variable d'environnement suivante doit être définie :
setenv CVS_IGNORE_REMOTE_ROOTRemarquez que vous aurez aussi besoin de l'option -d comme spécifié auparavant.
Les utilisateurs qui veulent faire un miroir de l'arborescence CVS d'OpenBSD peuvent le faire depuis anoncvs.usa.openbsd.org. Remarquez qu'il s'agit de l'arborescence cvs, et pas de l'arborescence des sources. C'est utile uniquement si vous voulez faire des opérations cvs de façon rapide (diff, annotation, etc...) ou si vous avez de multiples arborescences de sources et que vous voulez ne transférer les données qu'une seule fois (vous pouvez ensuite récupérer une arborescence des sources à partir de votre miroir cvs local).
Un exemple de fichier sup pourrait être :
cvs host=anoncvs.usa.openbsd.org hostbase=/ base=/home delete
qui va créer un miroir de l'arborescence des ports dans /home/cvs avec les fichiers de données sup dans /home/cvs. L'arborescence du CVS OpenBSD est juste en dessous de 1 Go.
Si vous souhaitez être un site miroir anoncvs, contacter le mainteneur anoncvs. Les miroirs Anoncvs nécessite 1 Go de disque et peuvent utiliser jusqu'à 4 Mo 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 sup ou ftp). 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.
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.