Sincronizando instalaciones apt-get entre múltiples computadoras

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

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

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

Podría usar Puppet para crear archivos de configuración que especifiquen qué paquetes deberían instalarse, y podría usar Dropbox en lugar de un servidor de Puppetmaster para sincronizar la configuración de Puppet entre las máquinas, más un trabajo cron para ejecutar Puppet periódicamente e implementar cualquier cambio de configuración.

No sé si hay una mejor manera (probablemente la hay), pero dependiendo de la escala que necesite, podría usar la función de búsqueda de aptitude para parte de la maquinaria. Te permite buscar paquetes que coincidan con un patrón. Entonces, la 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 fueron solicitados directamente por usted y cuáles fueron retirados debido a otros paquetes. Sin esa información, pueden suceder cosas feas. Por lo tanto, podemos expandir 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 trata en detalle en el manual de referencia de Aptitude .

Ahora, tienes tu lista de paquetes para instalar. Puede formatear la salida según sea necesario al pasar la marca -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 archivo aptshell.sh 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.

Esta es una pregunta antigua, pero como nadie lo ha dicho, posiblemente podrías 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 manera de asegurarse de que se haya actualizado selections.dpkg cada vez que realice un cambio en cualquier computadora …

El Centro de software de Ubuntu tiene una característica para sincronizar paquetes instalados entre varias computadoras. Utiliza tu cuenta de Ubuntu One para guardar paquetes. Simplemente seleccione File > Sync Between Computers... e inicie sesión con su cuenta de Ubuntu One.

Sincronizando paquetes con Ubuntu Software Center

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

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

Synaptic tiene una forma 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 “estos son los paquetes que quiero descargar esta vez”