Chapitre 17. Obtenir des sources par CVS

Table des matières
17.1. Récupérer les sources du système et des applications
17.2. Récupérer pkgsrc

Ce chapitre (Obtenir des sources par CVS) est une contribution de Reinoud Koornstra

CVS (Concurrent Versions System) peut être utilisé pour aller chercher ou pour conserver à jour l'arborescence des sources de NetBSD, tout en respectant les modifications effectuées dans celle-ci. Il existe trois arborescences sur lesquelles appliquer CVS : Tout d'abord l'arborescences des sources courantes (-current) dans laquelle les derniers développements peuvent être suivis ou testés. Ensuite, l'arborescence des sources 1.5 dans laquelle se trouve les correctifs à appliquer pour résoudre les problèmes signalés et reboucher les trous de sécurité trouvés (par exemple, le problème de fragmentation de ipf a été résolu) et dans laquelle certaines choses ont été ajoutées ou remplacées par de nouvelles versions, stables et sûres (par exemple, il est désormais possible de supprimer complètement la table arp avec la commande arp, c'est une caractéristique supplémentaire, pas une correction). Enfin, l'arborescence des sources 1.4 dans laquelle ne se trouvent que les correctifs à appliquer. Elle ne comportera plus aucun développement.

17.1. Récupérer les sources du système et des applications

CVS n'est pas nativement sur NetBSD 1.4.x et 1.5.x. Il fera en revanche partie du système 1.6 et est déjà présent la branche -current. Pour installer CVS (si vous ne l'avez pas déjà), tapez simplement :

% pkg_add ftp://ftp.netbsd.org/pub/NetBSD/packages/<OS Ver>/<arch>/All/cvs-1.11nb2.tgz    

Où <OS Ver>, et <arch> peuvent être obtenus en tapant

% sysctl kern.osrelease hw.machine_arch    

Pour récupérer les sources à partir de zéro, le répertoire /usr/src étant vide :

% setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs login
password: anoncvs
% cvs checkout -rnetbsd-1-5 -PA src
    

Ou bien utilisez ssh, afin d'encrypter les données :

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs checkout -rnetbsd-1-5 -PA src
    

Les sources de la branche 1.5 seront ainsi récupérées. Pour obtenir les sources de -current, omettez juste " -rnetbsd-1-5"  dans la dernière ligne. Pour obtenir les sources de la branche 1.4, utilisez " -rnetbsd-1-4"  dans la dernière ligne.

Pour mettre à jour les sources de la branche 1.5 que vous avez déjà récupérée :

% setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs login 
password: anoncvs
% cvs -d $CVSROOT update -rnetbsd-1-5 -PAd src
    

Ou par ssh :

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs -d $CVSROOT update -rnetbsd-1-5 -PAd src
    

Pour mettre à jour la branche -current, omettez " -rnetbsd-1-5" . Pour mettre à jour la branche 1.4, utilisez " -rnetbsd-1-4" .

Lorsque vous voulez effectuer une mise à jour à partir d'une arborescence non propre, par exemple lorsque vous recompilez une partie des sources ou même les sources complètes ou le noyau sans effectuer de «make cleandir», vous devez faire des fichiers objet.

Les répertoires objet sont nécessaires pour effectuer un " cvs update"  d'arborescence non propre. Une arborescence non propre existe lorsque vous compilez une partie de celle-ci, partiellement ou complètement, sans taper ensuite " make clean"  pour cette partie ou bien " make cleandir"  pour l'arborescence complète. Dans ce cas, cvs voudra créer des répertoires portant le même nom que des binaires et échouera. Par exemple, vous avez un répertoire "groff" et vous recompilez le binaire "groff". cvs devra créer tous les répertoires vides avant de les élaguer.

Donc, dans /usr/src:

% makedir /usr/obj
% make obj
    

Vous êtes maintenant prêt à faire une mise à jour cvs. Tapez toutefois make cleandir dans /usr/src avant de commencer, c'est plus facile et demande moins de travail que la méthode des répertoires objet. CVS est plus rapide que sup mais je ne sais pas combien de temps peut prendre la récupération de toutes les sources. Je ne l'ai testé que sur des ligne T1 ou plus rapides et cela prend un peu plus d'une heure suivant, évidemment, la qualité instantanée de la connexion. Je n'ai aucune expérience de rapatriement par modem mais, dans ce cas, vous demanderez de compresser et décompresser les données une fois transférées. Pour cela, tapez :

% cvs -z5 checkout .........    

ou

% cvs -z5 -d $CVSROOT update ......    

Le 5 définit le niveau de compression. Vous pouvez demander un chiffre entre 1 et 9 où 1 utilise la méthode la plus rapide et 9 la meilleure mais plus lente. Gardez à l'esprit que cette requète occasionne une surcharge du serveur cvs.

Note : Ensuite, allez dans /usr/src/sys/arch/$arch/compile/$kernel_conf_name et tapez make clean. Effacez ce répertoire avant d'effectuer une mise à jour cvs afin d'éviter qu'il soit non-propre par la suite. Assurez-vous que les sources du noyau passent correctement durant la mise à jour cvs.

17.2. Récupérer pkgsrc

Pkgsrc ("package source" ou sources des paquetages) est un ensemble de logiciels et de bibliothèques portés pour NetBSD. C'est une façon très simple d'installer et de désinstaller des logiciels sur votre système NetBSD : il récupère les fichiers requis, corrige les sources si nécessaire, les configure, compile les binaires puis les installe avec leurs pages de manuel. Une base de données des logiciels installés est tenue à jour qui sait exactement quels fichiers appartient à quel paquetage et où ce dernier se trouve.

Pour récupérer pkgsrc à partir de zéro :

% setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs login 
(the password is: "anoncvs")
% cvs checkout -PA pkgsrc 
    

Ou par ssh:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs checkout -PA pkgsrc
    

Le répertoire pkgsrc est créé dans votre /usr et toutes les sources des paquetages seront stockées sous /usr/pkgsrc.

Pour mettre pkgsrc à jour :

% setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs login
(the password is: "anoncvs")
% cvs -d $CVSROOT update -PAd pkgsrc
    

Ou par ssh:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs -d $CVSROOT update -PAd pkgsrc
    

Assurez-vous bien que le répertoire pkgsrc est propre lorsque vous commencez la mise à jour. Pour cela, tapez make clean dans /usr/pkgsrc si vous n'êtes pas certain.