Я пытаюсь настроить промежуточную среду на виртуальной машине, чтобы протестировать обновления, прежде чем применять их в моей основной системе.
Для этого я выполнил базовую установку Debian Wheezy (так же, как в основной системе) на виртуальной машине, затем запустил ее с правами root:
# dpkg --clear-selections
# dpkg --add-architecture i386
# apt-get update
# ssh me@main-system 'dpkg --get-selections | grep -v deinstall' | \
dpkg --set-selections
В моем случае, к сожалению, нужна архитектура i386; система amd64 родная.
Проблема с dpkg --set-selections
запуском в ВМ. У меня есть некоторые пакеты, которые требуют особой обработки (это на самом деле главная причина, по которой я в первую очередь хочу промежуточную среду), но когда я запускаю последнюю команду, приведенную выше, я получаю около тысячи строк вывода, например:
dpkg: warning: package not in database at line NNN: package-name
для пакетов, которые действительно должны быть доступны в базовой системе. Примеры включают в себя xterm
, yelp
и zip
.
Теперь на мой вопрос:
Каков конкретный процесс переноса списка выбора пакетов из одной системы Debian в другую (при условии того же уровня выпуска Debian в Wheezy) и последующего применения этих изменений? Цель состоит в том, чтобы у обоих был один и тот же список установленных пакетов, в идеале такой, чтобы выполнение diff
между выходами dpkg --get-selections
или dpkg --list
на двух возвращалось без различий.
Эта grep -v deinstall
часть заимствована из пакета Prevent для удаления после выполнения операцииdpkg --set-selections
над Ask Ubuntu.
Я изменил источник в ВМ, чтобы он был таким же, как в основной системе, а также установил 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
Глядя на вывод --set-selections, я вижу:
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
...
Номера строк выглядели странно, и соответствующая часть вывода --get-selections:
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
Обратите внимание, что между acl
и aglfn
есть acpi-support-base
, acpid
и adduser
для которых нет сообщений об ошибках . Похоже, что пакеты, для которых сообщается об ошибках, либо un
соответствуют dpkg -l
, либо dpkg -l
не имеют о них никакого представления ( dpkg-query: no packages found matching ...
). Я знаю, что есть несколько локально установленных пакетов, но не так много. i386
отображается не gcc-4.7-base:i386 install
намного дальше вниз по списку (строка 342 в выводе --get-selections).
dpkg --get-selections
(и я полагаю, вы имели в виду dpkg --set-selections
расшифровку стенограммы?)? Даже первый из них содержит более 3600 строк и около 100 КБ.
/var/lib/dpkg/Packages
(которая еще длиннее) также может быть полезной - это может быть признаком испорченного файла Packages.
dpkg --get-selections … | … dpkg --set-selections
способ репликации выбранных пакетов Если это не помогло вам, вам нужно будет предоставить больше информации о том, почему. Разместите свой полный набор источников в обеих системах, выходные данныеdpkg --get-selections
и полную расшифровкуdpkg --get-selections
(возможно, мы сможем определить образец, посмотрев, что работает, а что нет). Если основная система amd64 или i386? Это работает, если вы не добавите архитектуру i386?