A instalação de um pacote de aplicativos de terceiros no CentOS 6.4 falha devido à falta de dependências libcrypto.so.10 e libssl.so.10

16

This is a Canonical Question about OpenSSL binary compatibility issues between Red Hat Enterprise Linux (and its derivatives) 6.4 and 6.5.

This issue applies to a wide variety of third party packages, not only the ones listed in the original question.

Eu tinha o Percona 5.5 instalado e estou tentando atualizar para o 5.6, mas estou com problemas inesperados e estou preso em como resolvê-los.

Eu segui as instruções no link

E removemos os pacotes 5.5 e, em seguida, executamos o seguinte comando para atualizar:

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

Os erros que recebi de volta são:

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

Eu tentei de tudo, desde reinstalar o openssl e o openssl-devel, que está instalado corretamente, mas ainda não funciona. Alguma idéia?

Estou rodando o 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 [/]#
    
por user2643870 22.12.2013 / 22:25

2 respostas

14

A causa deste problema é que a Red Hat quebrou a compatibilidade binária de seus pacotes OpenSSL entre 6.4 e 6.5, algo que eles prometeu que eles não fariam .

Resolver esse problema é simples, mas, dependendo dos aplicativos que você possa ter implantado, pode levar alguns gritos aos fornecedores de aplicativos. Certifique-se de reservar a maior parte de sua ira para seu representante da Red Hat (se você tiver o RHEL).

Causa

A Red Hat atualizou a versão do OpenSSL no EL6 de 1.0.0 para 1.0.1 na atualização 6.5 , a fim de resolver um pedido de recurso com anos de idade para adicionar suporte a criptografia criptográfica elíptica. Este pacote não é mais compatível com binários, e os programas que foram criados contra o OpenSSL 1.0.0 devem ser reconstruídos a partir do código-fonte em relação à 1.0.1.

A menos que você esteja instalando aplicativos de terceiros, é claro, o que quase todo mundo faz. Eles também precisam ser recompilados e, nesse ponto, a maioria dos terceiros o fez e construíram novos pacotes contra o 6.5. São esses pacotes que os terceiros geralmente enviam hoje.

Resolução

Identifique todos os pacotes de terceiros afetados e entre em contato com os fornecedores de pacotes de terceiros para obter atualizações. Depois que as atualizações estiverem disponíveis para todos os pacotes, você poderá atualizar seu sistema com segurança para o 6.5, instalando as atualizações de pacotes de terceiros ao mesmo tempo, o que completará a resolução.

Para pacotes instalados através do gerenciador de pacotes e repositórios yum, isso é trivial; simplesmente tentar atualizar e ser capaz de fazer isso sem problemas de dependência significa que os pacotes estão prontos.

Para pacotes instalados manualmente, você precisará verificá-los você mesmo e aplicar as atualizações fornecidas pelos fornecedores. Você também deve pressionar esses fornecedores para fornecer pacotes RPM e repositórios yum apropriados nesses casos.

A maioria dos usuários pode atualizar para 6.5 com um comando como:

yum --disableexcludes=all --obsoletes update

Os usuários do RHEL que definiram uma versão secundária específica devem primeiro definir a 6,5 como destino de lançamento antes de executar a atualização acima:

subscription-manager release --set=6.5

Neste ponto, você poderá instalar o (s) pacote (s) de terceiros que estava tentando instalar.

Outras questões

Os usuários do CentOS e outros clones do RHEL em determinados VPS ou provedores de nuvem podem achar que não podem atualizar para o 6.5. O comando yum indicará que nenhum pacote está marcado para atualização. Até agora eu vi isso no Windows Azure e em alguns provedores de VPS de baixo custo.

Nesses casos, o provedor da imagem do CentOS em uso modificou /etc/yum.repos.d/CentOS-Base.repo na imagem para apontar para outros repositórios além dos espelhos oficiais do CentOS.

Isso pode ser resolvido editando manualmente o arquivo repo para restaurar os espelhos oficiais do CentOS, ou localizando o oficial centos-release RPM em um espelho do CentOS e reinstalando-o. Por exemplo (este URL só é bom hoje e pode ficar desatualizado mais tarde; verifique primeiro o seu espelho):

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

Você pode instalar o PS 5.6 depois de fazer o upgrade do openssl para o openssl-1.0.1e-15.el6.x86_64.rpm

Para o 6.4 nós (eu trabalho para o Percona) também tenho alguns pacotes customizados disponíveis: link

    
por 31.01.2014 / 02:23