ฉันกำลังพยายามตั้งค่าสภาพแวดล้อมการจัดเตรียมใน VM เพื่อทดสอบการอัปเดตก่อนนำไปใช้กับระบบหลักของฉัน
เพื่อที่จะทำเช่นนั้นฉันได้ทำการติดตั้งพื้นฐานของ Debian Wheezy (เช่นเดียวกับในระบบหลัก) ใน VM จากนั้นก็รันเป็นรูทจากภายใน 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 นั้นเป็นสิ่งจำเป็นสำหรับฉัน ระบบเป็นแบบดั้งเดิม 64
ปัญหาเกิดขึ้นกับการ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
มากกว่าเมื่อถามอูบุนตู
ฉันได้เปลี่ยนแหล่งที่มาใน 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-selections ฉันเห็น:
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-selections คือ:
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-selections)
dpkg --get-selections
(และฉันคิดว่าคุณหมายถึงการdpkg --set-selections
ถอดเสียง?) แม้แต่ในอดีตมีมากกว่า 3,600 สายและถูกประมาณ 100 KB
/var/lib/dpkg/Packages
(ซึ่งยาวกว่า) อาจมีประโยชน์เช่นกัน - นี่อาจเป็นอาการของไฟล์แพคเกจที่ใช้งานไม่ได้
dpkg --get-selections … | … dpkg --set-selections
เป็นวิธีการทำซ้ำการเลือกแพ็คเกจ ถ้ามันล้มเหลวสำหรับคุณคุณจะต้องให้ข้อมูลเพิ่มเติมว่าทำไม โพสต์ชุดเต็มของแหล่งที่มาของคุณบนทั้งสองระบบเอาท์พุทจากdpkg --get-selections
และทรานสคริปต์เต็มรูปแบบจากdpkg --get-selections
(บางทีเราสามารถแยกแยะรูปแบบโดยดูว่าอะไรทำงานได้และอะไรไม่ได้) หากระบบหลัก amd64 หรือ i386? มันใช้งานได้ถ้าคุณไม่เพิ่มสถาปัตยกรรม i386 หรือไม่?