Tôi đang cố gắng thiết lập môi trường dàn dựng trong VM, để kiểm tra các bản cập nhật trước khi áp dụng chúng vào hệ thống chính của tôi.
Để làm như vậy, tôi đã thực hiện cài đặt cơ bản Debian Wheezy (giống như trên hệ thống chính) trong VM, sau đó chạy dưới quyền root từ bên trong VM:
# dpkg --clear-selections
# dpkg --add-architecture i386
# apt-get update
# ssh me@main-system 'dpkg --get-selections | grep -v deinstall' | \
dpkg --set-selections
Không may kiến trúc i386 cần thiết trong trường hợp của tôi; hệ thống là amd64 bản địa.
Vấn đề là với dpkg --set-selections
chạy trong VM. Tôi có một số gói yêu cầu xử lý đặc biệt (đó thực sự là lý do chính khiến tôi muốn có môi trường dàn dựng ở nơi đầu tiên) nhưng khi tôi chạy lệnh cuối cùng ở trên, tôi nhận được khoảng một dòng đầu ra như:
dpkg: warning: package not in database at line NNN: package-name
cho các gói thực sự nên có sẵn trong hệ thống cơ sở. Ví dụ bao gồm xterm
, yelp
và zip
.
Bây giờ cho câu hỏi của tôi:
Quá trình cụ thể để chuyển danh sách lựa chọn gói từ một hệ thống Debian sang hệ thống khác (giả sử cùng mức phát hành Debian, trong Wheezy) và sau đó áp dụng những thay đổi đó là gì? Mục tiêu là cả hai đều có cùng một danh sách các gói được cài đặt, lý tưởng là việc thực hiện diff
giữa các đầu ra của dpkg --get-selections
hoặc dpkg --list
trên hai trở lại cho thấy không có sự khác biệt.
Phần grep -v deinstall
được mượn từ các gói Ngăn chặn bị xóa sau khi thực hiệndpkg --set-selections
trên Hỏi Ubuntu.
Tôi đã thay đổi nguồn trong VM giống như trên hệ thống chính, cũng cài đặt 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
Nhìn vào đầu ra --set-select, tôi thấy:
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
...
Các số dòng trông có vẻ kỳ lạ và phần tương ứng của đầu ra của --get-select là:
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
Lưu ý rằng ở giữa acl
và aglfn
là acpi-support-base
, acpid
và adduser
không có lỗi nào được báo cáo . Có vẻ như các gói mà lỗi được báo cáo là un
theo dpkg -l
hoặc dpkg -l
không có bất kỳ ý tưởng nào về chúng ( dpkg-query: no packages found matching ...
). Tôi biết có một số gói cài đặt cục bộ, nhưng không nhiều. i386
không con số cho đến gcc-4.7-base:i386 install
nhiều hơn ở phía dưới danh sách (dòng 342 trong đầu ra --get-selections).
dpkg --get-selections
(và tôi giả sử bạn có nghĩa là dpkg --set-selections
bảng điểm?)? Thậm chí chỉ trước đây là hơn 3.600 dòng và khoảng 100 KB.
/var/lib/dpkg/Packages
(thậm chí còn dài hơn) cũng có thể hữu ích - đây có thể là một triệu chứng của tệp Gói bị hỏng.
dpkg --get-selections … | … dpkg --set-selections
là cách để nhân rộng các lựa chọn gói. Nếu nó không thành công với bạn, bạn sẽ cần cung cấp thêm thông tin về lý do. Đăng toàn bộ nguồn của bạn trên cả hai hệ thống, đầu ra từdpkg --get-selections
và bản sao đầy đủ từdpkg --get-selections
(có thể chúng ta có thể nhận ra một mẫu bằng cách xem những gì hoạt động và những gì không). Nếu hệ thống chính amd64 hay i386? Nó có hoạt động không nếu bạn không thêm kiến trúc i386?