Я намагаюся створити середовище інсценування у віртуальній машині, щоб перевірити оновлення, перш ніж застосовувати їх до моєї основної системи.
Для цього я здійснив базову установку 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?