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 six modules 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.
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é.
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/XF4.tar.gz # tar xzf /mnt/ports.tar.gzLes 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 et sys.tar.gz soient dans /usr :
# cd /usr/src # tar xzf ../sys.tar.gz # tar xzf ../src.tar.gz # cd /usr # tar xzf XF4.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.
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_1 src
Ou OPENBSD_4_0 pour 4.0, etc.
Le tag OPENBSD_4_1 contient les sources et les erratas sur les sources déjà appliqués.
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.
REMARQUE IMPORTANTE : Il existe quelques remarques au sujet des logiciels cryptographiques que tout le monde doit connaître :
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]
$ 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 :
(Si vous suivez current):
# cd /usr
# cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -P src
(Si vous suivez la branche des correctifs pour 4.1) :
# cd /usr
cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_4_1 -P src
(Si vous suivez current):
# cd /usr/src
# cvs -q up -Pd
(Si vous suivez la branche des correctifs pour 4.1) :
# cd /usr/src
# cvs -q up -rOPENBSD_4_1 -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.
# cd /usr/src
# cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs -q up -Pd
Pour utiliser les ports, il faut procéder de la même façon qu'avec src :
(Si vous suivez current) :
# cd /usr
# cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -P ports
(Si vous suivez la branche des correctifs pour 4.1) :
# cd /usr
# cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_4_1 -P ports
(Si vous suivez current) :
# cd /usr/ports
# cvs -q up -Pd
(Si vous suivez la branche des correctifs pour 4.1) :
# cd /usr/ports
# cvs -q up -rOPENBSD_4_1 -Pd
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.
REMARQUE : Les utilisateurs voulant utiliser rsh devraient tout d'abord régler la variable d'environement CVS_RSH pour qu'elle pointe sur le programme rsh(1) lancé :
$ export CVS_RSH=/usr/bin/rsh
% setenv CVS_RSH /usr/bin/rsh
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 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
Les utilisateurs qui veulent faire un miroir de l'arborescence CVS d'OpenBSD peuvent le faire depuis anoncvs.usa.openbsd.org ou anoncvs3.usa.openbsd.org (ce sont des machines différentes). 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 fait actuellement une taille d'environ 3.5GB et continue bien sûr d'augmenter.
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 3.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 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.