การกู้คืนข้อมูลและการอ้างอิงทั้งหมดจาก dpkg --set-selections '*'


44

ดังนั้นฉันสามารถเรียกใช้บนเครื่องเดียว:

dpkg --get-selections '*' > selection.txt

บนเครื่องอื่น:

dpkg --set-selections < selection.txt

... ตามด้วยสิ่งใดสิ่งหนึ่งต่อไปนี้:

aptitude install
apt-get -u dselect-upgrade

... เพื่อติดตั้งแพ็คเกจที่

อย่างไรก็ตามปรากฏว่าข้อมูลบางอย่างสูญหายไปในกระบวนการเช่นว่าxyzมีการติดตั้งแพคเกจ (พูด) โดยอัตโนมัติเป็นการอ้างอิงของแพ็คเกจอื่น ( abc) apt-get --purge remove abcคุณจะเห็นว่าเมื่อใดก็ตามที่คุณทำสิ่งที่ชอบ บนเครื่องเดิมคุณจะได้รับแจ้งว่าxyzมีการติดตั้งแพคเกจเป็นการอ้างอิงabcและคุณอาจใช้apt-get autoremoveเพื่อกำจัดมัน

ตอนนี้ฉันรู้deborphanและdebfosterแต่พวกเขากำลังยุ่งยากต่อการใช้ที่กำหนด (แบบง่าย) งานในมือ

ดูเหมือนว่าการบันทึกและกู้คืนการเลือกตามที่แสดงด้านบนไม่เพียงพอที่จะกู้คืนการพึ่งพาที่ละเอียดอ่อนของแพ็คเกจที่ติดตั้ง

มีวิธีสำรองชุดเมทาดาทาที่สมบูรณ์สำหรับการจัดการแพ็กเกจและกู้คืนได้ทั้งหมดหรือไม่?


ฉันมักจะสงสัยในสิ่งเดียวกันกับที่ฉันสร้างเชลล์สคริปต์ตัวใหญ่ด้วย 'sudo apt-get install' พร้อมกับแพ็คเกจทั้งหมดของฉัน (ลบด้วย libs) แน่นอนฉันพบปัญหาเดียวกับที่คุณมี
Chuck R

ฉันเดาว่าสถานที่ที่ดีที่สุดในการเริ่มค้นหาคือการตรวจสอบว่า dpkg มีความรับผิดชอบต่อข้อมูลนั้นหรือไม่ หากไม่เป็นเช่นนั้นอาจเป็นหน้าที่ของ apt
Huckle

3
หากคุณใช้วิธีการด้วยตนเองคุณอาจสนใจในapt-markการบันทึก / เรียกคืนข้อมูลเกี่ยวกับแพคเกจติดตั้งอัตโนมัติเทียบกับแบบแมนนวล
Lekensteyn

มันไม่ได้อยู่ในแพ็คเกจ repo 10.04 ใช่ไหม? เป็นส่วนหนึ่งของ Canonos Repos หรือบุคคลที่สามหรือไม่?
0xC0000022L

2
ไม่นั่นเป็นเพียงความคิดเห็น "สำหรับข้อมูลของคุณ" ฉันจะใช้ apt-mark (เป็นส่วนหนึ่งของ apt ดังนั้นควรติดตั้งไว้แล้ว) เพื่อรับและตั้งเครื่องหมายสำหรับแพ็คเกจ (ดูmanpageเพื่อดูรายละเอียด)
htorque

คำตอบ:


39

สำรอง:

apt-mark showauto > pkgs_auto.lst
apt-mark showmanual > pkgs_manual.lst

Restore:

sudo apt-mark auto $(cat pkgs_auto.lst)
sudo apt-mark manual $(cat pkgs_manual.lst)

ขอบคุณกำลังจะขอให้คุณหรือ Lekensteyn เขียนว่าเป็นคำตอบ
0xC0000022L

คำสั่งเหล่านี้อนุญาตให้คุณติดตั้งโปรแกรมใหม่จากรายการนั้นหรือไม่?
Svetlana Belkin

สามารถลบแพ็กเกจที่ติดตั้งเพิ่มเติมนี้ในการกู้คืนได้หรือไม่
n611x007

1
คุณสามารถอธิบายความแตกต่างระหว่างautoและmanual? ขอบคุณ
Anto

ฉันทำเครื่องหมายเป็นชุดของแพ็คเกจอื่น ๆ โดยไม่ได้ตั้งใจ ... มีวิธีการย้อนกลับหรือไม่? ขอบคุณ
dentex

2

คำตอบที่เลือกสำหรับคำถามนี้ไม่สมบูรณ์และใช้ไม่ได้ (หรือไม่ได้) อีกต่อไป การแก้ไขที่เจ็บปวดคือการใช้ทุบตีสำหรับวงที่จะแยกการส่งออกแฟ้ม * .lst apt installและอาหารให้พวกเขา แม้ว่าทางเลือกที่ไม่ดีจะไม่ถูกแสดงไว้ที่นี่

ทางเลือกที่ดีกว่าคือใช้apt-cloneดังที่เห็นในคำตอบนี้บน Unix & Linux Stackexchange สิ่งนี้จะสร้างไฟล์ขนาดเล็ก (ประมาณ 100K หรือน้อยกว่าสำหรับระบบของฉัน) นัยว่าจะทำการโคลนนิ่งแพ็คเกจด้วยความพยายามหรือความเจ็บปวดเล็กน้อย

ดังนั้นโดยย่อในเครื่องต้นฉบับ:

apt-clone clone `uname -n`

จากนั้นบนเครื่องเพื่อโคลนให้คัดลอกไฟล์โคลนและเรียกใช้:

apt-clone restore original-machine-name.apt-clone.tar.gz

ฉันรวมคำตอบนี้ไว้ที่นี่เนื่องจากหน้านี้ปรากฏขึ้นในการค้นหาเว็บครั้งแรก แต่คำตอบอื่นไม่ได้ วิธีนี้ดูง่ายขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.