เพื่อประโยชน์ในการอ้างอิงและความครบถ้วนสมบูรณ์คำสั่งหนึ่งคำสั่งที่สามารถบรรลุสิ่งที่ขอไว้ในตอนแรกจะเป็นแบบนี้ (เล่นซอด้วยกันได้อย่างรวดเร็ว แต่ทำงานได้)
rpm -qf $(rpm -Va 2>&1 | grep -vE '^$|prelink:' | sed 's|.* /|/|') | sort -u
นี่คือคำอธิบายสั้น ๆ ของส่วนต่างๆ:
rpm -Va 2>&1
จะเรียกใช้การตรวจสอบที่สมบูรณ์เกี่ยวกับแพคเกจทั้งหมดที่ติดตั้ง / แสดงอยู่ในฐานข้อมูลรอบต่อนาที นอกจากนี้ยังจะเปลี่ยนเส้นทาง stderr ไปยัง stdout เช่นเดียวกับที่นี่ในกล่องข้อผิดพลาดที่เกิดจากการเปิดใช้ prelink ถูกรายงานว่าเป็นข้อผิดพลาด แต่เราต้องการให้ stdout
ข้อควรสนใจ:จำเป็นต้องเรียกใช้ในฐานะรูทเพื่อให้สามารถตรวจสอบไฟล์สิทธิ์และเจ้าของ / กลุ่มทั้งหมด
grep -vE '^$|prelink:'
ใส่จอแสดงผลของเส้น emtpy และเช่นข้อผิดพลาด prelink นี้ (ตัวอย่างเช่นข้อผิดพลาด:
prelink: /tmp/#prelink#.B14JBi: Recorded 10 dependencies, now seeing -1
)
sed 's|.* /|/|')
จะกรองrpm -Va
ผลลัพธ์เพื่อแสดงชื่อไฟล์เท่านั้น
rpm -qf $()
จะสอบถามชื่อไฟล์ทั้งหมดที่ได้รับซึ่งบรรจุอยู่ในนั้นและส่งออกชื่อและรุ่นของแพ็คเกจ
| sort -u
จะหยุดการรวมชื่อแพ็คเกจ / เวอร์ชั่นซ้ำกัน
ทั้งหมดคุณจะได้รับรายการแพคเกจที่ไม่ผ่านการตรวจสอบ
rpm -Va
--nodeps
อาจยังคงแสดงปัญหาที่ไม่เกี่ยวข้องบางอย่างก็ยังตรวจสอบการพึ่งพาระหว่างแพคเกจซึ่งอาจจะต้องมีการปราบปรามโดยการเพิ่ม
yum reinstall $(rpm -qa --qf="%{N}-%{V}\n" | sort)