Як я можу отримати список файлів на моєму комп’ютері, які не належать жодному пакету?


9

Я розглядаю можливість написання сценарію, який робить це:

  • Проходить через кожен файл у / usr / lib
  • Проводить dpkg -sпошук по кожному файлу.
  • Повідомляє про список сиріт-файлів, що не належать до жодного пакету .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'
αғsnιη

1
Ніякої розбіжності там немає. Олі 2012 року був не таким хорошим, як 2015 рік. Я оновив його, тому він повертає лише список файлів.
Олі

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параметр повинен повідомляти про файли, присутні в першому списку, але не у другому.

На моїй машині цей перелік різниць дає більше 5000 звернень, тому я сумніваюся, що це може допомогти.


Діє дуже швидко для мене.
користувач1202136

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там, але трохи більше пояснень щодо сурових і чому ти рекомендуєш це було б добре! : P ;-)
Fabby

Це не вийде, точніше: (1) "chown: відсутній операнд після 'root: cruft'". Потрібно написати: "sudo chown root: cruft / var / spool / cruft" замість (2) "sudo addgroup $ USER cruft" зажадає закриття / відкриття нової оболонки (переробки). (3) Якщо ви хочете оглянути всі дрірси, вам потрібно буде "судо".
muenalan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.