Як знайти файли в системі 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"`
Кароль

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

@Karol: Іншими джерелами файлів можуть бути диверсії та альтернативи. Вихід є у формі речення, але ви можете бачити диверсії з dpkg-divert --listкоренем (зазвичай вони отримують суфікс). Альтернативи трохи складніше, формат файлу в / var / lib / dpkg / alternative / незручний і update-alternativesрозповідає мені майже про все, АЛЕ ім'я посилання. find /usr -lname '/etc/alternatives/*'це, мабуть, найпростіший спосіб отримати їх.
DerfK
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.