В моем случае я обнаружил, что что-то пошло не так, и многие пакеты были обновлены без удаления более старых версий. Попытки восстановить базу данных RPM не решили проблему.
Одно из работающих решений - просто удалить старую версию и переустановить более новую версию.
Глядя на вывод ошибок, каждая строка в основном говорит, что пакет обновления является дубликатом с предыдущим пакетом, то есть:
kernel-headers-2.6.32-431.17.1.el6.x86_64 is a duplicate with kernel-headers-2.6.32-358.23.2.el6.x86_64
Следующее, кажется, работает для меня:
rpm --erase --nodeps --noscript kernel-headers-2.6.32-358.23.2.el6.x86_64
Команда указывает RPM удалить конкретный предыдущий пакет без удаления каких-либо зависимостей или запуска каких-либо сценариев, связанных с задачей.
Далее необходимо переустановить пакет:
yum reinstall kernel-headers
На этот раз нет необходимости указывать точную версию пакета, поскольку yum будет искать самую последнюю версию и переустанавливать ее.
Yum будет выводить результат своей операции Yum Check при каждом запуске. Продолжайте делать это, пока в списке больше не будет повторяющихся пакетов.
Обратите внимание, что вы можете запросить базу данных RPM напрямую. Например, если вы видите много сообщений, содержащих строку glibc, вы можете получить простой список пакетов, в именах которых есть эта строка, например:
rpm -qa | grep glibc | sort
Который может производить что-то вроде:
glibc-2.17-157.el7_3.5.x86_64
glibc-common-2.17-157.el7_3.4.x86_64
glibc-common-2.17-157.el7_3.5.x86_64
glibc-devel-2.17-157.el7_3.5.x86_64
glibc-headers-2.17-157.el7_3.5.x86_64
Теперь более очевидно, что предыдущая версия glibc-common должна быть удалена:
rpm --erase --nodeps --noscript glibc-common-2.17-157.el7_3.4.x86_64
yum reinstall glibc-common