Защищённые версии multilib: openssl

Вопрос или проблема

Я использую Centos 6.2 x86_64

Пытаюсь установить ruby 2.1.2

---> Пакет libselinux-devel.x86_64 0:2.0.94-5.2.el6 будет установлен
--> Обработка зависимости: libsepol-devel >= 2.0.32-1 для пакета: libselinux-devel-2.0.94-5.2.el6.x86_64
--> Обработка зависимости: pkgconfig(libsepol) для пакета: libselinux-devel-2.0.94-5.2.el6.x86_64
---> Пакет zlib.i686 0:1.2.3-29.el6 будет установлен
--> Запуск проверки транзакции
---> Пакет keyutils-libs.i686 0:1.4-3.el6 будет установлен
---> Пакет libselinux.i686 0:2.0.94-5.2.el6 будет установлен
---> Пакет libsepol-devel.x86_64 0:2.0.41-4.el6 будет установлен
---> Пакет nss-softokn-freebl.i686 0:3.12.9-11.el6 будет установлен
--> Завершено разрешение зависимостей
Ошибка: Защищенные версии multilib: openssl-1.0.0-20.el6.i686 != openssl-1.0.1e-16.el6_5.7.x86_64
 Вы можете попробовать использовать --skip-broken, чтобы обойти проблему
 Вы можете попробовать выполнить: rpm -Va --nofiles --nodigest

Если я получу установленные пакеты:

[root@test tmp]# rpm -qa | grep openssl
openssl-1.0.1e-16.el6_5.7.x86_64
openssl098e-0.9.8e-17.el6.centos.x86_64

Я не видел openssl-1.0.0-20.el6.i686

Как я могу его удалить?

Ошибка означает, что вы пытаетесь установить другую версию для одной архитектуры, чем та, что у вас установлена для другой. Решение состоит в том, чтобы обновить текущую версию вашего пакета до версии, которая будет установлена для другой архитектуры. В вашем случае это означает понижение openssl-1.0.1e-16.el6_5.7.x86_64 до openssl-1.0.0-20.el6.x86_64, затем попробуйте команду еще раз, но это не оптимально. Вместо этого, возможно, у вас отключены некоторые репозитории, которые нужно включить, чтобы получить правильную версию пакета для обеих архитектур.

Ответ или решение

Прежде чем перейти к решению возникшей проблемы с библиотеками multilib, важно понимать, что именно представляет собой ошибка "Protected multilib versions". Данная ошибка возникает, когда происходит конфликт между версиями одного и того же пакета, которые устанавливаются для различных архитектур системы, например, i686 (32-бит) и x86_64 (64-бит). Эти конфликты вызывают проблемы при установке или обновлении пакетов и требуют тщательного рассмотрения и разрешения.

Теория: Понимание проблемы

CentOS — один из популярных дистрибутивов Linux, и его система управления пакетами (RPM и yum) должна справляться с установкой пакетов для различных архитектур. Multilib — это механизм, позволяющий установку 32-битных и 64-битных пакетов на одной системе, что бывает необходимо для обеспечения совместимости с некоторыми 32-битными приложениями на 64-битной архитектуре.

В вашем случае, при попытке установить Ruby 2.1.2, система обнаружила конфликт между двумя версиями openssl: openssl-1.0.0-20.el6.i686 и openssl-1.0.1e-16.el6_5.7.x86_64. Проблема заключается в том, что вы одновременно пытаетесь иметь разные версии openssl для различных архитектур, что является недопустимым в рамках одного RPM-системного окружения.

Пример: Реализация поиска решения

Из предоставленных логов видно, что установлены следующие пакеты openssl:

  1. openssl-1.0.1e-16.el6_5.7.x86_64
  2. openssl098e-0.9.8e-17.el6.centos.x86_64

Заметьте, что версия i686 очевидно не установлена на систему, или же она установлена, но не отображается в результатах rpm -qa | grep openssl. Это значит, что либо нужен дополнительный поиск, либо какой-то неявный конфликт скрыт от глаз.

Приложение: Практические шаги для решения проблемы

  1. Поиск и удаление проблемного пакета:

    Выполните более детальный поиск пакетов, чтобы удостовериться, что проблемная версия действительно существует на системе или была некорректно указана.

    rpm -qa | grep openssl
    rpm -qa | grep i686

    Если вы найдете openssl-1.0.0-20.el6.i686, его нужно удалить:

    sudo rpm -e openssl-1.0.0-20.el6.i686
  2. Проверка и обновление репозиториев:

    Убедитесь, что у вас включены все необходимые репозитории для правильного обновления пакетов. Иногда возможно, что нужные репозитории, предоставляющие необходимые версии пакетов, отключены.

    sudo yum repolist all
    # Для включения:
    sudo yum-config-manager --enable <название_репозитория>
  3. Обновление или переустановка проблемных пакетов:

    После того, как вы удалили проблемы и обеспечили доступность необходимых репозиториев, выполните установку или обновление openssl и зависимостей:

    sudo yum update openssl
    sudo yum install openssl.i686

    Если установка пакетов приводит к другим конфликтам, возможно придется использовать параметр --skip-broken, но это скорее временное решение. Лучше все-таки устранить конфликт, чтобы система оставалась стабильной.

  4. Проверка корректности установки:

    Повторно проверьте установленные пакеты и их версии, чтобы убедиться, что все установлено правильно и конфликты устранены:

    rpm -qa | grep openssl

Заключение

Процесс устранения конфликтов зависимостей multilib требует внимательности и точности, поскольку ошибки могут повлиять на стабильность всей системы. В вашем случае, уделите особое внимание совместимости версий и настройке репозиториев. Регулярное обновление системы и установка пакетов из доверенных источников значительно снижает риск повторного возникновения подобных ситуаций.

Оцените материал
Добавить комментарий

Капча загружается...