Ceci est la suite du post précédent. J'avais fait un RPM qui faisait exactement la même chose (encore plus propre cette fois puisqu'il ne s'agit plus d'un simple hack), mais je me suis rendu compte que l'utilisateur novice auquel il était destiné n'a absolument pas vérifié mon RPM.
(Le SRPM est le RPM Source, il permet de construire le RPM)
Tous les RPMs disponibles sur Internet ne sont pas forcément bien fait, celà est aussi valable pour les miens que vous trouverez à cette adresse http://fantom.fedorapeople.org et il est plus que nécéssaire de procéder à un petit examen que je vous propose sous la forme d'une checklist. Bien sûr l'idéal est d'apprendre à faire un RPM pour le Projet Fedora, ce n'est pas très compliqué et vous apprendrez ainsi à contrôler la qualité de vos RPMs, et par extension à contrôler la qualité de tous ceux que vous trouverez sur le Net. Pour illustrer un peu la checklist nous allons donc passer en revue le paquet nommé eclairage, sans même avoir besoin de télécharger quoi que ce soit.
  • Est-ce que le SRPM du RPM est disponible au téléchargement ?
Oui: OK passer à la question suivante
Non: Pouah! Quelle horreur, il est closed-source...
  • Est-ce que le nom du fichier est de type <nom>-<version>-<release>-<arch>.rpm ?
J'insiste sur la partie <release>, pour eclairage c'est 2.fc17 ce qui indique qu'il a été modifié deux fois et qu'il est pour Fedora 17. Pour <arch> assurez-vous que l'architecture du paquet corresponde avec celle de votre système, eclairage est en noarch ce qui signifie qu'il est compatible avec les systèmes d'architectures x86_64 et i686. Si le paquet présente un <release>-<arch> correct, passer à la question suivante.
  • Quel est l'usage précis de ce RPM ?
Comment faire un classique « yum info » sur un paquet que l'on a pas téléchargé ? Voici une commande fort utile (à faire en simple utilisateur) :
$ rpm -qp --info http://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm
Si la description du paquet correspond à vos attentes, passer à la question suivante.
  • Quel est l'historique des modification du RPM ?
$ rpm -qp --changelog http://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm
L'historique doit être présent, il permet de suivre le développement du RPM. C'est dedans que l'on verra si le développement du paquet s'est arrèté il y a plusieurs années ou aux contraire évolue avec un rhytme effreiné (pour que l'on s'organise dans les mises à jour). C'est également dedans que l'on trouvera l'adresse email de la personne en charge du développement du paquet afin de lui transmettre d'éventuels rapports de bug. J'ai déjà vu des RPMs sans ChangeLog, ils sont peu recommendables. Si l'historique est présent et correctement renseigné, passer à la question suivante.
  • Contient-il un script de post-installation ou de pré-installation ? Voire de pré-désinstallation ou post-désinstallation ?
$ rpm -qp --scripts http://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm
Si cette commande renvoie quelque chose, alors ils faut vous inquièter. Cependant il existe un cas ou un scriptlet s'avère nécéssaire, pour un paquet contenant une bibliothèque dynamique, par exemple :
$ rpm -qp --scripts http://repos.fedorapeople.org/repos/bioinfornatics/0ad/fedora-17/x86_64/0ad-0.11956-7.20120609svn11956.fc17.x86_64.rpm
postinstall program: /sbin/ldconfig
postuninstall program: /sbin/ldconfig
J'avais vu une fois un script d'enfer pour un paquet, paquet qui avait été fait par un programme automatique disponible sur SuSE, pas la peine de chercher plus loin: Pas compatible avec Fedora. Si la commande retourne rien ou bien un ldconfig, passer à la question suivante.
  • Entre t-il en conflict avec un autre RPM ?
$ rpm -qp --conflicts http://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm
Jamais un paquet trouvé sur Internet ne dois entrer en conflict avec un paquet (qui provient du dépôt Fedora) de votre système. Si cette commande ne retourne rien, passer à la question suivante.
  • Rend t-il obsolete un autre RPM ?
$ rpm -qp --obsoletes http://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm
Pareil ici, il ne doit pas rendre obsolète un seul paquet de votre système...
  • Quelles sont ses dépendances ? De quels RPMs a t-il besoin pour fonctionner ?
$ rpm -qp --requires http://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm
Avant d'essayer de l'installer, il convient de rechercher ses dépendances qui pourraient très bien êtres d'autres paquets également disponibles sur le Net, et pour chacun de ces nouveaux paquet il faut les contrôler avec la présente checklist. Dans la plupart des cas l'intégralité des dépendances sont présentes dans le dépôt Fedora, ou alors si vous essayez d'installer monpaquet, il se peut qu'il ait pour dépendance monpaquet-libs qui contient les bibliothèques dynamiques sur lesquelles repose le programme contenu dans monpaquet, rien d'inquiètant en somme. Pour continuer avec eclairage, on constate qu'il a pour dépendance /bin/bash, donc on recherche quel paquet présent dans le dépôt Fedora fourni le programme /bin/bash :
$ yum whatprovides /bin/bash
Le paquet bash fourni le programme indispensable au bon fonctionnement de eclairage, et par chance le paquet bash est installé d'origine sur nos systèmes Fedora. Si toutes les dépendances sont satisfaites, passer à la question suivante.
  • Quels fichiers possède t-il ?
Chaque fichier présent dans la racine ainsi que le paquet propriètaire du fichier (le paquet qui va ajouter ou supprimer ce fichier) sont listés dans la base de données rpm. Un RPM ne doit jamais « voler » un fichier appartenant à un autre RPM. Pour vérifier de quels fichiers notre RPM va devenir propriètaire dans cette base de données, il existe une commande :
$ rpm -qpl http://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm
Ensuite il suffit de voir avec le « yum whatprovides » si un des fichiers appartient déjà à un autre paquet installé et/ou du dépôt. Si cette étape est OK, passer à la question suivante.
  • Est-ce que les fichier qu'il possède sont uniquement ceux qu'il installe ? Avec quelles permissions ?
Avec l'aide de la question précédente, nous savons que eclairage « possède » trois fichiers, mais est-ce que ces trois fichiers sont ceux contenus dans le fichier rpm (un RPM est une archive comme un tarball entre autre) ? S'ils sont contenus dans le fichier rpm, ils vont être installés sur notre système avec quelles permissions ? Pour répondre à ces questions, voici une commande :
$ rpmls http://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm
C'est comme un « ls -l » mais fait dans le RPM. Une fois les persmissions correctement vérifiées, et que les emplacements des fichiers concordent avec la FHS (Filesystem Hierarchy Standard), alors cette étape est OK.


Félicitations ! Si votre paquet a traversé les tests jusqu'ici, c'est qu'il ne doit pas être trop mauvais. Si le paquet correspond à vos attentes vous pouvez directement :
$ su - -c 'yum install http://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm
D'habitude je ne cautionne pas d'installer des RPMs ne provenant pas du dépôt fedora ou rpmfusion, mais il se peut que une fois dans votre expérience avec Fedora vous ayez à installer un RPM « venu d'ailleurs », cette checklist est là pour vous aider à choisir le bon... L'étape suivante est de recompiler le RPM Source, en ayant soigneusement vérifié le code source du programme empaqueté ainsi que le fichier de spécifications pour la contruction du RPM. Je vous oriente donc vers le wiki de fedora-fr.org, et je vous dis à bientôt pour de nouvelles aventures...