Retrouvez cet article dans : Linux Pratique 37
Vous avez l'habitude d'installer des logiciels en utilisant, par exemple sous Mandriva ou SuSE, des paquets RPM. C'est la bonne méthode, celle qu'il faut utiliser dans toute la mesure du possible, car elle maintient la cohérence de la distribution : le gestionnaire de paquets sait ainsi à tout moment ce qui est installé ou pas. Mais il est parfois des cas, où vous pouvez vouloir installer un programme dans une version plus récente que celle fournie avec votre distribution et qui n'est pas disponible sur les serveurs. Ou alors, votre distribution est un peu vieille et les paquets ne sont disponibles que pour une édition plus récente. Apprenez comment créer des paquets RPM à partir des sources spécialement empaquetés au format .src.rpm...Un cas typique : vous voulez installer un logiciel disponible pour Mandriva 2006, alors que vous n'avez que la Limited Edition 2005 installée. Compiler vous-même le logiciel, depuis ses sources, peut être une solution, mais qui conduit vite à avoir une sorte de deuxième distribution, installée dans /usr/local/.
Et puis, la cohérence RPM en souffre gravement, à force...
Savez-vous qu'il existe un format de fichier qui va vous apporter le meilleur des deux mondes ? Il s'agit des RPM sources ou .src.rpm. Ce sont des sources spécialement empaquetées, qui vont générer, après quelques commandes, un fichier RPM, qui ne demandera plus qu'à être installé, comme d'habitude, sur votre système. Il vous sera ainsi possible de prendre par exemple les paquets .src.rpm d'une Mandriva 2006 et de les installer sur une LE2005. Sur les serveurs ou DVD Mandriva, ils sont rangés dans l'arborescence SRPMS/. Attention cependant, ce portage arrière ou backport ne marche pas toujours, surtout quand un programme a impérativement besoin d'un trop grand nombre de bibliothèques et dépendances très récentes. Mieux vaut alors, dans ce cas, installer complètement la nouvelle distribution. Mais ponctuellement, ça peut marcher ! Nous avons ainsi réussi à installer Koffice 1.5 sur notre Mandriva LE2005, en prenant les .src.rpm de Cooker – en gardant bien à l'esprit que les paquets Cooker 1 ne sont pas du tout destinés à une machine de travail.
Toutes les manœuvres que nous allons décrire maintenant devront se faire en utilisateur simple, pas en root, sauf l'installation proprement dite, à la fin. La première des choses à faire, après avoir téléchargé les paquets .src.rpm du logiciel qui vous intéresse, est de préparer votre système.
Installer les outils de compilation et développement
Tout d'abord, il vous faudra installer les logiciels rpm-build, spec-helper et libtool. Un petit détour par rpmdrake suffit. Il vous faudra aussi de nombreux outils de compilations, à commencer par make et des bibliothèques de développement (qui contiennent -devel dans leur nom). En général, une lecture attentive des messages d'erreur, quand les étapes de configuration s'arrêtent, vous indiquera quelle bibliothèque -devel installer.
Préparer une arborescence de travail
La décompression, compilation, puis création du RPM final va se faire dans une arborescence de dossiers spéciale, toujours la même. Pour la créer, ouvrez un terminal, placez-vous dans votre répertoire personnel, puis tapez la commande qui va créer d'un coup tous les dossiers nécessaires :
$ cd
$ mkdir -p ~/rpm/{RPMS/{i586,noarch},SRPMS,SPECS,tmp,BUILD,SOURCES}
Un répertoire rpm/, avec ses sous-répertoires, est maintenant apparu dans votre home/. Les sous-répertoires sont : RPMS/i586, RPMS/noarch, SRPMS, SPECS, tmp, BUILD, et SOURCES.
Toujours dans votre terminal, tapez ensuite la commande suivante :
$ cat << EOF > ~/.rpmmacros
Puis saisissez les commandes suivantes à l'invite qui apparaît :
%_topdir $HOME/rpm %_tmppath /tmp EOF
Ceci revient tout simplement à créer un fichier texte .rpmmacros dans votre home/. Il sert à indiquer, lors de la compilation du RPM, où se trouve l'arborescence de travail et où se trouve le répertoire temporaire.
Installer le .src.rpm dans l'arborescence de travail
C'est la commande suivante qui s'en occupe :
$ rpm -ivh programme.src.rpm
Comme c'est un fichier src.rpm et pas un vrai paquet.rpm, cette commande ne génère pas l'installation habituelle. Cela va juste placer les fichiers sources, encore compressés au format tar.bz2, dans le répertoire SOURCES/ créé plus haut et le fichier .spec dans SPECS/. Le fichier .spec est une sorte de descriptif, qui contient les commandes et descriptions pour construire et installer le programme.
S'il y a des modifications à apporter dans le fichier .spec, c'est le moment de le faire. C'est notamment dans ce fichier que se trouvent les descriptions du paquet telles qu'elles apparaîtront ensuite dans rpmdrake, les numéros de version, le nom du packageur et autres informations. S'y trouvent aussi les instructions pour les étapes de configuration, compilation et la liste des fichiers qui seront inclus dans le paquet .rpm final. Attention donc à ce que vous modifiez dans ce fichier.
Si vous voulez modifier les sources, il faudra les décompresser, procéder aux modifications, puis les recompresser, toujours dans SOURCES/.
Créer le paquet .rpm
C'est la commande suivante qui s'en charge :
$ rpm -ba rpm/SPECS/programme.spec
Croisez les doigts et patientez. C'est le traditionnel moment de la tasse de café... Si la phase de configuration s'arrête, lisez attentivement les messages d'erreur, pour comprendre ce qui ne va pas. La plupart du temps, c'est une bibliothèque de développement qui manque et qu'il vous faudra installer ou mettre à jour.
Cette commande va décompresser vers BUILD/ les sources .bz2 qui sont dans SOURCES/. Puis, c'est dans BUILD/ que va se faire, automatiquement, l'équivalent des classiques ./configure et make, à savoir configuration et compilation.
L'option -ba construira ensuite les paquetages binaires .rpm ainsi qu'un paquetage source .src.rpm. Reconstruire un paquet source src.rpm tout neuf est très utile si vous aviez modifié ces sources ou le fichier .spec. Le nouveau paquet src.rpm prendra en effet en compte ces modifications et sera rangé dans SRPMS/.
On peut utiliser l'option -bb si on n'a pas besoin de reconstruire un paquet source et qu'on n'a besoin que du paquet binaire.
À l'inverse, l'option -bs ne fera que construire le paquetage source.
Installer le paquet .rpm
C'est dans les répertoires RPMS/i586/ ou RPMS/noarch/ créés au début, que le paquet RPM installable
du programme voulu est maintenant rangé. Il s'installera ensuite tout simplement avec la classique commande :
$ su # urpmi programme.rpm # exit
Si tout s'est bien passé lors de l'étape précédente, l'installation devrait se dérouler normalement et votre programme être immédiatement utilisable.
Faire le ménage
Vous remarquerez que, dans BUILD/, il y a encore l'arbre de construction, c'est-à -dire les sources décompressées et compilées. Quand la compilation est terminée, l'arbre est encore là . La commande make install pourrait marcher si on voulait, mais cela court-circuiterait la commande rpm et casserait l'harmonie du système. De même, le fichier .spec est encore dans SPECS/ et les sources .tar.bz2 dans SOURCES/. On peut sans problème nettoyer tout ça à la main, mais on peut aussi le faire faire automatiquement par la commande rpm :
- Pour supprimer l'arbre de construction à l'issue de la création du RPM :
$ rpm -ba --clean rpm/SPECS/programme.spec
- Pour supprimer le fichier
.specet les sources :$ rpm -ba --rmsource rpm/SPECS/programme.spec
- On peut bien sûr faire les deux d'un coup :
$ rpm -ba --rmsource --clean rpm/SPECS/programme.spec
Voilà , votre arborescence de travail est de nouveau toute propre, prête à accueillir de nouvelles compilations. La prochaine fois, vous n'aurez plus besoin de refaire les deux premières étapes. Gardez cependant en mémoire que cette procédure d'installation est classiquement réservée aux développeurs, et qu'elle doit rester exceptionnelle, surtout si vous vous amusez avec des paquets issus de la distribution Cooker. Bonne compilation !

