Le format des paquetages RPM est déjà abondamment documenté, notamment dans le livre Maximum RPM d'Ed Bailey que vous pouvez télécharger depuis le site RPM ou trouver dans toutes les bonnes librairies! Cette section présente quelques trucs pour les gens pressés.
Les paquetages RPM sont construits à partir d'un fichier de spécification. Il consiste (de la même manière que le fichier de configuration de KickStart) d'un ensemble d'étapes à accomplir pour construire le paquetage - on suppose que vous avez à le construire à partir des sources, potentiellement pour plusieurs plates-formes, et avez besoin d'y appliquer des corrections avant la compilation. Une fois construit et installé, un fichier RPM sera créé à partir des fichiers et des répertoires que vous avez spécifiés comme étant associés au paquetage. Il est important de noter que RPM n'a aucune idée des fichiers et répertoires liés à un paquetage donné - vous devez le lui dire.
Voici un exemple de spécification pour une version personnalisée du du serveur Cache WWW Squid:
Summary: Squid Web Cache server
Name: squid
Version: 1.NOVM.22
Release: 1
Copyright: GPL/Harvest
Group: Networking/Daemons
Source: squid-1.NOVM.22-src.tar.gz
Patch: retry-1.NOVM.20.patch
%description
Juste une première tentative d'empaquetage d'un serveur Squid pour
l'installer facilement sur notre serveur RedHat Linux
%prep
%setup
%build
configure --prefix=/usr/squid
perl -spi -e 's!#( -DALLOW_HOSTNAME_UNDERSCORES)!$1!' src/Makefile
make
%install
make install
%files
/usr/squid
Voici comment construire ce RPM:
% mkdir -p SOURCES BUILD SRPMS RPMS/i386
% cp ~/squid-1.NOVM.22-src.tar.gz SOURCES
% cp ~/retry-1.NOVM.20.patch SOURCES
% rpm -ba squid-1.NOVM.22+retry-1.spec
Cela va créer automatiquement un sous-répertoire dans le répertoire
BUILD dans lequel il va déballer le code source et lui
appliquer les corrections (de nombreuses options concernant les
corrections sont disponibles, voir le livre pour plus de détails). RPM
va maintenant automatiquement construire le paquetage en lançant
configure
suivi de make
, l'installer avec make
install
et prendre une ``photo'' des fichiers situés dans
/usr/squid. C'est cette dernière qui va constituer le binaire
RPM du logiciel Squid.
Notez que l'on peut insérer des commandes shell au cours des phases
de décompression, construction et d'installation, par exemple des
appels en perl
pour modifier des paramètres de compilation.
Le fichier RPM final sera placé dans le répertoire RPMS
dans le sous-répertoire de la plate-forme correspondante
i386. Dans notre exemple, il s'appelera
squid-1.NOVM.22-1.i386.rpm. Notez que le nom du fichier est
créé en collant les valeurs de certains des paramètres du fichier de
spécification: Name
, Version
et Release
suivi de la plate-forme, i386 dans ce cas. Gardez cela en
mémoire lorsque vous créerez des RPM afin d'éviter de leur donner des
noms exagérément longs.
Il est également intéressant de savoir que l'on peut contruire des RPM sans avoir à reconstruire tout le paquetage, par exemple:
Summary: Linux 2.0.35 kernel + filehandle patch + serial console patch
Name: linux
Version: 2.0.35+filehandle+serial_console
Release: 1
Copyright: GPL
Group: Base/Kernel
Source: linux-2.0.35+filehandle+serial_console.tar.gz
%description
C'est juste une première tentative de créer un paquetage du noyau
Linux avec ses corrections pour l'installation de notre serveur RedHat
Linux.
%prep
echo
%setup
echo
%build
echo
%install
echo
%post
/sbin/lilo
%files
/lib/modules/2.0.35
/boot/vmlinuz
Dans ce cas, nous créons simplement un RPM composé du fichier /boot/vmlinuz et du contenu du répertoire /lib/modules/2.0.35, et exécutons /sbin/lilo après que le paquetage a été installé sur une nouvelle machine. Si vous connaissez une meilleure façon d'écrire le fichier de spécification, faites le moi savoir.