J'ajoute juste quelques problèmes avec mes serveurs virtuels Debian et j'ajoute pour les réinstaller tous à partir de zéro. Cependant, j'avais toujours accès à l'ancienne version et je pouvais récupérer la liste des packages installés.
Afin de faciliter le processus de restauration d'un serveur virtuel à l'avenir, je voudrais créer une liste de packages spécifiques pour chacun de mes serveurs.
Pour mieux expliquer ce que je veux réaliser. J'ai déjà un processus automatisé pour créer un nouveau serveur virtuel avec un package et une configuration de base utilisés partout. Maintenant, je veux enregistrer le delta avec ce "squelette" pour faciliter la réinstallation d'un serveur particulier.
Un véritable avantage sera également de sauvegarder les fichiers de configuration modifiés par défaut, mais je ne peux vivre qu'avec la liste des packages.
En bref, je veux un moyen de créer une liste de packages installés sur un hôte mais pas sur un autre.
Ce sera vraiment génial si la liste ne contient que des packages installés manuellement et non la liste de toutes les dépendances.
Si vous avez des outils existants conçus pour accomplir cette tâche particulière, n'hésitez pas à les proposer, mais je veux garder la dépendance aussi petite que possible. Pour information, ce ne sont pas exactement des serveurs virtuels, mais des conteneurs LXC.
la source
Réponses:
Sur l'installation de référence (une seule fois):
(Ce qui suit suppose
bash
)Pour obtenir les packages ajoutés à partir de l'installation de référence (cela ne montre pas ce qui a été supprimé):
Encore mieux, en évitant la copie de
baselist.txt
:la source
sur l'ancien serveur, exécutez:
copiez le fichier ci-dessus sur un nouveau serveur et exécutez-le sur un nouveau serveur:
N'oubliez pas également d'ajouter tous les référentiels supplémentaires
/etc/apt/sources.list
de l'ancien serveur au nouveau serveur, avant cette migration des packages, comme si vous ne le faisiez pas, la plupart des packages resteront non installés.la source
cut -f1
sera probablement plus rapide que awk, et comme commenté la réponse de Khaled, diff ne retournera pas toujours un bon résultat. La solution aveccomm
vraiment s'il vous plaît pour l'instant ... Cependant il me manque une version qui ne répertorie que les packages installés manuellement.Vous pouvez utiliser la commande suivante pour obtenir la liste complète des packages sur les deux serveurs:
Ensuite, vous pouvez obtenir les différences en utilisant:
Vous pouvez filtrer les modifications nécessaires à l'aide de grep. En outre, diff peut être utilisé pour obtenir les modifications dans les fichiers de configuration et générer des correctifs à appliquer en cas de besoin. Soit dit en passant, diff peut comparer deux dossiers et non seulement deux fichiers.
la source
Blueprint est conçu pour répondre exactement à vos besoins. Il crache une description des packages installés et des fichiers de configuration qui ont été modifiés. Il est capable de convertir ces descriptions en scripts Puppet ou Chef afin de les appliquer à des boîtes propres.
la source
A également trouvé ce package utile, dont la description est la suivante:
Un script Bash qui compare l'arborescence du système de fichiers d'un paquet Debian à l'arborescence actuelle du système de fichiers, imprimant des différences unifiées pour les fichiers qui diffèrent.
https://code.google.com/p/dpkg-diffs/
Juste un seul fichier bash que vous pouvez coller quelque part dans votre PATH et exécuter - semble fonctionner pour moi et ce n'est pas trop ancien.
J'espère que cela aide quelqu'un.
la source