web-dev-qa-db-fra.com

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

Je peux donc utiliser une seule machine:

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

Sur une autre machine:

dpkg --set-selections < selection.txt

... suivi de l'un des éléments suivants:

aptitude install
apt-get -u dselect-upgrade

... pour installer les paquets qui.

Cependant, il semble que certaines informations soient perdues au cours du processus, par exemple si un package (par exemple, xyzname__) est installé automatiquement en tant que dépendance d'un autre package (abcname__). Vous pouvez voir cela chaque fois que vous faites quelque chose comme apt-get --purge remove abc. Sur l'ordinateur d'origine, vous serez averti que le package xyza été installé en tant que dépendance de abcet que vous pouvez utiliser apt-get autoremove pour vous en débarrasser.

Maintenant, je connais deborphanet debfostername__, mais ils sont difficiles à utiliser étant donné la (simple) tâche à accomplir.

Il semble que l'enregistrement et la restauration des sélections comme indiqué ci-dessus ne suffisent pas pour restaurer les dépendances subtiles des packages installés.

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

44
0xC0000022L

Sauvegarde:

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

Restaurer:

Sudo apt-mark auto $(cat pkgs_auto.lst)
Sudo apt-mark manual $(cat pkgs_manual.lst)
39
htorque

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

Un meilleur choix consiste à utiliser apt-clone, comme indiqué dans cette réponse sur Unix et Linux Stackexchange. Cela crée un petit fichier (environ 100 Ko ou moins pour mon système). Il est allégué que les paquets seront clonés avec peu d'effort ou de douleur.

Donc, en bref, sur la machine d'origine:

apt-clone clone `uname -n`

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

apt-clone restore original-machine-name.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.

2
casualcoder