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.
Tout d'abord vous devrez récupérer une copie de
l'archive tar
à 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 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.
Après avoir extrait les fichiers, vous remarquerez les fichiers suivants:
config
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.
doit.sh
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.
scripts/checkdeps.pl
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.
scripts/oneshot.pl
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.
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 êtes en train de
travailler.
scripts/scrubindex.pl
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.
scripts/setup.sh
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.
Voici une liste des choses que vous devrez contrôler ou configurer avant d'aller plus loin.
Editez le fichier config
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.
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.
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
scripts/oneshot.pl
positionnez la variable
fake à 1 et au lieu de vraiment copier les fichiers, elle
créera des fichiers vides à l'aide de la commande
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.
Vérifiez que vous disposez bien d'une copie
récente du fichier
print-cdrom-packages.sh
et qu'il provient
de la version correcte de distribution.
Contrôlez que la dépendance d'XFree86 dans
scripts/scrubindex.pl
possède le
numéro de version correct. Vous devrez également
vérifier que cette valeur est correcte dans
doit.sh
.
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 scripts/setup.sh
pour un exemple qui
fonctionne, mais voici essentiellement ce qu'il faut faire.
Récupérez une copie de
ports.tar.gz
et désarchivez
là dans le répertoire des logiciels
portés à coté de
doit.sh
et du répertoire
scripts
.
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.
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.
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.
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 ./doit.sh
. Voici
ce qu'il se passe la première fois que vous lancez
le processus.
Création de la liste des logiciels portés à diffusion restreinte (qui ne peuvent être sur le site FTP principal).
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.
Création d'une liste de logiciels pré-compilés/sources qui ne peuvent être placés sur les disques.
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.
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.
Création d'une liste de logiciels pré-compilés qui sont nécessaires sur chaque disque.
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.
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.
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
scripts/oneshot.pl
et relancer la procédure
./doit.sh
. 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 rm -rf gen
.
Après une opération réussie les logiciels
pré-compilés/sources seront dans les répertoires
disc*
et ce qui
reste sera dans le répertoire scratch.
Que faire si les choses se passent mal? Voici quelques problèmes courants et leurs solutions.
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.
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
scripts/oneshot.pl
jusqu'à ce que vous
ayez obtenu les choses comme désirées.
Relancez ./doit.sh
après avoir
effectué vos ajustements.
Cela signifie généralement que vous ne
les avez pas ajoutés dans le fichier
print-cdrom-packages.sh
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.
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 à Steve Price <steve@FreeBSD.org>
pour
demander de l'aide.
Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Pour toutes questions à propos de FreeBSD, lisez la
documentation avant de contacter
<questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez
<doc@FreeBSD.org>.