Làm cách nào để tìm các tệp trong hệ thống Debian không được cài đặt hoặc tạo bởi dpkg?


20

Tôi đã cài đặt một số thứ thủ công trong quá khứ và muốn loại bỏ tất cả các tệp liên quan. Vì vậy, tôi cần một cách để tự động tìm tất cả các tệp (ví dụ: in / usr) không được bao gồm trong bất kỳ gói nào hiện được cài đặt trên hệ thống Debian. Tuy nhiên, tôi cũng sẽ cần phải lọc ra các tệp được tạo trong quá trình cài đặt gói (bởi các tập lệnh sau khi cài đặt dpkg và những thứ tương tự).


Câu trả lời:


25

Sử dụng cruftgói:

cruft là một chương trình để xem xét hệ thống cho bất cứ điều gì không nên có, nhưng là; hoặc cho bất cứ điều gì nên có, nhưng không.


4

Bạn có thể thử một cái gì đó như thế này:

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 "

Bằng cách này, bạn sẽ nhận được tất cả các tệp trong / usr nhưng không phải bất kỳ tệp gói nào. Như một phát súng đầu tiên, điều này có thể giúp bạn.


Tôi không thể tìm bất kỳ cách nào để có được -L để liệt kê nhiều gói cùng một lúc, nhưng bạn có thể nhận được hiệu quả tương tự từgrep -h "^/usr" /var/lib/dpkg/info/*.list > dpkg-files.dat
DerfK

Không có --list-all-package-fileslựa chọn.
Karol

@DerfK: Bạn có thể lấy -l để liệt kê nhiều gói, ví dụ như thế này:dpkg -L `aptitude search ~i -F "%p"`
Karol

Vấn đề với cách tiếp cận này là có nhiều tệp hoặc liên kết trong / usr hơn thực tế được liệt kê bởi dpkg. Ví dụ: / usr / bin / aptitude tồn tại, có thể được tạo bởi một số tập lệnh sau khi cài đặt, nhưng nó không được liệt kê bởi dpkg. Vì vậy, tôi đoán những gì tôi muốn ở đây là một danh sách các tệp được cài đặt hoặc tạo bằng cách cài đặt bất kỳ gói nào (sẽ thay đổi câu hỏi).
Karol

@Karol: Các nguồn khác của tệp có thể là chuyển hướng và thay thế. Đầu ra ở dạng câu nhưng bạn có thể thấy chuyển hướng với dpkg-divert --listgốc (Chúng thường được đặt một hậu tố). Các lựa chọn thay thế khó hơn một chút, định dạng tệp trong / var / lib / dpkg / thay thế / là khó xử và update-alternativescho tôi biết tất cả mọi thứ NHƯNG tên của liên kết. find /usr -lname '/etc/alternatives/*'có lẽ là cách dễ nhất để có được những thứ này
DerfK
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.