RedHat9.7用iso创建本地仓库

你这个报错本质上不是 dnf download 的问题,而是:

你的机器没有可用的软件仓库(repo)。

关键报错:

No package dnf-plugins-core available

以及:

This system is not registered with an entitlement server

说明当前:


先确认仓库状态

执行:

dnf repolist all

如果看到:

repo status: disabled

或者压根没 repo。

那就需要先配置仓库。


最简单方案(推荐)

使用 RHEL 9.7 ISO 作为本地仓库

这是企业离线环境最常见做法。


第一步:挂载 ISO

假设 ISO 文件:

/root/rhel-9.7-x86_64-dvd.iso

执行:

mkdir -p /mnt/rhel9

mount -o loop /root/rhel-9.7-x86_64-dvd.iso /mnt/rhel9

确认:

ls /mnt/rhel9

应该看到:

AppStream
BaseOS
EFI
images
isolinux
...

第二步:创建本地 repo

创建:

cat >/etc/yum.repos.d/rhel9-local.repo <<EOF
[BaseOS]
name=RHEL9 BaseOS
baseurl=file:///mnt/rhel9/BaseOS
enabled=1
gpgcheck=0

[AppStream]
name=RHEL9 AppStream
baseurl=file:///mnt/rhel9/AppStream
enabled=1
gpgcheck=0
EOF

第三步:清理缓存

dnf clean all
rm -rf /var/cache/dnf

第四步:重新生成缓存

dnf makecache

正常会看到:

Metadata cache created.

第五步:安装

现在再执行:

dnf install -y dnf-plugins-core

就可以了。


如果还是报错

执行:

dnf list available | grep dnf-plugins-core

正常应该能看到:

dnf-plugins-core.noarch

额外说明

在 RHEL 9:

所以:

也会报你这个错误。


企业里更常见情况

很多公司:

所以:
“Unable to read consumer identity”
通常可以忽略,不是致命错误。

真正的问题是:
没有可用 repo。


一条命令快速验证 ISO repo 是否成功

执行:

dnf repolist

应该看到:

repo id        repo name
AppStream      RHEL9 AppStream
BaseOS         RHEL9 BaseOS

这就正常了。

 

现在你的 repo 已经正常了。
问题变成:

dnf-plugins-core 包不存在于当前启用仓库的 metadata 里。

但在 RHEL 9 里,这个包通常应该存在。


先直接查一下:

dnf search dnf-plugins-core

再查:

dnf list available | grep dnf-plugin

很大概率原因

你当前挂载的 ISO 不是完整 DVD ISO。

很多人用的是:

这些里面:


验证 ISO 是否完整

执行:

find /mnt/rhel9/AppStream/Packages | grep dnf-plugins-core

如果没输出。

说明:
你的 ISO 里根本没有这个包。


正确 ISO

你需要的是:

rhel-9.7-x86_64-dvd.iso

不是:

boot.iso
minimal.iso

还有一种情况(RHEL9 常见)

RHEL9 有些插件已经拆分。

你真正需要的可能只是:

dnf config-manager

这个命令来自:

dnf-plugins-core

但部分环境可能已经内置。

直接试:

dnf config-manager --help

如果能执行:

说明你根本不需要安装。


再进一步检查

查看命令来自哪个包:

rpm -qf $(which dnf)

以及:

rpm -qa | grep dnf

在 RHEL9 更推荐的安装方式

你其实可以直接安装:

dnf install 'dnf-command(config-manager)'

因为 RHEL9 支持 command provides。

执行:

dnf provides */config-manager

会告诉你真正包名。


最可能的最终解决方案

直接执行:

dnf install 'dnf-command(config-manager)'

通常就成功了。

因为:


你当前系统其实已经不是“完全离线”

因为你有:

说明:

所以现在不是离线问题。

而是:

的问题。


Revision #2
Created 9 May 2026 07:04:59 by Admin
Updated 9 May 2026 07:29:11 by Admin