¿Cómo puedo obtener una lista de archivos en mi computadora que no son "propiedad" de ningún paquete?

9

Estoy pensando en escribir un guión que haga esto:

  • Revisa cada archivo en / usr / lib
  • Hace una dpkg -sbúsqueda en cada archivo.
  • Informa una lista de archivos "huérfanos" que no pertenecen a ningún paquete .deb.

La idea es que con el tiempo, he instalado una gran cantidad de make installsoftware y me gustaría obtener una lista de los archivos sobrantes del software instalado manualmente que he eliminado desde entonces.

Ken Kinder
fuente
En el futuro, asegúrese de que todo lo que instale fuera del sistema de empaque se instale en / usr / local u / opt. Entonces tendrás una separación clara.
geirha

Respuestas:

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

Te lo advierto ahora: es lento.

Oli
fuente
3
Es más rápido:find /usr/lib -type f -exec dpkg -S {} + | grep 'no path found'
αғsнιη
1
No hay desacuerdo allí. Oli de 2012 no fue tan bueno como el de 2015. Lo actualicé para que solo devuelva una lista de archivos.
Oli
3

Puedes ejecutar el siguiente comando

join -t '' -v1 <(find /usr/lib | sort) \
               <(grep -h /usr/lib /var/lib/dpkg/info/*.list | sort -u)

que comparan la lista de archivos /usr/libcon la lista de archivos presentes en al menos un archivo en /var/lib/dpkg/info/<NAME>.list(los archivos utilizados por dpkg -S). La -v1opción informaría los archivos presentes en la primera lista pero no en la segunda.

En mi máquina, esta lista de diferencias da más de 5000 visitas, por lo que dudo que pueda ser de alguna ayuda.

enzotib
fuente
Funciona muy rápido para mí.
user1202136
2
sudo aptitude install cruft
man cruft
sudo addgroup cruft
sudo chmod g+rwx /var/spool/cruft
sudo chown root:cruft /var/spool/cruft
sudo addgroup $USER cruft
cruft -r cruftreport
sudo chown root:root /var/spool/cruft
less cruftreport
usuario2697383
fuente
1
Me gusta el contenido man cruft, ¡pero un poco más de explicación sobre cruft y por qué lo recomiendas sería bueno! : P ;-)
Fabby
Esto no funcionará, más precisamente: (1) "chown: operando faltante después de 'root: cruft'". Necesita escribir: "sudo chown root: cruft / var / spool / cruft" en su lugar (2) "sudo addgroup $ USER cruft" requerirá cerrar / abrir un nuevo shell (relogin). (3) Llamar a cruft requerirá "sudo cruft" si desea inspeccionar todos los directorios.
muenalan