Come decomprimere, modificare, ricostruire e installare un SRPM


9

Vorrei modificare un pacchetto Fedora 15 ( gnome-shell-extensions-alternative-status-menu). È una piccola modifica (ripristinando questo commit ). Utilizzando yumdownloadersono in grado di scaricare un SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm).

Dopo questo, come posso decomprimerlo e poi ricostruirlo?


Dovresti cambiare la tua modifica recente in modo che sia un commento sulla risposta di @ mdpc o aggiungere una tua risposta con i passaggi che ti hanno aiutato a risolvere il problema. Tieni i dati di risposta fuori dalla domanda stessa, per favore.
Caleb,

@Caleb Done! (Altri 3 per andare ...)
Vitor Py,

Risposte:


7

Cosa faccio, come utente ROOT:

  1. Installa SRPM come faresti con qualsiasi altro pacchetto ( rpm --install [source-rpm-filename])

  2. Esamina la /root/rpmbuild/SPECSdirectory e trova il file delle specifiche che corrisponde al tuo pacchetto

  3. rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]

I pacchetti binari risultanti si trovano quindi nella /root/rpmbuild/RPMS/directory che sono pronti per essere installati tramite il rpm --installcomando standard .

NOTA: Questo crea semplicemente ciò che è nel pacchetto binario standard. Sto postando questo rispondendo alla domanda specifica, non come fare per apportare modifiche alla fonte e generare nuovi pacchetti.

Per fare le modifiche, si potrebbe o fornire patch come input e modificando il file specs .... o si potrebbe sostituire lo standard *.tar.bz2situato in /root/rpmbuild/SOURCEScon il proprio con il cambiamento e poi fare la build come descritto sopra.

Attenzione, potrebbe essere necessario modificare il pacchetto SPECS per farlo funzionare (di solito estraendo le patch e cambiando alcuni nomi di file programmati dal file SPECS).


MODIFICARE

Sembra che costruire rpms come root sia una cattiva pratica ( fonte ). Funziona bene come utente non root.

Istruzioni passo passo per aggiungere una patch (da qui ):

  1. Copia la tua patch in rpmbuild/SOURCES.
  2. Modifica il rpmbuild/SPECS/package.spece aggiungi Patch0: mypatch.patchsubito dopo la Source0: ...riga.
  3. Dopo la %setup ...riga aggiungi una %patch0 -p1riga

Ora costruirà normalmente, cioè. con:rpmbuild -ba SPECS/package.spec


2
Dovresti chiarire che solo l'installazione viene eseguita come root, non con rpmbuild. La creazione di file rpm non dovrebbe mai essere eseguita come root.
Caleb,

@Caleb Ho installato come pacchetti non root. rpm lo mette nella gerarchia ~ / rpmbuild. Inoltre ho fatto come mi hai suggerito sulla domanda e ho messo i passaggi extra qui.
Vitor Py,

Solo un paio di note: sudo dnf install rpmdevtoolsè necessario per il comando rpmbuild. E la %patch0 -p1linea dovrebbe essere omessa se il file delle specifiche usa una %autosetuplinea anziché %setupuna (come si %autosetupapplica automaticamente la patch).
Nelson

Inoltre, per installare il nuovo rpm su quello originale (nel caso l'originale sia già installato sul sistema), eseguiresudo rpm -ivh --force your.rpm
Nelson

4

Ricostruzione del pacchetto OpenSSL CentOS 6.4 è un esempio dettagliato di ricostruzione di un pacchetto SRPM.

L'esempio sopra usa Mock - la Jedi Light Sabre dei costruttori di pacchetti.

Mock è stato creato per popolare in modo affidabile un chroot, quindi ricostruire un pacchetto in quel chroot.

Per ulteriori informazioni, consultare http://fedoraproject.org/wiki/Projects/Mock

Nell'esempio mock viene usato 3 volte - una volta per "decomprimere" il pacchetto, quindi per ricostruire .src.rpm e infine per creare .rpm.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.