解决CentOS的yum命令失效的问题

news2025/2/24 21:27:17

近日笔者对一台装有 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无法使用的问题的文章,绝大部分文章都虎头蛇尾,没有根本解决问题,后来找到下面一文给我提供灵感:

成功解决静态链接库无法yum安装问题!

十分感谢博主“就想做一条闲鱼”。

上面报错信息中提及 /usr/lib64/python2.7/site-packages/pycurl.so 这个文件,我们查看一下这个文件的情况。

CRYPTO_num_locks 是 OpenSSL 库中的一个函数,用于处理加密操作中的锁管理。
在某些版本的OpenSSL中,CRYPTO_num_locks 函数用于获取需要的锁数量,以确保线程安全。
这个函数在多线程应用中尤为重要,因为它帮助管理对加密操作的并发访问。

pycurl.sopycurl 库的共享对象文件,它是 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.solibcurl 息息相关,我把命令改一下:

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 命令就恢复正常了!
在这里插入图片描述

这种问题通常是由库文件冲突或不兼容引起的,解决方法是确保程序加载的是系统默认的库文件,避免自定义安装的库文件干扰系统工具的运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1820880.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通用大模型VS垂直大模型,你更青睐哪一方?

AI大模型之辩:通用与垂直,谁将引领未来? 在人工智能(AI)领域,大模型技术的崛起无疑为整个行业带来了革命性的变革。然而,随着技术的深入发展,AI大模型的战场似乎正在悄然分化&#…

9.常见集合

目录 一、三种常见集合二、Vector2.1 特性2.2 创建并更新Vector2.3 读取Vector中的元素2.4 遍历元素2.5 储存不同类型的值 三、字符串3.1 概念3.2 新建3.2 更新3.3 索引字符串3.4 字符串切片3.5 字符串遍历 四、哈希map4.1 基本概念4.2 新建哈希map4.3 访问哈希map中的值4.4 更…

使用adb通过wifi连接手机

1,手机打开开发者模式,打开无线调试 2,命令行使用adb命令配对: adb pair 192.168.0.102:40731 输入验证码:422859 3,连接设备: adb connect 192.168.0.102:36995 4,查看连接状态:…

【云岚到家】-day03-2-门户缓存实现实战

【云岚到家】-day03-2-门户缓存实现实战 5 缓存实现5.2 定时任务更新缓存5.2.1 分布式调度平台5.2.1.1 jdk提供的Timer定时器5.2.1.2 使用第三方Quartz方式5.2.1.3 使用分布式调度平台XXL-JOB 5.2.2 XXL-JOB5.2.2.1 介绍5.2.2.2 部署调度中心5.2.2.3 执行器 5.2.2 定义缓存更新…

二开版视频CMS完整运营源码/新版漂亮APP手机模板/集成员分销功能等

一个二开的影视CMS,直接上传源码至网站根目录,访问网站域名即可安装。 测试环境:Nginx 1.20.1—MySQL 5.6.50–PHP-7.2(安装拓展/fileinfo) 上传源码,访问域名直接安装 后台地址:域名/MDadmi…

4. 案例研究-接口程序

4. 案例研究-接口程序 本章通过一个案例研究, 来展示设计互相配合的函数的过程.4.1 turtle 模块 创建一个文件mypolygon.py, 并输入如下代码:import turtle bob turtle.Turtle() print(bob)# 这一句的作用是让画板停留, 等手动点击x关闭画板, 程序才结束. # 否则程序执行完毕…

Spring中的IOC

IOC(Inversion of Control,控制反转)是Spring框架核心概念之一。它是一种设计原则,用来实现对象的松耦合和依赖管理。在传统的编程中,对象负责创建或查找其依赖对象,而在IOC模式下,这些职责被移…

C++ | Leetcode C++题解之第150题逆波兰表达式求值

题目&#xff1a; 题解&#xff1a; class Solution { public:int evalRPN(vector<string>& tokens) {int n tokens.size();vector<int> stk((n 1) / 2);int index -1;for (int i 0; i < n; i) {string& token tokens[i];if (token.length() >…

24年大一尺取练习(东北林业大学)

前言&#xff1a; 今天下午才刚看到oj上发了这次练习&#xff0c;我已经错过了截止时间&#xff0c;刚好不是很想复习六级&#xff0c;就把这次练习补了吧。 正文&#xff1a; Problem:A 尺取Language&#xff1a; #include<bits/stdc.h> using namespace std; const i…

如何把路由器设备的LAN口地址为三大私网地址

要将路由器的LAN口地址配置为三大私有IP地址范围之一&#xff08;10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16&#xff09;&#xff0c;我们需要访问路由器的管理界面并进行相应的设置。 下面是步骤&#xff1a; 连接到路由器&#xff1a; 连接到路由器的管理界面&#xf…

C++设计模式——Bridge桥接模式

一&#xff0c;桥接模式简介 桥接模式是一种结构型设计模式&#xff0c;用于将抽象与实现分离&#xff0c;这里的"抽象"和"实现"都有可能是接口函数或者类。 桥接模式让抽象与实现之间解耦合&#xff0c;使得开发者可以更关注于实现部分&#xff0c;调用…

谷粒商城实战(036 k8s集群学习2-集群的安装)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第343p-第p345的内容 k8s 集群安装 kubectl --》命令行操作 要进入服务器 而且对一些不懂代码的产品经理和运维人员不太友好 所以我们使用可视化…

【5.x】ELK日志分析

ELK日志分析 一、ELK概述 1、ELK简介 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将ElasticSearch、Logstash和Kiabana三个开源工具配合使用&#xff0c;完成更强大的用户对日志的查询、排序、统计需求。 一个完整的集中式日志系统&#xff0c;需要包含以下几个主…

Java | Leetcode Java题解之第149题直线上最多的点数

题目&#xff1a; 题解&#xff1a; class Solution {public int maxPoints(int[][] points) {int n points.length;if (n < 2) {return n;}int ret 0;for (int i 0; i < n; i) {if (ret > n - i || ret > n / 2) {break;}Map<Integer, Integer> map ne…

SpringBoot系列——使用Spring Cache和Redis实现查询数据缓存

文章目录 1. 前言2. 缓存2.1 什么是缓存2.2 使用缓存的好处2.3 缓存的成本2.4 使用Spring Cache和Redis的优点 3. Spring Cache基础知识3.1 Spring Cache的核心概念3.2 Spring Cache的注解3.2.1 SpEL表达式3.2.2 Cacheable3.2.3 CachePut3.2.4 CacheEvict 4. 实现查询数据缓存4…

eclipse创建maven项目

第一步&#xff1a;打开eclipse 我们选择java项目即可 点击finish即可 它会自动下载插件 然后在控制台上输入Y即可

C语言 | Leetcode C语言题解之第150题逆波兰表达式求值

题目&#xff1a; 题解&#xff1a; int evalRPN(char** tokens, int tokensSize) {int n tokensSize;int stk[(n 1) / 2];memset(stk, 0, sizeof(stk));int index -1;for (int i 0; i < n; i) {char* token tokens[i];if (strlen(token) > 1 || isdigit(token[0])…

LeetCode | 28.找出字符串中第一个匹配项的下标 KMP

这是字符串匹配问题&#xff0c;朴素做法是两重遍历&#xff0c;依次从主串的i位置开始查看是否和模式串匹配&#xff0c;若不匹配就换下一个位置进行判断&#xff0c;直到找到或者遍历完&#xff0c;时间复杂度 O ( m n ) O(m \times n) O(mn) 还可以对主串进行处理&#xff…

Django 5 Web应用开发实战

文章目录 一、内容简介二、目录内容三、值得一读四、适读人群 一、内容简介 《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体&#xff0c;是一本从零基础到精通Django Web企业级开发技术的实战指南。《Django 5 Web应用开发实战》内容以Python 3.x和…

边坡监测规范:确保边坡工程安全稳定的专业准则

边坡工程是土木工程中不可或缺的一部分&#xff0c;其安全性直接关系到工程整体的质量与稳定性。因此&#xff0c;在边坡工程中实施有效的监测措施&#xff0c;遵循一系列专业的监测规范&#xff0c;对于预防边坡失稳、滑坡等灾害的发生&#xff0c;保障人民群众的生命财产安全…