Page suivante Page précédente Table des matières

11. Créer vos propres RPM

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.


Page suivante Page précédente Table des matières