Solo agrego algunos problemas con mis servidores virtuales Debian y agrego para reinstalarlos desde cero. Sin embargo, todavía tenía acceso a la versión anterior y podía recuperar la lista de paquetes instalados.
Para facilitar el proceso de restauración de un servidor virtual en el futuro, me gustaría crear una lista de paquetes específicos para cada uno de mis servidores.
Para explicar mejor lo que quiero lograr. Ya tengo un proceso automatizado para crear un nuevo servidor virtual con algún paquete básico y configuración utilizada en todas partes. Ahora quiero guardar el delta con este "esqueleto" para facilitar la reinstalación de un servidor en particular.
Una verdadera ventaja será también guardar los archivos de configuración modificados de forma predeterminada, pero puedo vivir solo con la lista de paquetes.
En resumen, quiero una forma de crear una lista de paquetes instalados en un host pero no en otro.
Será realmente genial si la lista contiene solo paquetes instalados manualmente y no la lista de todas las dependencias.
Si tiene algunas herramientas existentes que están diseñadas para lograr esta tarea en particular, no dude en proponerlas, pero quiero mantener la dependencia lo más pequeña posible. Para información, no son exactamente servidores virtuales, sino contenedores LXC.
fuente
Respuestas:
En la instalación de referencia (solo una vez):
(Lo siguiente asume
bash
)Para agregar los paquetes desde la instalación de referencia (esto no muestra lo que se eliminó):
Aún mejor, evitando la copia de
baselist.txt
:fuente
en el servidor anterior, ejecute:
copie el archivo anterior al nuevo servidor y ejecútelo en el nuevo servidor:
Además, recuerde agregar todos los repositorios adicionales del
/etc/apt/sources.list
servidor anterior al servidor nuevo, antes de esta migración de paquetes, como si no lo hiciera, entonces la mayoría de los paquetes quedarán sin instalar.fuente
cut -f1
probablemente será más rápido que awk, y como se comentó en la respuesta de Khaled, diff no siempre devuelve un resultado correcto. La solución concomm
realmente por favor por ahora ... Sin embargo, me falta una versión que enumera solo los paquetes instalados manualmente.Puede usar el siguiente comando para obtener la lista completa de paquetes en ambos servidores:
Luego, puede obtener las diferencias usando:
Puede filtrar los cambios necesarios usando grep. Además, diff se puede utilizar para obtener los cambios en los archivos de configuración y generar parches para aplicarlos cuando sea necesario. Por cierto, diff puede comparar dos carpetas, no solo dos archivos.
fuente
Blueprint está diseñado exactamente para sus necesidades. Escupe una descripción de paquetes instalados y archivos de configuración que han sido modificados. Es capaz de convertir estas descripciones en scripts de Puppet o Chef para aplicarlos a cuadros limpios.
fuente
También encontré este útil paquete, cuya descripción es la siguiente:
Un script Bash que compara el árbol del sistema de archivos de un paquete Debian con el árbol del sistema de archivos actual, imprimiendo diferencias unificadas para archivos que difieren.
https://code.google.com/p/dpkg-diffs/
Solo un solo archivo bash que puede pegar en su RUTA en algún lugar y ejecutar, parece funcionar para mí y no es demasiado viejo.
Espero que esto ayude a alguien.
fuente