openEuler系统yum报错问题排查

文章讲述了在OpenEuler22.03LTS最小安装的Intel虚机中,由于yum和rpm报错,经排查发现是liblzma.so.5版本过低。通过替换snmp模块中的so库,确定需升级XZ-Utils以解决。作者详细描述了解决过程,包括从官网下载最新版本并编译安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、背景

二、系统环境

三、报错信息

1.执行yum

2.执行rpm

3.snmp报错

四、排查思路

五、解决过程

1.官网下载最新的XZ-Utils

 2.编译安装,获取so库

六、关于 XZ Utils 


一、背景

创建intel平台x86架构创建完虚机,最小化安装openEuler系统后yum和rpm都正常,在安装完用户软件后(安装包自动安装),yum和rpm都无法使用。

二、系统环境

openEuler 22.03 LTS 最小安装

intel虚机平台

x86

liblzma.so.5.2.5

三、报错信息

1.执行yum

[root@localhost app]# yum Traceback (most recent call last): File "/usr/bin/yum", line 57, in <module> from dnf.cli import main File "/usr/lib/python3.9/site-packages/dnf/__init__.py", line 30, in <module> import dnf.base File "/usr/lib/python3.9/site-packages/dnf/base.py", line 29, in <module> import libdnf.transaction File "/usr/lib64/python3.9/site-packages/libdnf/__init__.py", line 8, in <module> from . import error File "/usr/lib64/python3.9/site-packages/libdnf/error.py", line 13, in <module> from . import _error ImportError: liblzma.so.5: cannot open shared object file: No such file or directory 

2.执行rpm

[root@localhost app]# rpm rpm: error while loading shared libraries: liblzma.so.5: cannot open shared object file: No such file or directory 

3.snmp报错

[root@localhost home]# /usr/sbin/snmpd /usr/sbin/snmpd: /usr/lib64/liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /usr/lib64/librpmio.so.3) 

四、排查思路

通过报错信息可以看到没有找到 liblzma.so.5库,因此全局搜索liblzma.so,find / -name liblzma*,发现是在/usr/lib64下有一个连接文件liblzma.so.5指向liblzma.so.5.2.2,此时是不能用的状态,然后将虚机回滚到安装完系统后yum可以使用的状态,发现连接文件liblzma.so.5指向liblzma.so.5.2.5,因此考虑是该库版本过低问题,通过搜索该库是一个压缩工具类的so库,XZ-Utils,然后查看软件安装包,发现安装包中存在liblzma.so.5.2.2,并且替换了系统自带的so库,此时我还在想为什么替换成了一个低版本的so库,然后继续向下阅读安装脚本,发现这是在安装snmp模块,此时试着执行snmp命令(此时回滚了虚机so库版本还原为了liblzma.so.5.2.5),发现snmp报错,然后将so库替换成liblzma.so.5.2.2,发现snmp可以使用了,但是yum和rpm都出现上述报错,此时明白了为什么要替换成低版本的so库,那么只能snmp和yum只有一个能用吗,这时我去XZ-Utils官网下载了5.2的最新版本,5.2.12,下载后编译安装,获取到liblzma.so.5.2.12,替换后snmp和yum都能用了,这里注意替换的是so库,但需要创建连接文件liblzma.so.5指向最新的liblzma.so.5.2.12。

五、解决过程

1.官网下载最新的XZ-Utils

XZ-Utils下载地址:

https://tukaani.org/xz/

 2.编译安装,获取so库

移动到服务器上,解压,进入源码包根目录

./configuration

make install

find / -name liblzma.so*

将新版本的so库复制到/usr/lib64下

删除连接文件rm -rf liblzma.so.5

创建新的链接文件指向新的so库ln -s /usr/lib64/liblzma.so.5.2.12 /usr/lib64/liblzma.5

六、关于 XZ Utils 

XZ Utils 是为 POSIX 平台开发具有高压缩率的工具。它使用 LZMA2 压缩算法,生成的压缩文件比 POSIX 平台传统使用的 gzip、bzip2 生成的压缩文件更小,而且解压缩速度也很快。最初 XZ Utils 的是基于 LZMA-SDK 开发,但是 LZMA-SDK 包含了一些 WINDOWS 平台的特性,所以 XZ Utils 为以适应 POSIX 平台作了大幅的修改。XZ Utils 的出现也是为了取代 POSIX 系统中旧的 LZMA Utils。


XZ Utils 主要包含了下列部分:

  1. 命令行程序 xz,用来生成和解压缩 .xz 压缩文件。
  2. 一组实用的脚本工具 (xzcat, xdiff, xzgrep 等)提供浏览,查找以及比较 .xz 文件内容等功能。
  3. liblzma 压缩库,提供算法的实现和近似于 ZLIB 的编程接口。
  4. 提供对 LZMA Utils 的一些兼容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值