¿Cómo instalar exactamente los mismos paquetes en otra computadora en openSUSE?

8

Otra computadora puede ser también una máquina virtual. No puedo hacer un clon de disco debido a las diferencias y configuraciones de hardware.

Tengo la computadora A, instalada y ejecutándose, también tengo la computadora B. Instalaré el mismo sistema operativo en B, para obtener el mismo sistema base.

Luego, a mano, agregaré los mismos repositorios que en A.

Pero la última etapa está más allá de mí: ¿cómo instalar los mismos paquetes que en A? Tenga en cuenta que la versión debe coincidir, no solo el nombre del paquete.

Por supuesto, estoy buscando la forma automática, no la instalación manual uno por uno.

En efecto, debería obtener una configuración de hardware completamente diferente, configuraciones limpias (sin contraseñas antiguas, etc.), pero una selección de software idéntica.

Pregunta

¿Cómo hacerlo?

Antecedentes

Los paquetes (por versión) están disponibles pero no son los últimos. El objetivo de esto es hacer una "copia" del sistema en ejecución, actualizar los paquetes en la computadora B (copiar), probar si funciona, en caso afirmativo, luego actualizar A. Con cada nueva versión del sistema operativo me encuentro con muchos errores de regresión, y Tengo que probarlo más metódicamente que test-live & panic.

openSUSE 11.4

Greenoldman
fuente
¿Se actualizan los paquetes de la computadora A a los últimos desde los repositorios? (Lo pregunto porque puede acortar la respuesta y facilitarle la vida).
Hanan N.
@Hanan N., no, eso sería más fácil, lo sé, por eso hice hincapié en las versiones exactas.
greenoldman

Respuestas:

3

Parece que tienes que construir tu propio repositorio.

Ponga sus RPM en su versión deseada en ese repositorio. Luego active estos repositorios en ambas máquinas (como fuente de instalación) e instale los paquetes.

Nils
fuente
Gracias, no estoy marcando esto como la solución (todavía), porque tal vez alguien proponga otro enfoque, como hacer la lista (rpm -qa) e instalar esos paquetes en una versión dada en otra máquina. Sin embargo, su enfoque se escala mejor (descarga única por paquete).
greenoldman
2

Al ver que OpenSuse usa RPM, puede usar la rpmutilidad.

rpm -qaenumerará todos los paquetes instalados actualmente en su sistema (una lista muy larga). La lista incluye el nombre del paquete, el número de versión y la arquitectura. Puede escribir la lista en un archivo y darle a zypper el archivo en el nuevo sistema.

Es probable que haya varios paquetes que ya están instalados de manera predeterminada, pero zypper los omitirá e instalará los que necesite.

n0pe
fuente
Bueno, acabas de copiar mi comentario, así que estamos de acuerdo en una visión general, pero el diablo está en los detalles: ¿cómo obligas a zypper a no instalar el paquete P, sino P-1.23, es decir, con la versión dada? Porque esto es crucial aquí (por defecto, la salida de rpm NO es compatible con el formato de entrada de zypper).
greenoldman
Para el registro, publiqué esto antes de que publicaras tu comentario o lo publicaste mientras escribía mi respuesta. En cuanto a zypper, sí, puede usar la salida de rpm -qacomo entrada para zypper. Entiende el formato del paquete perfectamente bien. No he probado para ver si obedece al número de versión, pero depende en gran medida de si los repositorios tienen o no versiones anteriores. Si los repositorios no lo hacen, entonces no hay mucho que puedas hacer al respecto.
n0pe
Usted se contradice, "No he probado para ver si obedece al número de versión" pero "Entiende el formato del paquete perfectamente bien". Así que aclaro: no admite la salida de rpm. Para especificar la versión, debe agregar un cuantificador, y esta es una parte difícil, ya que el nombre del paquete es solo una convención, ningún validador lo obliga. Ver: en.opensuse.org/SDB:Zypper_usage_11.3#Selecting_packages
greenoldman
1

Primera lista de todos los paquetes instalados y sus versiones de la máquina que están tratando de crear un "clon" de: rpm -qa > /tmp/rpm.list.txt.

Luego copie el archivo /tmp/rpm.list.txten el sistema que está tratando de convertir en un "clon" del otro sistema y ejecute zypper y alimente la lista de paquetes que acaba de crear: zypper install $(cat /tmp/rpm.list.txt)(o donde sea que coloque el archivo que contiene la lista de paquetes del sistema fuente )

Sami Laine
fuente