ฉันจะรับรายการไฟล์ในคอมพิวเตอร์ที่ไม่ได้เป็นเจ้าของโดยแพ็คเกจใด ๆ ได้อย่างไร


9

ฉันใคร่ครวญการเขียนสคริปต์ที่ทำสิ่งนี้:

  • ผ่านแต่ละไฟล์ใน / usr / lib
  • ไม่ได้dpkg -sค้นหาในแต่ละไฟล์
  • รายงานรายการไฟล์ "orphan" ที่ไม่ได้เป็นของแพ็คเกจ. deb

แนวคิดก็คือเมื่อเวลาผ่านไปฉันได้ติดตั้งmake installซอฟต์แวร์จำนวนมากและฉันต้องการรับรายการของไฟล์ที่เหลือจากซอฟต์แวร์ที่ติดตั้งด้วยตนเองที่ฉันลบตั้งแต่นั้นมา


ในอนาคตตรวจสอบให้แน่ใจว่าทุกสิ่งที่คุณติดตั้งนอกระบบบรรจุภัณฑ์ได้รับการติดตั้งเป็น / usr / local หรือ / opt แล้วคุณจะมีการแยกชัดเจน
geirha

คำตอบ:


8
find /usr/lib -type f -exec dpkg -S {} + 2>&1 >/dev/null | sed -r 's/^[^/]+//'

ฉันจะเตือนคุณตอนนี้มันช้า


3
เร็วกว่า:find /usr/lib -type f -exec dpkg -S {} + | grep 'no path found'
αғsнιη

1
ไม่มีความขัดแย้ง Oli ปี 2012 ไม่ดีเท่าปี 2015 ฉันได้อัปเดตแล้วดังนั้นจะส่งคืนรายการไฟล์เท่านั้น
Oli

3

คุณสามารถเรียกใช้คำสั่งต่อไปนี้

join -t '' -v1 <(find /usr/lib | sort) \
               <(grep -h /usr/lib /var/lib/dpkg/info/*.list | sort -u)

ที่เปรียบเทียบรายการไฟล์/usr/libด้วยรายการไฟล์ที่มีอยู่ในไฟล์อย่างน้อยหนึ่งไฟล์/var/lib/dpkg/info/<NAME>.list(ไฟล์ที่ใช้dpkg -S) -v1ตัวเลือกที่จะรายงานไฟล์อยู่ในรายการแรก แต่ไม่ได้อยู่ในหนึ่งวินาที

ในเครื่องของฉันรายการความแตกต่างนี้ให้ความนิยมมากกว่า 5,000 ครั้งดังนั้นฉันสงสัยว่ามันอาจจะช่วยได้บ้าง


ทำงานได้อย่างรวดเร็วจริงๆสำหรับฉัน
user1202136

2
sudo aptitude install cruft
man cruft
sudo addgroup cruft
sudo chmod g+rwx /var/spool/cruft
sudo chown root:cruft /var/spool/cruft
sudo addgroup $USER cruft
cruft -r cruftreport
sudo chown root:root /var/spool/cruft
less cruftreport

1
ฉันชอบข้างman cruftใน แต่มีคำอธิบายเพิ่มเติมเล็กน้อยเกี่ยวกับ cruft และทำไมคุณแนะนำมันจะดี! : P ;-)
Fabby

สิ่งนี้จะไม่ทำงานแม่นยำยิ่งขึ้น: (1) "chown: ไม่มีตัวถูกดำเนินการหลังจาก 'root: cruft'" ต้องเขียน: "sudo chown root: cruft / var / spool / cruft" แทน (2) "sudo addgroup $ USER cruft" จะต้องปิด / เปิดเชลล์ใหม่ (relogin) (3) การโทร cruft จะต้องใช้ "sudo cruft" หากคุณต้องการตรวจสอบ dirs ทั้งหมด
muenalan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.