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é!
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$
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é)
sudo dselect update
était d'un script python utilisant os.system("sudo dselect update")
-> Peut-être cette erreur silencieuse, je ne sais pas. 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:
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.
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")
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:
dpkg --get-selections > pkg-list
avail=`mktemp` apt-cache dumpavail > "$avail" dpkg --merge-avail "$avail" rm -f "$avail"
dpkg --set-selections < pkg-list
apt-get dselect-upgrade
Cela fonctionne pour moi. J'espère que cela peut aider.