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 yumdownloader
puedo 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?
Respuestas:
Lo que hago, como usuario ROOT:
Instale el SRPM como lo haría con cualquier otro paquete (
rpm --install [source-rpm-filename]
)Examine el
/root/rpmbuild/SPECS
directorio y encuentre el archivo de especificaciones que coincida con su paqueterpmbuild -bb /root/rpmbuild/SPECS/[found-filename]
Los paquetes binarios resultantes se ubican en el
/root/rpmbuild/RPMS/
directorio que está listo para instalarse mediante elrpm --install
comando 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.bz2
ubicado/root/rpmbuild/SOURCES
con 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í ):
rpmbuild/SOURCES
.rpmbuild/SPECS/package.spec
y agregue unPatch0: mypatch.patch
derecho después de laSource0: ...
línea.%setup ...
línea agregue una%patch0 -p1
líneaAhora se construirá normalmente, es decir. con:
rpmbuild -ba SPECS/package.spec
fuente
sudo dnf install rpmdevtools
es necesario para el comando rpmbuild. Y la%patch0 -p1
línea debe omitirse si el archivo de especificaciones usa una%autosetup
línea en lugar de una%setup
(como se%autosetup
aplica el parche automáticamente).sudo rpm -ivh --force your.rpm
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.
fuente