1. 程式人生 > >yum安裝net-snmp引發的libssl.so.10失效導致yum不可用問題

yum安裝net-snmp引發的libssl.so.10失效導致yum不可用問題

yum作為一個解決包之間依賴關係的安裝工具,本來不應該引發更多的依賴問題。但是在實際操作中還是碰上了安裝報錯導致yum自身不可用的情況。
我在Centos6.4伺服器上使用系統自帶的Centos-Base.repo安裝net-snmp因為安裝過程中發現缺少snmpwalk這個工具,就有通過yum 安裝net-snmp-libs和net-snmp-devel。
安裝過程很順利,但是裝上之後發現yum使用會報錯,報錯資訊如下:

There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
 /usr/lib64/libssl.so.10: symbol private_ossl_minimum_dh_bits, version libcrypto.so.10 not defined in file libcrypto.so.10 with link time reference

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.6.6 (r266:84292, Feb 22 2013, 00:00:18) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)]

If you cannot solve this problem yourself, please go to 
the yum faq at:

看報錯資訊又上網查了半天,基本上確定應該是,yum在安裝net-snmp相關包的時候升級了openssl的依賴。此時使用openssl version -a 檢查openssl版本資訊也出現報錯version libcrypto.so.10 not defined in file libcrypto.so.10 with link time reference
趕緊查了一下同批的伺服器,看到openssl的版本應該是openssl-1.0.1e。看到這個趕緊降級伺服器上的openssl。

下載openssl原始碼包 :

https://www.openssl.org/source/old/1.0.1/openssl-1.0.1e.tar.gz


下載之後解壓,通過./config shared zlib-dynamic 來生成Makefile檔案。然後執行make 生成
libssl.so.1.0.0
libcrypto.so.1.0.0
將這個兩個檔案移動到/usr/lib64/目錄下
在當前目錄下建立軟連線

ln -s libssl.so.1.0.0 libssl.so.10
ln -s libcrypto.so.1.0.0e libcrypto.so.10

然後重啟sshservice sshd restart
此時問題解決。使用yum --help 命令測試,發現沒有新的報錯,伺服器ssh登入也沒有異常。