Comment décompresser, modifier, reconstruire et installer un SRPM

9

Je souhaite modifier un package Fedora 15 ( gnome-shell-extensions-alternative-status-menu). C'est une petite modification (annuler ce commit ). En utilisant yumdownloaderje 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?

Vitor Py
la source
Vous devez modifier votre modification récente pour être des commentaires sur la réponse de @ mdpc ou ajouter votre propre réponse avec les étapes qui vous ont aidé à résoudre le problème. Gardez les données de réponse hors de la question elle-même.
Caleb
@Caleb Done! (3 plus à faire ...)
Vitor Py

Réponses:

7

Ce que je fais, en tant qu'utilisateur ROOT:

  1. Installez le SRPM comme vous le feriez pour tout autre package ( rpm --install [source-rpm-filename])

  2. Examinez le /root/rpmbuild/SPECSrépertoire et trouvez le fichier de spécifications correspondant à votre package

  3. rpmbuild -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 la rpm --installcommande 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.bz2située dans /root/rpmbuild/SOURCESla 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 ):

  1. Copiez votre patch sur rpmbuild/SOURCES.
  2. Modifiez le rpmbuild/SPECS/package.specet ajoutez un Patch0: mypatch.patchdroit après la Source0: ...ligne.
  3. Après la %setup ...ligne, ajoutez une %patch0 -p1ligne

Maintenant, il se construira normalement, c'est-à-dire. avec:rpmbuild -ba SPECS/package.spec

mdpc
la source
2
Vous devez préciser que seule l'installation est effectuée en tant que root, pas le rpmbuild. La création de fichiers rpm ne doit jamais être effectuée en tant que root.
Caleb
@Caleb J'ai installé en tant que non root les packages. rpm le place dans la hiérarchie ~ / rpmbuild. J'ai également fait ce que vous avez suggéré sur la question et j'ai mis les étapes supplémentaires ici.
Vitor Py
Juste quelques notes: sudo dnf install rpmdevtoolsest nécessaire pour la commande rpmbuild. Et la %patch0 -p1ligne doit être omise si le fichier de spécifications utilise une %autosetupligne au lieu d'une %setup(comme %autosetups'applique automatiquement le patch).
Nelson
De plus, pour installer le nouveau rpm sur l'original (au cas où l'original est déjà installé sur le système), faitessudo rpm -ivh --force your.rpm
Nelson
4

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.

néonzeon
la source