Par souci de référence et d'exhaustivité, une commande qui serait en mesure de réaliser ce qui était initialement demandé serait quelque chose comme ça (rapidement bricolé, mais ça marche)
rpm -qf $(rpm -Va 2>&1 | grep -vE '^$|prelink:' | sed 's|.* /|/|') | sort -u
Voici une courte explication des différentes parties:
rpm -Va 2>&1
Exécute une vérification complète de tous les packages actuellement installés / répertoriés dans la base de données rpm. Il redirigera également stderr vers stdout, car ici sur ma boîte, certaines erreurs causées par l'activation de la préconnexion sont signalées comme des erreurs, mais nous les voulons sur stdout.
Attention: doit être exécuté en tant que root pour pouvoir vérifier tous les fichiers, les autorisations et le propriétaire / groupe.
grep -vE '^$|prelink:'
supprime l' affichage des lignes Emtpy et ceux des erreurs prelink (exemple d'une telle erreur:
prelink: /tmp/#prelink#.B14JBi: Recorded 10 dependencies, now seeing -1
)
sed 's|.* /|/|')
filtrera la rpm -Va
sortie pour n'afficher que les noms de fichiers
rpm -qf $()
recherchera tous les noms de fichiers obtenus dans lesquels les packages sont contenus, et affichera le nom et la version du package
| sort -u
supprimera les combinaisons nom / version de package en double.
Au total, vous recevrez une liste de packages dont la vérification a échoué.
rpm -Va
peut encore montrer des problèmes non liés, car il vérifie également les dépendances entre les packages, qui peuvent devoir être supprimées en ajoutant --nodeps
.
yum reinstall $(rpm -qa --qf="%{N}-%{V}\n" | sort)