源码安装了curl之后, 导致yum执行时报如下错误:
/usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback
是因为yum动态库使用了新安装libcurl库导致的。使用ldd查看动态库依赖关系:
ldd /usr/lib64/python2.6/site-packages/pycurl.so
可以发现libcurl.so.4 指向了新安装的libcurl。
查找系统旧有的libcurl
find / -name libcurl.so.4
/usr/lib64/libcurl.so.4
/usr/local/lib/libcurl.so.4
有两种方法解决:
1. 直接将/usr/local/lib/libcurl.so.4 软连接到旧有libcurl中
mv libcurl.so.4.4.0 bak-libcurl40/
ln -s /usr/lib64/libcurl.so.4 libcurl.so.4.4.0
ls -lrth
lrwxrwxrwx 1 root root 23 Apr 11 15:45 libcurl.so.4.4.0 -> /usr/lib64/libcurl.so.4
2. 设置LD_LIBRARY_PATH, 将旧有的libcurl路径放置在前面
export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH