Existe-t-il un moyen de découvrir tous les fichiers d'un système donné qui n'ont pas été installés via RPM? Je comprends que je peux le forcer moi-même en utilisant quelque chose comme rpmquery -f
dans un script qui parcourt tous les fichiers du système de fichiers, mais je me demandais s'il existe un moyen standard de le faire pour les systèmes basés sur RPM (en particulier Fedora, que j'utilise à maison). Depuis cela pour Fedora, il est bon d'utiliser yum
ou dnf
de comprendre cela.
S'il n'y a pas de moyen standard de le faire, quelqu'un connaît-il des scripts préexistants pour le faire? Je ne veux pas réinventer la roue si je n'en ai pas besoin.
PS Il y a une autre question similaire à celle-ci , mais elle concerne Gentoo et Portage, donc elle n'est pas totalement pertinente.
Réponses:
un peu tard pour la fête, mais j'espère que quelqu'un trouvera cela utile:
Cette commande parcourt
rpm -qf
le système de fichiers et s'exécute dessus.rpm -qf
imprime le package correspondant pour un fichier, et heureusement a une valeur de retour de 0 s'il en trouve un et 1 sinon.Si vous êtes courageux, vous pouvez lier la sortie à
| xargs rm -f
, mais personnellement, je ne serais pas si courageux. Il s'avère qu'il y a beaucoup de choses dans / usr qui n'appartiennent vraiment à rien.la source
Pour autant que je sache, cela n'est pas possible avec une sorte de commande dédiée, uniquement via un peu de script. TL; DR - voir les liens en bas. Et pour les systèmes basés sur rpm ou autres gestionnaires de packages binaires, cela n'a pas beaucoup de sens. De tels gestionnaires de paquets sont généralement des machines basées sur l'état destinées à garder une trace des choses qu'ils installent eux-mêmes, et à ne pas savoir tout ce que les utilisateurs glissent sur le système "derrière le dos" du gestionnaire de paquets.
Où traceriez-vous la ligne pour les fichiers qui n'appartiennent pas aux fichiers rpm? Qu'en est-il des fichiers temporaires (think / tmp et / var / tmp) ou des caches (think / var / cache) ou des fichiers créés par un utilisateur (/ home ou / srv ou d'autres points de montage définis par l'utilisateur).
Pour les distributions basées sur la source, il pourrait être judicieux d'offrir cette fonctionnalité si le cas d'utilisation les limite aux répertoires FHS utilisés par les packages "système" comme / usr, / bin, / lib et similaires, par exemple par exemple / usr / local ou / optez pour un logiciel tiers.
Consultez les questions similaires suivantes pour que les scriptlets fassent ce que vous avez demandé:
la source
Par /superuser/555918/how-do-i-list-all-the-files-not-OWN-by-any-package-in-a-rpm-based-system , la commande suivante est une base solide pour ce dont vous avez besoin:
comm -13 <(rpm -qla | sort) <(find / -type f | sort)
Personnaliser plus en filtrant la commande find aux répertoires d'intérêt (spécifier la liste des répertoires au lieu de
/
(par exemple/{usr,bin}
) ou à l' exclusion des dossiers comme/proc
,/dev
,/home
et/tmp
.la source
comm -13 <(rpm -qla | sort | uniq) <(find / -xdev \( -type f -o -type d -o -type l \) | sort)
cela répertorie (-l
) les fichiers dans tous les packages installés (rpm -qa
) et les trie puis supprime les doublons (car certains répertoires sont fournis par plusieurs packages). Il trouve également tous les fichiers sur la partition racine (sans aller dans d'autres systèmes de fichiers --xdev
) et retourne tous les fichiers, répertoires et liens symboliques (\( -type f -o -type d -o -type l \)
). Il utilise ensuitecomm
pour comparer, en ignorant les entrées uniquement dans la liste rpm (-1
) et les entrées dans les deux (-3
).sudo
sur la recherche pour pouvoir trouver des fichiers (en particulier sous / etc) auxquels seul root peut accéder.