重新编译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刷新下缓存就可以了。