Для справки и полноты, одна команда, которая сможет достичь того, о чем изначально просили, будет выглядеть примерно так (быстро возиться вместе, но она работает)
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)