Contrôler un RPM trouvé sur Internet
J'avais fait un RPM qui fait exactement la même chose (d'une manière 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.
RPM: https://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm
SRPM: https://fantom.fedorapeople.org/eclairage-1.0-2.fc17.src.rpm
(Le SRPM est le RPM Source, il permet de compiler le RPM)
Tous les RPMs disponibles sur Internet ne sont pas forcément bien fait, et c'est aussi valable pour les miens que vous trouverez à l'adresse https://fantom.fedorapeople.org. Il est plus que nécessaire 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 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 utilisateur simple) :
$ rpm -qp --info https://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 modifications du RPM ?
$ rpm -qp --changelog https://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 à l'intérieur que l'on verra si le développement du paquet s'est arrèté il y a plusieurs années, ou au 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 paquets sans ChangeLog, ils sont peu recommandables. 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 https://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm
Si cette commande renvoie quelque chose, alors ils faut vous inquièter. Toutefois, il existe un cas où un scriptlet s'avère nécessaire, notament pour les paquets contenant une bibliothèque dynamique. Par exemple :
$ rpm -qp --scripts https://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, un 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 https://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 obsolète un autre RPM ?
$ rpm -qp --obsoletes https://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 https://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 être d'autres paquets également disponibles sur le Net. Aussi, pour chacun de ces nouveaux paquets, il faut effectuer une vérification avec la présente checklist. Dans la plupart des cas, l'intégralité des dépendances est présente 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 la démonstration 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 de ce fichier (on pourrait dire : 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 paquet. Pour vérifier quels fichiers notre RPM va devenir propriètaire dans cette base de données, il existe une commande :
$ rpm -qpl https://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm
Ensuite, il suffit de voir avec la commande yum whatprovides
si un des fichiers appartient déjà à un autre paquet. Elle permet de vérifier pour les paquets installés sur le système, mais aussi pour les paquets présents dans le dépôt. Si cette étape est OK, passer à la question suivante.
Est-ce que les fichiers 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 (car un RPM est une archive comme un tarball) ? 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 https://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 permissions correctement vérifiées, et que l'emplacement des fichiers concorde 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 l'installer :
$ su - -c 'yum install https://fantom.fedorapeople.org/noarch/eclairage-1.0-2.fc17.noarch.rpm'
D'habitude, l'installation de RPMs ne provenant pas du dépôt Fedora ou RPMFusion est vivement déconseillée, mais il se peut qu'une fois de temps en temps, au cours de votre expérience avec Fedora, vous ayez à installer un RPM « venu d'ailleurs ». Cette checklist est là pour vous aider à choisir le bon...
La prochaine étape est la compilation du RPM Source, en ayant soigneusement vérifié le code source du programme empaqueté, ainsi que le fichier de spécifications pour la construction du RPM. Je vous oriente donc vers le wiki fedora-fr.org, et je vous dis à bientôt pour de nouvelles aventures...