2012-05-14 18 views
5
  1. Soy capaz de extraer archivos de un archivo RPM, pero ¿cómo lo "reconstruyo", por ejemplo cpio2rpm?
  2. He extraído el archivo RPM usando el siguiente comando. rpm2cpio theFileName.rpm | cpio -idmv
  3. Tengo que modificar los pocos archivos de la aplicación web como * .php, * .html o .js. Estos archivos no requieren ninguna compilación de origen. Así que me gustaría reemplazar o cambiar estos archivos con modificaciones sin reconstruir rpm. Desde entonces, necesito hacer esto para múltiples plataformas como Redhat Linux y SUSE, y arquitectura múltiple como sistemas operativos de 32 y 64 bit.
  4. Espero realizar estos cambios solo en el sistema y sin reconstruir rpm y no habría una dependencia de la arquitectura del sistema de destino (como i386, 64).
  5. No me parece el comando rpmbuild -rebuild the.src.rpm ya que no tengo fuente. Necesito ser reconstruir el archivo .RPM binario (no fuente .rpm)
  6. Quiero hacer esto sin fuente y plataforma o arquitectura independiente y sin usar archivo de especificaciones si es posible.¿Cómo "volver a empaquetar" un archivo RPM, por ejemplo, cpio2rpm, sin instalar el RPM?

    Cualquier amigo, podría sugerir cualquier solución o cualquier herramienta gratuita.

    Gracias a todos los que pasan tiempo leyendo y respondiendo a mi hilo.

Respuesta

0

Principially puede empacar todo lo que desee en un archivo RPM. Simplemente trate lo que tiene como "fuente" y escriba un archivo SPEC que coloque los datos donde normalmente irían los binarios compilados.

En cuanto a RPM, considero "fuente" "lo que tengo" y "binario" "lo que necesito ejecutar". No es una terminología muy exacta, pero ayuda a trabajar con RPM.

su archivo spec ve como cualquier otro archivo de especificaciones, lo que se refiere a los parámetros etc, pero la parte de código es diferente:

[...] 
%prep 
# Here you either have nothing to do or you already unpack the cpio and possibly modify it. 

# %build can be omitted 

%install 
[ "${buildroot}" != "/" ] && [ -d ${buildroot} ] && rm -rf ${buildroot}; 
# Here you can either unpack the cpio or copy the data unpacked in %prep. 
# Be careful to put it into %{buildroot} or $RPM_BUILD_ROOT. 
1

Usted puede volver a empaquetar un RPM instalados (incluyendo los archivos modificados) usando rpmrebuild. http://rpmrebuild.sourceforge.net/

Obviamente sus binarios (si los hubiera) tendrían que ser independientes de la plataforma/arquitectura para trabajar en todos los sabores del sistema operativo que está esperando, pero parece que son solo archivos web que no deberían ser problema.

12

Puede usar rpmrebuild para modificar un archivo de rpm real (no es necesario instalarlo).

La mayoría de los ejemplos para este uso complican los comandos de edición en línea para modificar archivos conocidos de maneras particulares, pero puede usar un editor normal. Lo usé para arreglar un script de shell en un archivo rpm que no tenía el código fuente. Llame al comando como

rpmrebuild -ep theFileName.rpm 

Esto lo coloca en un editor con el archivo de especificaciones para el RPM. El nombre del archivo será algo así como ~/.tmp/rpmrebuild.12839/work/spec.2. Si observa, en este ejemplo, ~/.tmp/rpmrebuild.12839/work, encontrará todos los archivos utilizados para hacer el RPM (en mi caso, el archivo estaba en root/usr/sbin dentro de ese directorio). Por lo tanto, vaya a otra ventana, cd a ese directorio, y edite cualquier archivo que necesite cambiar.

Cuando haya terminado de editar archivos, vuelva a la ventana de edición con el archivo de especificaciones, realice los cambios que necesite en ese archivo (no tenía ninguno, ya que no estaba agregando o eliminando archivos), guarde el archivo, y diga "y" a la pregunta "¿Desea continuar?". Luego construirá un nuevo archivo RPM y le dirá dónde lo ha ubicado (en mi caso, en ~/rpmbuild/RPMS/x86_64 /)

+0

¡Genial! ¿Hay alguna manera de automatizarlo en algún script? –

Cuestiones relacionadas