Hay dos máquinas, versión / arco idéntico de SLES.
En la máquina #A hay un software "foo" instalado que podemos ver usando rpm -qa
.
En la máquina #B, se debe instalar el software "foo".
El foo.rpm
no está disponible desde ninguna fuente, desde internet, etc.
Pregunta
Dado que el paquete foo.rpm
se instaló en la máquina #A, ¿podemos construir un foo.rpm
archivo a partir de los archivos ya instalados?
También hay scripts pre / post en las rpm, creo. Entonces se puede instalar foo.rpm
(¿ con dependencias? ).
Respuestas:
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 usandorpmbuild --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
máquina B
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í:Una vez que se complete, encontrará sus RPM accesibles aquí:
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
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
Ejemplo
Digamos que queremos reempaquetar openssh-server.
Ahora empaquételo:
Referencias
fuente
Como regla general no.
Con un poco de suerte
rpm -qi
yrpm -q --changelog
proporcionar información sobre el origen del paquete.Si se creó en el sistema en el que se está ejecutando, es posible que aún tenga el archivo de especificaciones utilizado para hacer las rpm reales, si no ambas.
Como regla general, no recomiendo copiar archivos / binarios, pero la mayoría de la metainformación se encuentra en la base de datos RPM y usted tiene los archivos reales.
rpm -q --list <pkg_name>
muestra todos los archivos que implementa un paquete.rpm -q --scripts <pkg_name>
mostrar los scripts que se ejecutan instalando (o eliminando) el paquete podría proporcionar la menor información sobre su propósito que los archivos que se implementan.Y se puede encontrar cualquier dependencia que deba instalarse
rpm -q --requires <pkg_name>
.fuente