Les paquets RPM sont construits à partir de fichiers ayant comme extension .spec
1).
Il faut installer les 2 paquets suivants :
dnf install rpmdevtools rpm-build
Ensuite en fonction de ce que l'on souhaite construire il faut en plus un compilateur des entêtes de bibliothèques, et bien sûr des macros
dnf list *rpm-macro*
Ci-dessus la commande qui va lister tous les paquets qui correspondent à cette recherche.
Après avoir installé les paquets nécessaires, il faut créer son environnement de travail :
rpmdev-setuptree
Tous les .spec
qui produisent les paquets (hors dépôts tiers, tels que RPMFusion, etc.) sont disponibles à cette adresse.
Pour récupérer une des recettes, on peut soit utiliser l'utilitaire git
, soit fedpkg
((Il utilise git
).
1. On installe le paquet fedpkg
.
2. On clone le programme qui nous intéresse, par exemple Midori.
fedpkg clone midori --anonymous
L'option anonymous est indispensable (sinon il faut avoir un compte sur le dépôt central).
Pour construire un paquet, il faut partir des sources d'un logiciel, Pour cela on doit renseigner les champs :
Ensuite on peut utiliser l'utilitaire spectool
, comme cela on téléchargera directement l'archive dans le dossier ~/rpmbuild/SOURCES/
.
spectool -g -R ....spec
Cela s'effectue avec l'utilitaire rpmbuild
. On peut tester, c'est à dire savoir si notre « recette » est correcte.
rpmbuild -bi ....spec
Pour vérifier qu'un (ou plusieurs) correctif(s) est (ou sont) appliqué(s) :
rpmbuild -bp ....spec
Il faut bien entendu avoir une (ou plusieurs) ligne(s):
Patch0:
%patch0 -p0
<note>La macro %patchN
s'applique uniquement si il y a la macro %setup -q
Cette macro est utile si il y a plus de 1 correctif.
Si il existe un correctif, on peut remplacer ces deux macros (%setup -q
et %patchN
) par une seule %autosetup
.
%autosetup
prend les mêmes options que %patchN
.
</note>
Si au cours de cette étape, nous n'avons pas de message d'erreur, on peut passer à la création du RPM
rpmbuild -bb ....spec
Il existe aussi l'option -ba, cela va produire également le paquet source RPM .srpm
.
Il faut penser à nettoyer les répertoires BUILD/
et BUILDROOT/
cd ~/rpmbuild rm -Rf BUILD/* rm -Rf BUILDROOT/*