Es posible pero muy difícil hacer esto para que se haga correctamente. Si está desesperado, puede crear un nuevo .spec
archivo RPM y construir un archivo RPM de origen "falso" (SRPM) que luego puede usar para construir un archivo RPM resultante usando rpmbuild --rebuild
.
Continuaría buscando el RPM real en su lugar. No dice cuál en su pregunta, pero según mi experiencia, puede encontrar cualquier cosa en Internet si sabe cómo buscarla. He encontrado versiones antiguas de RPM para las distribuciones de Red Hat que no han estado en uso durante más de 10 años, por lo que me resulta difícil creer que no haya restos de este RPM en ninguna parte.
Además, a menudo puede volver al origen de la aplicación que está contenida en el RPM y usarlo para reconstruir el RPM también. Muchas veces las aplicaciones de origen incluirán un .spec
archivo necesario que se utiliza para reconstruir el RPM.
Por último, puede obtener la fuente y el .spec
archivo de un servicio de compilación como Koji para distribuciones basadas en Red Hat. SuSE también mantiene servicios de compilación similares, por lo que puede buscarlos para obtener artefactos de compilación antiguos.
Tomando los binarios como están
Puede usar este método para levantar los ejecutables reales de un sistema y ponerlos a prueba para su implementación en otro sistema.
máquina A
$ rpm -ql <packageNameHere> | xargs tar -zcvf /tmp/program.tgz
máquina B
$ tar -zxvf /path/to/your/program.tgz
La versión de SLES de RPM
De acuerdo con una de las publicaciones en este hilo: Re: Cómo crear RPM desde paquetes instalados rpm
en SLES se supone que tiene el conmutador --repackage
. Esto no existe en la versión de Red Hat (en Fedora o CentOS). Pero según la publicación, puedes usarlo así:
$ rpm -e --repackage <somepackage>
Una vez que se complete, encontrará sus RPM accesibles aquí:
/var/spool/repackage
Usando rpmerizor
Rpmerizor es una herramienta / script de terceros que puede instalar que volverá a empaquetar los archivos fuente en un RPM correspondiente. El uso de este script está disponible aquí, titulado: página de manual de rpmerizor .
extracto
Rpmerizor es un script que le permite crear un paquete RPM a partir de archivos instalados. Simplemente tiene que especificar archivos en la línea de comando y responder algunas preguntas interactivas para completar los metadatos rpm (nombre del paquete, versión ...). También puede usarlo en modo por lotes con opciones de línea de comandos para metadatos.
Usando rpmrebuild
No debe confundirse con la herramienta de compilación rpmbuild
, rpmrebuild
es otro script de terceros que puede usar para reempaquetar un RPM ya instalado.
extracto
rpmrebuild es una herramienta para construir un archivo RPM a partir de un paquete que ya se ha instalado en un uso básico, el uso de rpmrebuild no requiere ningún conocimiento de construcción de rpm. (En debian, el producto equivalente es dpkg-repack).
Ejemplo
Digamos que queremos reempaquetar openssh-server.
$ rpm -aq | grep openssh-server
openssh-server-6.2p2-8.fc19.x86_64
Ahora empaquételo:
$ rpmrebuild openssh-server-6.2p2-8.fc19.x86_64
/usr/lib/rpmrebuild/rpmrebuild.sh: WARNING: some files have been modified:
..?...... c /etc/ssh/sshd_config
..?...... c /etc/sysconfig/sshd
Do you want to continue ? (y/N) y
Do you want to change release number ? (y/N) n
result: /root/rpmbuild/RPMS/x86_64/openssh-server-6.2p2-8.fc19.x86_64.rpm
Referencias