Linux运维篇-yum命令报错 /lib64/libcurl.so.4相关

项目场景:

centos7,8,同样也适用openEuer,Kylin等redhat系的国产化操作系统


问题描述

在使用yum命令时报错:请添加图片描述
主要报错信息为:

error: /usr/lib64/libcurl.so.4: symbol SSLv3_client_method version OPENSSL_1_1_0 not defined in file libssl.so.1.1 with link time reference

原因分析:

该错误是/usr/lib64中的动态链接库无法识别和链接,对此所采取的解决方法也是十分的简单,那就是将其加入到系统环境路径下。

大多数导致这个问题的原因是因为使用源码编译的方式升级了openssh和openssl,往往发现这个问题时,系统ssh已经出现故障,然后想使用yum来安装之前版本的openssh和openssl,但是由于yum不能用,于是才来网上寻找答案,这算是一个比较常见的系统问题,但是也会难倒一大片的运维工程师,往往采用简单的重装解决问题。问题确实被解决了,但是,不努力去处理故障,你的能力就不会有成长,你也只是个装机器的工具人。

LD_LIBRARY_PATH是Linux系统的环境变量,用来指定查找共享库(动态链接库)除默认路径以外的其它路径。移植程序时经常需要使用一些特定的动态库,而编译好的动态链接库放在自己建立的目录里。当执行函数动态链接.so文件时,文件不在缺省目录中:/usr/local/lib和/usr/lib,可以指定环境变量LD_LIBRARY_PATH添加新的路径名。

解决方案:

执行如下两条命令:

export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH

然后就需要对编译安装的openssh和openssl软件做删除操作,之后使用yum方式重新安装。
如果重启系统之后发现使用yum依旧报错,那这时候就需要查看/etc/ld.so.conf ,如果不确定本地机器配置是否正确,最简单的方法就是找一台相同的系统环境对比来看。

/etc/ld.so.conf 记录了编译时使用的动态库的路径,也就是加载so库的路径。默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,而通常通过源码包进行安装时,如果不指定–prefix会将库安装在/usr/local目录下,而又没有在文件/etc/ld.so.conf中添加/usr/local/lib这个目录>。这样虽然安装了源码包,但是使用时仍然找不到相关的.so库,就会报错。也就是说系统不知道安装了源码包。

还需要知道ldconfig这个程序,位于/sbin下,它的作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用,因此当安装完一些库文件,或者修改/etc/ld.so.conf增加了库的新的搜索路径,需要运行一下ldconfig,使所有的库文件都被缓存到文件/etc/ld.so.cache中,如果没做,可能会找不到刚安装的库。

机器不是人,不会独立思考,所以也没那么多弯弯绕绕,只是你没有找到问题的关键,所以问题才很棘手,理清了过程其实没有那么难;但是和人打交道就不一样了,不知道会在哪里坑你一把,哈哈,题外话,跑偏了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秣宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值