Я намагаюся створити середовище інсценування у віртуальній машині, щоб перевірити оновлення, перш ніж застосовувати їх до моєї основної системи.
Для цього я здійснив базову установку Debian Wheezy (те саме, що і в основній системі) у VM, після чого запустив як root зсередини VM:
# 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запуску в VM. У мене є кілька пакетів, які вимагають спеціального керування (саме це є основною причиною, чому я хочу в першу чергу середовище інсценізації), але коли я запускаю останню команду вище, я отримую приблизно газільйонні рядки виводу, наприклад:
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Частина запозичена з пакетів Запобігання від видалення після виконанняdpkg --set-selections над на Ask Ubuntu.
Я змінив джерело в VM таким чином, що і в основній системі, також встановивши 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-selects, я бачу:
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-selects:
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-selection).
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?