我正在研制红帽Ubi8-最小容器。我的目标是从文件中安装.rpm及其依赖项。microdnf
8-minimal只提供不能安装本地..rpm的yum
,所以我使用microdnf install yum
安装了D1
,它运行良好。在输出中,它显示正在更新libmodulemd
:
Updating: libmodulemd;2.13.0-2.fc34;x86_64;Clients_Fedora_34_Fedora_34_Updates
但是,在第一次调用yum
时,我得到:
[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
也出现了这个问题,不再可用了:
[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
的内容。
[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 repolist --enabled
命令的输出。
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
的内容不匹配。
发布于 2022-08-19 22:43:13
当任何dnf命令导致一个未定义的符号时,您的包管理器就会严重损坏。fc34标记意味着基于Fedora 34的更新,这将不适用于基于el8的发行版。在这里找出什么在使用Fedora repos。
查看文档,以获得有关如何在容器上运行完整dnf命令的提示。RHEL 8关于建筑容器利用yum的安装到chroot特性来实现这一点,即使在微型容器中也是如此。东道方:
yum install \
--installroot $micromount \
--releasever 8 \
--setopt install_weak_deps=false \
--nodocs -y \
httpd
其中,$micromount
是一个挂载的容器根文件系统,--releasever 8
是连续文件的el版本,httpd
是要安装的包。还可以使用yum reinstall libmodulemd microdnf
修复dnf安装。
发布于 2022-08-22 07:26:42
由于来自约翰·马霍尔德的提示指向fc34 repos的参与,解决方案是在安装yum
时排除Fedora:
microdnf install --disablerepo="Clients_*" yum
这将导致工作的yum
安装:
[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
之间的交互,后者将订阅信息投影到正在运行的容器中。不过,除了提到其他用户和我自己的经验之外,我还没有找到任何关于这方面的主要文档。
https://serverfault.com/questions/1107916
复制相似问题