Techniques de publication des logiciels tiers pre-compiles pour FreeBSD

  Steve Price

   <steve@FreeBSD.org>

   $FreeBSD:
   doc/fr_FR.ISO8859-1/articles/releng-packages/article.sgml,v 1.1
   2002/06/20 09:51:25 blackend Exp $

   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.

   La redistribution du code source (SGML), modifie ou non, et
   compile (HTML, PostScript, etc.) est soumise aux conditions
   suivantes :

    1. Le copyright ci-dessus, la presente liste de conditions et
       l'avertissement qui la suit doivent figurer dans le code
       source.

    2. Le code source distribue sous forme compilee doit faire
       apparaitre le copyright ci-dessus, la presente liste de
       conditions et l'avertissement qui la suit.

   CE DOCUMENT EST FOURNI ``TEL QU'EN L'ETAT'' PAR LE PROJET DE
   DOCUMENTATION FRANC,AISE DE FreeBSD ET IL N'EST DONNE AUCUNE
   GARANTIE, IMPLICITE OU EXPLICITE, QUANT A SON UTILISATION
   COMMERCIALE, PROFESSIONNELLE OU AUTRE. LES COLLABORATEURS DU
   PROJET DE DOCUMENTATION FRANC,AISE DE FreeBSD NE PEUVENT EN AUCUN
   CAS ETRE TENUS POUR RESPONSABLES DE QUELQUE DOMMAGE OU PREJUDICE
   DIRECT, INDIRECT, SECONDAIRE OU ACCESSOIRE (Y COMPRIS LES PERTES
   FINANCIeRES DUES AU MANQUE A GAGNER, A L'INTERRUPTION D'ACTIVITES,
   OU LA PERTE D'INFORMATIONS ET AUTRES) DECOULANT DE L'UTILISATION
   DE LA DOCUMENTATION OU DE L'IMPOSSIBILITE D'UTILISER CELLE-CI, ET
   DONT L'UTILISATEUR ACCEPTE L'ENTIERE RESPONSABILITE.

   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 20,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>.
