排查常见报错
This content is not available in your language yet.
适用:CentOS Stream 9 / 10 · 核对日:2026-11-01 · 特点:每条报错都在容器里复现过,输出为真实摘录而非转述;报错信息随版本演进,以你的实际输出为准。
本页按「看到报错 → 判断原因 → 处理」组织。Stream 特有的报错排在前面——它们最容易把从其它 EL 带来的经验变成坑。
dnf:模块化相关
Section titled “dnf:模块化相关”报错(Stream 10 实测):
Error: Problems in request:missing groups or modules: nginx原因:执行了 dnf module <动词>,但系统上没有模块化内容。Stream 10 已清空模块流(dnf module list 为 0 条),dnf 4.20.0 并警告 modularity is deprecated;Stream 9 仍有 24 条模块记录,模块化命令只在那里有效。
处理:查该软件的安装页确认当前形态——Node.js/Python 在 Stream 10 走普通包(Node.js、Python);dnf module list 可直接确认本机有没有模块化内容。
pykickstart:校验器版本
Section titled “pykickstart:校验器版本”报错(Stream 9 实测):
The version RHEL10 is not supported by pykickstart原因:ksvalidator -v RHEL10 跑在 Stream 9 的 pykickstart 上,它支持到 RHEL9 为止。
处理:给 Stream 10 装机写 ks 就用 Stream 10 环境校验:
$ podman run --rm -v "$PWD:/w:Z" quay.io/centos/centos:stream10 \ bash -c "dnf -qy install pykickstart >/dev/null && ksvalidator -v RHEL10 /w/ks.cfg"背景见Kickstart 自动安装。
dnf:GPG 签名校验失败
Section titled “dnf:GPG 签名校验失败”报错(容器实测,把 epel.repo 的 gpgkey 指向内容错误的文件后安装 htop):
The GPG keys listed for the "Extra Packages for Enterprise Linux 9 - aarch64" repositoryare already installed but they are not correct for this package.Check that the correct key URLs are configured for this repository..Failing package is: htop-3.3.0-1.el9.aarch64 GPG Keys are configured as: file:///tmp/badkeyError: GPG check FAILED原因:仓库配置里的 key 来源与包的签名对不上——常见于手工改过 gpgkey= 行、key 文件被删/损坏、或包真不是该仓库签的。key 文件路径不存在时是另一种输出:Curl error (37): Couldn't read a file:// file …。
处理:还原仓库自带的 gpgkey= 行与 /etc/pki/rpm-gpg/ 里的官方 key 文件(EPEL 是 RPM-GPG-KEY-EPEL-$releasever,CentOS 官方仓库 Stream 9 为 RPM-GPG-KEY-centosofficial、Stream 10 为 RPM-GPG-KEY-centosofficial-SHA256)。不要用 --nogpgcheck 绕过——那是放弃验证包来源,只有临时诊断身份问题(确认「就是 key 配错了」)时可用。
kickstart:failed to fetch kickstart 循环
Section titled “kickstart:failed to fetch kickstart 循环”报错(Stream 10 实测,dracut 阶段滚动刷屏):
curl: (7) Failed to connect to 192.168.2.2 port 8000 after 0 ms: Could not connect to serverWarning: anaconda: failed to fetch kickstart from http://192.168.2.2:8000/ks.cfg原因:ks 文件在 initramfs 阶段拉取,此阶段没有网络配置——只给 inst.ks= 不给 ip= 参数,dracut 无法组网。
处理:内核参数同时写 ip=(七字段语法,第 5 字段是主机名、第 6 字段才是设备名)。完整写法与避坑见Kickstart 自动安装。
安装源:extras-common 清空仓库集
Section titled “安装源:extras-common 清空仓库集”报错(boot ISO + 局域网镜像源、完全离线时实测,packaging.log):
Error downloading metadata for repository 'extras-common':Curl error (6): Could not resolve hostname forhttps://mirrors.centos.org/metalink?repo=centos-extras-sig-extras-common-10-stream&arch=x86_64&protocol=https,httpFailed to download metadata for repo 'extras-common'"The repositories are set to: []"原因:boot ISO 的安装环境内置 extras-common 仓库(metalink 指向 mirrors.centos.org),离线时解析失败,且失败会把整个仓库集清空——哪怕你自己的 BaseOS 源完全可用。
处理:保证安装环境能访问 mirrors.centos.org(哪怕只给这条链路出网),或改用自带完整仓库树的 DVD ISO。相关的镜像与离线源问题见切换国内镜像源与安装 CentOS Stream。
dnf:包冲突
Section titled “dnf:包冲突”报错(最小容器实测,安装 curl):
package curl-minimal-7.76.1-43.el9.aarch64 from baseos conflicts with curl provided bycurl-7.76.1-44.el9.aarch64 from baseos(try to add '--allowerasing' to command line to replace conflicting packages or'--skip-broken' to skip uninstallable packages or '--nobest' to use not only bestcandidate packages)原因:系统里已有 curl-minimal(minimal 安装的默认形态),再装完整 curl 就是同一软件两个包互相冲突。
处理:先 dnf repoquery --installed curl\* 看清冲突双方;最小镜像上通常 dnf remove curl-minimal 后装 curl 即可(或直接继续用 curl-minimal,它覆盖大多数用途)。--allowerasing 会移除挡路的已装包,生产机上先看清要被移除的是什么再按 y。
SSH:密钥/口令登录被拒
Section titled “SSH:密钥/口令登录被拒”报错(关闭口令登录后实测):
root@localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).判断方法在报错本身:括号里是服务器当前接受的认证方式列表。列表里没有 password → 口令登录已被关闭(按 SSH 密钥登录的流程这是预期行为);列表里有 password 但密钥登录失败 → 查 ~/.ssh 权限(700/600)与 SELinux 上下文(restorecon -Rv ~/.ssh)。
镜像与仓库:切了 baseurl 却不生效
Section titled “镜像与仓库:切了 baseurl 却不生效”现象:往仓库段里加了 baseurl= 指向国内镜像,dnf makecache 却还是走原来的速度/地址。
原因:仓库段里 metalink= 与 baseurl= 同时存在时 metalink 优先,baseurl 被忽略。本站实测:只加 baseurl 不注释 metalink 的容器,makecache 照常成功——走的是 metalink。
处理:切换镜像必须先注释 metalink 行再写 baseurl,完整命令见切换国内镜像源。
| 现象 | 原因 | 处理 |
|---|---|---|
Cannot find a valid baseurl | baseurl 拼错或镜像目录不存在 | 核对 $stream 变量与目录大小写(见镜像) |
| 装 epel-release 失败 | 没先启用 CRB | 先 --set-enabled crb(见EPEL) |
| module list 全空 | Stream 10 正常现象 | 模块化已移除,不是故障 |
| 启动类报错 | 不在本页范围 | 转启动排障 |