7. Le fichier comps

Le fichier comps définit comment les paquets seront assemblés durant l'installation. Dans la distribution RedHat, ceci est fait selon la fonctionnalité qu'ils procurent, par exemple:

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 qui permet à l'utilisateur de personnaliser très précisément la liste des paquets qui seront installés. Personnaliser l'installation à la main, ou sélectionner « Tout » dans la liste des composants est le seul moyen d'avoir vos propres paquets installés, sauf si vous modifiez le fichier RedHat/base/comps.

7.1. Format du fichier comps pour RedHat versions < 6.1

Le fichier comps commence avec un en-tête décrivant la version du format comps, suivie d'une ligne vide.

        0.1
        <empty line>
      

Après ceci, les composants sont listés, séparés par des lignes vides :

        <composant 1>
        <ligne vide>
        <composant 2>
        <ligne vide>
        ....
        <composant n>
        <ligne vide>
        EOF
      

Chaque composant a la définition suivante :

        (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 veut dire que le composant est choisi par défaut alors qu'un 0 dit le contraire. L'option --hide veut dire que vous ne pouvez pas voir l'entré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'apparait 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 pas d'une partie du nom du fichier du paquet (bien qu'il doive être identique par convention).

En ajoutant vos paquets au fichier comps, vous pouvez personnaliser votre propre distribution et vous assurer que vos paquets seront installés par défaut. Une chose à laquelle vous devez porter 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 ces 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 voir comment le fichier est analysé).

7.2. Format du fichier comps pour RedHat version 6.1

Avec RedHat version 6.1, 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 lisant le fichier comps et en testant quelques configurations.

Dans la release 6.1, la définition du composant est étendue pour inclure quelques éléments optionnels supplémentaires avant les <RPM>. Ces élements sont:

          <RPM-dépendant-de-architecture 1>
          ...
          <RPM-dépendant-de-architecture n>
          <composant-requis 1>
          ...
          <composant-requis n>
          <RPM-composant-dépendant 1> 
          ...
          <RPM-composant-dépendant n>
        

Un <RPM-dépendant-de-architecture> définit une dépendance entre un paquet et une architecture spécifique et a la définition suivante:

          (!)?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 :

          @ <component>
        

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-composant-dépendant> 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é avec les paquets inclus dans le composant où la définition se trouve.

7.3. Format du fichier comps dans RedHat version 6.2

Avec RedHat version 6.2, le format du fichier comps a apparemment un peu changé. Le décodage se fait aussi 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 seulement en lisant le fichier et en testant quelques configurations.

Dans la release 6.2, la définition du composant est étendue pour inclure deux éléments optionnels supplémentaires :

        <RPM-dépendant-language 1>
        ...
        <RPM-dépendant-language n>
        <composant-dépendant-architecture 1>
        ...
        <composant-dépendant-architecture n>
      

Un <RPM-dépendant-language> est nécessaire pour spécifier l'installation d'un paquet au cas où une langue spécifique a été sélectionnée. C'est défini ainsi :

        (lang <language>): <RPM>
      

Par exemple, la ligne suivante

        (lang ja_JP)): locale-ja
      
veut dire : si la langue japonaise est sélectionnée, alors il faut installer le paquet locale-ja avec les autres paquets installés pour ce composant.

Un <composant-dépendant-architecture> étend le concept du <RPM-dépendant-architecture>, introduit lors de la release 6.1, au composant entier, comme vous pouvez le comprendre à la lecture de sa définition :

        (!)?arch: <component>
      

7.4. Format d'un fichier comps dans la RedHat version 7.3

Avec la RedHat version 7.3, le format du fichier comps a gagné en syntaxe. Le décodage prend place (encore) dans le script comps.py, que vous pouvez maintenant trouver dans le répertoire /usr/lib/anaconda/ si vous avez installé le paquet anaconda. Les dépendances sur une langue ou sur une architecture pour un composant ou un paquet peuvent maintenant être liées avec l'opérateur and. 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 faut 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 définitivement plus qu'assez pour les simples exemples de personnalisation de l'installation par défaut qui seront présentés dans la prochaine section.

7.4.1. Personnaliser l'installation par défaut de la RedHat version 7.3

L'exemple que nous allons parcourir dans cette section implique des modifications dans le fichier comps pour changer les valeurs par défaut qui concernent l'installation des paquets. Je préfère habituellement, particulièrement 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, sont 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 remplit nos besoins (cette fois, pratiquement parfaitement ; ce sont, en fait, mes besoins, les vôtres peuvent varier). Si vous voulez inclure un fichier comps modifié dans vos CDs, vous devez le copier dans l'arbre principal juste avant de lancer les opérations décrites dans reconstruire l'installateur 7.3 ou 8.0.

7.4.1.1. Ajouter des RPMS et désélectionner les composants par défaut

Pour personnaliser votre installation de cette façon, vous devez é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 était ajouté dans le composant « Base system » et presque tous les composants étaient désélectionnés pour obtenir une installation par défaut comportant seulement 200 paquets (je sais qu'ils sont encore trop nombreux).

7.4.1.2. Modifier quelques-uns des composants standards

Nous construisons le deuxième fichier comps ci-joint à partir de l'étape précédente, pour réduire un peu plus l'installation par défaut (cette fois, il n'y aura plus que 154 paquets dans l'installation par défaut). Quelques-uns des groupes ont été divisé pour donner à l'installation plus de 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 (vous ne pouvez pas supprimer kudzu, par exemple, du composant Base, même si vous pouvez le faire après installation). Il doit être dit que des résultats similaires peuvent être obtenus en utilisant kickstart. Pour plus d'informations à ce propos, vous pouvez lire le Guide de Personnalisation de RedHat Linux.

7.5. Format du fichier comps à partir de RedHat version 8.0 et 9

Avec la RedHat version 8.0 et 9, le format du fichier comps a été complètement changé et on utilise maintenant un fichier XML, nommé comps.xml. Les détails sur la syntaxe du fichier peuvent être trouvés dans la section anaconda comps du site web de RedHat.

7.5.1. Personnaliser l'installation par défaut de la RedHat version 8.0

Nous reproduirons maintenant les exemples présentés pour la release 7.3 en prenant en compte les modifications appliquées aux différents groupes. Le groupe le plus important (le groupe « Base », divisé ici en deux groupes nommés « Base » et « Core ») doit représenter l'installation minimale.

7.5.1.1. Notre premier exemple revisité pour Redhat 8.0

Cette fois, pour personnaliser votre installation, vous devez éditer le fichier comps-milan.xml.in avec votre éditeur de texte favori. Le fichier peut être trouvé dans l'archive comps-8.0.tar.gz sur le site web de RedHat. Pour ajouter les informations de paquets au fichier que vous venez de créer, vous avez besoin d'avoir installé le paquet rpm comps-extras. Les commandes à lancer pour terminer les opérations sont listées dans mettre à jour comps.xml et dans la documentation. Après avoir créé le fichier, vous devez le copier dans le répertoire Redhat/base en écrasant l'original. Si vous utilisez le script updateBuild.sh, vous devez seulement copier comps-milan.xml (après avoir modifié comps-milan.xml.in qui se trouve dans le paquet tar/gzip comps-8.0.tar.gz et lancé la commande make), à l'emplacement que vous avez déjà configuré 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).

7.5.1.2. Notre deuxième exemple revisité pour Redhat 8.0

Nous construisons le deuxième fichier comps ci-joint sur la précédente configuration et réduisons un peu plus l'installation par défaut (cette fois, il restera seulement 158 paquets de 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 pouvez lire le Guide de Personnalisation de la RedHat Linux. Dans cet exemple, je n'ai pas désélectionné complètement l'installation du groupe « Base », parce qu'il y a trop de paquets que j'utilise, donc j'ai 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. En considérant que les paquets présents dans ce groupe doivent représenter la plus petite installation possible, vous ne voudrez probablement pas le faire (de plus, mes CDs fonctionnent même ainsi ; il doit exister 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é certains paquets dont j'ai habituellement besoin à partir de ce groupe pour l'installation et laissé le reste désélectionné.

7.5.2. Personnaliser l'installation par défaut de la RedHat version 9

Nous allons de nouveau reproduire les exemples présentés pour les releases 7.3/8 en prenant en compte les modifications qu'ont subies les différents groupes.

7.5.2.1. Notre premier exemple revisité pour la Redhat 9

Comme dans le cas de la 8.0, pour personnaliser votre installation, vous devez éditer le fichier comps-milan.xml.in avec votre éditeur de texte favori. Ce fichier est disponible dans le fichier comps-9.tar.gz parmi 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 des packages pour les fichiers que vous avez créés, vous avez besoin de disposer du package rpm comps-extras pour continuer les opérations listées dans mettre à jour comps.xml et dans la documentation. Après avoir créé le fichier, vous devez le copier dans le répertoire Redhat/base en écrasant l'original. Si vous utilisez le script updateBuild.sh, vous devez seulement copier comps-milan.xml, (après avoir modifié comps-milan.xml.in trouvé dans le package tar/gzip comps-9.tar.gz et avoir lancé la commande make), vers la destination que vous avez déjà configurée dans la variable COMPSFILE (rhcd.conf).

Dans le premier fichier comps inclus, le package libsafe a été ajouté par le groupe « Base » (composant) et pratiquement chaque groupe (composant) était désélectionné, mis à part « Base » et « Core », de façon à avoir une installation par défaut comprenant seulement ~240 packages (hummm, la complexité augmente...).

7.5.2.2. Notre second exemple revisité pour Redhat 9

Dans le second fichier comps inclus, nous construisons à partir de l'installeur précédent et supprimons un peu plus d'éléments de l'installation par défaut (cette fois, il n'y aura que ~175 packages dans l'installation par défaut). Cela 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 sont obtenus en utilisant kickstart. Plus d'informations sur cela en lisant le Guide de personnalisation de RedHat Linux.