Как я могу получить список файлов на моем компьютере, которые не являются «владельцами» какого-либо пакета?

7

Я размышляю над написанием сценария, который делает это:

  • Просматривает каждый файл в / usr / lib
  • Выполняет поиск dpkg -s для каждого файла.
  • Сообщает список файлов «сироты», не принадлежащих к любому пакету .deb.

Идея заключается в том, что со временем я установил много% программного обеспечения co_de%, и мне бы хотелось получить список оставшихся файлов из установленного вручную программного обеспечения, которое с тех пор было удалено.

    
задан Ken Kinder 29.02.2012 в 13:47
источник

3 ответа

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

Я предупрежу вас сейчас: это медленно.

    
ответ дан Oli 29.02.2012 в 14:21
источник
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 обращений, поэтому я сомневаюсь, что это может помочь.

    
ответ дан enzotib 29.02.2012 в 14:14
1
sudo aptitude install cruft
man cruft
sudo addgroup cruft
sudo chmod g+rwx /var/spool/cruft
sudo chown root:cruft
sudo addgroup $USER cruft
cruft -r cruftreport
sudo chown root:root /var/spool/cruft
less cruftreport
    
ответ дан user2697383 24.03.2015 в 10:24