Назад | Перейти на главную страницу

Установить пакет стороннего приложения на CentOS 6.4 не удается из-за отсутствия зависимостей libcrypto.so.10 и libssl.so.10

Это Канонический вопрос о проблемах двоичной совместимости OpenSSL между Red Hat Enterprise Linux (и его производными) 6.4 и 6.5.

Эта проблема относится к широкому спектру сторонних пакетов, а не только к тем, которые перечислены в исходном вопросе.

У меня была установлена ​​Percona 5.5, и я пытаюсь перейти на версию 5.6, но у меня возникают непредвиденные проблемы, и я застрял в том, как их решить.

Я выполнил инструкции на http://www.percona.com/doc/percona-server/5.6/upgrading_guide_55_56.html

И удалил пакеты 5.5, затем выполнил следующую команду для обновления:

yum install Percona-Server-server-56 Percona-Server-client-56

Я получил следующие ошибки:

Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package Percona-Server-client-56.x86_64 0:5.6.15-rel63.0.519.rhel6 will be installed
--> Processing Dependency: libssl.so.10(libssl.so.10)(64bit) for package: Percona-Server-client-56-5.6.15-rel63.0.519.rhel6.x86_64
--> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: Percona-Server-client-56-5.6.15-rel63.0.519.rhel6.x86_64
--> Processing Dependency: Percona-Server-shared-56 for package: Percona-Server-client-56-5.6.15-rel63.0.519.rhel6.x86_64
---> Package Percona-Server-server-56.x86_64 0:5.6.15-rel63.0.519.rhel6 will be installed
--> Processing Dependency: libssl.so.10(libssl.so.10)(64bit) for package: Percona-Server-server-56-5.6.15-rel63.0.519.rhel6.x86_64
--> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: Percona-Server-server-56-5.6.15-rel63.0.519.rhel6.x86_64
--> Running transaction check
---> Package Percona-Server-client-56.x86_64 0:5.6.15-rel63.0.519.rhel6 will be installed
--> Processing Dependency: libssl.so.10(libssl.so.10)(64bit) for package: Percona-Server-client-56-5.6.15-rel63.0.519.rhel6.x86_64
--> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: Percona-Server-client-56-5.6.15-rel63.0.519.rhel6.x86_64
---> Package Percona-Server-server-56.x86_64 0:5.6.15-rel63.0.519.rhel6 will be installed
--> Processing Dependency: libssl.so.10(libssl.so.10)(64bit) for package: Percona-Server-server-56-5.6.15-rel63.0.519.rhel6.x86_64
--> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: Percona-Server-server-56-5.6.15-rel63.0.519.rhel6.x86_64
---> Package Percona-Server-shared-56.x86_64 0:5.6.15-rel63.0.519.rhel6 will be installed
--> Processing Dependency: libssl.so.10(libssl.so.10)(64bit) for package: Percona-Server-shared-56-5.6.15-rel63.0.519.rhel6.x86_64
--> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: Percona-Server-shared-56-5.6.15-rel63.0.519.rhel6.x86_64
--> Finished Dependency Resolution
Error: Package: Percona-Server-server-56-5.6.15-rel63.0.519.rhel6.x86_64 (percona)
       Requires: libcrypto.so.10(libcrypto.so.10)(64bit)
Error: Package: Percona-Server-shared-56-5.6.15-rel63.0.519.rhel6.x86_64 (percona)
       Requires: libcrypto.so.10(libcrypto.so.10)(64bit)
Error: Package: Percona-Server-server-56-5.6.15-rel63.0.519.rhel6.x86_64 (percona)
       Requires: libssl.so.10(libssl.so.10)(64bit)
Error: Package: Percona-Server-shared-56-5.6.15-rel63.0.519.rhel6.x86_64 (percona)
       Requires: libssl.so.10(libssl.so.10)(64bit)
Error: Package: Percona-Server-client-56-5.6.15-rel63.0.519.rhel6.x86_64 (percona)
       Requires: libssl.so.10(libssl.so.10)(64bit)
Error: Package: Percona-Server-client-56-5.6.15-rel63.0.519.rhel6.x86_64 (percona)
       Requires: libcrypto.so.10(libcrypto.so.10)(64bit)
 You could try using --skip-broken to work around the problem
** Found 3 pre-existing rpmdb problem(s), 'yum check' output follows:
perl-DBD-MySQL-4.022-1.el6.rfx.x86_64 has missing requires of libmysqlclient.so.16()(64bit)
perl-DBD-MySQL-4.022-1.el6.rfx.x86_64 has missing requires of libmysqlclient.so.16(libmysqlclient_16)(64bit)
perl-DBD-MySQL-4.022-1.el6.rfx.x86_64 has missing requires of mysql

Я пробовал все, от переустановки openssl и openssl-devel, который установлен правильно, но все еще не работает. Любые идеи?

Я использую CentOS 6.4:

root@server01 [/]# cat /proc/version
Linux version 2.6.32-279.5.2.el6.x86_64 (mockbuild@c6b10.bsys.dev.centos.org) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Fri Aug 24 01:07:11 UTC 2012
root@server01 [/]#

Основная причина этой проблемы заключается в том, что Red Hat нарушила двоичную совместимость своих пакетов OpenSSL между 6.4 и 6.5, что они обещали, что не будут делать.

Решить эту проблему просто, но в зависимости от приложений, которые вы, возможно, развернули, может потребоваться крик на поставщиков ваших приложений. Обязательно зарезервируйте большую часть своего гнева для представителя Red Hat (если у вас есть RHEL).


Причина

Red Hat обновила версию OpenSSL в EL6 с 1.0.0 до 1.0.1 в обновлении 6.5, чтобы решить запрос функции летней давности добавить поддержку криптографии на эллиптических кривых. Этот пакет больше не является двоично-совместимым, и программы, которые были созданы для OpenSSL 1.0.0, должны быть перекомпилированы из исходного кода в 1.0.1.

Если, конечно, вы не устанавливаете сторонние приложения, что делают почти все. Их тоже нужно перекомпилировать, и на данный момент большинство третьих лиц сделали это и создали новые пакеты для версии 6.5. Именно такие посылки сегодня обычно отправляют третьи стороны.

разрешение

Определите все затронутые сторонние пакеты и обратитесь к сторонним поставщикам пакетов за обновлениями. Как только обновления станут доступны для всех пакетов, вы можете безопасно обновить свою систему до версии 6.5, одновременно установив обновления сторонних пакетов, что завершит решение проблемы.

Для пакетов, установленных через диспетчер пакетов и репозитории yum, это тривиально; простая попытка обновления и возможность сделать это без проблем с зависимостями означает, что пакеты готовы.

Для пакетов, установленных вручную, вам нужно будет проверить их самостоятельно и применить все обновления, предоставленные поставщиками. Вы также должны оказать давление на этих поставщиков, чтобы они предоставили надлежащие пакеты RPM и репозитории yum в этих случаях.

Большинство пользователей могут выполнить обновление до 6.5 с помощью такой команды, как:

yum --disableexcludes=all --obsoletes update

Пользователи RHEL, которые установили конкретный второстепенный выпуск, должны сначала установить 6.5 в качестве целевого выпуска перед запуском вышеуказанного обновления:

subscription-manager release --set=6.5

На этом этапе у вас должна быть возможность установить сторонние пакеты, которые вы пытались установить.


Другие вопросы

Пользователи CentOS и других клонов RHEL на некоторых VPS или облачных провайдерах могут обнаружить, что они не могут выполнить обновление до 6.5. В yum сообщит, что пакеты не отмечены для обновления. До сих пор я видел это в Windows Azure и некоторых недорогих VPS-провайдерах.

В этих случаях поставщик используемого образа CentOS изменил /etc/yum.repos.d/CentOS-Base.repo на изображении, чтобы указать на репозитории, отличные от официальных зеркал CentOS.

Эту проблему можно решить либо вручную отредактировав файл репо для восстановления официальных зеркал CentOS, либо путем поиска официального centos-release RPM на зеркале CentOS и его переустановка. Например (этот URL-адрес годен только сегодня и может устареть позже; сначала проверьте свое зеркало):

yum update http://mirror.centos.org/centos/6/os/x86_64/Packages/centos-release-6-5.el6.centos.11.2.x86_64.rpm

Вы можете установить PS 5.6 после обновления openssl до openssl-1.0.1e-15.el6.x86_64.rpm

Для версии 6.4 у нас (я работаю в Percona) также есть несколько доступных пакетов: http://www.percona.com/downloads/Percona-Server-5.5-centos-6.4/