
CentOS 8 这几年在圈子里算是个挺尴尬的存在2021 年 12 月 31 日官方正式宣告这个版本生命周期结束2022 年初那一波CentOS 8 停更的消息几乎刷遍了所有技术群。但奇怪的是直到今天我每个月仍然会被问到CentOS 8 下载安装这件事——内网里跑着的老业务不敢动、培训班和考场环境还在用它、不少教材和录屏教程都是照着 8 的界面录的、还有些安全实验需要固定版本的基线环境。所以这篇东西不是给新项目选型写的而是给那些确确实实绕不开 CentOS 8的人写的怎么找到还能下载的镜像、怎么校验、怎么在虚拟机或物理机上装完、装完之后那个必踩的 yum 报错怎么修。哪怕你此前只会在图形界面点下一步跟着走也能把这套流程跑通。1. 动手之前先想清楚CentOS 8 的定位与镜像选择1.1 为什么 2022 年了还有人要装 CentOS 8先把话说在前头如果你是要给公司新上线的生产环境选操作系统CentOS 8 已经不是一个合理选项了这点没必要嘴硬。官方在 2020 年底调整了路线CentOS Linux 8 的维护期被大幅缩短2021 年 12 月 31 日之后标准仓库就不再更新安全补丁后续接棒的是滚动发布的 CentOS Stream定位完全变了它更像是一个上游开发预览版稳定性预期和老 CentOS 不是一回事。但现实场景里绕不开的情况太多了。我碰到最多的是三类第一类是内网遗留系统一套 2020 年部署的业务系统中间件、JDK、数据库全是按 CentOS 8 的依赖链编译的换系统意味着整套重新验证成本高到没人愿意批预算于是大家的选择就是把它封在隔离网络里继续跑第二类是教学与考试环境很多培训机构的实验手册、认证考试的模拟环境、高校的操作系统课程至今仍以 CentOS 8 为基线因为教材改版的周期比系统迭代慢得多第三类是个人复现需求比如你从网上找了一份 2021 年的部署文档作者明确写了基于 CentOS 8.5 验证你用 CentOS 7 或 Rocky 去跑可能会在 glibc、systemd、Python 版本上撞一堆莫名其妙的坑。所以我写这篇的定位很明确帮你把一个可用的 CentOS 8 环境从零搭起来并且让它在你手里是可维护的而不是讨论它该不该继续存在。1.2 版本号怎么选8.5 是当前的事实终版CentOS 8 发布过好几个小版本8.0.1905、8.1.1911、8.2.2004、8.3.2011、8.4.2105、8.5.2111。前几个版本早就从主镜像站下线了现在唯一还值得装、也最容易找到完整仓库的就是8.5.2111它是整个 CentOS Linux 8 分支的最后一个版本。这里有个很多人没注意的细节小版本号不只是新一点的区别它直接决定了你后面配 yum 源时要用哪个路径。比如你想把源指向归档站就必须写清楚8.5.2111这个目录名写错了就是 404。我见过有人拿着 8.4 的源地址往 8.5 的系统里塞然后满头问号为什么每个仓库都报错。选版本还有一条经验如果你的文档或教程没明确指定小版本就统一用 8.5.2111。它是终版归档最完整社区里针对它的踩坑记录也最多遇到问题一搜就有答案。1.3 DVD 版还是 Boot 版一张表说清楚CentOS 8.5.2111 官方提供两个 ISO很多人下载时随手点一个结果装到一半发现少东西又得重来。先把区别摊开讲镜像文件体积装完大概占多少适用场景CentOS-8.5.2111-x86_64-dvd1.iso约 8.4 GB最小化约 1.5 GB带图形约 6 GB离线环境、需要装图形界面、需要装额外软件包组CentOS-8.5.2111-x86_64-boot.iso约 700 MB同上但安装过程要联网网络通畅、只想装最小化系统、带宽紧张说人话就是DVD 版是全量离线包Boot 版是在线安装器。Boot 版在安装过程中会去拉取仓库里的包所以它省的是下载时间代价是安装时必须能访问网络而且如果源已经不能用CentOS 8 停更后很常见Boot 版会直接卡在正在下载软件包那一步动不了。我的建议是除非你带宽特别紧张否则一律下 DVD 版。8.4 GB 听起来吓人但现在家用宽带下也就十几分钟的事换来的是安装过程完全不依赖外部网络后期换源失败也不影响系统本身的可用性。反过来如果你在完全断网的内网里装DVD 版就是唯一选择——Boot 版在那种环境下根本装不完。还有一点CentOS 8 没有单独的 Minimal ISO这和 CentOS 7 不一样。7 时代有CentOS-7-x86_64-Minimal-xxxx.iso8 把这个砍掉了最小化安装是通过 DVD 版在安装界面里选Minimal Install软件包组来实现的本质上是同一份镜像。所以你要是翻遍镜像站找不到 Minimal 版不是你没找对地方是它确实不存在。2. 镜像下载与完整性校验2.1 从哪里下载归档站与国内镜像的选择这是最容易踩坑的一步。很多人习惯性地打开搜索引擎搜CentOS 8 下载点进去发现页面还在链接却全是 404或者下载到一半断流。原因很简单CentOS 8 停更后主镜像站mirror.centos.org上的 8 分支目录已经被移除了只剩 8-stream。你现在还能拿到的 8.5.2111 镜像全都来自归档vault路径。官方归档入口的目录结构是这样组织的vault.centos.org/8.5.2111/isos/x86_64/进到这一层就能看到 dvd1.iso、boot.iso 和校验文件。这个站点的好处是权威、文件完整缺点是服务器在国外速度看运气我实测深夜能跑到几 MB/s白天有时候只有几百 KB。如果你追求下载速度国内几家开源镜像站的归档区是更好的选择它们都保留了 8.5.2111 的完整 ISO。这几个站点平时同步开源软件属于正规的开源基础设施路径规则大同小异一般都是站点域名/centos-vault/8.5.2111/isos/x86_64/这种形式。我常用的几个方向阿里云开源镜像站同步及时国内速度最稳适合直接下载大 ISO。清华 TUNA 镜像站文档清晰归档目录规整适合边下边核对文件清单。中科大 USTC 镜像站教育网内速度极快校园网用户优先考虑。华为云镜像站企业网络环境下通常白名单友好。提示这几个站点都是公开的开源软件分发平台只用于获取安装镜像不要往上面传任何私有数据。下载之前有件事值得做先看一眼目录里是不是有一个叫CHECKSUM或者文件名带 sha256 的小文件。这东西是你后面校验镜像的凭据很多人下完 ISO 就走了回头发现镜像损坏白装一遍。2.2 校验镜像别省这三分钟我见过太多装到一半报错的案例根源都是 ISO 下载时出了错——断点续传没接好、下载工具把文件截断了、或者更糟的下到了被人动过手脚的镜像。校验这一步看着多余实际上能帮你省掉后面一两个小时的排查。在 Windows 上如果你用 PowerShell可以直接算Get-FileHash .\CentOS-8.5.2111-x86_64-dvd1.iso -Algorithm SHA256在 Linux 或 macOS 上更简单sha256sum CentOS-8.5.2111-x86_64-dvd1.iso把输出的一长串十六进制和 CHECKSUM 文件里对应那一行比一比只要有一位不一样就别犹豫删了重下。别想着可能只是个别字节的问题装装看镜像损坏导致的失败往往出现在文件复制阶段那时候你已经填完分区、设完密码心情会很糟。这里补一个我自己的习惯下载和校验放在同一个目录里做校验通过后立刻把 ISO 拖到虚拟机宿主机或者 U 盘制作工具能访问的位置避免中途被其他程序占用。另外ISO 是只读用途校验完可以顺手把它的只读属性打开防止误删或者被写入工具反复改写。2.3 装物理机的话启动盘怎么制大多数人是在虚拟机里折腾但如果你要给一台旧笔记本或者测试服务器装物理机就得先做启动盘。Windows 下我一般用 Rufus界面直观选择 ISO 之后它会自动识别是 UEFI 还是 Legacy BIOS 模式分区类型提醒GPT UEFI或者MBR BIOS时照着选就行。有一个坑要注意Rufus 会弹窗问你是以 ISO 镜像模式写入还是以 DD 镜像模式写入选 DD 模式ISO 模式在 CentOS 8 上偶发引导失败尤其是配合某些主板的时候。Linux 下就更直接了一条命令的事sudo dd ifCentOS-8.5.2111-x86_64-dvd1.iso of/dev/sdb bs4M statusprogress oflagsync务必确认of/dev/sdb里的设备名是你的 U 盘不是你的系统盘——这条命令写错目标设备数据就没了没有任何后悔药。判断方法很简单插上 U 盘前后各跑一次lsblk多出来的那个就是它。3. 安装过程逐步拆解3.1 虚拟机参数规划算清楚再动手在 VMware Workstation 或者 VirtualBox 里建虚拟机界面上的滑块拖一拖就完了但有几个参数是会影响后续使用的值得算一下。内存CentOS 8 的最小化安装官方建议 1 GB 起步但实际用起来 1 GB 很紧张光是 dnf 更新就能把你卡到怀疑人生。我一般给2 GB 打底如果安装时要选带 GUI 的服务器这个软件包组直接给4 GB因为图形环境本身就吃掉一大块。虚拟机内存是可以后期调整的但调整时要关机不如一开始就给够。CPU2 核是最舒服的配置。1 核也能装就是安装过程会慢到你以为是卡死了。如果你宿主机核心数富裕给 4 核也行但对纯系统安装来说收益不大。磁盘这才是需要认真算的。官方给的最小磁盘是 10 GB但那个数字基本只够装一个裸系统装完就得赶紧清理日志。我的建议是用途建议磁盘说明纯命令行实验20 GB装完约 1.5 GB剩余空间足够折腾带 GUI 的桌面环境40 GB图形包组本身就要 5-6 GB加上缓存要装数据库/中间件60 GB 起数据目录要预留空间别到时候扩盘磁盘类型选单个文件、按需分配就行不必预分配全部空间这样虚拟机初始占用小迁移也方便。但如果你打算做性能测试那就改成预分配避免运行时磁盘增长带来的抖动。网络模式是个容易忽略的点。NAT 模式最简单虚拟机通过宿主机上网适合绝大多数学习和测试场景桥接模式会让虚拟机直接拿到局域网 IP适合你需要从别的机器访问它的场景。我建议第一次装的时候先用 NAT等系统跑起来、确认没问题了再按需改桥接。3.2 引导与语言、时区设置虚拟机挂上 ISO开机。CentOS 8 的引导菜单会在几秒后自动进入安装器如果你眼疾手快可以按上下键打断自动倒计时然后选择Test this media install CentOS Linux 8——这个选项会先校验安装介质的完整性再进入安装。多花几分钟但能确保不是介质问题导致的失败我一般都会选它。引导模式这里有个隐性坑UEFI 和 Legacy BIOS 装出来的系统引导分区结构完全不同。虚拟机默认一般走 UEFI物理机看主板设置。你不需要刻意改但要记住自己用的是哪种因为后面排查引导问题时这是第一个要确认的信息。进入安装界面后第一屏是语言选择。建议直接选简体中文因为后面分区、网络这些界面的术语用中文看着更顺。但有个例外如果你打算以后照着英文文档操作命令那选英文也行反正命令行层面是一样的图形界面语言不影响最终系统。时区设置容易被跳过但建议认真选选择亚洲/上海并确认右上角的时间是准的。这个设置会写进系统的硬件时钟策略里如果时区错了后面日志时间、证书有效期判断、定时任务全都会乱。我遇到过一次装完系统发现 chrony 同步一直失败查了半天是时区设成了 UTC 而机器 BIOS 时间又是本地时间两边打架。3.3 磁盘分区方案设计这是整个安装过程里最需要动脑子的部分。CentOS 8 的安装器默认走 LVM XFS很多人直接点自动配置分区就过了。自动分区能用但它给你的布局是通用解不一定适合你的用途。我把常见的几种思路摊开说。方案一全自动最省事。安装器会自动划分/boot、/和 swap全部基于 LVM。适合纯实验、随时可以推倒重来的场景。缺点是/和/home不分离哪天日志写爆了整个系统一起遭殃。方案二手工分/boot、swap、/适合大多数场景。这是我给测试机的标准配方挂载点大小文件系统理由/boot1 GBxfs放内核和 initramfs1 GB 足够容纳多个内核版本swap按内存算swap见下面的计算规则/剩余全部xfs系统与数据都在这里实验环境够用方案三/、/var、/home分离适合要长期跑服务的机器。把/var单独分出来是因为日志、数据库、容器镜像默认都往这里写单独一个分区能防止它写满拖垮根分区。/home单独分方便重装系统时保留用户数据。这方案多占一点管理成本但出问题时好处理得多。swap 给多大这是被问得最多的问题。Red Hat 官方文档给的建议表是这样的内存 2 GB 以下swap 给内存的 2 倍内存 2 GB 到 8 GBswap 等于内存大小内存 8 GB 到 64 GBswap 给 4 GB内存 64 GB 以上给 4 GB 起步再看需求。不过说实话现在这个规则更多是历史惯性早年内存贵swap 承担了很大一部分内存扩展的角色现在内存便宜了swap 主要是防 OOM 的缓冲垫。所以我给虚拟机的做法是内存 4 GB 以上时swap 固定给 4 GB够用也不浪费磁盘。分区方案定了之后有个必看的操作必须把存储配置从自动改成自定义进去手动创建分区否则你上面算的全白搭。另外如果这是全新磁盘安装器会提示你要不要回收空间选是丢弃所有数据即可——前提是你确认这块盘没有别的东西。注意分区页面里有个分区方案下拉框区分 LVM、标准分区、Btrfs。除非你有明确理由统一用 LVM它支持后期在线扩容物理机上加块盘就能扩比标准分区灵活太多。3.4 网络、主机名与软件选择CentOS 8 的安装器把网络配置放进了主界面不用等到装完再配这点比 7 方便。默认情况下网卡是关闭的你得手动点进去把右上角的开关打开。主机名建议这时候就设好格式上用用途-序号.域名这种能一眼看懂的方式比如test-web01.local。我见过太多环境里主机名还是localhost.localdomain后面做集群或者写监控规则时一堆机器分不清谁是谁只能挨个连上去看 IP。现在花十秒改掉以后省很多事。IPv4 设置里如果你网络里有 DHCP 就保持自动如果是固定 IP 的实验环境就手工填 IP、掩码、网关和 DNS。DNS 这一项别漏CentOS 8 的安装器如果没配 DNS装完之后你会发现 ping IP 能通、ping 域名不通又是一轮排查。我一般会填两个一个内网 DNS一个公共的备用。接着是软件选择页面这决定了你装完之后系统里有什么最小安装Minimal Install只有基础命令行工具没有图形界面没有额外服务。占空间最小攻击面最小是我最推荐的选择因为装什么随时可以用 dnf 补。带 GUI 的服务器Server with GUI装了 GNOME 桌面适合需要图形工具的场景代价是体积大、资源占用高。基础设施服务器Infrastructure Server预装了 DNS、DHCP、文件共享等基础服务组件适合要搭内网服务的场景。工作站Workstation面向桌面用户预装办公和开发工具。这里有个细节值得提醒如果你的机器装了之后发现连ifconfig都没有不是坏了是最小安装没带 net-tools。用ip addr代替或者装完补一个dnf install net-tools。这个坑每年都有人踩因为很多老教程还在写ifconfig。3.5 用户、密码与安装收尾用户设置页面里有两件事设 root 密码、创建普通用户。两个都做别只做一半。root 密码建议设得复杂一点但更重要的是自己能记住别搞那种复制粘贴一次性的强密码回头进不去单用户模式都费劲。安装器会提示密码太简单如果只是本地实验机你在确认提示后可以继续如果是任何有网络暴露风险的机器老老实实按它的要求来。普通用户的创建我强烈建议做。原因有两个一是日常操作不该用 root很多命令以 root 跑会直接把文件属主写成 root后面用普通用户跑服务就会报权限错误二是 CentOS 8 默认允许 root 密码登录 SSH 吗实际上默认配置里PermitRootLogin是允许的但出于习惯我建议你建好普通用户加进 wheel 组方便用 sudo。等所有带感叹号的配置项都变回正常颜色右下角那个开始安装按钮就能点了。点下去之后会进入复制文件的阶段进度条大概走几十秒到几分钟取决于 DVD 还是 Boot。安装完成后不要急着拔 ISO先点重启系统等它提示你移除安装介质再拔否则可能又引导回安装器白等一轮。4. 装完必做源修复与基础环境配置4.1 为什么一执行 dnf 就报错系统装完你兴冲冲地敲下第一条dnf update大概率会看到这么一串Failed to download metadata for repo appstream Error: Failed to download metadata for repo appstream: Cannot download repomd.xml这几乎是 CentOS 8 装完之后的标准剧情新手容易以为是网络问题反复检查 ping、DNS、网关折腾半天。根因不在你的网络而在仓库地址已经不存在了。前面说过mirror.centos.org上的 8 分支目录在停更后被移除了但系统出厂时自带的/etc/yum.repos.d/里那些.repo文件baseurl和mirrorlist还指向老地址。于是 dnf 去请求一个已经不存在的路径自然全是 404。这里还有个细节值得知道CentOS 8 不同小版本的 repo 文件名是不一样的。8.0 到 8.2 用的是CentOS-AppStream.repo、CentOS-Base.repo这类名字从 8.3 开始改成了CentOS-Linux-AppStream.repo、CentOS-Linux-BaseOS.repo、CentOS-Linux-Extras.repo。这个差异直接决定了你后面批量替换的时候用哪个通配符写错了就改了个寂寞。4.2 方案一把仓库指向归档地址最稳妥的做法是把仓库整体指向归档站。官方给的标准操作是两步先把mirrorlist全部注释掉再把baseurl从原来的镜像地址换成归档地址。在 8.5 上命令可以写成这样# 备份原始配置出问题可以回退 sudo mkdir -p /etc/yum.repos.d/backup sudo cp /etc/yum.repos.d/CentOS-Linux-*.repo /etc/yum.repos.d/backup/ # 注释掉 mirrorlist sudo sed -i s/^mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-Linux-*.repo # 把 baseurl 指向归档站 sudo sed -i s|^#baseurlhttp://mirror.centos.org|baseurlhttp://vault.centos.org|g /etc/yum.repos.d/CentOS-Linux-*.repo # 重建缓存 sudo dnf clean all sudo dnf makecache最后那条dnf makecache是关键它会把新仓库的元数据重新拉一遍。如果这一步能顺利跑完你会看到几个仓库的元数据被成功下载那就说明修好了。这里有几个实测细节第一归档站是国外地址速度不快makecache可能要等一两分钟别以为卡死了第二sed里的^#baseurl这个锚点很重要不加的话可能连已经被注释的其他行一起改动第三如果你不确定通配符该用哪个先ls /etc/yum.repos.d/看一眼实际文件名比猜靠谱。4.3 方案二换成国内归档源速度更快如果你觉得归档站太慢可以换成国内镜像站的归档目录。思路和上面一样只是把 baseurl 里的域名换掉。以阿里云的归档路径为例写完大概是这个形式[baseos] nameCentOS Linux $releasever - BaseOS baseurlhttp://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/ gpgcheck1 enabled1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial这里有个必须注意的点8.5.2111这个路径是写死的不要用$releasever代替。因为$releasever在你的系统里解析出来就是8而归档站上的目录名是8.5.2111两者对不上结果还是 404。这是很多人在换源时最容易犯的错误网上不少教程互相抄把这个坑一直传下去。换源之后同样要dnf clean all dnf makecache。判断换源成功有个很直观的办法随便装个小包试试比如sudo dnf install -y tree如果几秒钟就装好了说明国内源生效了如果卡了很久还报错回去检查 baseurl 拼写和路径。提示换源属于修改系统配置改之前务必备份.repo文件如果你在一个受管环境里操作先确认这么做不违反内部规范。4.4 装完顺手要做的几件事系统能联网、源能用之后有几件事我建议一次性做完后面省心。第一更新时间。CentOS 8 的 GNOME 把时间同步藏得比较深最小化安装也没有图形界面用命令行最直接sudo dnf install -y chrony sudo systemctl enable --now chronyd timedatectl status时间不准会导致很多诡异问题HTTPS 证书校验失败、Kerberos 认证失败、日志时间线对不上、集群节点互相认为对方过期。这是那种平时感觉不到、出问题时又极难定位的东西装完就配好最省事。第二确认 SELinux 和防火墙的状态。CentOS 8 默认 SELinux 是 enforcing、firewalld 是开着的。不要一上来就setenforce 0或者systemctl stop firewalld那是把安全机制直接关掉属于典型的解决不了问题就解决提出问题的人。正确做法是去看日志、加规则getenforce sudo firewall-cmd --state sudo firewall-cmd --list-all如果某个服务端口不通用firewall-cmd --add-port8080/tcp --permanent加规则再--reload比直接关防火墙好得多。第三装几个常用小工具。最小化安装的环境比较素我通常一次补齐sudo dnf install -y vim wget curl net-tools bash-completion lsof tree这几个东西加起来没多少体积但能在你排查问题时省掉这个命令怎么没有的来回。第四检查 SSH 配置。如果你打算远程登录确认sshd在跑并且根据自己的安全要求决定要不要禁用 root 登录。修改/etc/ssh/sshd_config之后记得sudo systemctl restart sshd而且改之前保持当前会话不要断另开一个窗口测试新配置能连上再关旧的否则改错了就把自己锁在外面了。5. 常见问题与排查技巧实录5.1 安装阶段的问题速查安装环节的问题大多有明确特征我整理了一张对照表遇到时可以直接按图索骥现象大概率原因处理办法引导菜单都不出现直接进原系统虚拟机没挂 ISO或启动顺序不对检查虚拟机 CD/DVD 设置确认启动时连接已勾选报 No bootable device启动盘没做好或 U 盘不被识别换 USB 口重试Rufus 改用 DD 模式重做安装到一半报介质错误ISO 下载损坏用 sha256sum 重新校验不合格就重下卡在正在下载软件包用的是 Boot 版且源不可用换 DVD 版重装或用 Boot 版时手工指定可用源No space left on device磁盘给少了重装并加大磁盘或先只选最小化安装分区页面找不到磁盘虚拟磁盘未创建或控制器类型不对检查虚拟磁盘配置SCSI/NVMe 控制器换一下试试图形界面装到一半花屏/黑屏虚拟机显存不足或 3D 加速冲突关闭 3D 加速显存调到 128 MB 以上这张表里我踩得最多的是第二个。当年做启动盘Rufus 默认推荐 ISO 模式我照做结果机器就是不认换成 DD 模式一次就过。后来我才知道ISO 模式和 DD 模式在引导文件布局上有差异某些主板固件对前者兼容性差。5.2 停下来就动不了安装卡死的处理思路安装中途卡住是另一个高频问题。判断卡住和只是慢有个简单办法看硬盘灯和虚拟机状态栏的 I/O 指示。如果硬盘在闪、网络在跑那是在干活等着就行如果十几分钟一点动静没有那才是真卡了。真卡住时我的处理顺序是这样的第一步切换到另一个 TTY 看日志。CentOS 安装器支持CtrlAltF1到F6切换虚拟终端其中有一屏是滚动的安装日志。你会看到最后停在哪一步比如是卡在解压某个包还是卡在探测硬件。这比对着正在安装的进度条干瞪眼强太多。第二步回忆刚才改了什么。绝大多数卡死都和最近一次操作有关刚勾了某个软件包组、刚改了分区、刚插了 USB 设备。把这些还原到上一步再试往往就过了。第三步换配置重来。把内存翻倍、CPU 加核、磁盘类型换成 SATA 而不是 NVMe这些改动看起来和卡死无关但虚拟化环境下的兼容性问题有时候就是靠这种玄学换法解决的。我遇到过一次虚拟机用 NVMe 控制器装 CentOS 8每次都在分区后卡死换成 SATA 就一帆风顺至今没搞清具体是哪个环节的兼容性问题。注意卡死之后不要直接关虚拟机电源那样可能把虚拟磁盘写坏。优先在虚拟机菜单里选发送关机信号或者强制重启装到一半重来问题不大。5.3 装完之后 dnf 各种报错的排查路径装完后最烦的就是 dnf 报错因为表现五花八门。我总结了一条排查路径按顺序走基本能定位先看是哪个仓库报错。报错信息里会写repo appstream或者repo baseos这直接告诉你是哪个.repo文件有问题。再确认网络。ping一下仓库域名curl -I一个具体路径确认不是 DNS 或路由问题。这里有个经验别只用 ping 判断网络通不通ping 通不代表 HTTP 能通中间可能有代理、防火墙拦了 80/443。然后检查配置文件。用cat打开对应的.repo文件逐行看baseurl和mirrorlist。常见的错误有三种地址写错比如路径里少了/os/、$releasever变量解析不对8.5 的归档路径必须写死为 8.5.2111、enabled被误改成 0。最后重建缓存。改完配置务必执行dnf clean all再dnf makecache。只改配置不清理缓存dnf 可能还在用旧的元数据你会以为改动没生效。按这个顺序走下来我遇到的 dnf 问题九成都能解决。剩下那一成通常是GPG 校验失败报错里会提到gpgcheck。这种情况要么是密钥没导入要么是仓库签名对不上可以用rpm --import导入对应的公钥文件或者临时把gpgcheck设为 0 定位问题但确认能用之后一定要改回 1别一直关着。5.4 几个只有实际踩过才知道的细节最后分享几个零散的实操经验都是文档里不会写、但真能省时间的东西。关于快照。如果你用 VMware装完系统、还没开始折腾配置之前先打一个快照。后面配源、装软件、改配置一不小心搞崩了秒回滚不用重装。我基本是系统装好打一个源配好打一个基础软件装好打一个三个快照下来任何时候都有退路。关于时间同步。虚拟机挂起再恢复之后系统时间和宿主机可能差出一大截尤其是你跨天用的时候。养成习惯遇到证书报错、认证失败先date看一眼时间十次里有三次就是它。关于 root 登录 SSH。CentOS 8 默认其实允许 root 密码登录但很多内部规范要求禁用。改的时候记住那条铁律保持当前会话不动另开会话验证。我见过有人直接在唯一的 SSH 会话里重启 sshd配置写错会话断了机器又进不去只能走控制台。关于内存给多少。上面说 2 GB 打底但如果你的虚拟机宿主机内存也不宽裕别硬撑。宁可给 2 GB 加 4 GB swap也别给 1 GB 硬跑因为 dnf 在解压元数据时是内存消耗大户内存不足时它可能直接被 OOM killer 干掉报错信息还特别隐晦。关于系统盘瘦身。装完后dnf clean all清一下缓存/var/cache/dnf目录能腾出不少空间日志方面检查一下/var/log的增长长期跑的测试机建议配一下 logrotate别让日志悄悄把根分区写满——根分区写满是那种所有服务突然全挂的典型元凶。说到底CentOS 8 现在更像是一个特定历史阶段的基础设施把它装起来、用起来、维护住靠的不是追求最新而是把这套流程里的每个坑都提前知道。我第一次装的时候光是那个 yum 报错就折腾了一晚上后来才明白根因是仓库地址下线这种和操作水平完全无关的原因。现在回头看这套流程里真正需要动脑子的地方其实就两个磁盘怎么分、源怎么配其余全是照做就行。把这俩想明白剩下的都是体力活。