yum不能用报错 /usr/lib64/python2.7/site-packages/pycurl.so: undefined symbol: CRYPTO_num_locks解决办法

环境

centos:7基础镜像,MATLAB Runtime v97(简称mcr)已安装,LD_LIBRARY_PATH添加mcr相关目录。

问题过程

centOS7中使用yum报错,提示:

[root@6a1145141919 glnxa64]# yum
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   /usr/lib64/python2.7/site-packages/pycurl.so: undefined symbol: CRYPTO_num_locks

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.7.5 (default, Oct 14 2020, 14:45:30)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]

If you cannot solve this problem yourself, please go to
the yum faq at:
  http://yum.baseurl.org/wiki/Faq

可以看到是加载/usr/lib64/python2.7/site-packages/pycurl.so的时候有些问题,根据这篇文章的提示,查询这个库的依赖:

[root@6a1145141919 glnxa64]# ldd /usr/lib64/python2.7/site-packages/pycurl.so
        linux-vdso.so.1 =>  (0x00007ffe1c3da000)
        libcurl.so.4 => /usr/local/MATLAB/MATLAB_Runtime/v97/bin/glnxa64/libcurl.so.4 (0x00007f7ca411c000)
        libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007f7ca3d50000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f7ca3b34000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f7ca3766000)
        libssl-mw.so.1.1 => /usr/local/MATLAB/MATLAB_Runtime/v97/bin/glnxa64/libssl-mw.so.1.1 (0x00007f7ca34d6000)
        libcrypto-mw.so.1.1 => /usr/local/MATLAB/MATLAB_Runtime/v97/bin/glnxa64/libcrypto-mw.so.1.1 (0x00007f7ca300a000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f7ca2df4000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f7ca2bec000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f7ca29e8000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007f7ca27e5000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f7ca24e3000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f7ca4586000)

其中有三个库不是从/usr/lib64中引用的,而是从MATLAB Runtime中引用的。mcr提供的相关库的版本相对centOS7 base image较高,因此发生不兼容问题。

在安装MATLAB前yum是没问题的,因此应该是mcr的安装引入了某些副作用。考虑是LD_LIBRARY_PATH的修改使得yum索引到了错误的库文件。

解决办法

当然可以把他们删掉然后重建软连接到/usr/lib64,但是不推荐。

从路径考虑,给LD_LIBRARY_PATH添加"/usr/lib64:/usr/lib:"。临时方案是在命令行:

export LD_LIBRARY_PATH = "/usr/lib64:/usr/lib:${LD_LIBRARY_PATH}"

稳定方案是修改mcr环境变量配置脚本。

# /etc/profile.d/mcr_addpath.sh
# set eviroment variables for MATLAB Runtime
export MATLAB_RUNTIME_INSTALL_DIR=/usr/local/MATLAB/MATLAB_Runtime/v97
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${MATLAB_RUNTIME_INSTALL_DIR}/runtime/glnxa64:${MATLAB_RUNTIME_INSTALL_DIR}/bin/glnxa64:${MATLAB_RUNTIME_INSTALL_DIR}/sys/os/glnxa64:${MATLAB_RUNTIME_INSTALL_DIR}/extern/bin/glnxa64"
export LD_LIBRARY_PATH="/usr/lib64:/usr/lib:${LD_LIBRARY_PATH}"

将其放在/etc/profile.d/mcr_addpath.sh,则系统每次启动时会自动通过/etc/profile默认运行这个脚本,既将mcr的库添加到库路径,又不影响原系统库的索引。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值