首页 > Python资料 博客日记
解决CentOS的yum命令失效的问题
2024-06-21 01:00:08Python资料围观149次
近日笔者对一台装有 CentOS 7.9 系统的服务器反复折腾,玩到最后发现 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, Nov 14 2023, 16:14:06)
[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
服务器原先装有 Python 2.7.5,因我安装了 Python 3.10,怀疑是版本冲突造成,尝试删除 Python 3.10 后仍然无济于事,这下 yum 被我玩坏了。yum 命令是基于 Python 2.7.5版的,尽管我尝试使用 pip install yum
也不能重新安装 yum。
我在网上搜了很多解决yum无法使用的问题的文章,绝大部分文章都虎头蛇尾,没有根本解决问题,后来找到下面一文给我提供灵感:
十分感谢博主“就想做一条闲鱼”。
上面报错信息中提及 /usr/lib64/python2.7/site-packages/pycurl.so
这个文件,我们查看一下这个文件的情况。
CRYPTO_num_locks
是 OpenSSL 库中的一个函数,用于处理加密操作中的锁管理。
在某些版本的OpenSSL中,CRYPTO_num_locks
函数用于获取需要的锁数量,以确保线程安全。
这个函数在多线程应用中尤为重要,因为它帮助管理对加密操作的并发访问。
pycurl.so
是pycurl
库的共享对象文件,它是libcurl
的 Python 绑定。
pycurl 库用于在 Python 中执行 URL 请求和数据传输,底层依赖 libcurl 库,而 libcurl 又依赖于 OpenSSL 库来处理 HTTPS 连接和加密操作。
1、查看依赖关系
ldd /usr/lib64/python2.7/site-packages/pycurl.so
输出内容类似:
linux-vdso.so.1 => (0x00007ffd0d9fe000)
libcurl.so.4 => /usr/local/lib/libcurl.so.4 (0x00007f0ddb670000)
libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007f0ddb2a4000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0ddb088000)
libc.so.6 => /lib64/libc.so.6 (0x00007f0ddacba000)
libnghttp2.so.14 => /lib64/libnghttp2.so.14 (0x00007f0ddaa92000)
libssl.so.10 => /lib64/libssl.so.10 (0x00007f0dda820000)
libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f0dda3bd000)
......
上面提及 pycurl.so
与 libcurl
息息相关,我把命令改一下:
ldd /usr/lib64/python2.7/site-packages/pycurl.so | grep "libcurl"
筛选出下面的信息:
2、查看 libcurl 相关的文件
执行命令:
ll /usr/local/lib/libcurl*
结果显示:
由此可见,系统中存在多个版本的 libcurl 库,包括 libcurl.so.4.7.0、libcurl.so.4.8.0,以及相应的符号链接(libcurl.so和libcurl.so.4)。
忽然想起来我就是不久前反复安装不同版本的 curl,可能导致 pycurl.so 链接到错误版本的libcurl,引发 yum 无法使用,报出 undefined symbol: CRYPTO_num_locks
错误。
3、删除链接文件
cd /usr/local/lib
rm -rf libcurl.so
rm -rf libcurl.so.4
至此,CentOS 的 yum 命令就恢复正常了!
这种问题通常是由库文件冲突或不兼容引起的,解决方法是确保程序加载的是系统默认的库文件,避免自定义安装的库文件干扰系统工具的运行。
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程