Gostaria de obter uma lista de todos os arquivos no meu sistema Gentoo Linux que não foram instalados pelo gerenciador de pacotes (Portage). Isso ocorre porque eu quero manter meu sistema o mais limpo possível, removendo todos os arquivos inúteis por aí.
Deixe-me contar o que tentei até agora. Primeiro, eu giro a lista de todos os arquivos que pertencem a algum pacote rastreado pelo Portage:
equery files "*" | sort | uniq > portage.txt
Em seguida, gero a lista de todos os arquivos no meu sistema, exceto aqueles com os quais não me importo:
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
Finalmente, recebo a lista de todos os arquivos que não são rastreados pelo Portage:
comm -13 portage.txt all.txt > extra.txt
Algumas estatísticas:
wc -l portage.txt all.txt extra.txt
127724 portage.txt
78371 all.txt
8438 extra.txt
Como você pode ver, ainda recebo mais de oito mil arquivos extras. Gostaria de reduzir esse número, para focar mais nos arquivos que realmente precisam ser excluídos.
Notei que extra.txt
existem milhares de arquivos em um pequeno número de diretórios, como /usr/lib64/gcc
, /usr/lib64/python2.7
e /usr/lib64/python3.2
. O /usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
arquivo, por exemplo, não está presente portage.txt
porque, em seu lugar, existe /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
. No meu sistema /usr/lib
é um link simbólico para /usr/lib64
. Parece que preciso lidar com links simbólicos para obter melhores resultados. Talvez adicionando em portage.txt
todos os arquivos que eles apontam. Eu realmente não sei como fazer isso.
Além disso, por que portage.txt
é maior que all.txt
? Não deveria ser o contrário, já que os arquivos rastreados pelo Portage são um subconjunto de todos os arquivos no meu sistema?
Finalmente, estou esquecendo qualquer outro local no find
comando que também deva ser excluído?