Saya mencoba mengatur lingkungan pementasan dalam VM, untuk menguji pembaruan sebelum menerapkannya ke sistem utama saya.
Untuk melakukannya, saya telah melakukan instalasi dasar Debian Wheezy (sama seperti pada sistem utama) di VM, kemudian jalankan sebagai root dari dalam VM:
# dpkg --clear-selections
# dpkg --add-architecture i386
# apt-get update
# ssh me@main-system 'dpkg --get-selections | grep -v deinstall' | \
dpkg --set-selections
Arsitektur i386 sayangnya dibutuhkan dalam kasus saya; sistem ini asli amd64.
Masalahnya adalah dengan dpkg --set-selections
menjalankan di VM. Saya memang memiliki beberapa paket yang memerlukan penanganan khusus (itu sebenarnya alasan utama mengapa saya ingin lingkungan pementasan di tempat pertama) tetapi ketika saya menjalankan perintah terakhir di atas, saya mendapatkan sekitar trilyun garis output seperti:
dpkg: warning: package not in database at line NNN: package-name
untuk paket yang benar-benar harus tersedia di sistem dasar. Contohnya termasuk xterm
, yelp
dan zip
.
Sekarang untuk pertanyaan saya:
Apa proses khusus untuk mentransfer daftar pemilihan paket dari satu sistem Debian ke sistem lain (dengan asumsi tingkat rilis Debian yang sama, di Wheezy) dan kemudian menerapkan perubahan itu? Tujuannya adalah bahwa keduanya memiliki daftar paket yang sama yang diinstal, idealnya sehingga melakukan diff
antara output dpkg --get-selections
atau dpkg --list
keduanya kembali tidak menunjukkan perbedaan.
Bagian grep -v deinstall
ini dipinjam dari paket Prevent agar tidak dihapus setelahdpkg --set-selections
selesai di Ask Ubuntu.
Saya telah mengubah sumber di VM menjadi sama seperti pada sistem utama, juga menginstal 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
Melihat output --set-selection, saya melihat:
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
...
Nomor baris tampak aneh, dan bagian yang sesuai dari output --get-selection adalah:
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
Perhatikan bahwa di antara acl
dan aglfn
sedang acpi-support-base
, acpid
dan adduser
yang tidak ada kesalahan dilaporkan . Tampaknya paket yang melaporkan kesalahannya un
sesuai dengan dpkg -l
, atau sama dpkg -l
sekali tidak tahu tentangnya ( dpkg-query: no packages found matching ...
). Saya tahu ada beberapa paket yang diinstal secara lokal, tetapi tidak banyak. i386
tidak menemukan sampai gcc-4.7-base:i386 install
lebih jauh ke bawah daftar (baris 342 dalam output --get-pilihan).
dpkg --get-selections
(dan saya menganggap Anda maksud dpkg --set-selections
transkrip?)? Bahkan yang pertama adalah lebih dari 3.600 baris dan benar sekitar 100 KB.
/var/lib/dpkg/Packages
(yang bahkan lebih lama) dapat berguna juga - ini bisa menjadi gejala dari file Paket yang rusak.
dpkg --get-selections … | … dpkg --set-selections
adalah cara untuk mereplikasi pilihan paket. Jika gagal untuk Anda, Anda perlu memberikan lebih banyak informasi tentang alasannya. Posting sumber lengkap Anda pada kedua sistem, output daridpkg --get-selections
, dan transkrip penuh daridpkg --get-selections
(mungkin kita bisa melihat pola dengan melihat apa yang berhasil dan yang tidak). Jika sistem utama amd64 atau i386? Apakah itu berfungsi jika Anda tidak menambahkan arsitektur i386?