Afin de conserver les sources originales du programme empaqueté, si des modifications sont nécessaires, il faut utiliser des correctifs (encore appelés “patches” en anglais):
Faire une copie de sauvegarde du fichier à modifier (on lui ajoute un extension explicite et unique, par exemple .max_ext)
$ cp fichier fichier.max_ext
Modifie l'original (celui qui s'appelle 'fichier') comme on le désire
Génèrer un fichier de correctif avec gendiff :
$ cd ~/rpmbuild/BUILD $ gendiff dossier .max_ext > ../SOURCES/nom_du_soft-version-max_ext.patch
Indiquer dans le fichier SPEC qu'il faut ajouter le fichier de correctif :
... Patch0: %{name}-0.10-max_ext.patch //On donne le nom du correctif ... %prep %setup -q %patch0 -p1 -b .max_prefix //On l'applique ...
-b ne doit être utilisé que sur des sources.
L'intérêt de désigner l'extension se révèle lorsqu'un correctif doit être appliquer sur plusieurs fichiers, et qu'il y a plusieurs problèmes à corriger.
Voici un exemple pour clarifier la chose :
Soit 10 fichiers : f0, f1, .., f9 ; et deux problèmes à corriger.
On applique deux fois gendiff, comme vu plus haut. On obtient deux fichiers de correctif. Un par problème, chacun modifie plusieurs fichiers. Ainsi, malgré la complexité du problème on conserve un fichier SPEC propre et simple.
Il est déconseillé d'utiliser des correctifs pour des taches simples telles que :
make install DESTDIR=%{buildroot} prefix=%{_prefix}
sed -i -e s@/usr/lib@%{_libdir}@ libtool