จะค้นหาไฟล์ในระบบ Debian ที่ไม่ได้ติดตั้งหรือสร้างโดย dpkg ได้อย่างไร?


20

ฉันเคยติดตั้งบางสิ่งด้วยตนเองมาก่อนและต้องการกำจัดไฟล์ที่เกี่ยวข้องทั้งหมด ดังนั้นฉันต้องการวิธีในการค้นหาไฟล์ทั้งหมดโดยอัตโนมัติ (เช่น / usr) ที่ไม่รวมอยู่ในแพ็คเกจใด ๆ ที่ติดตั้งในระบบ Debian อย่างไรก็ตามฉันจะต้องกรองไฟล์ที่สร้างขึ้นระหว่างการติดตั้งแพ็กเกจ (โดย dpkg สคริปต์หลังการติดตั้งและสิ่งที่คล้ายกัน)


1
ดูคำถามนี้: unix.stackexchange.com/questions/18038/…
Taha Jahangir

คำตอบ:


25

ใช้cruftแพคเกจ:

cruft เป็นโปรแกรมที่จะตรวจสอบระบบเพื่อหาสิ่งที่ไม่ควรมี แต่เป็น; หรือสำหรับสิ่งที่ควรมี แต่ไม่ใช่


4

คุณสามารถลองสิ่งนี้:

dpkg -L --list-all-package-files | grep "^/usr" > dpkg-files.dat   **(don't know the dpkg option "--list-all-package-files", read mand dpkg)**
find /usr -type f -o -type l > all-usr-files.dat
sort dpkg-files.dat all-usr-files.dat | uniq -c | grep " 1 "

วิธีนี้คุณจะได้รับไฟล์ทั้งหมดที่อยู่ใน / usr แต่ไม่ใช่ไฟล์แพ็คเกจใด ๆ เป็นนัดแรกสิ่งนี้จะช่วยคุณได้


ฉันไม่สามารถหาวิธีที่จะรับ -L เพื่อแสดงรายการมากกว่าหนึ่งแพ็คเกจในเวลาเดียวกัน แต่คุณสามารถได้รับผลกระทบเดียวกันจากgrep -h "^/usr" /var/lib/dpkg/info/*.list > dpkg-files.dat
DerfK

ไม่มี--list-all-package-filesตัวเลือก
Karol

@DerfK: คุณจะได้รับ -l ไปยังรายการมากกว่าหนึ่งแพคเกจสำหรับตัวอย่างเช่นนี้dpkg -L `aptitude search ~i -F "%p"`
Karol

ปัญหาเกี่ยวกับวิธีการนี้คือมีไฟล์หรือลิงก์ใน / usr มากกว่ารายการจริงโดย dpkg ตัวอย่างเช่น / usr / bin / aptitude มีอยู่ซึ่งอาจสร้างโดยสคริปต์หลังการติดตั้ง แต่ไม่มีอยู่ในรายการโดย dpkg ดังนั้นฉันเดาสิ่งที่ฉันต้องการที่นี่คือรายการของไฟล์ที่ติดตั้งหรือสร้างโดยการติดตั้งแพคเกจใด ๆ (จะเปลี่ยนคำถาม)
Karol

@Karol: แหล่งไฟล์อื่น ๆ อาจมีความหลากหลายและเป็นทางเลือก เอาต์พุตอยู่ในรูปประโยค แต่คุณสามารถเห็นความแตกต่างด้วยdpkg-divert --listในฐานะที่เป็นรูท (โดยปกติจะมีคำต่อท้าย) ทางเลือกนั้นค่อนข้างยากรูปแบบไฟล์ใน / var / lib / dpkg / ทางเลือก / ค่อนข้างอึดอัดและupdate-alternativesบอกฉันทุกอย่างเกี่ยวกับทุกอย่าง แต่ชื่อลิงก์ find /usr -lname '/etc/alternatives/*'อาจเป็นวิธีที่ง่ายที่สุดในการรับสิ่งเหล่านี้
DerfK
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.