3. Paquets RPM

La majeure partie de la distribution RedHat consiste en un ensemble de fichiers RPM (Redhat Package Manager). Un paquet RPM contient en général des exécutables binaires, avec les fichiers de configuration et la documentation. Le programme rpm est le gestionnaire de paquets de RedHat, qui peut être utilisé pour installer, rechercher, vérifier, effacer et construire les paquets au format RPM. Rpm gère convenablement une base de données de tous les paquets installés, ce qui rend l'information sur les logiciels installés disponible à tout moment.

Les fichiers binaires RPM inclus dans la distribution ont été construits sur un système utilisant lui-même la distribution. C'est important, parce que la plupart des programmes dans les paquets dépendent des bibliothèques partagées. A partir de RedHat 5.0, la nouvelle version 3 de la bibliothèque C standard de GNU (qui est compatible 64 bits) a été utilisée. Cette version de la bibliothèque est communément appelée glibc ou, sous Linux, libc 6. Tous les exécutables de cette distribution ont été liés avec cette bibliothèque. Si vous tentez d'installer les fichiers binaires d'une distribution différente, il y a beaucoup de chances que cela ne fonctionne pas, sauf si vous installez le paquet libc5 pour la compatibilité descendante. Il existe aussi des incompatibilités entre les nombreuses versions du RedHat Package Manager lui-même qui feront rater l'installation de quelques paquets même sur les machines où ils sont supposés fonctionner.

Les noms des paquets RPM contiennent le suffixe .arch.rpm, où arch est l'architecture, ayant habituellement la valeur i386 pour les binaires de la plateforme Intel. Les paquets que vous installez doivent correspondre aux versions des bibliothèques partagées disponibles sur la machine. Le programme rpm est habituellement assez bon pour s'assurer que c'est bien le cas. Néanmoins, il existe des moyens de le vérifier, et vous devez être sûr de savoir ce que vous faites si vous forcez l'installation de paquets de cette façon. Néanmoins, en utilisant le disque de démarrage de l'installation RedHat, il est assuré qu'un ensemble correct de paquets RPM est installé sur la machine.

Si vous découvrez un paquet RPM qui n'a pas été installé sur votre système durant le processus d'installation, ne désespérez pas. A tout moment, vous pouvez (en tant que root) installer des paquets RPM, par exemple :

      # rpm --install  WindowMaker-0.18-1b.i386.rpm
    

Vous pouvez même installer directement d'Internet, si vous connaissez l'URL du paquet RPM :

      # rpm --install ftp://rufus.w3.org/redhat-contrib/noarch/mirror-2.9-2.noarch.rpm
    

Si vous voulez mettre à jour un paquet RPM (ou l'installer s'il n'est pas présent sur la machine), utilisez la commande :

      # rpm --update  WindowMaker-0.18-1b.i386.rpm
    

Si vous voulez mettre à jour un paquet RPM et seulement si une version précédente est déjà installée, utilisez la commande :

      # rpm --freshen  WindowMaker-0.18-1b.i386.rpm
    

Une autre version des paquets RPM contient les sources originaux utilisés pour construire les binaires. Ces paquets ont le suffixe .src.rpm et sont situés dans le répertoire SRPMS. Ces paquets composent les deux derniers CDs et une partie du troisième sur cinq, qui font la release 8.0 (ou la 7.3). Pour la 9, ils sont sur trois CD séparés. Pour la 6.2 (et les précédentes versions, pas trop anciennes), les choses changent un peu puisqu'il n'existe qu'un seul CD d'installation qui ne comporte pas les paquets SRPMS, que vous pouvez graver sur un disque différent si vous le voulez.

Pour obtenir plus d'informations sur le gestionnaire de paquet RedHat, je vous suggère de lire les pages man et le livre bien détaillé Maximum rpm.

Dans la prochaine section, j'introduirai un programme C qui sera utilisé dans des scripts variés tout au long du reste de ce guide pratique. Il indique, entre deux versions du même paquet RPM, celui qui est le plus récent. Ce programme est basé sur le code utilisé dans le gestionnaire de paquets RedHat (release 4.1) et est utilisé quand l'option --freshen est ajoutée.

3.1. Comparer deux versions d'un paquet RPM

Le code C inclus dans les trois fichiers Makefile, rvc.h, rvc.c a été extrait du gestionnaire de paquets RedHat et (légèrement) modifié pour combler vos besoins. Ils forment un programme C simple qui, avec deux versions A et B d'un paquet retourne 1, 0 ou -1 si A est respectivement plus récent, égal ou plus ancien que B et d'autres valeurs en cas d'erreur (vous pouvez lire les commentaires du code pour des informations plus détaillées). Pour compiler le programme, vous avez besoin du programme make et du compilateur C gcc. Copiez le fichier dans le même répertoire et envoyez la commande :

        $ make
      

Ce programme est nécessaire pour pratiquement tous les scripts utilisés dans les sections suivantes et met en place la variable RVC dans le fichier rhcd.conf.

Vous pouvez trouver une copie des sources et de la version précompilée dans l'archive rhcd-scripts.tar.gz située dans le répertoire rpmvc.

Note

Il existait une erreur dans la façon dont ce programme était utilisé par les scripts updateDist.sh (ver. < 1.17) et updateCD.sh (ver. < 1.12). Je vous suggère fortement d'éviter les versions des scripts ayant de plus petits numéros de versions que ceux rapportés ici, même si le problème n'est pas fréquent (au moins apparemment).