Usiłuję skonfigurować środowisko pomostowe na maszynie wirtualnej, aby przetestować aktualizacje przed zastosowaniem ich w moim głównym systemie.
W tym celu wykonałem podstawową instalację Debian Wheezy (taką samą jak w systemie głównym) na maszynie wirtualnej, a następnie uruchomiłem jako root z poziomu maszyny wirtualnej:
# dpkg --clear-selections
# dpkg --add-architecture i386
# apt-get update
# ssh me@main-system 'dpkg --get-selections | grep -v deinstall' | \
dpkg --set-selections
Niestety architektura i386 jest w moim przypadku potrzebna; system jest natywny dla amd64.
Problem dotyczy dpkg --set-selections
uruchomienia na maszynie wirtualnej. Mam kilka pakietów, które wymagają specjalnej obsługi (są to tak naprawdę główny powód, dla którego chcę przede wszystkim środowisko pomostowe), ale kiedy uruchomię ostatnie polecenie powyżej, otrzymuję około miliardów wierszy wyników, takich jak:
dpkg: warning: package not in database at line NNN: package-name
dla pakietów, które naprawdę powinny być dostępne w systemie podstawowym. Przykłady obejmują xterm
, yelp
i zip
.
Teraz moje pytanie:
Jaki jest specyficzny proces przenoszenia listy wyboru pakietów z jednego systemu Debian na inny (przy założeniu tego samego poziomu wydania Debiana, w Wheezy), a następnie zastosowania tych zmian? Chodzi o to, aby oba miały tę samą listę zainstalowanych pakietów, idealnie, aby powrót diff
między wyjściami dpkg --get-selections
lub dpkg --list
na obu nie powrócił bez żadnych różnic.
grep -v deinstall
Część jest zapożyczona z pakietów uniemożliwić są usuwane po wykonaniudpkg --set-selections
ponad Zapytaj na Ubuntu.
Zmieniłem źródło w maszynie wirtualnej na to samo, co w systemie głównym, instalując również apt-transport-https
:
deb https://ftp-stud.hs-esslingen.de/debian/ wheezy main non-free
deb-src https://ftp-stud.hs-esslingen.de/debian/ wheezy main non-free
deb https://ftp-stud.hs-esslingen.de/debian/ wheezy-updates main non-free
deb-src https://ftp-stud.hs-esslingen.de/debian/ wheezy-updates main non-free
deb [arch=amd64] http://archive.zfsonlinux.org/debian wheezy main
Patrząc na wynik --set-selections, widzę:
dpkg: warning: package not in database at line 1: a2ps
dpkg: warning: package not in database at line 1: abiword
dpkg: warning: package not in database at line 1: abiword-common
dpkg: warning: package not in database at line 1: abiword-plugin-grammar
dpkg: warning: package not in database at line 1: abiword-plugin-mathview
dpkg: warning: package not in database at line 1: accountsservice
dpkg: warning: package not in database at line 1: acl
dpkg: warning: package not in database at line 4: aglfn
dpkg: warning: package not in database at line 4: aisleriot
dpkg: warning: package not in database at line 4: alacarte
dpkg: warning: package not in database at line 4: alien
...
Numery linii wyglądały dziwnie, a odpowiadająca im część wyniku --get-selections to:
a2ps install
abiword install
abiword-common install
abiword-plugin-grammar install
abiword-plugin-mathview install
accountsservice install
acl install
acpi-support-base install
acpid install
adduser install
aglfn install
aisleriot install
alacarte install
alien install
Zauważ, że pomiędzy acl
i aglfn
są acpi-support-base
, acpid
i adduser
dla których nie są zgłaszane żadne błędy . Wygląda na to, że pakiety, dla których zgłaszane są błędy, są albo un
zgodne dpkg -l
, albo dpkg -l
nie mają o nich pojęcia ( dpkg-query: no packages found matching ...
). Wiem, że jest kilka zainstalowanych lokalnie pakietów, ale nie wiele. i386
nie pojawia się, dopóki nie będzie gcc-4.7-base:i386 install
dużo dalej w dół listy (wiersz 342 w wyjściu --get-selections).
dpkg --get-selections
(i zakładam, że miałeś na myśli dpkg --set-selections
zapis?)? Nawet ten pierwszy ma ponad 3600 linii i około 100 KB.
/var/lib/dpkg/Packages
Przydatna może być również kopia (która jest jeszcze dłuższa) - może to być objaw uszkodzonego pliku Packages.
dpkg --get-selections … | … dpkg --set-selections
jest sposobem na replikację wybranych pakietów. Jeśli to się nie powiedzie, musisz podać więcej informacji o tym, dlaczego. Zamieść pełny zestaw źródeł w obu systemach, dane wyjściowedpkg --get-selections
i pełny transkrypt zdpkg --get-selections
(być może możemy rozpoznać wzór, sprawdzając, co działa, a co nie). Jeśli główny system amd64 lub i386? Czy to działa, jeśli nie dodasz architektury i386?