Le fichier comps définit la façon dont les paquets seront regroupés durant l'installation. Dans la distribution RedHat, ceci est fait selon les fonctionnalités qu'ils offrent, par exemple :
Utilisation d'imprimantes
Système X Window
GNOME
KDE
Outils courrier, web et forums
…
Développement du noyau
Documentation supplémentaire
Quelquefois durant le processus d'installation, l'utilisateur se trouve face à une fenêtre appelée « Composants à installer ». Quelques-uns des composants ont été présélectionnés, d'autres non. Le dernier point sur la liste des composants est appelé « Tout ». Sur la fenêtre, il existe aussi une option de personnalisation qui permet à l'utilisateur de choisir très précisément la liste des paquets qui seront installés. Personnaliser l'installation ou sélectionner « Tout » dans la liste des composants est le seul moyen d'obtenir que votre propre sélection de paquets soit installée, sauf si vous modifiez le fichier RedHat/base/comps.
Le fichier comps commence avec un en-tête indiquant la version du format du fichier comps, suivie d'une ligne vide.
0.1 <empty line>
Puis, il dresse la liste des composants, séparés par des lignes vides :
<composant 1> <ligne vide> <composant 2> <ligne vide> ... <composant n> <ligne vide> EOF
Chaque composant est défini comme suit :
(0|1) (--hide)? <name> <RPM 1> <RPM 2> ... <RPM n> end
Avant le nom de chaque composant est placé un 0 ou un 1. Une valeur de 1 à cet endroit indique que le composant est choisi par défaut alors qu'un 0 signifie le contraire. L'option --hide veut dire que l'entrée ne sera pas affichée, sauf si vous choisissez l'installation « en mode expert ». Le premier composant est appelé « Base » et il est spécial, dans le sens où il doit être présent et qu'il n'apparaîtra pas dans le dialogue (vous ne pouvez pas désélectionner l'installation de la base, ce qui est sensé). Suit une liste de paquets RPM appartenant à ce composant. Notez qu'il s'agit du nom du paquet stocké dans le fichier rpm et non d'une partie du nom de fichier du paquet (bien qu'il soient sensés, par convention, être identiques).
En ajoutant vos paquets au fichier comps, vous pourrez personnaliser votre propre distribution et vous assurer que vos paquets seront installés par défaut. Une chose à laquelle vous devez faire attention est l'interdépendance entre vos paquets, mais ici c'est à vous de jouer :-) Un mot pour vous prévenir : faites attention de ne pas ajouter ou supprimer des espaces blancs supplémentaires dans le fichier. Examinez le fichier comps existant (faites une copie de l'original) pour voir comment il est fait (ou vérifiez i386/misc/src/install/pkgs.c si vous voulez comprendre comment le fichier est analysé).
Avec la version 6.1 de la distribution RedHat, le format du fichier comps a changé. Le décodage s'effectue dans ${RHROOT}/${ARCH}/misc/src/anaconda/comps.py. Je n'ai pas encore analysé ce script python et les règles suivantes ont été obtenues seulement en étudiant le fichier comps et en essayant quelques paramétrages.
Dans la version 6.1, la définition du composant est étendue pour inclure quelques éléments optionnels supplémentaires avant les <RPM>. Ces éléments sont :
<RPM-dépendant-de-l-architecture 1> ... <RPM-dépendant-de-l-architecture n> <composant-requis 1> ... <composant-requis n> <RPM-dépendant-d-un-composant 1> ... <RPM-dépendant-d-un-composant n>
Un <RPM-dépendant-de-l-architecture> définit une dépendance entre un paquet et une architecture spécifique et a pour définition :
(!)?arch: <RPM>
Donc, il peut, par exemple, se présenter dans le monde réel comme :
!alpha: kernelcfg
ce qui veut dire : si l'architecture n'est pas alpha alors il faut installer le paquet kernelcfg.
Ou comme :
i386: mkbootdisk
Ce qui veut dire : si l'architecture est i386 alors il faut installer le paquet mkbootdisk.
Un <composant-requis> renforce la dépendance avec un autre composant et il est défini comme :
@ <composant>
Donc, par exemple, si à l'intérieur de la définition d'un composant, vous trouvez la ligne suivante :
@ Station réseau
cela veut dire que le composant lui-même a besoin de l'installation d'un autre composant nommé Station réseau.
Un <RPM-dépendant-d-un-composant> est utilisé pour sélectionner l'installation de quelques paquets additionnels pour un composant, étant donné la présence d'un autre composant. Sa définition est la suivante :
? <composant> { <RPM 1> ... <RPM n> }
Donc si, par exemple, dans la définition d'un composant, il vous arrive de lire les lignes suivantes :
? KDE { kpppload }
alors si le composant KDE est installé, le paquet kpppload sera installé en même temps que les paquets inclus dans le composant où se trouve cette définition.
Avec RedHat version 6.2, le format du fichier comps a apparemment très légèrement changé. Le décodage se fait toujours dans ${RHROOT}/${ARCH}/misc/src/anaconda/comps.py. Encore une fois, je n'ai pas analysé ce script python et les règles suivantes ont été obtenues uniquement en étudiant le fichier et en essayant quelques paramétrages.
Dans la version 6.2, la définition du composant est étendue pour inclure deux éléments optionnels supplémentaires :
<RPM-dépendant-de-la-langue 1> ... <RPM-dépendant-de-la-langue n> <composant-dépendant-de-l-architecture 1> ... <composant-dépendant-de-l-architecture n>
Un <RPM-dépendant-de-la-langue> est nécessaire pour demander l'installation d'un paquet lorsqu'une langue spécifique a été sélectionnée. C'est défini ainsi :
(lang <langue>): <RPM>
Par exemple, la ligne suivante
(lang ja_JP): locale-ja
veut dire : si la langue japonaise est sélectionnée, alors il faudra installer le paquet locale-ja en plus des autres paquets installés pour ce composant.
Un <composant-dépendant-de-l-architecture> étend le concept du <RPM-dépendant-de-l-architecture>, introduit pour la version 6.1, au composant entier, comme vous pouvez le voir à la lecture de sa définition :
(!)?arch: <composant>
Avec la version 7.3 de la distribution RedHat, le format du fichier comps possède une syntaxe plus puissante. Le décodage prend place (encore) dans le script comps.py, que vous trouverez dans le répertoire /usr/lib/anaconda/ si vous avez installé le paquet anaconda. Les dépendances d'un composant ou d'un paquet envers une langue ou une architecture données peuvent maintenant être liées par l'opérateur logique and (et logique). Par exemple :
(arch !s390 and arch !s390x and arch !ia64): readline2.2.1
ce qui veut dire que si l'architecture n'est ni s390, ni s390x, ni ia64, alors il faudra installer le paquet readline2.2.1. Ceci peut être fait avec des composants au lieu des paquets et avec des langues à la place des architectures. Tout ceci est sans aucun doute plus qu'assez pour les exemples simples de personnalisation de l'installation par défaut qui seront présentés dans la section suivante.
L'exemple que nous allons suivre dans cette section implique de modifier le fichier comps pour changer les valeurs par défaut concernant l'installation des paquets. Je préfère habituellement (en fait spécialement dans certaines situations) une installation par défaut incluant seulement les paquets de base, avec quelques légères modifications pour certains d'entre eux. Dans le premier des exemples présentés, nous construirons une installation par défaut qui ajoute libsafe au composant « Base », dont la plupart des paquets, qui sont généralement installés par défaut, seront désélectionnés dans le but de construire une installation minimale. Dans le second des exemples, nous modifierons quelques-uns des composants pour construire une autre installation minimale qui réponde à nos besoins (cette fois, pratiquement parfaitement ; ce sont, en fait, mes besoins, les vôtres pouvant varier). Si vous voulez inclure un fichier comps modifié dans vos CD, vous devrez le copier dans l'arborescence principale juste avant de lancer les opérations décrites dans reconstruire l'installateur 7.3 ou 8.0.
Pour personnaliser votre installation de cette façon, vous devrez éditer le fichier comps avec votre éditeur de texte favori (faites attention à ne pas laisser d'espaces ou de tabulations dans ce fichier) et le déplacer dans le répertoire Redhat/base en écrasant l'original.
Dans le premier fichier comps inclus, le paquet libsafe est ajouté au composant « Base » (système de base) et presque tous les composants sont désélectionnés pour obtenir une installation par défaut comportant seulement 200 paquets (je sais qu'ils peuvent être encore trop nombreux).
Nous avons construit le deuxième fichier comps ci-joint à partir de la configuration précédente en réduisant un peu plus l'installation par défaut (cette fois, elle ne contient plus que 154 paquets). Quelques-uns des groupes ont été divisé pour donner à l'installation une meilleure granularité. Toutes les modifications que vous faites doivent prendre en compte les interdépendances entre paquets et les applications utilisées durant les phases d'installation (par exemple, vous ne pouvez pas supprimer kudzu du composant Base, bien que vous puissiez le faire après installation). Je dois aussi vous préciser que des résultats similaires peuvent être obtenus en utilisant kickstart. Pour plus d'informations à ce propos, vous pourrez lire le Guide de Personnalisation du Linux RedHat.
Avec les versions 8.0 et 9, le format du fichier comps a complètement changé et on utilise maintenant un fichier XML, nommé comps.xml. Les détails de la syntaxe de ce fichier sont présentés dans la section Les comps d'Anaconda du site web de RedHat.
Nous allons maintenant reprendre les exemples présentés pour la version 7.3 en prenant en compte les modifications qu'ont subi les différents groupes. Le groupe le plus important (le groupe « Base ») est ici divisé en deux groupes nommés « Base » et « Core ». Le groupe « Base » devrait représenter la plus petite installation possible.
Cette fois, pour personnaliser votre installation, vous devrez éditer le fichier comps-milan.xml.in avec votre éditeur de texte favori. Ce fichier se trouve dans l'archive comps-8.0.tar.gz disponible sur le site web de RedHat. Pour ajouter les informations relatives aux paquets au fichier que vous créez, vous aurez besoin d'avoir installé le paquet rpm comps-extras. Les commandes à lancer pour terminer les opérations sont indiquées dans mettre à jour comps.xml et dans la documentation. Après avoir créé le fichier, vous devrez le copier dans le répertoire Redhat/base en écrasant l'original. Si vous utilisez le script updateBuild.sh, vous devrez seulement copier comps-milan.xml (après avoir modifié le comps-milan.xml.in qui se trouve dans le paquet tar/gzip comps-8.0.tar.gz et lancer la commande make), à l'emplacement que vous avez déjà indiqué dans la variable COMPSFILE (dans rhcd.conf).
Dans le premier fichier comps ci-joint, le paquet libsafe a été ajouté au groupe (composant) « Base » et pratiquement tous les groupes (composants) ont été désélectionnés, sauf « Base » et « Core », pour avoir une installation par défaut de seulement 220 paquets environ (probablement trop nombreux, encore une fois).
Nous avons construit le deuxième fichier comps ci-joint en partant de la configuration précédente et en réduisant un peu plus l'installation par défaut (cette fois, il ne restera que 158 paquets dans l'installation par défaut). Encore une fois, des résultats similaires peuvent être obtenus en utilisant kickstart, pour plus d'informations à ce propos, vous pourrez lire le Guide de personnalisation du Linux RedHat. Dans cet exemple, je n'ai pas complètement désélectionné l'installation du groupe « Base », parce qu'il contient trop de paquets que j'utilise d'habitude. J'ai donc juste désélectionné l'installation par défaut pour ces paquets en les rendant optionnels. Comme vous pouvez le voir, même le paquet redhat-logos du groupe « Core » a été rendu optionnel. Sachant que tous les paquets de ce groupe doivent représenter, ensembles, la plus petite installation possible, vous ne voudrez sans doute pas le faire (mes CD fonctionnent même même comme cela ; cependant, il doit y avoir quelques problèmes que je n'ai pas encore détectés). Le paquet tripwire a aussi été ajouté au groupe « Base ». La dernière modification visible a été faite au groupe « dialup », qui sera installé même s'il est désélectionné, parce que le groupe « Base » en dépend (ce qui est indiqué dans la définition du groupe lui-même). J'ai seulement sélectionné pour installation certains paquets de ce groupe dont j'ai habituellement besoin et laissé le reste désélectionné.
Nous allons de nouveau reproduire les exemples présentés pour les versions 7.3 et 8 en prenant en compte les modifications qu'ont subies les différents groupes.
Comme dans le cas de la 8.0, pour personnaliser votre installation, vous devrez modifier le fichier comps-milan.xml.in avec votre éditeur de texte favori. Ce fichier est disponible dans le fichier comps-9.tar.gz avec les scripts (comme je l'ai déjà dit, vous ne trouverez pas la même chose sur le site web de Redhat). Pour ajouter les informations relatives aux paquets au fichier que vous créez, vous aurez besoin d'avoir installé le paquet rpm comps-extras. Les commandes à utiliser sont indiquées dans mettre à jour comps.xml et dans la documentation. Après avoir créé le fichier, vous devrez le copier dans le répertoire Redhat/base en écrasant l'original. Si vous utilisez le script updateBuild.sh, vous devrez seulement copier comps-milan.xml, (après avoir modifié comps-milan.xml.in trouvé dans le paquet tar/gzip comps-9.tar.gz et avoir lancé la commande make), vers la destination que vous avez déjà indiquée dans la variable COMPSFILE (rhcd.conf).
Dans le premier fichier comps inclus, le paquet libsafe a été ajouté au groupe (composant) « Base » et pratiquement chaque groupe (composant) a été désélectionné, mis à part « Base » et « Core », de façon à avoir une installation par défaut comprenant seulement environ 240 paquets (hummm, la complexité augmente beaucoup…).
Dans le second fichier comps ci-joint, nous partons de la configuration précédente et nous réduisons un peu plus l'installation par défaut (cette fois, il n'y aura qu'environ 175 paquets dans l'installation par défaut). Ceci ressemble beaucoup à l'exemple présenté pour la Redhat 8.0, donc je vais éviter de vous ennuyer avec les mêmes explications. Encore une fois, des résultats identiques peuvent être obtenus en utilisant kickstart. Vous trouverez plus d'informations sur le sujet en lisant le Guide de personnalisation du Linux RedHat.
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:24