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.
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 toutes les sources officiellement disponibles 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é.
REMARQUE IMPORTANTE : Il existe quelques remarques au sujet des logiciels cryptographiques que tout le monde doit connaître :
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.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, 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.
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.
(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 5.2) :
# cd /usr # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_5_2 -P src
(Si vous suivez current):
# cd /usr/src # cvs -q up -Pd
(Si vous suivez la branche des correctifs pour 5.2) :
# cd /usr/src # cvs -q up -rOPENBSD_5_2 -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, cela est similaire à 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 5.2) :
# cd /usr # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_5_2 -P ports
(Si vous suivez current):
# cd /usr/ports # cvs -q up -Pd
(Si vous suivez la branche des correctifs pour 5.2) :
# cd /usr/ports # cvs -q up -rOPENBSD_5_2 -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 de manuel de cvs(1) (incluse avec les sources CVS) contient plus d'informations sur la façon dont peut être utilisé 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.
$ cd /tmp
$ cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs get src/sys/arch/sparc
[copies the files from the repository to your machine]
$ cd src/sys/arch/sparc
$ cvs log locore.s
[shows the commit log for the chosen file]
$ cvs diff -bc -r1.1 -r1.5 locore.s
[shows the changes between revisions 1.1 and rev 1.5]
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.
Si la politique locale empêche les connexions sortantes vers le port par défaut de ssh (22), certains serveurs autorisent les connexions sur un port alternatif (typiquement 2022). Ces serveurs figurent ci-dessous. Pour utiliser un port différent, reconfigurez votre client ssh en ajoutant une entrée "Host" dans le fichier $HOME/.ssh/config, e.g.:
Host anoncvs.ca.openbsd.org
Port 2022
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). 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.