Làm cách nào tôi có thể nhận được danh sách các tệp trên máy tính của mình mà không phải là sở hữu của bất kỳ gói nào?


9

Tôi đang dự tính viết một kịch bản thực hiện điều này:

  • Đi qua từng tệp trong / usr / lib
  • dpkg -stìm kiếm trên mỗi tập tin.
  • Báo cáo danh sách các tệp "mồ côi" không thuộc bất kỳ gói .deb nào.

Ý tưởng là theo thời gian, tôi đã cài đặt rất nhiều make installphần mềm và tôi muốn nhận danh sách các tệp còn sót lại từ phần mềm được cài đặt thủ công mà tôi đã xóa.


Trong tương lai, đảm bảo mọi thứ bạn cài đặt bên ngoài hệ thống đóng gói sẽ được cài đặt thành / usr / local hoặc / opt. Sau đó, bạn sẽ có một sự tách biệt rõ ràng.
geirha

Câu trả lời:


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

Tôi sẽ cảnh báo bạn ngay bây giờ: nó chậm.


3
Đó là nhanh hơn:find /usr/lib -type f -exec dpkg -S {} + | grep 'no path found'
αғsнιη

1
Không có bất đồng nào ở đó. Oli năm 2012 không tốt như năm 2015. Tôi đã cập nhật nó để nó chỉ trả về một danh sách các tập tin.
Oli

3

Bạn có thể chạy lệnh sau

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

so sánh danh sách các tệp trong /usr/libdanh sách các tệp có trong ít nhất một tệp trong /var/lib/dpkg/info/<NAME>.list(các tệp được sử dụng bởi dpkg -S). Các -v1tùy chọn sẽ báo cáo các file có trong danh sách đầu tiên nhưng không phải trong một giây.

Trên máy của tôi, danh sách khác biệt này cung cấp hơn 5000 lượt truy cập, vì vậy tôi nghi ngờ nó có thể giúp được gì.


Hoạt động thực sự nhanh chóng đối với tôi.
dùng1202136

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
Tôi thích phần man crufttrong đó, nhưng một lời giải thích nhỏ hơn về cruft và lý do tại sao bạn khuyên nó sẽ hay! : P ;-)
Fabby

Điều này sẽ không hoạt động, chính xác hơn: (1) "chown: thiếu toán hạng sau 'root: cruft'". Cần phải viết: "sudo chown root: cruft / var / spool / cruft" thay vào đó (2) "sudo addgroup $ USER cruft" sẽ yêu cầu đóng / mở shell mới (relogin). (3) Gọi cruft sẽ yêu cầu "sudo cruft" nếu bạn muốn kiểm tra tất cả các thư mục.
muenalan
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.