ЭтоКанонический вопросо проблемах двоичной совместимости 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 ([email protected]) (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 [/]#
решение1
Основная причина этой проблемы заключается в том, что 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
решение2
Вы можете установить 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/