Installation de packages en important la list avec dpkg –set-selections

J'ai testé cela en utilisant deux machines virtuelles fonctionnant sous Lubutu.

Sur le premier j'ai installé un couple de programmes (VIM et cowsay) puis couru:

sudo apt-get update sudo apt-get upgrade sudo dpkg --get-selections > /home/klak/my_package_list.txt 

Voici à quoi ressemble my_package_list.txt

Ensuite, j'ai démarré dans une autre machine virtuelle qui était un clone de la précédente avant les installations VIM et cowsay et a couru le suivant:

 sudo apt-get update sudo apt-get upgrade sudo apt-get install dselect sudo apt-get dselect update sudo dpkg --set-selections < ./my_package_list.txt && sudo apt-get -u dselect-upgrade 

Cependant j'attendrais maintenant pouvoir charger VIM ou utiliser cowsay, mais j'obtiens:

 klak@klakBox:/media/share$ vim The program 'vim' can be found in the following packages: * vim * vim-gnome * vim-tiny * vim-athena * vim-gtk * vim-nox Try: sudo apt-get install <selected package> klak@klakBox:/media/share$ cowsay "boo" The program 'cowsay' is currently not installed. You can install it by typing: sudo apt-get install cowsay 

Il a traversé une charge de process d'installation quand j'ai exécuté les commands ci-dessus, donc je ne sais pas pourquoi cela n'a pas fonctionné.

À votre santé!

Modifier 1

Je ne sais pas pourquoi ces erreurs (il semble être une option dselect valide):

 klak@klakBox:/media/share$ sudo apt-get dselect update E: Invalid operation dselect klak@klakBox:/media/share$ 

Modifier 1.1

Il y a un menu CLI pour dselect si je viens d'entrer sudo dselect , je ne suis pas sûr de savoir comment je l'intégrerais dans un script. A partir de ce menu, j'ai choisi la update (car la tentative de mise à jour précédente a échoué)

  • Note -> la première fois que j'ai exécuté la sudo dselect update était d'un script python utilisant os.system("sudo dselect update") -> Peut-être cette erreur silencieuse, je ne sais pas.

Modifier 2

J'ai utilisé ce qui suit ( pris d'ici )

 dpkg --set-selections < selections.txt $ sudo apt-get install dselect $ sudo dselect -> Update -> Install 

La mise à jour et l'installation de dselect proviennent d'un menu CLI:

entrer la description de l'image ici

  • Je ne sais pas comment scripter cela

  • Je ne suis pas sûr Si je devrais commencer une autre question, ou si c'est vraiment une solution satisfaisante au problème initial?

Merci.

Modifier 3

Voici l'histoire apte à laquelle on m'a demandé:

 Start-Date: 2014-12-27 15:47:18 Commandline: apt-get upgrade Upgrade: bind9-host:amd64 (9.9.5.dfsg-4.3, 9.9.5.dfsg-4.3ubuntu0.1), liblwres90:amd64 (9.9.5.dfsg-4.3, 9.9.5.dfsg-4.3ubuntu0.1), libsystemd-login0:amd64 (208-8ubuntu8, 208-8ubuntu8.1), libgnutls-openssl27:amd64 (3.2.16-1ubuntu2, 3.2.16-1ubuntu2.1), ppp:amd64 (2.4.5-5.1ubuntu3, 2.4.5-5.1ubuntu3.1), multiarch-support:amd64 (2.19-10ubuntu2, 2.19-10ubuntu2.1), libdns100:amd64 (9.9.5.dfsg-4.3, 9.9.5.dfsg-4.3ubuntu0.1), oxideqt-codecs-extra:amd64 (1.2.5-0ubuntu1, 1.3.4-0ubuntu0.14.10.1), libisccfg90:amd64 (9.9.5.dfsg-4.3, 9.9.5.dfsg-4.3ubuntu0.1), python3-cupshelpers:amd64 (1.5.1+20141010-0ubuntu2, 1.5.1+20141010-0ubuntu2.1), libbind9-90:amd64 (9.9.5.dfsg-4.3, 9.9.5.dfsg-4.3ubuntu0.1), tcpdump:amd64 (4.6.2-1ubuntu1, 4.6.2-1ubuntu1.1), dbus:amd64 (1.8.8-1ubuntu2, 1.8.8-1ubuntu2.1), libgnutls-deb0-28:amd64 (3.2.16-1ubuntu2, 3.2.16-1ubuntu2.1), firefox-locale-en:amd64 (33.0+build2-0ubuntu0.14.10.1, 34.0+build2-0ubuntu0.14.10.2), whoopsie:amd64 (0.2.39, 0.2.39ubuntu0.1), dkms:amd64 (2.2.0.3-1.1ubuntu5, 2.2.0.3-1.1ubuntu5.14.10), gir1.2-gtk-3.0:amd64 (3.12.2-0ubuntu15, 3.12.2-0ubuntu15.1), firefox:amd64 (33.0+build2-0ubuntu0.14.10.1, 34.0+build2-0ubuntu0.14.10.2), libsystemd-daemon0:amd64 (208-8ubuntu8, 208-8ubuntu8.1), libgudev-1.0-0:amd64 (208-8ubuntu8, 208-8ubuntu8.1), libc-dev-bin:amd64 (2.19-10ubuntu2, 2.19-10ubuntu2.1), chromium-codecs-ffmpeg-extra:amd64 (37.0.2062.94-0ubuntu1~pkg1065, 39.0.2171.65-0ubuntu0.14.10.1.1106), mountall:amd64 (2.54build1, 2.54ubuntu0.14.10.1), libpam-systemd:amd64 (208-8ubuntu8, 208-8ubuntu8.1), libc-bin:amd64 (2.19-10ubuntu2, 2.19-10ubuntu2.1), libc6:amd64 (2.19-10ubuntu2, 2.19-10ubuntu2.1), libglib2.0-0:amd64 (2.42.0-2, 2.42.1-1~ubuntu1), xserver-xorg-core:amd64 (1.16.0-1ubuntu1, 1.16.0-1ubuntu1.2), flashplugin-installer:amd64 (11.2.202.411ubuntu1, 11.2.202.425ubuntu0.14.10.1), libgtk-3-bin:amd64 (3.12.2-0ubuntu15, 3.12.2-0ubuntu15.1), dnsutils:amd64 (9.9.5.dfsg-4.3, 9.9.5.dfsg-4.3ubuntu0.1), libdbus-1-3:amd64 (1.8.8-1ubuntu2, 1.8.8-1ubuntu2.1), udev:amd64 (208-8ubuntu8, 208-8ubuntu8.1), system-config-printer-common:amd64 (1.5.1+20141010-0ubuntu2, 1.5.1+20141010-0ubuntu2.1), xserver-common:amd64 (1.16.0-1ubuntu1, 1.16.0-1ubuntu1.2), libglib2.0-data:amd64 (2.42.0-2, 2.42.1-1~ubuntu1), libflac8:amd64 (1.3.0-2, 1.3.0-2ubuntu0.14.10.1), gir1.2-gudev-1.0:amd64 (208-8ubuntu8, 208-8ubuntu8.1), libwhoopsie0:amd64 (0.2.39, 0.2.39ubuntu0.1), libappindicator3-1:amd64 (12.10.1+13.10.20130920-0ubuntu4, 12.10.1+13.10.20130920-0ubuntu4.2), ntp:amd64 (4.2.6.p5+dfsg-3ubuntu2, 4.2.6.p5+dfsg-3ubuntu2.14.10.1), libudev1:amd64 (208-8ubuntu8, 208-8ubuntu8.1), language-pack-gnome-en:amd64 (14.10+20141020, 14.10+20141205), xserver-xorg-video-intel:amd64 (2.99.914-1~exp1ubuntu4, 2.99.914-1~exp1ubuntu4.1), libgtk-3-0:amd64 (3.12.2-0ubuntu15, 3.12.2-0ubuntu15.1), libjasper1:amd64 (1.900.1-debian1-2, 1.900.1-debian1-2ubuntu0.1), libsystemd-journal0:amd64 (208-8ubuntu8, 208-8ubuntu8.1), systemd:amd64 (208-8ubuntu8, 208-8ubuntu8.1), libcurl3:amd64 (7.37.1-1ubuntu3, 7.37.1-1ubuntu3.1), libgtk-3-common:amd64 (3.12.2-0ubuntu15, 3.12.2-0ubuntu15.1), system-config-printer-gnome:amd64 (1.5.1+20141010-0ubuntu2, 1.5.1+20141010-0ubuntu2.1), dbus-x11:amd64 (1.8.8-1ubuntu2, 1.8.8-1ubuntu2.1), language-pack-en-base:amd64 (14.10+20141020, 14.10+20141205), libglib2.0-bin:amd64 (2.42.0-2, 2.42.1-1~ubuntu1), language-pack-gnome-en-base:amd64 (14.10+20141020, 14.10+20141205), linux-libc-dev:amd64 (3.16.0-24.32, 3.16.0-28.38), language-pack-en:amd64 (14.10+20141020, 14.10+20141205), libisccc90:amd64 (9.9.5.dfsg-4.3, 9.9.5.dfsg-4.3ubuntu0.1), libc6-dev:amd64 (2.19-10ubuntu2, 2.19-10ubuntu2.1), libisc95:amd64 (9.9.5.dfsg-4.3, 9.9.5.dfsg-4.3ubuntu0.1), libcurl3-gnutls:amd64 (7.37.1-1ubuntu3, 7.37.1-1ubuntu3.1), ntpdate:amd64 (4.2.6.p5+dfsg-3ubuntu2, 4.2.6.p5+dfsg-3ubuntu2.14.10.1) End-Date: 2014-12-27 15:48:51 Start-Date: 2014-12-27 15:48:53 Commandline: apt-get install dselect Install: dselect:amd64 (1.17.13ubuntu1) End-Date: 2014-12-27 15:48:55 Start-Date: 2014-12-27 15:50:59 Commandline: /usr/bin/apt-get -f -oDir::State::status=/var/lib/dpkg/status -oDPkg::Options::=--admindir=/var/lib/dpkg dselect-upgrade Install: linux-headers-3.16.0-28:amd64 (3.16.0-28.38, automatic), linux-image-3.16.0-28-generic:amd64 (3.16.0-28.38, automatic), linux-headers-3.16.0-28-generic:amd64 (3.16.0-28.38, automatic), linux-image-extra-3.16.0-28-generic:amd64 (3.16.0-28.38, automatic) Upgrade: linux-headers-generic:amd64 (3.16.0.23.24, 3.16.0.28.29), linux-image-generic:amd64 (3.16.0.23.24, 3.16.0.28.29), linux-generic:amd64 (3.16.0.23.24, 3.16.0.28.29) End-Date: 2014-12-27 15:52:26 

L'historique ci-dessus provenait de l'exécution des commands suivantes (dans le script python):

import os

 # This part is for reinstalling. os.system("sudo apt-get update") os.system("sudo apt-get upgrade") os.system("sudo apt-get install dselect") #os.system("sudo dselect update") os.system("sudo dpkg --set-selections < ./my_package_list.txt") os.system("sudo dselect update") os.system("sudo dselect install") 

Modifier 4

C'est le script python qui fonctionne:

  os.system("sudo apt-get install dselect") os.system("sudo dselect update") os.system("sudo dpkg --set-selections < my_package_list.txt") os.system("sudo apt-get -y update") os.system("sudo apt-get dselect-upgrade") 

Évidemment, avant d'être exécuté, une list de packages a été créée, appelée my_package_list.txt , et elle doit se find dans le même directory que le file Python.

J'ai créé un process pour le faire. Donc, chaque machine a les mêmes packages.

Je suis les étapes suivantes:

D'abord, récupérez la list des packages installés sur la machine qui servira de "model" à copyr.

  dpkg --get-selections > pkg-list 

Dans la nouvelle machine:

Mettre à jour la database de dpkg sur les packages connus

  avail=`mktemp` apt-cache dumpavail > "$avail" dpkg --merge-avail "$avail" rm -f "$avail" 

Mettre à jour les sélections de dpkg

 dpkg --set-selections < pkg-list 

Demander à apt-get d'installer les packages sélectionnés

 apt-get dselect-upgrade 

Cela fonctionne pour moi. J'espère que cela peut aider.