Как найти файлы в системе Debian, не установленной или не созданной dpkg?


20

В прошлом я устанавливал некоторые вещи вручную и хотел бы отсеять все связанные файлы. Итак, мне нужен способ автоматического поиска всех файлов (например, в / usr), которые не включены ни в один из пакетов, установленных в настоящее время в системе Debian. Однако мне также необходимо отфильтровать файлы, которые создаются во время установки пакета (с помощью сценариев dpkg после установки и тому подобного).


1
Смотрите также этот вопрос: unix.stackexchange.com/questions/18038/…
Таха Джахангир

Ответы:


25

Используйте cruftпакет:

cruft - это программа, которая просматривает систему на предмет того, чего не должно быть, но есть; или для всего, что должно быть там, но не так.


4

Вы можете попробовать что-то вроде этого:

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 "

Таким образом, вы получите все файлы, которые находятся в / usr, но не файл пакета. Как первый выстрел это может помочь вам.


Я не могу найти способ получить -L для перечисления более одного пакета за раз, но вы можете получить тот же эффект отgrep -h "^/usr" /var/lib/dpkg/info/*.list > dpkg-files.dat
DerfK

Там нет --list-all-package-filesварианта.
Кароль

@DerfK: Вы можете получить -l, чтобы перечислить более одного пакета, например, вот так:dpkg -L `aptitude search ~i -F "%p"`
Karol

Проблема этого подхода заключается в том, что в / usr больше файлов или ссылок, чем указано в dpkg. Например, существует / usr / bin / aptitude, вероятно, созданный каким-то сценарием после установки, но он не указан dpkg. Итак, я думаю, что я хочу, чтобы здесь был список файлов, установленных или созданных путем установки любого пакета (изменит вопрос).
Кароль

@Karol: другими источниками файлов могут быть диверсии и альтернативы. Вывод находится в форме предложения, но вы можете увидеть отклонения с dpkg-divert --listправами root (обычно им присваивается суффикс). Альтернативы немного сложнее, формат файла в / var / lib / dpkg / alternatives / неудобен и update-alternativesговорит мне практически обо всем, НО название ссылки. find /usr -lname '/etc/alternatives/*'вероятно, самый простой способ получить это.
DerfK
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.