首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Yum安装破坏了Redhat Ubi8上的库

Yum安装破坏了Redhat Ubi8上的库
EN

Server Fault用户
提问于 2022-08-11 07:45:29
回答 2查看 885关注 0票数 1

我正在研制红帽Ubi8-最小容器。我的目标是从文件中安装.rpm及其依赖项。microdnf 8-minimal只提供不能安装本地..rpm的yum,所以我使用microdnf install yum安装了D1,它运行良好。在输出中,它显示正在更新libmodulemd

代码语言:javascript
运行
复制
Updating: libmodulemd;2.13.0-2.fc34;x86_64;Clients_Fedora_34_Fedora_34_Updates

但是,在第一次调用yum时,我得到:

代码语言:javascript
运行
复制
[root@7fc9c0e586b1]# yum --version
Traceback (most recent call last):
  File "/usr/bin/yum", line 57, in 
    from dnf.cli import main
  File "/usr/lib/python3.9/site-packages/dnf/__init__.py", line 30, in 
    import dnf.base
  File "/usr/lib/python3.9/site-packages/dnf/base.py", line 29, in 
    import libdnf.transaction
  File "/usr/lib64/python3.9/site-packages/libdnf/__init__.py", line 12, in 
    from . import conf
  File "/usr/lib64/python3.9/site-packages/libdnf/conf.py", line 13, in 
    from . import _conf
ImportError: /lib64/libmodulemd.so.2: undefined symbol: g_ptr_array_extend_and_steal

之后,microdnf也出现了这个问题,不再可用了:

代码语言:javascript
运行
复制
[root@7fc9c0e586b1]# microdnf --version
microdnf: symbol lookup error: /lib64/libmodulemd.so.2: undefined symbol: g_ptr_array_extend_and_steal

所以我不能再管理任何软件包和安装了。

我如何解决这个问题并让百胜在Ubi8上工作呢?

详细信息

下面是我在运行podman --it --rm docker.io/redhat/ubi8-minimal bash后在一个新容器中发现的内容

/etc/yum.repos.d/ubi.repo

这是/etc/yum.repos.d/ubi.repo的内容。

代码语言:javascript
运行
复制
[ubi-8-baseos]
name = Red Hat Universal Base Image 8 (RPMs) - BaseOS
baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/$basearch/baseos/os
enabled = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
gpgcheck = 1

[ubi-8-baseos-debug]
name = Red Hat Universal Base Image 8 (Debug RPMs) - BaseOS
baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/$basearch/baseos/debug
enabled = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
gpgcheck = 1

[ubi-8-baseos-source]
name = Red Hat Universal Base Image 8 (Source RPMs) - BaseOS
baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/$basearch/baseos/source/SRPMS
enabled = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
gpgcheck = 1

[ubi-8-appstream]
name = Red Hat Universal Base Image 8 (RPMs) - AppStream
baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/$basearch/appstream/os
enabled = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
gpgcheck = 1

[ubi-8-appstream-debug]
name = Red Hat Universal Base Image 8 (Debug RPMs) - AppStream
baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/$basearch/appstream/debug
enabled = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
gpgcheck = 1

[ubi-8-appstream-source]
name = Red Hat Universal Base Image 8 (Source RPMs) - AppStream
baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/$basearch/appstream/source/SRPMS
enabled = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
gpgcheck = 1

[ubi-8-codeready-builder]
name = Red Hat Universal Base Image 8 (RPMs) - CodeReady Builder
baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/$basearch/codeready-builder/os
enabled = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
gpgcheck = 1

[ubi-8-codeready-builder-debug]
name = Red Hat Universal Base Image 8 (Debug RPMs) - CodeReady Builder
baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/$basearch/codeready-builder/debug
enabled = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
gpgcheck = 1

[ubi-8-codeready-builder-source]
name = Red Hat Universal Base Image 8 (Source RPMs) - CodeReady Builder
baseurl = https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/$basearch/codeready-builder/source/SRPMS
enabled = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
gpgcheck = 1

这也是目录中唯一的.repo文件。我没有积极启动任何其他回复。

microdnf重击器-启用

下面是microdnf repolist --enabled命令的输出。

代码语言:javascript
运行
复制
repo id                                                                                            repo name
Clients_Extra-Software_Fedora                                                                      Fedora
Clients_Fedora_34_Fedora_34_Everything                                                             Fedora 34 Everything
Clients_Fedora_34_Fedora_34_Updates                                                                Fedora 34 Updates
Clients_RPM_Fusion_Fedora_34_RPM_Fusion_Free_OS                                                    RPM Fusion Free OS 34
Clients_RPM_Fusion_Fedora_34_RPM_Fusion_Free_Updates                                               RPM Fusion Free Updates 34
Clients_RPM_Fusion_Fedora_34_RPM_Fusion_Nonfree_OS                                                 RPM Fusion Nonfree OS 34
Clients_RPM_Fusion_Fedora_34_RPM_Fusion_Nonfree_Updates                                            RPM Fusion Nonfree Updates 34
Clients_Trinity_Desktop_Environment_Fedora_34_Trinity_Desktop_Environment_Fedora_34_noarch         Trinity Desktop Environment Fedora 34 noarch
Clients_Trinity_Desktop_Environment_Fedora_34_Trinity_Desktop_Environment_Fedora_34_x86_64         Trinity Desktop Environment Fedora 34 x86_64
ubi-8-appstream                                                                                    Red Hat Universal Base Image 8 (RPMs) - AppStream
ubi-8-baseos                                                                                       Red Hat Universal Base Image 8 (RPMs) - BaseOS
ubi-8-codeready-builder                                                                            Red Hat Universal Base Image 8 (RPMs) - CodeReady Builder

这让我很困惑,因为它与ubi.repo的内容不匹配。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2022-08-19 22:43:13

当任何dnf命令导致一个未定义的符号时,您的包管理器就会严重损坏。fc34标记意味着基于Fedora 34的更新,这将不适用于基于el8的发行版。在这里找出什么在使用Fedora repos。

查看文档,以获得有关如何在容器上运行完整dnf命令的提示。RHEL 8关于建筑容器利用yum的安装到chroot特性来实现这一点,即使在微型容器中也是如此。东道方:

代码语言:javascript
运行
复制
yum install \
    --installroot $micromount \
    --releasever 8 \
    --setopt install_weak_deps=false \
    --nodocs -y \
    httpd

其中,$micromount是一个挂载的容器根文件系统,--releasever 8是连续文件的el版本,httpd是要安装的包。还可以使用yum reinstall libmodulemd microdnf修复dnf安装。

票数 2
EN

Server Fault用户

发布于 2022-08-22 07:26:42

由于来自约翰·马霍尔德的提示指向fc34 repos的参与,解决方案是在安装yum时排除Fedora:

代码语言:javascript
运行
复制
microdnf install --disablerepo="Clients_*" yum

这将导致工作的yum安装:

代码语言:javascript
运行
复制
[root@4f6b589029d5]# yum --version
4.7.0
  Installed: dnf-0:4.7.0-8.el8.noarch at Mon Aug 22 06:56:42 2022
  Built    : Red Hat, Inc.  at Fri Mar 18 15:21:28 2022

  Installed: rpm-0:4.14.3-23.el8.x86_64 at Tue Jul 26 12:26:21 2022
  Built    : Red Hat, Inc.  at Tue Apr  5 18:38:09 2022

首先,这是必要的,原因似乎是容器与主机系统的subscription-manager之间的交互,后者将订阅信息投影到正在运行的容器中。不过,除了提到其他用户和我自己的经验之外,我还没有找到任何关于这方面的主要文档。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1107916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档