1 使用yum安装任何软件都失败
使用yum安装软件,出现如下错误:
[root@localhost repositories]# yum install zlib-devel
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
2 问题分析
查看链接库内容
[root@localhost repositories]# ldd /usr/lib64/python2.7/site-packages/pycurl.so
linux-vdso.so.1 => (0x00007ffee8f5d000)
libcurl.so.4 => /root/anaconda3/lib/libcurl.so.4 (0x00007f627dbc8000)
libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007f627d476000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f627d25a000)
libc.so.6 => /lib64/libc.so.6 (0x00007f627ce8c000)
libnghttp2.so.14 => /root/anaconda3/lib/./libnghttp2.so.14 (0x00007f627db90000)
libssh2.so.1 => /root/anaconda3/lib/./libssh2.so.1 (0x00007f627db4c000)
libssl.so.1.1 => /root/anaconda3/lib/./libssl.so.1.1 (0x00007f627dabb000)
libcrypto.so.1.1 => /root/anaconda3/lib/./libcrypto.so.1.1 (0x00007f627cbbd000)
libgssapi_krb5.so.2 => /root/anaconda3/lib/./libgssapi_krb5.so.2 (0x00007f627cb6a000)
libz.so.1 => /root/anaconda3/lib/./libz.so.1 (0x00007f627da9c000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f627c966000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f627c763000)
libm.so.6 => /lib64/libm.so.6 (0x00007f627c461000)
/lib64/ld-linux-x86-64.so.2 (0x00007f627da53000)
libkrb5.so.3 => /root/anaconda3/lib/././libkrb5.so.3 (0x00007f627c38c000)
libk5crypto.so.3 => /root/anaconda3/lib/././libk5crypto.so.3 (0x00007f627da80000)
libcom_err.so.3 => /root/anaconda3/lib/././libcom_err.so.3 (0x00007f627da7a000)
libkrb5support.so.0 => /root/anaconda3/lib/././libkrb5support.so.0 (0x00007f627c37d000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f627c163000)
其中有问题的项为:
libcurl.so.4 => /root/anaconda3/lib/libcurl.so.4 (0x00007f627dbc8000)
检索本地链接库
[root@localhost repositories]# ldconfig -v | grep libcurl
ldconfig: 无法对 /libx32 进行 stat 操作: 没有那个文件或目录
ldconfig: 多次给出路径“/usr/lib”
ldconfig: 多次给出路径“/usr/lib64”
ldconfig: 无法对 /usr/libx32 进行 stat 操作: 没有那个文件或目录
ldconfig: /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn.so.8 不是符号连接
ldconfig: /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 不是符号连接
ldconfig: /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 不是符号连接
ldconfig: /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 不是符号连接
ldconfig: /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 不是符号连接
ldconfig: /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 不是符号连接
ldconfig: /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 不是符号连接
libcurl.so.4 -> libcurl.so.4.3.0
问题产生的原因在于linux的python版本与conda环境下的版本不一致,而软连接连接到了conda环境中的动态链接库,从而导致执行yum时报错,无法进行软件安装
3 问题解决
注意:实际操作时,路径要根据本地查询情况确定
rm -f /root/anaconda3/lib/libcurl.so
rm -f /root/anaconda3/lib/libcurl.so.4
ln -s /usr/lib64/libcurl.so.4.3.0 /root/anaconda3/lib/libcurl.so.4
再次运行安装命令,安装成功,问题解决
[root@localhost lib64]# yum install zlib-devel
已安装:
zlib-devel.x86_64 0:1.2.7-21.el7_9
作为依赖被升级:
zlib.x86_64 0:1.2.7-21.el7_9
完毕!
备注:
ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig。 ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf 内所列的目录下,搜索出可共享的动态 链接库(格式如前介绍 lib.so),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。
ldd是用来查看程序运行所需的共享库,常用来解决程序因缺少某个库文件而不能运行的一些问题。