En mi sistema tengo archivos que no pertenecen a ningún paquete, son míos o de programas compilados instalados make install. ¿Cómo puedo encontrar todos los archivos que no pertenecen a ningún paquete?
fuente
En mi sistema tengo archivos que no pertenecen a ningún paquete, son míos o de programas compilados instalados make install. ¿Cómo puedo encontrar todos los archivos que no pertenecen a ningún paquete?
En /var/lib/dpkg/infoson .listarchivos de texto que lista todos los archivos contenidos en cada package¹ instalado a través del gestor de paquetes de Debian.
Encontrar todos los archivos en el sistema de archivos que no coincidan con ninguna entrada se puede lograr con algo ingenuo como este:
find / -xdev -type f \( -exec grep -xq "{}" /var/lib/dpkg/info/*.list \; -or -print \)
Obviamente, esto llevará mucho tiempo ya que se escaneará todo el sistema de archivos. Si utiliza diferentes particiones para los directorios del sistema (como /usro /var), especifíquelas después de la inicial /.
Advertencia: Eso no incluye archivos creados por scripts de paquetes. Por ejemplo:
/etc/hosts.allowno aparece en ninguna parte, pero podría provenir de lo libwrap0que posiblemente lo creó, si ese archivo no existía en el momento de la instalación del paquete..pycarchivos (bibliotecas compiladas de Python), .elcarchivos ( bibliotecas compiladas de Emacs Lisp), etc.
find: argument list too long/var/lib/dpkg/info/*.list: la consulta anterior debería reescribirse bajo algún otro principio.Una versión más eficiente de la solución de @ Patrice , utilizando un shell con soporte para la sustitución de procesos (
bash, AT&Tksh,zsh):Al igual que la solución de Patrice, supone que ninguna ruta de archivo contiene caracteres de nueva línea.
fuente
locatebase de datos sería más rápido que ejecutarlofind?locate \* | grep -v "^/home/"- también tiene la ventaja de buscar/boot/y otras particiones del sistema.Dado que etiquetó, su pregunta con
debianla opción obvia que no se ha mencionado aún es usarlacruft-ngsi no requiere flexibilidad ocruftsi no desea buscar en todo el sistema / ubicaciónb.fuente
También puede usar la sustitución de procesos &
grep&find. Tenga en cuenta quegrepse usa dos veces para filtrar solo las rutas relevantes/var/lib/dpkg/infopara ahorrar unos segundos si está buscando archivos en un determinado directorio.fuente