Aus Gründen der Referenz und Vollständigkeit wäre ein Befehl, der in der Lage wäre, das zu erreichen, was ursprünglich verlangt wurde, so etwas (schnell zusammengewürfelt, aber es funktioniert).
rpm -qf $(rpm -Va 2>&1 | grep -vE '^$|prelink:' | sed 's|.* /|/|') | sort -u
Hier ist eine kurze Erklärung der verschiedenen Teile:
rpm -Va 2>&1
Führt eine vollständige Überprüfung aller derzeit installierten / in der rpm-Datenbank aufgelisteten Pakete durch. Es wird auch stderr zu stdout umleiten, da hier auf meiner Box einige Fehler, die durch das Aktivieren von prelink verursacht werden, als Fehler gemeldet werden, aber wir wollen sie auf stdout haben.
Achtung: Muss als root ausgeführt werden, um alle Dateien, Berechtigungen und Besitzer / Gruppe überprüfen zu können.
grep -vE '^$|prelink:'
Unterdrückt die Anzeige von emtpy Linien und solche der prelink Fehler (Beispiel für einen solchen Fehler:
prelink: /tmp/#prelink#.B14JBi: Recorded 10 dependencies, now seeing -1
)
sed 's|.* /|/|')
filtert die rpm -Va
Ausgabe so, dass nur Dateinamen angezeigt werden
rpm -qf $()
fragt nach allen erhaltenen Dateinamen, in denen diese enthalten sind, und gibt den Paketnamen und die Version aus
| sort -u
unterdrückt doppelte Kombinationen von Paketnamen und -version.
Insgesamt erhalten Sie eine Liste der Pakete, deren Überprüfung fehlgeschlagen ist.
rpm -Va
zeigt möglicherweise immer noch einige nicht verwandte Probleme, da auch Abhängigkeiten zwischen Paketen überprüft werden, die möglicherweise durch Hinzufügen unterdrückt werden müssen --nodeps
.
yum reinstall $(rpm -qa --qf="%{N}-%{V}\n" | sort)