Cómo descomprimir, modificar, reconstruir e instalar un SRPM

9

Me gustaría modificar un paquete de Fedora 15 ( gnome-shell-extensions-alternative-status-menu). Es una pequeña modificación (revertir esta confirmación ). Utilizando yumdownloaderpuedo descargar un SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm).

Después de esto, ¿cómo lo desempaquete y luego lo reconstruya?

Vitor Py
fuente
Debería cambiar su edición reciente para que sea comentarios en la respuesta de @ mdpc o agregar una respuesta propia con los pasos que lo ayudaron a resolver el problema. Mantenga los datos de respuesta fuera de la pregunta, por favor.
Caleb
@Caleb Hecho! (3 más para ir ...)
Vitor Py

Respuestas:

7

Lo que hago, como usuario ROOT:

  1. Instale el SRPM como lo haría con cualquier otro paquete ( rpm --install [source-rpm-filename])

  2. Examine el /root/rpmbuild/SPECSdirectorio y encuentre el archivo de especificaciones que coincida con su paquete

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

Los paquetes binarios resultantes se ubican en el /root/rpmbuild/RPMS/directorio que está listo para instalarse mediante el rpm --installcomando estándar .

NOTA: Esto solo construye lo que está en el paquete binario estándar. Estoy publicando esto respondiendo la pregunta específica, no cómo hacer cambios en la fuente y generar nuevos paquetes.

Para hacer las modificaciones, puede proporcionar parches como entrada y cambiar el archivo SPECS ... o puede reemplazar el estándar *.tar.bz2ubicado /root/rpmbuild/SOURCEScon el suyo por el cambio y luego realizar la compilación como se describió anteriormente.

Tenga en cuenta que es posible que tenga que cambiar el paquete SPECS para que funcione (por lo general, retirando el parche y cambiando algunos nombres de archivo programados por el archivo SPECS).


EDITAR

Parece que construir rpms como root es una mala práctica ( fuente ). Funciona bien como usuario no root.

Instrucciones paso a paso para agregar un parche (desde aquí ):

  1. Copie su parche a rpmbuild/SOURCES.
  2. Edite el rpmbuild/SPECS/package.specy agregue un Patch0: mypatch.patchderecho después de la Source0: ...línea.
  3. Después de la %setup ...línea agregue una %patch0 -p1línea

Ahora se construirá normalmente, es decir. con:rpmbuild -ba SPECS/package.spec

mdpc
fuente
2
Debe aclarar que solo la instalación se realiza como root, no como rpmbuild. La creación de archivos rpm nunca debe hacerse como root.
Caleb
@Caleb instalé como no root los paquetes. rpm lo pone en la jerarquía ~ / rpmbuild. También hice lo que sugirió en la pregunta y puse los pasos adicionales aquí.
Vitor Py
Solo un par de notas: sudo dnf install rpmdevtoolses necesario para el comando rpmbuild. Y la %patch0 -p1línea debe omitirse si el archivo de especificaciones usa una %autosetuplínea en lugar de una %setup(como se %autosetupaplica el parche automáticamente).
Nelson
Además, para instalar las nuevas rpm sobre la original (en caso de que la original ya esté instalada en el sistema), hagasudo rpm -ivh --force your.rpm
Nelson
4

OpenSSL Package Rebuild CentOS 6.4 es un ejemplo detallado de una reconstrucción de paquete SRPM.

El ejemplo anterior usa Mock : el Jedi Light Saber de los creadores de paquetes.

Mock fue creado para poblar de manera confiable un chroot, luego reconstruir un paquete en ese chroot.

Para más información, consulte http://fedoraproject.org/wiki/Projects/Mock

En el ejemplo, el simulacro se usa 3 veces: una vez para "desempaquetar" el paquete, luego para reconstruir el archivo .src.rpm y finalmente para crear el archivo .rpm.

neonzeon
fuente