44 votes

Rétablir toutes les données et dépendances à partir de dpkg --set-selections '*'

Alors je peux exécuter sur une machine :

dpkg --get-selections '*' > selection.txt

Sur une autre machine :

dpkg --set-selections < selection.txt

... suivi de l'une des options suivantes :

aptitude install
apt-get -u dselect-upgrade

... pour installer les paquets.

Cependant, il semble que certaines informations se perdent dans le processus, comme savoir si un paquet (disons xyz) a été installé automatiquement en tant que dépendance d'un autre paquet (abc). Vous pouvez voir que chaque fois que vous faites quelque chose comme apt-get --purge remove abc. Sur la machine d'origine, vous seriez avisé que le paquet xyz a été installé en tant que dépendance de abc et vous pouvez utiliser apt-get autoremove pour vous en débarrasser.

Je suis au courant de deborphan et debfoster, mais ils sont fastidieux à utiliser pour la tâche (simple) en question.

Il semble que sauvegarder et restaurer les sélections comme indiqué ci-dessus ne soit pas suffisant pour restaurer les dépendances subtiles des paquets installés.

Existe-t-il un moyen de sauvegarder l'ensemble complet de métadonnées pour la gestion des paquets et de le restaurer ensuite dans son intégralité ?

39voto

Maciek Gryka Points 1807

Sauvegarde :

apt-mark showauto > pkgs_auto.lst
apt-mark showmanual > pkgs_manual.lst

Restauration :

sudo apt-mark auto $(cat pkgs_auto.lst)
sudo apt-mark manual $(cat pkgs_manual.lst)

3voto

casualcoder Points 131

La réponse sélectionnée à cette question est incomplète et ne fonctionne pas (ou ne fonctionne plus). La solution douloureuse consiste à utiliser une boucle for en bash pour lire les fichiers *.lst et les passer à apt install. Mauvais choix, donc cela ne sera pas illustré ici.

Un meilleur choix est d'utiliser apt-clone, comme vu dans cette réponse sur Unix & Linux Stackexchange. Cela crée un petit fichier (environ 100K ou moins pour mon système). Apparemment, cela clonera les paquets avec peu d'effort ou de douleur.

Donc, en résumé, sur la machine d'origine :

apt-clone clone `uname -n`

Ensuite, sur la machine à cloner, copiez le fichier de clonage et exécutez :

apt-clone restore nom-machine-originale.apt-clone.tar.gz

J'inclus cette réponse ici car cette page est apparue dans les recherches initiales sur le web, mais pas l'autre réponse. Cette méthode semble beaucoup plus facile.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X