Когда я пытаюсь обновить YUM с помощью sudo yum update --exclude=kernel*,python* --skip-broken
, Я получил Multilib version problems
нашел. Защищенные мультибиблиотечные версии:
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 жалуется, что 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 каким-то образом "сломана" до yum ...
Также возможно, что ваша система была перенастроена, чтобы рассматривать только 64-битные пакеты и больше не пытаться устанавливать (или поддерживать) 32-битные ...
Вы можете попробовать некоторые утилиты из пакета yum-utils, чтобы решить эту проблему.
Вы можете его установить?
$ sudo yum install yum-utils
Если вы это сделаете, попробуйте эту команду, чтобы завершить транзакции yum, которые были прерваны (которые могли вызвать проблему в первую очередь):
$ sudo yum-complete-transaction
Вы также можете использовать package-cleanup
команда. Например, если кажется, что у вас есть повторяющиеся пакеты (для 32-разрядной версии установлено несколько версий), попробуйте следующее:
$ sudo package-cleanup --cleandupes
Надеюсь, это поможет!
Подобные проблемы обычно возникают, когда в вашей системе установлены две разные версии одного пакета.
yum list installed | grep systemd-libs
yum update systemd-libs.i686
yum reinstall 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]:
включен = 1
линия
включен = 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:
А затем включил репозиторий epel:
Затем я просто сделал yum update, так как весь php больше не будет показывать конфликты, больше нет необходимости в параметре --skip-broken ...
И это сработало!
В конце концов, я обычно отключаю remi и снова включаю epel в следующий раз. Надеюсь это поможет.
Сначала попробуйте:
yum install systemd-libs
а потом
yum update --exclude=kernel*,python* --skip-broken