Les RPMs sont les fichiers qui servent à installer les différents logiciels sous les distributions Linux Mandrake ou RedHat.
Pour pouvoir installer un logiciel sur sa machine, il faut le RPM qui correspond à la distribution que l’on utilise et il faut qu’il soit compiler pour le type de processeur que l’on utilise.
Par exemple, le fichier ethereal-0.8.19-1mdk.i586.rpm correspond au programme ethereal en version 0.8.19, pour la mandrake (mdk, 1 signifie qu’il s’agit du premier package, si il y avait des bugs dans le packaging, ce numéro serait mis à jour) et pour les processeurs Pentium et au dela (i586).
Source RPM
Il arrive que le package ne soit pas disponible pour sa propre architecture. Dans ce cas, on peut trouver des fichiers RPM source (à compiler).
Dans notre exemple, il pourrait s’agir du fichier ethereal-0.8.19-1mdk.src.rpm. C’est le src qui indique qu’il faut compiler ce package.
Pour compiler ce package, il faut installer le package rpm-build. Ensuite, il suffit de placer le fichier ethereal-0.8.19-1mdk.src.rpm dans le répertoire /usr/src/RPM/SRPMS et de taper la commande "rpm —rebuild ethereal-0.8.19-1mdk.src.rpm". Si ma machine est par exemple un Pentium II, le RPM installable ce trouve alors dans /usr/src/RPM/RPMS/i686 sous le nom de ethereal-0.8.19-1mdk.i686.rpm.
A noter que pour que la recompilation d’un package puisse être faite, il faut avoir au préalable installer sur la machine tous les outils de compilation ainsi que le entête des bibliothèques qu’utilise notre package. En règle générale, cela signifie qu’il faut avoir installer tous les packages nommés *devel*.rpm des bibliothèques en question.
Création de fichiers RPM
Par exemple, pour le programme resize_image, je dispose de l’archive resize_image-30.09.2001.tar.gz. Cette archive créé le répertoire resize_image, contient un fichier Makefile dans ce répertoire, génère l’executable resize_image que je veut placer dans /usr/local/bin ainsi que le fichier de documentation README qui sera placé dans /usr/share/doc/resize_image-0.2/. Dans ce cas, je doit générer le fichier resize_image.spec que je place dans le répertoire resize_image et je refait l’archive.
#
# resize_image spec file. This file is used to create resize_image
# rpm package. Place it in /usr/src/RPM/SPECS/, place
# resize_image-30.09.2001.tar.gz in /usr/src/RPM/BUILD/, go in
# /usr/src/RPM/SPECS/ and type :
# rpm -bi resize_image.spec
# result package is in : /usr/src/RPM/RPMS/i686
#
Summary: A shell image resizer
Name: resize_image
Version: 0.2
Release: 1
Copyright: GPL
Group: Applications
Source: http://perso.worldonline.fr/lab/resize_image/resize_image-30.09.2001.tar.gz
URL: http://perso.worldonline.fr/lab/resize_image/
Distribution: Mandrake 8.0
Vendor: Daniel Lacroix
Packager: Daniel Lacroix <lacroixd@worldonline.fr>
%description
resize_image is a small program which allow easy image
resize using several algorithmes.
%prep
rm -rf $RPM_BUILD_DIR/resize_image
zcat $RPM_BUILD_DIR/resize_image-30.09.2001.tar.gz | tar xvf -
%build
cd resize_image
make
%install
cd resize_image
install resize_image /usr/local/bin/resize_image
%files
%doc resize_image/README
/usr/local/bin/resize_image
Je place le tout dans le répertoire /usr/src/RPM/SOURCES et j’y tape la commande "rpm -ta resize_image-30.09.2001.tar.gz". Ce qui fabrique le fichier /usr/src/RPM/SRPMS/resize_image-0.2-1.src.rpm et le fichier /usr/src/RPM/RPMS/i686/resize_image-0.2-1.i686.rpm.
C’est pas toujours aussi simple mais faire un package RPM reste du domaine du faisable.