Sincronizar instalaciones apt-get entre varias computadoras

11

¿Hay alguna forma de sincronizar mis instalaciones (y eliminaciones) entre varias PC?

Preferiblemente con Dropbox, ya que ya lo estoy usando para mantener mis archivos sincronizados.

Pensé en un alias para los comandos apt-get instally apt-get removeque almacena los parámetros en un archivo (uno para instalar, uno para eliminar) y otro comando que lee todas las entradas en el archivo y ejecuta el comando respectivo. ¿Es este un enfoque realista?

Chris
fuente

Respuestas:

7

Puede usar puppet para crear archivos de configuración que especifiquen qué paquetes deben instalarse, y puede usar Dropbox en lugar de un servidor puppetmaster para sincronizar la configuración de puppet entre máquinas, más un trabajo cron para ejecutar periódicamente Puppet e implementar cualquier cambio de configuración.

Mike Scott
fuente
Esta es una gran idea para una pequeña cantidad de máquinas. En un entorno más amplio, definitivamente deberías tener un titiritero. Donde trabajo gestionamos miles de máquinas con títeres.
Ed Manet
9

No sé si hay una mejor manera (probablemente la haya), pero dependiendo de la escala que necesite, podría usar la función de búsqueda de aptitude para parte de la maquinaria. Le permite buscar paquetes que coincidan con un patrón. Entonces, aptitude search '~i'te da todos los paquetes instalados

Sin embargo, tenemos que ir un paso más allá. Al administrador de paquetes le gusta saber qué paquetes solicitó usted directamente y cuáles fueron retirados debido a otros paquetes. Sin esa información, pueden pasar cosas feas. Por lo tanto, podemos ampliar ese patrón de búsqueda para seleccionar paquetes que no se instalan automáticamente:aptitude search '!~M ~i'

La función de búsqueda se cubre con cierto detalle en el manual de referencia de Aptitude .

Ahora, tiene su lista de paquetes para instalar. Puede formatear la salida según sea necesario pasando el indicador -F a ese comando, como -F '% p' ​​para obtener una lista con solo los nombres de los paquetes.


Por ejemplo , podría ejecutar esto en la máquina 1 :

aptitude -F "%c %p" --disable-columns search '!~M ~i' | awk -F " " '{ print "apt-get -y install " $2 }' > aptshell.sh

Luego copie el aptshell.sharchivo recién creado en la máquina 2 y use este comando en la máquina 2 para ejecutarlo allí:

sudo sh aptshell.sh

Luego repita el proceso, con la máquina original 2 como la nueva máquina 1 , y la máquina original 1 como la nueva máquina 2 . Ahora cada máquina tiene todos los paquetes que antes solo estaban en la otra.

Dylan McCall
fuente
Sería genial incluir versiones ... la máquina 1 puede haber retenido versiones, por ejemplo, y la máquina 2 debería reflejar eso
Rondo
por ejemplo, aptitude -F "% c% p% V" - búsqueda de columnas deshabilitadas '! ~ M ~ i' | awk -F "" '{print "apt-get -y install" $ 2 "=" $ 3}'> aptshell.sh
Rondo
2

Esta es una vieja pregunta, pero como nadie lo ha dicho, posiblemente podría hacer algo con dpkg y cron. Configure un trabajo cron que haga algo inteligente con los comandos get-selections y set-selections de dpkg.

dpkg --set-selections < ~/Dropbox/selections.dpkg


dpkg --get-selections > ~/Dropbox/selections.dpkg

Esta no es una solución propuesta, tendrá que encontrar alguna forma de asegurarse de que las selecciones.dpkg se actualicen cada vez que realice un cambio en cualquier computadora ...

John
fuente
2

Ubuntu Software Center tiene una función para sincronizar paquetes instalados entre varias computadoras. Utiliza su cuenta de Ubuntu One para guardar paquetes. Simplemente seleccione File > Sync Between Computers...e inicie sesión con su cuenta de Ubuntu One.

Sincronización de paquetes con el Centro de software de Ubuntu

Actualmente tiene una funcionalidad limitada, por ejemplo, solo admite paquetes predeterminados (no ppas), y debe seleccionar manualmente qué paquetes instalar (esto puede verse como una característica positiva difícil). Para obtener instrucciones detalladas, consulte este artículo .

Amir Ali Akbari
fuente
-2

No podrá usar Dropbox para sincronizar las instalaciones de paquetes.

Synaptic tiene una manera de guardar una lista de descarga de paquetes, pero no estoy seguro de que maneje el caso de "todo lo que se ha instalado" en lugar de solo "estos son los paquetes que quiero descargar esta vez"

Broam
fuente
-1 porque su suposición es incorrecta, la pregunta describe un proceso para implementar eso, usando una lista de instalación / eliminación, solo pregunta si hay una implementación realista, según la descripción de la pregunta, dropbox es solo el medio utilizado para intercambiar las listas de sincronización
João Pinto