天天看点

Linux:rpm包升级和yum源配置相关问题

作者:玩转Linux与MySQL

背景:

使用docker拉起容器失败:

报错内容:docker: Error response from daemon: failed to create endpoint acpoc-controller on network bridge: adding interface veth85b0d02 to bridge docker0 failed: Device does not exist.

Linux:rpm包升级和yum源配置相关问题

处理过程:

经过查询,这个报错是由于libseccomp版本低导致的

Linux:rpm包升级和yum源配置相关问题

于是,卸载低版本libseccomp,安装(手动安装、yum安装)高版本libseccomp失败,各种报错:

(1)手动安装高版本libseccomp-2.5.2-2.el9.x86_64.rpm:存在依赖问题

Linux:rpm包升级和yum源配置相关问题

最后发现是手动下载的rpm包不正确导致的:libseccomp-2.5.1-1.el8.x86_64.rpm,可以

[root@localhost ~]# wget https://rpmfind.net/linux/centos/8-stream/BaseOS/x86_64/os/Packages/libseccomp-2.5.1-1.el8.x86_64.rpm

Linux:rpm包升级和yum源配置相关问题

(2)yum安装:存在多版本问题

主要报错信息:Multilib version problems found. This often means that the root cause is something else and multilib version checking is just pointing out that there is a problem

...you can also use --setopt=protected_multilib=false to remove this checking, however this is almost never the correct thing to do as something else is very likely to go wrong (often causing much more problems).

保护多库版本:libseccomp-2.5.2-2.el9.x86_64 != libseccomp-2.5.1-1.el8.x86_64

Linux:rpm包升级和yum源配置相关问题

使用yum list查看:没有上面报错中冲突的版本2.5.2-2和2.5.1-1,所以这里不明白,为什么有这个报错?

Linux:rpm包升级和yum源配置相关问题

(3)既然手动安装有依赖问题,yum安装没有想要的版本,那就自己搭建个yum源吧!

下载小版本较高的镜像CentOS-7-x86_64-Everything-1908.iso作为源:libseccomp版本仍较低,不合适

Linux:rpm包升级和yum源配置相关问题

下载高一个大版本的镜像CentOS-8.5.2111-x86_64-dvd1.iso做为源:libseccomp版本符合要求,但是yum无法正常使用,因为centos7和8的镜像目录不一样,但可以手动拷贝镜像中libseccomp包,用rpm手动安装

Linux:rpm包升级和yum源配置相关问题
Linux:rpm包升级和yum源配置相关问题

(4)libseccomp升级后,看看现在是否能用docker拉起容器:仍然拉起失败,最后和开发沟通后,确定为操作系统版本的问题

Linux:rpm包升级和yum源配置相关问题

总结:

1.rpm包能否安装成功,不仅取决于依赖是否已经安装,还和操作系统版本有关

2.大版本相同小版本不同的操作系统镜像内的rpm包版本基本是一致的,不能作为升级yum源

3.大版本不同的操作系统镜像不能互相作为yum源,因为他们镜像内的数据目录结构不一样,但是大版本内的高版本rpm包可以拷贝出来,可以作为升级包

继续阅读