原因

原因

這是一個規範問題關於 Red Hat Enterprise Linux(及其衍生版本)6.4 和 6.5 之間的 OpenSSL 二進位相容性問題。

此問題適用於各種第三方軟體包,而不僅僅是原始問題中列出的軟體包。

我安裝了 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 破壞了 6.4 和 6.5 之間 OpenSSL 軟體包的二進位相容性,這導致他們承諾他們不會做

解決這個問題很簡單,但根據您可能部署的應用程序,可能需要對應用程式供應商大喊大叫。請務必將大部分憤怒留給您的紅帽代表(如果您有 RHEL)。


原因

Red Hat升級了EL6中OpenSSL的版本6.5 更新中從 1.0.0 到 1.0.1,為了解決已有多年歷史的功能請求新增橢圓曲線密碼支援。該軟體包不再是二進位相容的,針對 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

此時,您應該可以安裝您嘗試安裝的第三方軟體包。


其他事宜

某些 VPS 或雲端提供者上的 CentOS 和其他 RHEL 克隆的用戶可能會發現他們無法更新到 6.5。該yum命令將表明沒有軟體包被標記為更新。到目前為止,我已經在 Windows Azure 和一些低階 VPS 提供者上看到過這種情況。

在這些情況下,所使用的 CentOS 映像的提供者已/etc/yum.repos.d/CentOS-Base.repo在映像中進行了修改,以指向官方 CentOS 映像以外的儲存庫。

可以透過手動編輯 repo 檔案來恢復官方 CentOS 鏡像,或在centos-releaseCentOS 映像上找到官方 RPM 並重新安裝來解決此問題。例如(此 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

將 openssl 升級到 openssl-1.0.1e-15.el6.x86_64.rpm 後即可安裝 PS 5.6

對於 6.4,我們(我在 Percona 工作)還提供了一些客製化的軟體包: http://www.percona.com/downloads/Percona-Server-5.5-centos-6.4/

相關內容