Для довідки та повноти, одна команда, яка змогла б досягти того, що спочатку просили, - це щось подібне (швидко спільно, але воно працює)
rpm -qf $(rpm -Va 2>&1 | grep -vE '^$|prelink:' | sed 's|.* /|/|') | sort -u
Ось коротке пояснення різних частин:
rpm -Va 2>&1
Запустить повну перевірку для всіх пакетів, які в даний час встановлені / перераховані в базі даних rpm. Він також буде перенаправляти stderr на stdout, оскільки тут у моєму вікні деякі помилки, які викликані включенням попереднього посилання, повідомляються як помилки, але ми хочемо, щоб вони були на stdout.
Увага: потрібно запускати як root, щоб мати можливість перевіряти всі файли, дозволи та власника / групи.
grep -vE '^$|prelink:'
Пригнічує висновок ліній і порожня такого з Prelink помилок (приклад такої помилки:
prelink: /tmp/#prelink#.B14JBi: Recorded 10 dependencies, now seeing -1
)
sed 's|.* /|/|')
буде фільтрувати rpm -Va
вихід, показуючи лише імена файлів
rpm -qf $()
буде запитувати всі отримані імена файлів, в яких пакет міститься, і виводить ім'я та версію пакета
| sort -u
придушить дублюючі комбінації імен пакета / версії.
Всього ви отримаєте список пакунків, які не вдалися до перевірки.
rpm -Va
Можливо, все ще з’являться деякі непов'язані проблеми, оскільки він також перевіряє залежності між пакетами, які, можливо, потрібно буде придушити додаванням --nodeps
.
yum reinstall $(rpm -qa --qf="%{N}-%{V}\n" | sort)