重新编译curl 安装后 yum 报错
/usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback
系统环境:
CentOS release 6.2 (Final)
2.6.32-220.13.1.el6.x86_64 #1 SMP Tue Apr 17 23:56:34 BST 2012 x86_64 x86_64 x86_64 GNU/Linux
用ldd 查看动态库连接。
没有,重新编译安装Curl前
ldd /usr/lib64/python2.6/site-packages/pycurl.so
linux-vdso.so.1 => (0x00007fffab90f000)
libcurl.so.4 =>/usr/lib64/libcurl.so.4(0x00007fa9bca4f000)
libc.so.6 => /lib64/libc.so.6 (0x00007fa9bc6bc000)
libidn.so.11 => /lib64/libidn.so.11 (0x00007fa9bc489000)
libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007fa9bc23e000)
librt.so.1 => /lib64/librt.so.1 (0x00007fa9bc036000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fa9bbdf3000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fa9bbb14000)
默认方式编译安装 curl ( configure make install)
cd curl-7.19.7
./configure
make install
ldconfig #更新动态缓存
我一运行yum 就报错。
ldd /usr/lib64/python2.6/site-packages/pycurl.so
linux-vdso.so.1 => (0x00007fffef7ff000)
libcurl.so.4 => /usr/local/lib/libcurl.so.4(0x00007fd1fc29d000)
libc.so.6 => /lib64/libc.so.6 (0x00007fd1fbf0a000)
libidn.so.11 => /lib64/libidn.so.11 (0x00007fd1fbcd7000)
librt.so.1 => /lib64/librt.so.1 (0x00007fd1fbacf000)
按理来说没什么问题的。没办法,由于我必须要安装新的curl。所以我重新编译下pycurl.so。
wget http://pycurl.sourceforge.net/download/pycurl-7.19.0.tar.gz
tar zxvf *.tar.gz
我只要pycurl.so它一个,所以进入pycurl-7.19.0\src
修改下
vim Makefile
PYINCLUDE=/usr/include/python2.6/
注意这儿需要 python-devel, 没安装的就安装吧(就当更新python玩吧)
yum install python-devel
OK, 编译下pycurl.so
make
cp /usr/lib64/python2.6/site-packages/pycurl.so /home/backup ##备份下之前,有问题也好恢复
cp ./pycurl.so /usr/lib64/python2.6/site-packages/pycurl.so
好了,运行下yum试试。
ps:这种方法我没有试验成功,因为yum是不能用的,因此我直接修改链接库:
vi /etc/ld.so.conf
include ld.so.conf.d/*.conf
/data/mysql/lib/mysql/
/usr/local/lib
/usr/local/ssl/lib
将第三行的/usr/local/lib注释掉,因为ldd
/usr/lib64/python2.6/site-packages/pycurl.so发现其中有一个库是链接到/usr/local/lib库
中的,而yum报错的主要错误就是因为libcurl.so.4 =>
/usr/local/lib/libcurl.so.4这个库的问题,然后使用命令ldconfig刷新下缓存就可以了。
我当时的情况如下:
安装了curl库后,yum就不能用了,用ldconfig -v | grep curl,libcurl.so.4 -> libcurl.so.4.3.0 libcurl.so.4 -> libcurl.so.4.4.0,libcurl.so.4 -> libcurl.so.4.3.0是在/usr/lib64下(系统默认的),libcurl.so.4 -> libcurl.so.4.4.0是在/usr/local/lib下(安装curl库后产生的)
最后,我的做法是:
把/usr/local/lib下有关curl的库都放到/usr/local/lib_curl下,cp /usr/local/lib/*curl.* /usr/local/lib_curl。
最后执行:ldconfig,然后就可以使用yum命令了