저는 Lubutu를 실행하는 두 개의 가상 머신을 사용하여 이것을 테스트했습니다.
먼저 몇 가지 프로그램(VIM 및 owsay)을 설치한 후 다음을 실행했습니다.
sudo apt-get update
sudo apt-get upgrade
sudo dpkg --get-selections > /home/klak/my_package_list.txt
my_package_list.txt는 다음과 같습니다.
그런 다음 VIM 및 owsay를 설치하기 전에 이전 가상 머신의 복제본인 다른 가상 머신으로 부팅하고 다음 명령을 실행했습니다.
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
그러나 이제 VIM을 로드하거나 owsay를 사용하고 싶지만 다음과 같은 결과를 얻습니다.
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
위의 명령을 실행하면 많은 설치 프로세스가 진행되므로 이것이 작동하지 않는 이유가 확실하지 않습니다.
건배!
편집 1
왜 이 오류가 발생하는지 잘 모르겠습니다(유효한 옵션인 것 같습니다 dselect
).
klak@klakBox:/media/share$ sudo apt-get dselect update
E: Invalid operation dselect
klak@klakBox:/media/share$
1.1 편집
dselect 를 입력하면 CLI 메뉴가 있지만 sudo dselect
이를 스크립트에 포함하는 방법을 잘 모르겠습니다. 이 메뉴에서 선택했습니다 update
(이전 업데이트 시도가 실패했기 때문에).
- 참고 -> 내 첫 번째 실행은
sudo dselect update
Python 스크립트에서 이루어졌습니다os.system("sudo dselect update")
. -> 어쩌면 자동으로 오류가 발생할 수도 있습니다. 모르겠습니다.
편집 2
나는 다음을 사용했습니다 (여기에서 가져옴)
dpkg --set-selections < selections.txt
$ sudo apt-get install dselect
$ sudo dselect
-> Update
-> Install
dselect의 업데이트 및 설치는 CLI 메뉴에서 수행됩니다.
이 스크립트를 어떻게 작성하는지 모르겠습니다.
다른 질문을 시작해야 할지, 아니면 이것이 실제로 원래 문제에 대한 만족스러운 해결책인지 잘 모르겠습니다.
감사해요.
편집 3
이것은 제가 제공하도록 요청받은 적절한 기록입니다.
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
위 기록은 다음 명령을 실행하여 생성됩니다(Python 스크립트 내에서).
운영 체제 가져오기
# 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")
편집 4
이것은 유효한 Python 스크립트입니다.
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")
당연히 실행하기 전에 이라는 패키지 목록을 만들어야 하며 my_package_list.txt
Python 파일과 동일한 디렉터리에 있어야 합니다.
답변1
이를 위해 프로세스를 만들었습니다. 따라서 모든 기계에는 동일한 패키지가 있습니다.
나는 다음 단계를 따랐습니다.
먼저, 복사할 "모델" 역할을 할 시스템에 설치된 패키지 목록을 검색합니다.
dpkg --get-selections > pkg-list
새 시스템에서: 알려진 패키지의 dpkg 데이터베이스를 업데이트합니다.
avail=`mktemp`
apt-cache dumpavail > "$avail"
dpkg --merge-avail "$avail"
rm -f "$avail"
dpkg 업데이트 옵션
dpkg --set-selections < pkg-list
선택한 패키지를 설치하려면 apt-get에 문의하세요.
apt-get dselect-upgrade
이것은 나에게 효과적입니다.