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-selectionschạ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, yelpvà 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 diffgiữa các đầu ra của dpkg --get-selectionshoặc dpkg --listtrê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 aclvà aglfnlà acpi-support-base, acpidvà 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à untheo dpkg -lhoặc dpkg -lkhô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. i386khô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-selectionsbả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-selectionslà 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-selectionsvà 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?