Je souhaite modifier un package Fedora 15 ( gnome-shell-extensions-alternative-status-menu
). C'est une petite modification (annuler ce commit ). En utilisant yumdownloader
je peux télécharger un SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm
).
Après cela, comment le déballer puis le reconstruire?
Réponses:
Ce que je fais, en tant qu'utilisateur ROOT:
Installez le SRPM comme vous le feriez pour tout autre package (
rpm --install [source-rpm-filename]
)Examinez le
/root/rpmbuild/SPECS
répertoire et trouvez le fichier de spécifications correspondant à votre packagerpmbuild -bb /root/rpmbuild/SPECS/[found-filename]
Les packages binaires résultants sont alors situés dans le
/root/rpmbuild/RPMS/
répertoire qui sont prêts à être installés via larpm --install
commande standard .REMARQUE: cela crée simplement ce qui est dans le package binaire standard. Je publie ceci en répondant à la question spécifique, pas comment procéder pour apporter des modifications à la source et générer de nouveaux packages.
Pour effectuer les modifications, vous pouvez soit fournir des correctifs en entrée et modifier le fichier SPECS .... soit remplacer la norme
*.tar.bz2
située dans/root/rpmbuild/SOURCES
la vôtre par la modification, puis effectuer la génération comme décrit ci-dessus.Attention, vous devrez peut-être modifier le package SPECS pour le faire fonctionner (généralement en retirant le correctif et en modifiant certains noms de fichiers programmés par le fichier SPECS).
ÉDITER
Il semble que la construction de rpms en tant que root soit une mauvaise pratique ( source ). Cela fonctionne très bien en tant qu'utilisateur non root.
Instructions étape par étape pour ajouter un patch (à partir d' ici ):
rpmbuild/SOURCES
.rpmbuild/SPECS/package.spec
et ajoutez unPatch0: mypatch.patch
droit après laSource0: ...
ligne.%setup ...
ligne, ajoutez une%patch0 -p1
ligneMaintenant, il se construira normalement, c'est-à-dire. avec:
rpmbuild -ba SPECS/package.spec
la source
sudo dnf install rpmdevtools
est nécessaire pour la commande rpmbuild. Et la%patch0 -p1
ligne doit être omise si le fichier de spécifications utilise une%autosetup
ligne au lieu d'une%setup
(comme%autosetup
s'applique automatiquement le patch).sudo rpm -ivh --force your.rpm
Reconstruction de packages OpenSSL CentOS 6.4 est un exemple détaillé de reconstruction de packages SRPM.
L'exemple ci-dessus utilise Mock - le sabre léger Jedi des constructeurs de packages.
Mock a été créé pour remplir de manière fiable un chroot, puis reconstruire un package dans ce chroot.
Pour plus d'informations, voir http://fedoraproject.org/wiki/Projects/Mock
Dans l'exemple, la maquette est utilisée 3 fois - une fois pour «décompresser» le package, puis pour reconstruire le .src.rpm, et enfin pour créer le .rpm.
la source