¿Hay alguna manera de averiguarlo?todolos archivos en un sistema determinado queno lo fueron¿Instalado a través de RPM? Entiendo que puedo hacer esto por fuerza bruta usando algo como rpmquery -f
un script que recorre todos los archivos en el sistema de archivos, sin embargo, me preguntaba si hay alguna forma estándar de hacer esto para sistemas basados en RPM (específicamente Fedora, que uso en hogar). Dado que esto es para Fedora, está bien usarlo yum
o dnf
resolverlo.
Si no existe una forma estándar de hacerlo, ¿alguien conoce algunos scripts preexistentes para hacerlo? No quiero reinventar la rueda si no es necesario.
PDHay otra pregunta similar a esta., pero se trata de Gentoo y Portage, por lo que no es totalmente relevante.
Respuesta1
Un poco tarde para la fiesta, pero espero que a alguien le resulte útil:
find /usr/ -exec /bin/sh -c 'rpm -qf -- "$1" >/dev/null 2>&1 || echo "$1"' find_sh {} \;
Este comando rastrea el sistema de archivos y se ejecuta rpm -qf
en él. rpm -qf
imprime el paquete correspondiente a un archivo y, afortunadamente, tiene un valor de retorno de 0 si encuentra uno y 1 en caso contrario.
Si eres valiente, puedes vincular la salida a | xargs rm -f
, pero personalmente yo no sería tan valiente. Resulta que hay muchas cosas que /usr
en realidad no pertenecen a nada.
Respuesta2
Porhttps://superuser.com/questions/555918/cómo-listo-todos-los-archivos-que-no-propiedad-de-cualquier-paquete-en-un-sistema-basado-rpm, el siguiente comando es una base sólida para lo que necesita:
comm -13 <(rpm -qla | sort) <(find / -type f | sort)
Personalice aún más filtrando el comando de búsqueda por directorios de interés (ya sea especificando la lista de directorios en lugar de ( /
por ejemplo /{usr,bin}
) o excluyendo carpetas como /proc
,, y ./dev
/home
/tmp
Respuesta3
Hasta donde yo sé, esto no es posible con algún tipo de comando dedicado, solo mediante una pequeña secuencia de comandos.TL;DR: consulte los enlaces en la parte inferior.Y para sistemas basados en rpm u otros administradores de paquetes basados en binarios, esto no tiene mucho sentido. Estos administradores de paquetes suelen ser máquinas basadas en estados destinadas a realizar un seguimiento de las cosas que ellos mismos instalan, y no a saber todo lo que los usuarios introducen en el sistema "a espaldas" del administrador de paquetes.
¿Dónde trazaría la línea para los archivos que no pertenecen a archivos rpm? ¿Qué pasa con los archivos temporales (piense en /tmp y /var/tmp) o cachés (piense en /var/cache) o archivos creados por un usuario (/home o /srv u otros puntos de montaje definidos por el usuario)?
Para las distribuciones basadas en código fuente, podría tener sentido ofrecer esa funcionalidad si el caso de uso las limita aFHSdirectorios utilizados por paquetes de "sistema" como /usr, /bin, /lib y similares, a diferencia de, por ejemplo, /usr/local u /opt para software de terceros.
Consulte las siguientes preguntas similares para que los scriptlets hagan lo que solicitó: