Я хотел бы получить список всех файлов в моей системе Gentoo Linux, которые не были установлены менеджером пакетов (Portage). Это потому, что я хочу, чтобы моя система была как можно более чистой, удаляя все ненужные файлы.
Позвольте мне рассказать вам, что я пытался до сих пор. Прежде всего, я генерирую список всех файлов, которые принадлежат некоторому пакету, отслеживаемому Portage:
equery files "*" | sort | uniq > portage.txt
Затем я создаю список всех файлов в моей системе, кроме тех, которые мне не нужны:
find / \( -path /dev -o -path /proc -o -path /sys -o -path /media \
-o -path /mnt -o -path /usr/portage -o -path /var/db/pkg \
-o -path /var/www/localhost/htdocs -o -path /lib64/modules \
-o -path /usr/src -o -path /var/cache -o -path /home \
-o -path /root -o -path /run -o -path /var/run -o -path /var/tmp \
-o -path /var/log -o -path /tmp -o -path /etc/config-archive \
-o -path /usr/local/portage -o -path /boot \) -prune \
-o -type f | sort | uniq > all.txt
Наконец, я получаю список всех файлов, которые не отслеживаются Portage:
comm -13 portage.txt all.txt > extra.txt
Немного статистики:
wc -l portage.txt all.txt extra.txt
127724 portage.txt
78371 all.txt
8438 extra.txt
Как видите, я все еще получаю более восьми тысяч дополнительных файлов. Я хотел бы уменьшить это число, чтобы больше сосредоточиться на файлах, которые действительно необходимо удалить.
Я заметил, что extra.txt
там есть тысячи файлов в небольшом количестве каталогов, таких как /usr/lib64/gcc
, /usr/lib64/python2.7
и /usr/lib64/python3.2
. /usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
Файл, например, не в portage.txt
потому, что на его месте, есть /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
. В моей системе /usr/lib
есть символическая ссылка на /usr/lib64
. Так что, похоже, мне нужно правильно обрабатывать символические ссылки, чтобы получить лучшие результаты. Возможно, добавив во portage.txt
все файлы, на которые они указывают. Я действительно не знаю, как это сделать.
Кроме того, почему portage.txt
больше, чем all.txt
? Не должно быть наоборот, так как файлы, отслеживаемые Portage, являются подмножеством всех файлов в моей системе?
Наконец, я забываю любое другое место в find
команде, которое также должно быть исключено?