Ce billet est une traduction de l'article «Wednesday Why: Package Categories» écrit par Chris Tyler.

Pendant l'installation du système avec Anaconda et lorsque vous passez par le gestionnaire de paquets (Pirut) (qui apparaît dans le menu Applications -> Ajouter/Enlever des logiciels et s'identifie comme gestionnaire de paquet dans son titre de fenêtre), il vous est donné la possibilité de choisir des paquets par groupes, eux-même disposés dans des catégories. Chaque groupe peut contenir des paquets obligatoires et facultatifs, et les paquets facultatifs dans chaque groupe peuvent être inclus ou exclus lors de l'installation par défaut.

Certains paquets ne sont inclus dans aucune catégorie et ne peuvent pas être installés via ce système de catégories, il faudra donc lister l'ensemble des paquets afin que le gestionnaire de paquets les propose.

Le classement des paquets se fait dans le fichier XML comps.xml, qui se trouve dans /var/cache/yum/*/comps*.xml -- chaque dépôt peut avoir son propre fichier comps.xml. Ces fichiers sont dans un format XML qui ressemble à ceci :

<?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
   <comps xmlns="">
       <group>
           <id>short-group-id</id>
           <name>human-readable-group-name</name>
           <uservisible>true</uservisible>
           <packagelist>
               <packagereq type="mandatory">always-installed-package</packagereq>
               <packagereq type="default">installed-by-default-package</packagereq>
               <packagereq type="optional">not-installed-by-default-package</packagereq>
               <packagereq type="conditional" requires="other-package">conditional-installed-package</packagereq>
               . . .
           </packagelist>
       </group>
       . . .
       <category>
           <id>simple-category-id</id>
           <name>human-readable-category-name</name>
           <description>category-description</description>
           <display_order>5</display_order>
           <grouplist>
               <groupid>short-group-id</groupid>
               . . .
           </grouplist>
       </category>
       . . .
   </comps>

Comme vous pouvez le voir, la balise <category> définit les groupes et la balise <group>, elle, définit les groupes de paquets Le texte tels que le nom et la description de chaque catégorie et groupe, est fourni dans différentes langues grâce à l'utilisation de l'attribut : xml:lang.

Les paquets identifiés en tant que type obligatoire sont inclus entre les balises <packagereq>, ceux-ci sont toujours installés si le groupe est installé.

Les paquets facultatifs sont traités comme type de paquet obligatoire s'ils requièrent une dépendance d'un paquet de type obligatoire : par exemple, si vous installez le groupe de langue française et avez Moodle installé, alors le support de la langue française de Moodle sera automatiquement installé.
Les paquets avec un type défaut ou facultatif apparaissent sur la liste des paquets facultatifs avec le groupe associé ; initialement, les paquets par défaut sont séléctionnés et les paquets facultatifs ne le sont pas.