Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2594375
  • 博文数量: 333
  • 博客积分: 4817
  • 博客等级: 上校
  • 技术积分: 4413
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-28 10:51
文章分类

全部博文(333)

文章存档

2017年(20)

2016年(57)

2015年(27)

2014年(20)

2013年(21)

2012年(164)

2011年(24)

分类: LINUX

2016-07-08 10:25:45

重新编译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命令了

阅读(1598) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~