Per riferimento e completezza, un comando che sarebbe in grado di ottenere ciò che inizialmente richiesto sarebbe qualcosa di simile (rapidamente armeggiato insieme, ma funziona)
rpm -qf $(rpm -Va 2>&1 | grep -vE '^$|prelink:' | sed 's|.* /|/|') | sort -u
Ecco una breve spiegazione delle varie parti:
rpm -Va 2>&1
Eseguirà una verifica completa su tutti i pacchetti attualmente installati / elencati nel database rpm. Reindirizzerà anche stderr a stdout, poiché qui sulla mia scatola alcuni errori causati dall'attivazione di prelink sono riportati come errori ma li vogliamo su stdout.
Attenzione: deve essere eseguito come root per poter controllare tutti i file, le autorizzazioni e il proprietario / gruppo.
grep -vE '^$|prelink:'
Sopprime visualizzazione delle linee emtpy e tali degli errori prelink (esempio di un tale errore:
prelink: /tmp/#prelink#.B14JBi: Recorded 10 dependencies, now seeing -1
)
sed 's|.* /|/|')
filtrerà l' rpm -Va
output per mostrare solo i nomi dei file
rpm -qf $()
eseguirà una query per tutti i nomi di file ottenuti in quali pacchetti sono contenuti e genererà il nome e la versione del pacchetto
| sort -u
sopprimerà le combinazioni duplicate di nome / versione del pacchetto.
Complessivamente riceverai un elenco di pacchetti che non hanno superato la verifica.
rpm -Va
potrebbe ancora mostrare alcuni problemi non correlati, poiché controlla anche le dipendenze tra i pacchetti, che potrebbe essere necessario sopprimere aggiungendo --nodeps
.
yum reinstall $(rpm -qa --qf="%{N}-%{V}\n" | sort)