Techniques de publication des logiciels tiers pre-compiles pour FreeBSD

  Steve Price

   <steve@FreeBSD.org>

   $FreeBSD:
   release/8.4.0/fr_FR.ISO8859-1/articles/releng-packages/article.xml
   39632 2012-10-01 11:56:00Z gabor $

   $FreeBSD:
   release/8.4.0/fr_FR.ISO8859-1/articles/releng-packages/article.xml
   39632 2012-10-01 11:56:00Z gabor $

   Ce document decrit l'approche utilisee par l'equipe technique de
   publication des versions de FreeBSD pour produire un ensemble de
   haute qualite de logiciels pre-compiles adapte au support officiel
   de distribution de FreeBSD. Ce document est un travail en cours,
   mais au final il couvrira le processus employe pour construire un
   ensemble de logiciels pre-compiles sur le "Ports Cluster" (grappe
   de machines pour les logiciels portes) de FreeBSD.org, comment
   configurer n'importe quel autre ensemble de machines en tant que
   grappe de machines pour les logiciels portes, comment repartir les
   logiciels pre-compiles pour le support de publication, et comment
   verifier qu'un ensemble de logiciels pre-compiles est coherent.

   Version franc,aise de Marc Fonvieille <blackend@FreeBSD.org>.

     --------------------------------------------------------------

1. Compiler les logiciels pre-compiles `a partir du catalogue des
logiciels portes

   Le catalogue des logiciels portes pour FreeBSD est un catalogue de
   plus de 24,000 logiciels tiers disponibles pour FreeBSD. L'equipe
   de gestion des logiciels portes <portmgr@FreeBSD.org> est
   responsable du maintien de la coherence du catalogue des logiciels
   portes qui peut etre utilise pour la creation des logiciels
   binaires pre-compiles qui accompagnent une version donnee de
   FreeBSD.

     --------------------------------------------------------------

  1.1. La "grappe de machines" pour les logiciels portes

   Afin de fournir un ensemble coherent de logiciels pre-compiles
   tiers pour les publications de FreeBSD, chaque logiciel porte est
   compile dans un environnement chroot, en partant de repertoires
   /usr/local et /usr/X11R6 vides. Les dependances requises sont
   installees sous forme de logiciels pre-compiles avant le processus
   de compilation. Cela renforce la coherence dans le processus de
   compilation des logiciels pre-compiles. En demarrant la
   compilation du logiciel dans un environnement vierge, nous pouvons
   etre sur que les donnees du logiciel pre-compile (comme les
   dependances requises) sont precises, et donc que nous ne
   genererons jamais de logiciels pre-compiles qui pourraient
   fonctionner sur certains systemes et pas sur d'autres en fonction
   du logiciel qui fut precedemment installe.

   La "grappe de machines pour les logiciels portes" destinee `a
   l'architecture x86 consiste actuellement en un noeud maitre (un
   Bi-Pentium III 733Mhz) et 8 noeuds esclaves (Pentium III 800Mhz)
   pour effectuer la compilation des logiciels pre-compiles. Avec
   cette configuration, une compilation complete des logiciels
   pre-compiles est effectuee en 24 heures. Ces machines sont
   hebergees avec d'autres equipements du Projet FreeBSD au centre
   Yahoo "corner of Exodus" `a Santa Clara en Californie.

   La "grappe de machines pour les logiciels portes" destinee `a
   l'architecture Alpha se compose de 7 machines PWS 500A donnees par
   Compaq et egalement hebergees avec les equipements de Yahoo.

     --------------------------------------------------------------

2. Repartition des logiciels pre-compiles

   Pour FreeBSD 4.4 plus de 4.1 gigaoctets de logiciels pre-compiles
   furent crees. Cela pose un probleme pour les CDROMs de
   distribution car nous aimerions mettre autant de logiciels
   pre-compiles que possible sans que l'utilisateur ne soit oblige
   d'introduire un autre disque pour satisfaire des dependances. La
   solution est de creer des "bouquets" de logiciels pre-compiles
   avec des dependances identiques et de les grouper sur des disques
   specifiques. Cette section decrit le logiciel et la methode mise
   en oeuvre dans la creation de ces ensembles de logiciels
   pre-compiles pour les disques officiels de distribution de
   FreeBSD.

   Tout d'abord vous devrez recuperer une copie de l'archive tar `a
   l'URL suivante:

   http://people.freebsd.org/~steve/release-scripts.tgz

   Copiez cette archive sur une machine qui dispose de suffisamment
   d'espace libre pour heberger 2 `a 3 fois la taille de l'ensemble
   de logiciels pre-compiles que vous desirez diviser. L'archive sera
   extraite dans le repertoire de travail courant aussi soyez sur
   d'avoir cree un repertoire convenablement nomme pour la version
   sur laquelle vous etes en train de travailler.

   Apres avoir extrait les fichiers, vous remarquerez les fichiers
   suivants:

   config

           Ce fichier contient l'espace libre disponible sur chaque
           disque et si les logiciels pre-compiles, leurs sources, ou
           les deux sont autorises sur n'importe quel disque donne.
           La premiere colonne est le nom du disque. Il doit etre
           sous la forme disc[0-9a-z]. Actuellement c'est configure
           pour permettre 10 disques (4 pour l'ensemble de
           distribution et 6 pour la "trousse `a outils"). Il existe
           un disque supplementaire appele "scratch" ou resident les
           sources/logiciels pre-compiles restants s'ils ne peuvent
           trouver place ailleurs. La deuxieme colonne peut etre `a 1
           ou `a 0 ou 1 indique qu'il est correct de placer les
           logiciels pre-compiles sur ce disque. La troisieme colonne
           fonctionne de la meme fac,on sauf qu'elle controle si les
           sources sont placees sur ce disque. La derniere colonne
           represente le nombre d'octets d'espace libre sur un
           disque.

   doit.sh

           C'est le cheval de labour. Une fois que vous avez tous les
           fichiers en place et les choses correctement configurees
           cette procedure dirige le processus de division des
           logiciels pre-compiles. Prenez garde, c'est une procedure
           interactive aussi vous devez garder un oeil dessus quand
           elle tourne. Plus de details sur ce que fait cette
           procedure suivront.

   scripts/checkdeps.pl

           S'assure que toutes les dependances des logiciels
           pre-compiles sont satisfaites `a l'aide d'un fichier
           d'INDEX et d'un repertoire de logiciels pre-compiles.

   scripts/oneshot.pl

           C'est ici que tout la magie (et j'utilise ce terme de
           fac,on plutot impropre etant donne que c'est pour la
           plupart du temps juste qu'une approche en force brute) se
           produit. En fonction d'une liste de logiciels requis pour
           chaque disque et un ensemble de logiciels
           pre-compiles/sources, c'est cette procedure qui place un
           logiciel pre-compile ou une source sur un disque avec
           toutes ses dependances.

   scripts/print-cdrom-packages.sh

           Ce fichier est une copie du fichier
           src/release/scripts/print-cdrom-packages.sh provenant de
           la version sur laquelle vous etes en train de travailler.

   scripts/scrubindex.pl

           Cette procedure efface les lignes d'un fichier INDEX
           concernant les logiciels pre-compiles qui ne sont pas
           presents. Elle retire egalement les dependances d'XFree86.
           NOTE: vous devrez ajuster la valeur de la variable xdep
           pour etre sur que le numero de version est correct.

   scripts/setup.sh

           C'est une procedure auxiliaire que j'utilise sur la
           "grappe de machines" bento pour recuperer une copie du
           catalogue des logiciels portes et l'ensemble correspondant
           de logiciels pre-compiles/sources.

   Voici une liste des choses que vous devrez controler ou configurer
   avant d'aller plus loin.

    1. Editez le fichier config pour indiquer le nombre de disques
       dont vous disposez, leur taille, et si vous desirez qu'ils
       contiennent des logiciels pre-compiles, des sources, les deux,
       ou ni l'un ni l'autre.

    2. Soyez sur d'effacer le repertoire gen s'il en existe un
       ancien. Ce repertoire contient les fichiers de travail qui ne
       seront seulement valables que pour la division actuelle.

    3. Dans votre premier essai de division, il est mieux de simuler
       la copie des logiciels pre-compiles et des sources. Cela
       economisera du temps et de l'espace disque pendant que vous
       faites quelques essais pour etre sur que tout ce passe comme
       prevu, etc... Dans la procedure scripts/oneshot.pl positionnez
       la variable fake `a 1 et au lieu de vraiment copier les
       fichiers, elle creera des fichiers vides `a l'aide de la
       commande touch(1). Soyez sur de desactiver cela en
       positionnant fake `a 0 avant de confier les disques resultants
       `a la personne chargee de la "masterisation", sinon on
       obtiendra un repertoire rempli de fichiers vides.

    4. Verifiez que vous disposez bien d'une copie recente du fichier
       print-cdrom-packages.sh et qu'il provient de la version
       correcte de distribution.

    5. Controlez que la dependance d'XFree86 dans
       scripts/scrubindex.pl possede le numero de version correct.
       Vous devrez egalement verifier que cette valeur est correcte
       dans doit.sh.

   Ensuite vous devrez recuperer une copie du catalogue des logiciels
   portes, des logiciels pre-compiles, et des sources `a partir d'une
   recente compilation sur la "grappe de machines" destinee `a la
   compilation des logiciels pre-compiles. Voir le fichier
   scripts/setup.sh pour un exemple qui fonctionne, mais voici
   essentiellement ce qu'il faut faire.

    1. Recuperez une copie de ports.tar.gz et desarchivez l`a dans le
       repertoire des logiciels portes `a cote de doit.sh et du
       repertoire scripts.

    2. Effacez les repertoires de logiciels pre-compiles/sources ou
       les liens symboliques. Bento les a sous forme de liens
       symboliques et vous obtiendrez des resultats mixtes si vous ne
       vous en debarrassez pas avant de poursuivre.

    3. Creez un nouveau repertoire ports/packageset copiez-y
       l'ensemble des logiciels pre-compiles depuis la "grappe de
       machines" de compilation de logiciels pre-compiles.

    4. Creez un nouveau repertoire ports/distfiles et copiez-y les
       sources depuis la "grappe de machines" de compilation des
       logiciels pre-compiles. NOTE: Si vous ne voulez aucune source,
       creez simplement le repertoire et laissez-le vide. Ce
       repertoire doit etre present meme s'il ne contient rien.

   Vous etes desormais fin pret pour l'amusante tache de repartition
   des logiciels pre-compiles. Vous demarrez le processus en lanc,ant
   ./doit.sh. Voici ce qu'il se passe la premiere fois que vous
   lancez le processus.

    1. Creation de la liste des logiciels portes `a diffusion
       restreinte (qui ne peuvent etre sur le site FTP principal).

    2. On vous demandera si vous desirez retirer les logiciels portes
       `a diffusion restreinte. La plupart du temps vous voudrez
       repondre "(y)es" ici.

    3. Creation d'une liste de logiciels pre-compiles/sources qui ne
       peuvent etre places sur les disques.

    4. On vous demandera si vous desirez retirer les logiciels
       pre-compiles/sources que l'on ne peut placer sur CDROM. La
       plupart du temps vous voudrez repondre "(y)es" ici.

    5. Copie de INDEX du repertoire ports vers le repertoire gen. En
       faisant cela, on retire les lignes pour les logiciels portes
       pour lesquels une version pre-compilee n'existe pas. On
       verifie egalement que toutes les dependances requises sous
       forme pre-compilees sont presentes.

    6. Creation d'une liste de logiciels pre-compiles qui sont
       necessaires sur chaque disque.

    7. On vous demandera si vous desirez peupler les disques. Apres
       avoir rempli chaque disque, la procedure recherchera les
       dependances manquantes, nettoiera le fichier INDEX, et creera
       le fichier CHECKSUM.MD5.

    8. La procedure verifiera les logiciels pre-compiles requis
       presents sur chaque disque et vous donnera un resume de la
       taille de chaque disque.

   Apres etre passe par cette premiere tentative si vous etes
   suffisamment chanceux pour que tous les logiciels pre-compiles
   soient crees et places sur chaque disque, tout ce que vous devez
   faire est de positionner fake `a 0 dans scripts/oneshot.pl et
   relancer la procedure ./doit.sh. La seconde fois et les suivantes,
   les etapes 1 `a 5 seront passees. Si vous voulez effectuer `a
   nouveau une de ces etapes, referez-vous `a doit.sh pour connaitre
   quels fichiers doivent etre effaces pour ne pas court-circuiter
   ces etapes. Si vous voulez repeter toutes ces etapes alors la
   methode la plus simple est d'utiliser la commande rm -rf gen.

   Apres une operation reussie les logiciels pre-compiles/sources
   seront dans les repertoires disc* et ce qui reste sera dans le
   repertoire scratch.

   Que faire si les choses se passent mal? Voici quelques problemes
   courants et leurs solutions.

   Logiciels pre-compiles necessaires manquants

           C'est un probleme assez courant. Vous devrez soit attendre
           un nouvel ensemble de logiciels pre-compiles ou les
           logiciels manquants seront compiles soit trouver quelqu'un
           pour relancer la compilation de logiciels pre-compiles
           pour vous. N'essayez pas de compiler les logiciels
           manquants sur votre machine et de les jeter dans l'arene.
           Alors que vous pourriez etre en mesure de vous debrouiller
           avec si vous etes extremement prudent, la majeur partie du
           temps un petit detail vous echappera et le simple fait
           d'ajouter un logiciel pourra faire que des centaines
           d'autres apparaitrons comme mysterieusement defectueux.

   Logiciels pre-compiles requis mais qui ne pourront trouver place
   sur les disques

           Cela se produit egalement occasionnellement et est
           relativement simple `a corriger. Editez simplement
           print-cdrom-packages.sh pour deplacer les logiciels
           pre-compiles jusqu'`a qu'ils trouvent place. C'est bien,
           en effet, un processus `a repeter plusieurs fois et c'est
           une des raisons pourquoi vous devriez activer fake dans
           scripts/oneshot.pl jusqu'`a ce que vous ayez obtenu les
           choses comme desirees. Relancez ./doit.sh apres avoir
           effectue vos ajustements.

   Logiciels pre-compiles requis mais pas presents sur le bon disque
   (voire sur aucun)

           Cela signifie generalement que vous ne les avez pas
           ajoutes dans le fichier print-cdrom-packages.sh ou que
           vous les avez mis sur le mauvais disque. C'est par cette
           procedure que l'ensemble du processus determine ou doit
           aller un logiciel pre-compile. Si vous voulez forcer un
           logiciel `a se retrouver sur un disque particulier c'est
           la seule maniere d'etre sur que cela se produira.

   Si vous restez completement coince et que vous n'arrivez pas `a
   comprendre pourquoi les choses sont cassees ou que vous ne savez
   pas comment les corriger alors envoyez un courrier electronique `a
   Steve Price <steve@FreeBSD.org> pour demander de l'aide.

     --------------------------------------------------------------

        Ce document, ainsi que d'autres peut etre telecharge sur
                   ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions `a propos de FreeBSD, lisez la documentation avant
                 de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.
