Me gustaría obtener una lista de todos los archivos en mi sistema Gentoo Linux que no fueron instalados por el administrador de paquetes (Portage). Esto se debe a que quiero mantener mi sistema lo más limpio posible, eliminando todos los archivos inútiles que están por ahí.
Déjame decirte lo que he intentado hasta ahora. En primer lugar, genero la lista de todos los archivos que pertenecen a algún paquete rastreado por Portage:
equery files "*" | sort | uniq > portage.txt
Luego genero la lista de todos los archivos en mi sistema, excepto aquellos que no me importan:
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, obtengo la lista de todos los archivos que Portage no rastrea:
comm -13 portage.txt all.txt > extra.txt
Algunas estadísticas:
wc -l portage.txt all.txt extra.txt
127724 portage.txt
78371 all.txt
8438 extra.txt
Como puede ver, todavía recibo más de ocho mil archivos adicionales. Me gustaría reducir ese número, para centrarme más en los archivos que realmente necesitan ser eliminados.
Me di cuenta de que extra.txt
hay miles de archivos en una pequeña cantidad de directorios, como /usr/lib64/gcc
, /usr/lib64/python2.7
y /usr/lib64/python3.2
. El /usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
archivo, por ejemplo, no está portage.txt
porque, en su lugar, lo hay /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
. En mi sistema /usr/lib
hay un enlace simbólico a /usr/lib64
. Parece que necesito manejar adecuadamente los enlaces simbólicos para obtener mejores resultados. Quizás agregando portage.txt
todos los archivos a los que apuntan. Realmente no sé cómo hacer eso.
Además, ¿por qué portage.txt
es más grande que all.txt
? ¿No debería ser lo contrario ya que los archivos rastreados por Portage son un subconjunto de todos los archivos en mi sistema?
Finalmente, ¿estoy olvidando alguna otra ubicación en el find
comando que también deba excluirse?