====== Création de paquets RPM ======
Les paquets RPM sont construits à partir de fichiers ayant comme extension ''.spec'' ((C'est la même chose pour openSUSE, mais le contenu est légèrement différent.)).
===== Les outils ? =====
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
===== Obtenir la « recette » (.spec) à partir du dépôt central =====
Tous les ''.spec'' qui produisent les paquets (hors dépôts tiers, tels que RPMFusion, etc.) sont disponibles à cette [[https://src.fedoraproject.org/cgit/|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).
===== Construire un RPM =====
==== Téléchargement de l'archive ====
Pour construire un paquet, il faut partir des sources d'un logiciel, Pour cela on doit renseigner les champs :
* **Name:**
* **Version:**
* **Source0:** cette ligne à besoin des deux précédents
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
==== La création ====
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):
* **PatchN:** ou N correspond à un numéro, par exemple ''Patch0:''
* **%patchN** ou N correspond au même numéro du correctif, par exemple ''%patch0 -p0''
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''.
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/*