Когда я пытаюсь обновить YUM с помощью sudo yum update --exclude = kernel *, python * --skip-broken
, я получаю Обнаружены проблемы с версией Multilib
. Защищенные мульти-версии:
systemd-libs-219-30.el7_3.7.x86_64! = Systemd-libs-219-30.el7_3.6.i686
.
Как я могу решить эту проблему? У меня CentOS 7.3, и моя архитектура - x86_64.
Fout: Multilib version problems found. This often means that the root
cause is something else and multilib version checking is just
pointing out that there is a problem. Eg.:
1. You have an upgrade for systemd-libs which is missing some
dependency that another package requires. Yum is trying to
solve this by installing an older version of systemd-libs of the
different architecture. If you exclude the bad architecture
yum will tell you what the root cause is (which package
requires what). You can try redoing the upgrade with
--exclude systemd-libs.otherarch ... this should give you an error
message showing the root cause of the problem.
2. You have multiple architectures of systemd-libs installed, but
yum can only see an upgrade for one of those architectures.
If you don't want/need both architectures anymore then you
can remove the one with the missing update and everything
will work.
3. You have duplicate versions of systemd-libs installed already.
You can use "yum check" to get yum show these errors.
...you can also use --setopt=protected_multilib=false to remove
this checking, however this is almost never the correct thing to
do as something else is very likely to go wrong (often causing
much more problems).
Beschermde multilib-versies: systemd-libs-219-30.el7_3.7.x86_64!=systemd-libs-219-30.el7_3.6.i686
Сначала попробуйте:
yum install systemd-libs
, а затем
yum update --exclude=kernel*,python* --skip-broken
Подобные проблемы обычно возникают, когда в вашей системе установлены две разные версии одного пакета.
Yum жалуется, что 64-битная и 32-битная версии RPM для systemd-libs в вашей системе не совпадают.
Вы увидите, что у него версия 219- 30.el7_3. 7 для x86_64 (64-разрядная версия) и версия 219-30.el7_3. 6 для i686 (32-разрядная версия).
Вы можете проверить версию пакет для каждой архитектуры в вашей системе с помощью этой команды:
$ rpm -q systemd-libs
systemd-libs-219-30.el7_3.6.i686
systemd-libs-219-30.el7_3.7.x86_64
Посмотрите, видите ли вы там какую-либо аномалию, например наличие двух версий systemd-libs для i686 ...
Если версии совпадают, то проблема может быть этот yum пытается обновить версию x86_64, но оставляет версию i686 позади.
Возможно, ваш - skip-broken
каким-то образом запускает это, если версия пакета i686 каким-то образом " broken "to yum ...
Также возможно, что ваша система была перенастроена, чтобы рассматривать только 64-битные пакеты и больше не пытаться устанавливать (или поддерживать) 32-битные ...
Вы можете попробовать некоторые утилиты из пакета yum-utils к проблемам
Можете ли вы установить его?
$ sudo yum install yum-utils
Если да, попробуйте эту команду, чтобы завершить прерванные транзакции yum (которые могли быть причиной проблемы):
$ sudo yum-complete-transaction
Вы также можете использовать команда очистки пакетов
. Например, если кажется, что у вас есть повторяющиеся пакеты (для 32-разрядной версии установлено несколько версий), попробуйте следующее:
$ sudo package-cleanup --cleandupes
Надеюсь, это поможет!
список конфет установлен | grep systemd-libs
yum update systemd-libs.i686
yum переустановите systemd-libs.x86_64
, а затем перезагрузите систему
У меня была аналогичная проблема, и я решил ее, удалив повторяющиеся версии нескольких пакетов:
package-cleanup --dupes
Затем удалите все новые версии из rdmdb
rpm -e --justdb --nodeps <package-version>
Затем yum upgrade
снова работает и устанавливает все ожидающие обновления.
У меня была точно такая же проблема. Centos 7, последняя версия, установленная с установленными репозиториями Epel и Remi. А потом я попытался обновиться, как всегда, зайдя в: /etc/yum.repos.d а в файле epel.repo в [epel] можно найти:
enabled = 1
строка
enabled = 1
должна быть установлена на 1
В другом файле:
remi.repo
Точно такая же строка должна быть установлена в 0.
Таким образом, мы выбираем обновления в репозитории epel, а не в репозитории remi, чтобы избежать конфликтов в версиях PHP.
Итак, при включенном репозитории epel и отключенном репозитории remi возникла ошибка. Я выполнил команду:
yum --skip-broken update
Обратите внимание, что мне нужно использовать --skip-broken, чтобы избежать ошибок в обновлениях PHP, поскольку они являются более новой версией, установленной из remi.
Если у меня нет двух системных библиотек, только одна x86_64, я думал, что это проблема зависимости репо.
Итак, вместо того, чтобы сначала использовать обновление с репозиторием Epel, на этот раз я сделал сначала обновление с репозиторием remi. Все прошло хорошо ... никаких ошибок, обновление позаботилось о ядре и других обновлениях из репозитория обновлений Centos, как обычно, а remi позаботился о материалах PHP. После этого я отключил remi repo:
А затем включил репозиторий epel:
Затем я просто сделал yum update, так как весь php больше не показывал конфликтов, больше не было необходимости в параметре --skip-broken ...
И это сработало!
В конце концов, я обычно отключаю remi и снова включаю epel в следующий раз. Надеюсь это поможет.