ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

VMware安装CentOS 8教程:解决yum源失效与国内镜像源配置

VMware安装CentOS 8教程:解决yum源失效与国内镜像源配置 最近又有朋友问我VMware里怎么装CentOS 8说按着网上老教程一步步走却在安装源那一步卡住报错提示找不到软件仓库或无法联网。其实这个问题的根源很明确CentOS 8在2021年底就停止维护了官方仓库下线你拿老教程里提供的旧镜像配的又是已经失效的官方yum源系统自然装不进去也装不完全。这篇博客就把整套流程重新捋一遍——从VMware创建虚拟机、到CentOS 8系统安装、再到换成国内vault镜像源让yum恢复工作最后把VMware Tools和静态网络配好一次讲透。不管你是刚摸Linux的初学者还是需要快速搭虚拟环境的开发、运维照着这套步骤走基本不会再被安装源报错这类问题卡住。1. 动工之前先把这几个概念弄清楚再上手1.1 CentOS 8停止维护到底意味着什么很多人没有意识到CentOS 8不是还能用的普通老版本而是已经EOLEnd of Life的系统。红帽官方在2021年12月31日就停止了对CentOS 8的维护这意味着两个直接后果第一官方软件仓库mirror.centos.org里CentOS 8的目录已经被移除或移入vault目录原来的yum源地址全部失效。系统装好后如果你直接执行yum install任何软件几乎100%会收到无法从镜像列表获取元数据或Could not resolve host: mirrorlist.centos.org的错误。这不是你网络的问题是仓库真的没了。第二系统本身的更新包、安全补丁不再发布所以它就是一台固定版本的机器。很多生产环境还在用CentOS 8主要是因为业务依赖它验证过的环境。我们安装CentOS 8也是一样的思路——图稳定、图兼容不是图新功能。理解了这两点你就能明白为什么网上那些旧教程不能直接照搬它们教你的yum源配置、epel配置全是针对还在生命周期内的系统写的对CentOS 8已经不成立。所以后续章节里配置镜像源的部分才是整个安装流程的真正关键点系统安装本身反而相对机械。1.2 镜像源是什么为什么必须换镜像源简单说就是软件仓库的备份站。各大高校和云厂商会把CentOS、Ubuntu这类Linux发行版的仓库内容同步到自己的服务器上形成一个和官方仓库几乎一模一样的副本。你访问国内镜像站速度和稳定性往往比访问国外官方源要好得多尤其在虚拟机场景下能明显缩短软件安装时间。对于CentOS 8这种已经停服的版本镜像站提供的通常是vault目录。vault这个词可以理解为归档库专门存放那些已经停止维护的版本。比如清华TUNA镜像站有/centos-vault/目录阿里云有/centos-vault/目录中科大也有/centos-vault/目录。我们需要做的就是让yum去这些归档库里找软件包。换源的逻辑其实不复杂核心就是修改/etc/yum.repos.d/目录下的repo文件把baseurl指向可用的镜像站vault地址再把mirrorlist配置删掉或者注释掉。把这个套路搞清楚以后不管装什么版本的系统、遇到什么换源问题你都能自己解决。1.3 提前备好这三样东西动手之前先确认你手上有这三样VMware Workstation Pro。目前版本已经出到17官方对个人学习用途免费开放直接去VMware官网下载正式版本就可以不需要找什么特殊授权。注册一个账号走个人许可流程零成本。CentOS 8的ISO镜像。注意CentOS 8的DVD镜像在国内镜像站基本都已经下架了因为太老。最稳的方法是去镜像站的centos-vault/8.5.2111/isos/x86_64/目录下载CentOS-8.5.2111-x86_64-dvd1.iso文件名里带dvd1的就是完整安装镜像。8.5.2111是CentOS 8的最终小版本建议直接下这个。如果你手头是8.0到8.4之间的老镜像也能用不过装完后的补丁差异会有后面配源时统一按8.5.2111处理最省事。一个能联网的环境。后面配置yum源时需要从镜像站拉取软件包元数据所以虚拟机必须能访问外网。2. VM环境搭建创建一台像样的CentOS 8虚拟机2.1 VMware Workstation的配置策略很多新手一上来就双击VMware图标、点新建虚拟机、一路下一步这样也能装但建出来的虚拟机配置往往不合理。我的习惯是打开VMware后先看一眼编辑菜单下的偏好设置确认一下默认虚拟机位置是不是在空间充足的磁盘上。CentOS 8安装后至少要占5到8GB如果之后还要装数据库、容器环境二三十GB很正常C盘预留不足很容易翻车。另外建议在安装之前先把虚拟机的网络模式想清楚不要等装完系统再回去折腾网卡。对于绝大多数学习、测试场景NAT模式是最省心的方案虚拟机通过宿主机共享IP上网不需要额外配置就能联网。如果你需要让局域网其他机器直接访问虚拟机里的服务那才考虑桥接模式。这部分后面细说。2.2 新建虚拟机时这些参数要认真给点击新建虚拟机选择自定义高级比典型更可控。硬件兼容性按默认走之后这几项是关键安装来源选择稍后安装操作系统把ISO挂载放到系统装好后再挂。这一步是为了避免VMware的简易安装自动生成一些我们不想要的分区策略。客户机操作系统Linux版本下拉菜单里选CentOS 8 64位。如果版本列表里没有CentOS 8选Red Hat Enterprise Linux 8 64位也可以因为CentOS本来就是RHEL的克隆VMware对两者的驱动兼容性是一致的。处理器建议2核心起步。单核心装系统会明显偏卡虽然也能装但配yum源、编译软件的时候等待时间会翻倍。内存至少分配2048MB。如果打算装带图形界面的版本建议直接4096MB否则GNOME桌面会卡得让人怀疑人生。这里的一个建议是不要低于此值内存太小会触发CentOS安装器OOM或者明明装好了系统进桌面后又各种无响应。磁盘创建虚拟磁盘大小给30GB。CentOS 8最小安装也就占五六个G但后续软件包、容器镜像、日志都会占空间30GB是比较安全的下限。磁盘类型默认NVMe或SCSI都可以性能差异在虚拟环境下影响不大。自定义硬件里把新CD/DVD设置为使用ISO镜像文件选中刚才下载的CentOS 8 ISO。2.3 网络模式NAT还是桥接别选错VMware的三种网络模式里NAT和桥接是最常用的Host-only基本只在隔离测试时用。NAT模式下虚拟机和宿主机组成一个独立的私有网段虚拟机对外访问时通过宿主机转发。优点是虚拟机IP固定在一个内部网段不受外部网络变化影响宿主机带着笔记本到处换WiFi都不影响虚拟机上网非常适合学习环境。CentOS 8默认安装时会把NAT网卡识别为ens160或者类似命名DHCP自动获取IP开箱即用。桥接模式下虚拟机会直接出现在物理局域网中和宿主机处于同一网段别人可以直接访问虚拟机IP。副作用是一旦宿主机切换网络虚拟机的IP可能变化或失效需要重新配置。我的建议很直接个人学习、搭测试环境一律用NAT如果你在部署一个真正对外提供服务的虚拟服务器再考虑桥接并配合静态IP。后面配置网络的部分也是基于NAT模式讲的。3. 从ISO启动到系统安装完成全程实操3.1 安装引导界面操作细节启动虚拟机后会看到CentOS 8的引导菜单。这里有几个选项Install CentOS 8、Test this media install CentOS 8以及Troubleshooting。按方向键选第一项回车就行Test this media检查光盘完整性比较耗时只要ISO是你从正规镜像站下载的基本可以跳过这个校验具体看个人习惯。进入安装界面后语言选择建议选English不要选中文。倒不是说中文不行而是CentOS 8的安装日志、报错信息、命令行输出全是以英文为主的后期你在网上搜问题需要把中文路径对应回英文才能查资料徒增成本。系统装好后想汉化随时可以装语言包。选完语言进入INSTALLATION SUMMARY主菜单这里要做的配置一般是Software选择软件组、System里的Installation Destination做磁盘分区然后点右下角Begin Installation。网络和主机名那一项NAT模式下一般已经是连接状态可以先放着也可以顺便设个hostname。3.2 软件选择图形界面还是最小安装关键看用途在Software Selection里CentOS 8会让你选软件组。常见的两个方向Server with GUI带GNOME图形桌面适合新手刚开始熟悉Linux、或者你要在里面跑浏览器/图形化工具的场景。缺点是内存占用高系统占用磁盘空间也更大。Minimal Install纯命令行环境适合做服务器、跑服务、学操作。占用小、干净也更贴近生产环境。如果你只是搭个环境跑跑命令我强烈建议选Minimal Install。很多老教程默认让你装GUI结果后续查问题、写配置全在图形界面里操作反而把最基本的命令行基本功丢了。而且Minimal模式对系统资源要求低虚拟机的性能体验更好。当然如果你确实需要图形界面选Server with GUI也没问题两者后续转换也不是不能做只是麻烦而已。3.3 磁盘分区和密码设置注意事项在Installation Destination里保持默认Automatic选项直接按Done即可。对于虚拟机里的CentOS 8自动分区会生成/boot、/root和swap等标准布局已经够用。手动分区不是不行但对大多数场景没太大必要尤其是对Linux还不太熟的时候手动分区很容易分配不合理比如给swap分配过大把根分区饿死或者忘了给/boot单独分区导致后续系统升级出问题。点击Begin Installation后系统会进入配置用户和root密码的界面。Root密码务必设置一个你能记得住的强密码这个是你进入系统的最终通行证。如果你勾选了Lock root account那还要创建一个自定义用户并用sudo来执行管理员命令。这里有一个常见坑密码强度校验默认是开启的你设一个特别简单的密码它会拒绝所以直接给root设一个包含大小写字母和数字的密码省得折腾。安装完成后点击Reboot注意把虚拟机的CD/DVD设置改回使用物理驱动器或移除ISO挂载否则重启后引导菜单又会去读ISO出现重复安装的问题。3.4 装完第一次登录要做的三件事重启进入系统后用root登录或者在自定义用户下执行sudo -i切换root。第一次登录我习惯按顺序做三件事第一确认版本信息。执行cat /etc/redhat-release确认是8.5还是别的版本后面配源时要用到。第二确认网络连通。执行ip addr查看网卡有没有拿到IP再执行ping -c 3 baidu.com看看外网通不通。如果这步都通不过后面配源肯定白搭先排查网卡和DNS。第三检查/etc/yum.repos.d/目录下有哪些repo文件。CentOS 8默认会生成CentOS-Base.repo、CentOS-AppStream.repo、CentOS-Extras.repo等几个文件这些就是系统安装软件的货源清单后面我们改的就是它们。4. 重头戏把yum源换成国内vault镜像源4.1 为什么配完系统yum还是报错系统装好以后如果你直接执行yum update大概率会看到类似这样的报错Errors during downloading metadata for repository AppStream: - Status code: 404 for http://mirrorlist.centos.org/?release8archx86_64repoAppStreaminfrastock原因前面已经提过CentOS 8停服后官方源上的元数据文件已经被清理yum先去访问mirrorlist获取镜像列表发现根本解析不到或者返回404。所以你第一步要做的就是彻底放弃对官方源的依赖。需要特别提醒的是网上有不少教程会让你用sed命令把mirror.centos.org替换成vault.centos.org这个做法在2022年之前是可行的但现在官方vault的访问速度和稳定性也不如国内镜像站而且一直用官方vault还有可能遇到证书过期、仓库缺失的情况。既然你网络环境已经能正常访问国内资源直接切到国内镜像站的centos-vault目录是最稳妥的选择。4.2 手动备份并重写repo文件一次配好下面我用阿里云镜像站的centos-vault目录来演示清华和中科大的操作是一样的只是域名不同。给出完整可执行的步骤先在命令行执行mkdir -p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/备份老配置是必做步骤别偷懒。接下来新建一个repo文件名字随意比如叫CentOS-Vault-aliyun.repovi /etc/yum.repos.d/CentOS-Vault-aliyun.repo写入下面内容注意8.5.2111要和你的系统版本对应[baseos] nameCentOS-8-BaseOS baseurlhttps://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/x86_64/os/ gpgcheck1 enabled1 gpgkeyhttps://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/x86_64/os/RPM-GPG-KEY-CentOS-8 [appstream] nameCentOS-8-AppStream baseurlhttps://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/x86_64/os/ gpgcheck1 enabled1 gpgkeyhttps://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/x86_64/os/RPM-GPG-KEY-CentOS-8 [extras] nameCentOS-8-Extras baseurlhttps://mirrors.aliyun.com/centos-vault/8.5.2111/extras/x86_64/os/ gpgcheck1 enabled1 gpgkeyhttps://mirrors.aliyun.com/centos-vault/8.5.2111/extras/x86_64/os/RPM-GPG-KEY-CentOS-8保存退出后先把缓存清掉再重建缓存yum clean all yum makecache如果一切正常你会看到yum从mirrors.aliyun.com拉取元数据最后提示Metadata cache created。执行yum repolist能列出三个仓库以及软件包数量到这一步镜像源就算配成功了。如果不想用阿里云清华源只要把baseurl改成https://mirrors.tuna.tsinghua.edu.cn/centos-vault/8.5.2111/...中科大的地址是https://mirrors.ustc.edu.cn/centos-vault/8.5.2111/...其他文件路径结构完全一样。4.3 EPEL仓库需要时顺手加上如果你后续要装一些不在CentOS基础仓库里的软件比如nginx、redis、htop这些大概率还要配EPEL仓库。EPEL的全称是Extra Packages for Enterprise Linux是Fedora社区为RHEL系维护的扩展仓库。EPEL针对CentOS 8也有对应的vault版本。依然以阿里云为例追加一个repo文件vi /etc/yum.repos.d/epel-aliyun.repo内容如下[epel] nameEPEL-8 baseurlhttps://mirrors.aliyun.com/epel-8/Everything/x86_64/ gpgcheck1 enabled1 gpgkeyhttps://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8然后再执行yum clean all yum makecache即可。EPEL仓库不需要带vault因为阿里云的epel-8目录是持续维护的虽然CentOS 8停服但EPEL 8的源还有一段时间生命周期。4.4 换源后的验证手段光看yum makecache成功还不够建议再做一个真实环境的验证操作。随便安装一个小软件比如yum install -y vim如果在安装过程中能正常下载RPM包且没有报404、校验失败之类的错误那说明整个链路yum - 镜像站 - RPM下载 - GPG校验都是通的。另外我自己有个习惯换完源以后执行一次yum update -y。因为从安装ISO到现在系统里可能有部分软件包版本较旧update一次能把能找到的更新全部装上虽然需要一点时间但换来的是系统内软件版本更一致后续编译、安装依赖软件时踩坑的概率低很多。注意这一步网络下载量会比较大耐心等它跑完即可。5. 让虚拟机更像真机VMware Tools与网络配置5.1 优先使用open-vm-tools而不是VMware Tools很多教程会让你点VMware菜单栏的虚拟机 - 安装VMware Tools然后挂载ISO进去运行vmware-install.pl脚本。但在CentOS 8这种新版系统上这套老流程经常出问题最常见的报错就是继续运行脚本未能在虚拟机中成功运行然后虚拟机屏幕分辨率被锁死鼠标进出不流畅麻烦不断。我现在的做法非常简单直接安装发行版自带的open-vm-tools。VMware早就把虚拟化增强工具做成开源版集成到各大Linux发行版仓库里了CentOS 8仓库里就有。在刚配好的源基础上一条命令就搞定yum install -y open-vm-tools装完之后把服务设为开机自启systemctl enable --now vmtoolsd这套工具能提供VMware对虚拟机的时钟同步、剪贴板共享、鼠标无缝进出窗口、屏幕分辨率自适应等功能和VMware自带的VMware Tools功能几乎一致还不用经历挂载ISO和编译脚本的痛苦强烈推荐。如果之后你的虚拟机要跑生产工作负载open-vm-tools也是更受官方认可的方式。5.2 用nmcli配置静态IPNAT模式下CentOS 8默认用DHCP获取IP这满足大多数学习场景。但如果你想给虚拟机一个固定的IP比如要给局域网里的其他设备访问或者你要在虚拟机里起一些服务端口那么静态IP配置就是刚需。CentOS 8的网络管理默认走NetworkManager命令行的配置工具是nmcli。先执行nmcli connection show会看到类似ens160的网卡连接名。接下来把DHCP改成手动分配IPnmcli connection modify ens160 \ ipv4.addresses 192.168.xxx.xxx/24 \ ipv4.gateway 192.168.xxx.1 \ ipv4.dns 223.5.5.5 119.29.29.29 \ ipv4.method manualIP地址段要和你VMware NAT网段的实际网关对应。可以打开VMware的编辑 - 虚拟网络编辑器选中VMnet8查看子网IP和网关地址一般是192.168.x.0和192.168.x.1。然后重启网络连接nmcli connection down ens160 nmcli connection up ens160执行ip addr验证IP是否生效。用ping测一下网关再ping一下公网确认静态IP配好后网络没有断。这里我踩过一个坑就是DNS只配置了一个阿里的223.5.5.5有时候解析出问题后来加了腾讯的119.29.29.29作为备用解析稳多了。5.3 系统装完先打一个干净快照安装配置到这里整个环境已经处于健康的初始状态这时候我强烈建议在VMware里做一个快照。快照的意义在于给你一个新装的、带可用源、带常用工具的虚拟机存一个还原点之后你再怎么折腾比如乱改配置、装坏软件、把系统搞到起不来都能一键回到这个状态。具体操作在VMware主机窗口顶部点击虚拟机 - 快照 - 拍摄快照起个名比如CentOS8-base-configured加上描述即可。注意快照在系统运行的时候也可以打但更推荐在系统关机状态下拍摄这样快照文件更干净。以后如果要克隆多台虚拟机也可以直接基于这个快照克隆省去重复安装和配源的时间。可以说这个习惯帮我省下了无数次的重复劳动。6. 常见问题速查与避坑笔记6.1 安装阶段常见报错一览表以下是我在实际安装和帮别人排查时最常遇到的几个问题及处理方案整理成表格方便对照问题现象根本原因解决办法安装引导时卡在test this media或检测过慢ISO未做介质验证系统逐文件检查跳过检测直接选择Install CentOS 8安装时安装源提示找不到或无法访问老教程给的安装源指向官方已下线地址安装时选本地ISO源不额外指定网络源首次yum update报404官方CentOS 8源已失效按照第4章替换为国内vault源yum makecache报模块化存储金库缺失的模块和流AppStream元数据与模块流不完整确认repo配置中AppStream地址正确删除本地缓存后重新makecache安装VMware Tools时提示脚本运行失败VMware tools脚本与新版系统库不兼容改用yum install -y open-vm-tools虚拟机网络不通ip addr没有IPNAT网络未正确分配DHCP或网卡未启动检查VMnet8网段设置用nmcli device connect ens160重新激活连接6.2 配完源之后不要忘记的小事还有一个很多人会忽略的问题CentOS 8的AppStream模块仓库有些软件包在vault里保留了旧版本但部分模块元数据有缺失安装某些软件时可能出现依赖冲突。遇到这种情况我的经验是先检查baseurl是否正确8.5.2111这个版本号是否和系统版本完全一致不要用8这种通配符因为vault归档目录是严格按版本号组织的。另外如果你发现某个软件在vault源里根本没有别硬装。考虑换个思路用通用二进制、源码编译或者容器方式跑会比跟yum源死磕更高效。6.3 我的几条实操心得-VMware里安装Linux系统ISO镜像尽量从国内镜像站下载不要拿一些老旧的下载站或网盘里的镜像镜像损坏或者被改过会带来各种莫名其妙的问题。配置yum源时不要图省事只改一个源文件BaseOS、AppStream、Extras三个仓库都要有对应配置缺一个后面总有某个软件装不上。每次改动yum源配置后养成yum clean all yum makecache的习惯不然yum缓存里的旧元数据会覆盖新配置的效果。虚拟机环境里时间同步问题很容易被忽略装了open-vm-tools后时间问题基本能自动解决不建议再在系统里额外启用NTP服务两者有时会冲突。说到底VMware装CentOS 8这件事最核心的拦路虎不是虚拟化配置而是源的问题。只要把镜像源这一步走通后面的操作基本都是常规操作。我实际操作下来最舒服的路径是下载8.5.2111的DVD ISO、建一台NAT网络模式的虚拟机、做Minimal安装、重启后立刻配阿里云vault源、装open-vm-tools、打快照收工。这套流程我前前后后帮别人跑了十几遍至今没有翻车记录。如果你也是拿它来搭学习环境或者临时测试机完全可以直接照着抄作业。
返回列表