484 lines
21 KiB
Text
484 lines
21 KiB
Text
<!--
|
|
The FreeBSD Documentation Project
|
|
The FreeBSD French Documentation Project
|
|
$Id: article.sgml,v 1.1 2002-06-20 09:51:25 blackend Exp $
|
|
$FreeBSD$
|
|
Original revision: 1.4
|
|
-->
|
|
|
|
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
|
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
|
|
%man;
|
|
<!ENTITY % freebsd PUBLIC "-//FreeBSD//ENTITIES DocBook Miscellaneous FreeBSD Entities//EN">
|
|
%freebsd;
|
|
<!ENTITY % authors PUBLIC "-//FreeBSD//ENTITIES DocBook Author Entities//EN">
|
|
%authors;
|
|
<!ENTITY % abstract PUBLIC "-//FreeBSD//ENTITIES DocBook Abstract Entities//FR">
|
|
%abstract;
|
|
<!ENTITY % artheader PUBLIC "-//FreeBSD//ENTITIES DocBook ArtHeader Entities//FR">
|
|
%artheader;
|
|
<!ENTITY % teams PUBLIC "-//FreeBSD//ENTITIES DocBook Team Entities//FR">
|
|
%teams;
|
|
<!ENTITY % translators PUBLIC "-//FreeBSD//ENTITIES DocBook Translator Entities//FR">
|
|
%translators;
|
|
]>
|
|
|
|
<article lang="fr">
|
|
<title>Techniques de publication des logiciels tiers
|
|
pré-compilés pour FreeBSD</title>
|
|
<articleinfo>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Steve</firstname>
|
|
<surname>Price</surname>
|
|
<affiliation>
|
|
<address><email>steve@FreeBSD.org</email></address>
|
|
</affiliation>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<pubdate>$FreeBSD$</pubdate>
|
|
|
|
<abstract>
|
|
<para>Ce document décrit l'approche utilisée par
|
|
l'équipe technique de publication des versions de FreeBSD
|
|
pour produire un ensemble de haute qualité de logiciels
|
|
pré-compilés adapté au
|
|
support officiel de distribution de FreeBSD. Ce document est un
|
|
travail en cours, mais au final il couvrira le processus employé
|
|
pour construire un ensemble de logiciels pré-compilés
|
|
sur le “Ports Cluster” (grappe de machines pour les
|
|
logiciels portés) de FreeBSD.org, comment configurer
|
|
n'importe quel autre ensemble de machines en tant que grappe
|
|
de machines pour les logiciels portés, comment répartir
|
|
les logiciels pré-compilés
|
|
pour le support de publication, et comment vérifier qu'un
|
|
ensemble de logiciels pré-compilés est
|
|
cohérent.</para>
|
|
&abstract.license;
|
|
&abstract.disclaimer;
|
|
&trans.a.fonvieille;
|
|
</abstract>
|
|
|
|
</articleinfo>
|
|
|
|
<!-- Introduction
|
|
|
|
<sect1 id="introduction">
|
|
<title>Introduction</title>
|
|
|
|
<para><emphasis>Coming Soon</emphasis></para>
|
|
|
|
</sect1>
|
|
|
|
-->
|
|
<sect1 id="portbuild">
|
|
<title>Compiler les logiciels pré-compilés à
|
|
partir du catalogue des logiciels portés</title>
|
|
|
|
<para>Le <ulink url="http://www.FreeBSD.org/ports">catalogue des
|
|
logiciels portés pour FreeBSD</ulink> est un catalogue de
|
|
plus de &os.numports; logiciels tiers disponibles pour FreeBSD.
|
|
&a.portmgr; est responsable du maintien de la cohérence du
|
|
catalogue des logiciels portés qui peut être utilisé
|
|
pour la création des logiciels binaires pré-compilés
|
|
qui accompagnent une version donnée de FreeBSD.</para>
|
|
|
|
<sect2>
|
|
<title>La “grappe de machines” pour les
|
|
logiciels portés</title>
|
|
|
|
<para>Afin de fournir un ensemble cohérent de logiciels
|
|
pré-compilés tiers pour les publications de
|
|
FreeBSD, chaque logiciel porté est compilé dans
|
|
un environnement chroot, en
|
|
partant de répertoires <filename>/usr/local</filename> et
|
|
<filename>/usr/X11R6</filename> vides. Les dépendances requises
|
|
sont installées sous forme de logiciels
|
|
pré-compilés avant le
|
|
processus de compilation. Cela renforce la
|
|
<emphasis>cohérence</emphasis> dans le processus de compilation
|
|
des logiciels pré-compilés. En démarrant la
|
|
compilation du logiciel dans un environnement vierge, nous pouvons
|
|
être sûr que les données du logiciel
|
|
pré-compilé (comme les dépendances
|
|
requises) sont précises, et donc que nous ne
|
|
générerons jamais
|
|
de logiciels pré-compilés qui pourraient fonctionner sur
|
|
certains systèmes et pas sur d'autres en fonction du
|
|
logiciel qui fut précédemment installé.</para>
|
|
|
|
<para>La “grappe de machines pour les logiciels
|
|
portés” destinée à l'architecture
|
|
x86 consiste actuellement en un noeud maître (un
|
|
Bi-Pentium III 733Mhz) et 8 noeuds esclaves (Pentium III 800Mhz)
|
|
pour effectuer la compilation des logiciels
|
|
pré-compilés. Avec cette
|
|
configuration, une compilation complète des logiciels
|
|
pré-compilés est effectuée en 24
|
|
heures. Ces machines sont hébergées avec d'autres
|
|
équipements du Projet FreeBSD au centre
|
|
Yahoo “corner of Exodus” à Santa Clara en
|
|
Californie.</para>
|
|
|
|
<para>La “grappe de machines pour les logiciels
|
|
portés” destinée à l'architecture
|
|
Alpha se compose de 7 machines PWS 500A données par
|
|
Compaq et également hébergées avec
|
|
les équipements de Yahoo.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1>
|
|
<title>Répartition des logiciels pré-compilés</title>
|
|
|
|
<para>Pour FreeBSD 4.4 plus de 4.1 gigaoctets de logiciels
|
|
pré-compilés furent créés. Cela
|
|
pose un problème pour les CDROMs
|
|
de distribution car nous aimerions mettre autant de logiciels
|
|
pré-compilés que possible sans que l'utilisateur
|
|
ne soit obligé d'introduire un autre disque pour
|
|
satisfaire des dépendances. La
|
|
solution est de créer des “bouquets” de logiciels
|
|
pré-compilés avec des dépendances identiques
|
|
et de les grouper sur des disques spécifiques. Cette
|
|
section décrit le logiciel et la
|
|
méthode mise en oeuvre dans la création de ces
|
|
ensembles de logiciels pré-compilés pour les disques
|
|
officiels de distribution de FreeBSD.</para>
|
|
|
|
<para>Tout d'abord vous devrez récupérer une copie de
|
|
l'archive <command>tar</command> à l'URL suivante:</para>
|
|
|
|
<para><ulink
|
|
url="http://people.freebsd.org/~steve/release-scripts.tgz"></ulink></para>
|
|
|
|
<para>Copiez cette archive sur une machine qui dispose de
|
|
suffisamment d'espace libre pour héberger 2 à 3
|
|
fois la taille de l'ensemble de logiciels
|
|
pré-compilés que vous désirez diviser.
|
|
L'archive sera extraite dans le répertoire de travail
|
|
courant aussi soyez sûr d'avoir créé un
|
|
répertoire convenablement nommé pour la
|
|
version sur laquelle vous êtes en train de travailler.</para>
|
|
|
|
<para>Après avoir extrait les fichiers, vous remarquerez les
|
|
fichiers suivants:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><filename>config</filename></term>
|
|
|
|
<listitem><para>Ce fichier contient l'espace libre disponible
|
|
sur chaque disque et si les logiciels
|
|
pré-compilés, leurs
|
|
sources, ou les deux sont autorisés sur n'importe quel
|
|
disque donné. La première colonne est le nom
|
|
du disque. Il doit
|
|
être sous la forme disc[0-9a-z]. Actuellement c'est
|
|
configuré
|
|
pour permettre 10 disques (4 pour l'ensemble de distribution
|
|
et 6 pour la “trousse à outils”). Il existe
|
|
un disque supplémentaire appelé
|
|
“scratch” où résident
|
|
les sources/logiciels pré-compilés restants s'ils
|
|
ne peuvent trouver place ailleurs. La deuxième colonne
|
|
peut être à 1 ou à 0 où 1 indique
|
|
qu'il est correct de placer les logiciels
|
|
pré-compilés sur ce disque. La troisième
|
|
colonne fonctionne
|
|
de la même façon sauf qu'elle contrôle si
|
|
les sources sont placées sur ce disque. La
|
|
dernière colonne représente le
|
|
nombre d'octets d'espace libre sur un
|
|
disque.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename>doit.sh</filename></term>
|
|
|
|
<listitem><para>C'est le cheval de labour. Une fois que vous
|
|
avez tous les fichiers en place et les choses correctement
|
|
configurées cette procédure dirige le processus
|
|
de division des logiciels pré-compilés. Prenez
|
|
garde, c'est une procédure
|
|
interactive aussi vous devez garder un oeil dessus quand elle
|
|
tourne. Plus de détails sur ce que fait cette
|
|
procédure suivront.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename>scripts/checkdeps.pl</filename></term>
|
|
|
|
<listitem><para>S'assure que toutes les dépendances des
|
|
logiciels pré-compilés sont satisfaites à
|
|
l'aide d'un fichier d'INDEX et d'un répertoire de
|
|
logiciels pré-compilés.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename>scripts/oneshot.pl</filename></term>
|
|
|
|
<listitem><para>C'est ici que tout la magie (et j'utilise ce
|
|
terme de façon plutôt impropre étant
|
|
donné 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
|
|
pré-compilés/sources, c'est cette
|
|
procédure qui place un
|
|
logiciel pré-compilé ou une source sur un
|
|
disque avec toutes
|
|
ses dépendances.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename>scripts/print-cdrom-packages.sh</filename></term>
|
|
|
|
<listitem><para>Ce fichier est une copie du fichier
|
|
<filename>src/release/scripts/print-cdrom-packages.sh</filename>
|
|
provenant de la version sur laquelle vous êtes en train de
|
|
travailler.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename>scripts/scrubindex.pl</filename></term>
|
|
|
|
<listitem><para>Cette procédure efface les lignes d'un
|
|
fichier INDEX concernant les logiciels
|
|
pré-compilés qui ne sont pas
|
|
présents. Elle retire également les
|
|
dépendances d'XFree86.
|
|
NOTE: vous devrez ajuster la valeur de la variable xdep pour
|
|
être sûr que le numéro de version est
|
|
correct.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><filename>scripts/setup.sh</filename></term>
|
|
|
|
<listitem><para>C'est une procédure auxiliaire que
|
|
j'utilise sur la “grappe de machines” bento pour
|
|
récupérer une copie du catalogue des logiciels
|
|
portés et l'ensemble correspondant de logiciels
|
|
pré-compilés/sources.</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Voici une liste des choses que vous devrez contrôler ou
|
|
configurer avant d'aller plus loin.</para>
|
|
|
|
<orderedlist>
|
|
<listitem><para>Editez le fichier <filename>config</filename> pour
|
|
indiquer le nombre de disques dont vous disposez, leur taille,
|
|
et si vous désirez qu'ils contiennent des logiciels
|
|
pré-compilés, des sources, les deux, ou ni l'un ni
|
|
l'autre.</para></listitem>
|
|
|
|
<listitem><para>Soyez sûr d'effacer le répertoire
|
|
gen s'il en existe un ancien. Ce répertoire contient
|
|
les fichiers de travail qui ne seront seulement valables que
|
|
pour la division actuelle.</para></listitem>
|
|
|
|
<listitem><para>Dans votre premier essai de division, il est mieux
|
|
de simuler la copie des logiciels pré-compilés et
|
|
des sources. Cela économisera du temps et de l'espace
|
|
disque pendant que vous faites quelques essais pour être
|
|
sûr que tout ce passe comme
|
|
prévu, etc... Dans la procédure
|
|
<filename>scripts/oneshot.pl</filename> positionnez la variable
|
|
fake à 1 et au lieu de vraiment copier les fichiers, elle
|
|
créera des fichiers vides à l'aide de la commande
|
|
&man.touch.1;. Soyez sûr de désactiver cela en
|
|
positionnant fake à 0 avant de confier
|
|
les disques résultants à la personne chargée
|
|
de la “mastérisation”, sinon on obtiendra un
|
|
répertoire rempli de fichiers vides.</para></listitem>
|
|
|
|
<listitem><para>Vérifiez que vous disposez bien d'une copie
|
|
récente du fichier
|
|
<filename>print-cdrom-packages.sh</filename> et qu'il provient
|
|
de la version correcte de distribution.</para></listitem>
|
|
|
|
<listitem><para>Contrôlez que la dépendance d'XFree86 dans
|
|
<filename>scripts/scrubindex.pl</filename> possède le
|
|
numéro de version correct. Vous devrez également
|
|
vérifier que cette valeur est correcte dans
|
|
<filename>doit.sh</filename>.</para></listitem>
|
|
</orderedlist>
|
|
|
|
<para>Ensuite vous devrez récupérer une copie du
|
|
catalogue des logiciels portés, des logiciels
|
|
pré-compilés, et des sources à
|
|
partir d'une récente compilation sur la “grappe de
|
|
machines” destinée à la compilation des logiciels
|
|
pré-compilés. Voir le
|
|
fichier <filename>scripts/setup.sh</filename> pour un exemple qui
|
|
fonctionne, mais voici essentiellement ce qu'il faut faire.</para>
|
|
|
|
<orderedlist>
|
|
|
|
<listitem><para>Récupérez une copie de
|
|
<filename>ports.tar.gz</filename> et désarchivez
|
|
là dans le répertoire des logiciels
|
|
portés à coté de
|
|
<filename>doit.sh</filename> et du répertoire
|
|
<filename>scripts</filename>.</para></listitem>
|
|
|
|
<listitem><para>Effacez les répertoires de logiciels
|
|
pré-compilés/sources ou les liens symboliques. Bento
|
|
les a sous forme de liens symboliques et vous obtiendrez
|
|
des résultats mixtes si vous ne vous en débarrassez
|
|
pas avant de poursuivre.</para></listitem>
|
|
|
|
<listitem><para>Créez un nouveau répertoire
|
|
ports/packageset copiez-y l'ensemble des logiciels
|
|
pré-compilés depuis la “grappe de
|
|
machines” de compilation de
|
|
logiciels pré-compilés.</para></listitem>
|
|
|
|
<listitem><para>Créez un nouveau répertoire
|
|
ports/distfiles et copiez-y les sources depuis la “grappe de
|
|
machines” de compilation des logiciels
|
|
pré-compilés. NOTE: Si vous ne voulez
|
|
aucune source, créez simplement le répertoire et
|
|
laissez-le vide. Ce répertoire doit être
|
|
présent même s'il ne contient rien.</para></listitem>
|
|
</orderedlist>
|
|
|
|
<para>Vous êtes désormais fin prêt pour
|
|
l'amusante tâche de répartition des logiciels
|
|
pré-compilés. Vous démarrez le
|
|
processus en lançant <command>./doit.sh</command>. Voici
|
|
ce qu'il se passe la première fois que vous lancez
|
|
le processus.</para>
|
|
|
|
<orderedlist>
|
|
<listitem><para>Création de la liste des logiciels
|
|
portés à diffusion restreinte (qui ne peuvent
|
|
être sur le site FTP principal).</para></listitem>
|
|
|
|
<listitem><para>On vous demandera si vous désirez retirer les
|
|
logiciels portés à diffusion restreinte. La plupart
|
|
du temps vous voudrez répondre “(y)es”
|
|
ici.</para></listitem>
|
|
|
|
<listitem><para>Création d'une liste de logiciels
|
|
pré-compilés/sources qui ne peuvent être
|
|
placés sur les disques.</para></listitem>
|
|
|
|
<listitem><para>On vous demandera si vous désirez retirer les
|
|
logiciels pré-compilés/sources que l'on ne peut
|
|
placer sur CDROM. La plupart du temps vous voudrez répondre
|
|
“(y)es” ici.</para></listitem>
|
|
|
|
<listitem><para>Copie de INDEX du répertoire ports vers le
|
|
répertoire gen. En faisant cela, on retire les lignes pour les
|
|
logiciels portés pour lesquels une version
|
|
pré-compilée n'existe pas. On vérifie
|
|
également que toutes les dépendances
|
|
requises sous forme pré-compilées sont
|
|
présentes.</para></listitem>
|
|
|
|
<listitem><para>Création d'une liste de logiciels
|
|
pré-compilés qui sont nécessaires sur
|
|
chaque disque.</para></listitem>
|
|
|
|
<listitem><para>On vous demandera si vous désirez peupler les
|
|
disques. Après avoir rempli chaque disque, la procédure
|
|
recherchera les dépendances manquantes, nettoiera le fichier
|
|
INDEX, et créera le fichier CHECKSUM.MD5.</para></listitem>
|
|
|
|
<listitem><para>La procédure vérifiera les logiciels
|
|
pré-compilés requis présents sur chaque disque et
|
|
vous donnera un résumé de
|
|
la taille de chaque disque.</para></listitem>
|
|
</orderedlist>
|
|
|
|
<para>Après être passé par cette première
|
|
tentative si vous êtes suffisamment chanceux pour que tous
|
|
les logiciels pré-compilés
|
|
soient créés et placés sur chaque disque,
|
|
tout ce que vous devez faire est de positionner fake à 0 dans
|
|
<filename>scripts/oneshot.pl</filename> et relancer la procédure
|
|
<command>./doit.sh</command>. La seconde fois et les suivantes,
|
|
les étapes 1 à 5 seront passées. Si vous
|
|
voulez effectuer à nouveau une de ces étapes,
|
|
référez-vous à doit.sh pour connaître
|
|
quels fichiers doivent être effacés pour ne pas
|
|
court-circuiter ces étapes. Si vous voulez
|
|
répéter toutes ces étapes alors la
|
|
méthode la plus simple est d'utiliser
|
|
la commande <command>rm -rf gen</command>.</para>
|
|
|
|
<para>Après une opération réussie les logiciels
|
|
pré-compilés/sources seront dans les répertoires
|
|
<filename>disc*</filename> et ce qui
|
|
reste sera dans le répertoire scratch.</para>
|
|
|
|
<para>Que faire si les choses se passent mal? Voici quelques
|
|
problèmes courants et leurs solutions.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>Logiciels pré-compilés
|
|
nécessaires manquants</term>
|
|
|
|
<listitem><para>C'est un problème assez courant. Vous
|
|
devrez soit attendre un nouvel ensemble de logiciels
|
|
pré-compilés où les logiciels manquants
|
|
seront compilés
|
|
soit trouver quelqu'un pour relancer la compilation de
|
|
logiciels pré-compilés pour
|
|
vous. N'essayez pas de compiler les logiciels manquants sur
|
|
votre machine et de les jeter dans l'arène. Alors que vous
|
|
pourriez être en mesure de vous débrouiller avec si
|
|
vous êtes extrêmement prudent, la majeur partie du temps
|
|
un petit détail vous échappera et le simple fait
|
|
d'ajouter un logiciel pourra faire que des centaines
|
|
d'autres apparaîtrons comme mystérieusement
|
|
défectueux.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>Logiciels pré-compilés requis mais qui ne
|
|
pourront trouver place sur les disques</term>
|
|
|
|
<listitem><para>Cela se produit également occasionnellement et
|
|
est relativement simple à corriger. Editez simplement
|
|
print-cdrom-packages.sh pour déplacer les logiciels
|
|
pré-compilés jusqu'à qu'ils trouvent
|
|
place. C'est bien, en
|
|
effet, un processus à répéter plusieurs fois
|
|
et c'est une des raisons pourquoi vous devriez activer fake dans
|
|
<filename>scripts/oneshot.pl</filename> jusqu'à ce que vous
|
|
ayez obtenu les choses comme désirées.
|
|
Relancez <command>./doit.sh</command> après avoir
|
|
effectué vos ajustements.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>Logiciels pré-compilés requis mais pas
|
|
présents sur le bon disque (voire sur aucun)</term>
|
|
|
|
<listitem><para>Cela signifie généralement que vous ne
|
|
les avez pas ajoutés dans le fichier
|
|
<filename>print-cdrom-packages.sh</filename> ou que vous les
|
|
avez mis sur le mauvais disque. C'est par cette procédure
|
|
que l'ensemble du processus détermine où doit aller un
|
|
logiciel pré-compilé. Si vous voulez forcer un
|
|
logiciel à se retrouver sur un disque particulier c'est
|
|
la seule manière d'être sûr que cela se
|
|
produira.</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Si vous restez complètement coincé et que vous
|
|
n'arrivez pas à comprendre pourquoi les choses sont
|
|
cassées ou que vous ne savez pas comment les corriger alors
|
|
envoyez un courrier électronique à &a.steve; pour
|
|
demander de l'aide.</para>
|
|
|
|
</sect1>
|
|
|
|
</article>
|