项目需要在centos上默认配置源码安装了libcurl模块,导致使用yum命令时出现如下错误:
/usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback
或者会显示
/usr/lib/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback
解决办法如下:
使用 ldd /usr/lib/python2.6/site-packages/pycurl.so查询pycurl.so依赖文件,注意红色部分的路径:
linux-gate.so.1 => (0x00aaf000)
libcurl.so.4 => /usr/local/lib/libcurl.so.4 (0x00940000)
libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0 (0x00137000)
libpthread.so.0 => /lib/libpthread.so.0 (0x003f7000)
libc.so.6 => /lib/libc.so.6 (0x00412000)
libz.so.1 => /lib/libz.so.1 (0x002b5000)
librt.so.1 => /lib/librt.so.1 (0x00ed5000)
libdl.so.2 => /lib/libdl.so.2 (0x00f9f000)
libutil.so.1 => /lib/libutil.so.1 (0x00327000)
libm.so.6 => /lib/libm.so.6 (0x002c9000)
/lib/ld-linux.so.2 (0x00ab0000)
解决办法(红色路径替换为你ldd查询出来的路径。绿色路径为报错的显示的路径):
cd /usr/local/lib/
cp libcurl.so.4 libcurl.so.4.bak 先备份一下。
sudo rm libcurl.so.4
sudo ln -s /usr/lib/libcurl.so.4.1.1 /usr/local/lib/libcurl.so.4 创建软连接。当然这里也可以采取复制。sudo cp /usr/lib/libcurl.so.4.1.1 /usr/local/lib/libcurl.so.4