尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

CentOS 7 内网离线本地 yum 源配置与 createrepo 实战

发布时间:2026/9/30 1:20:52

资讯中心
01
ARTICLE

CentOS 7 内网离线本地 yum 源配置与 createrepo 实战

CentOS 7 内网离线本地 yum 源配置与 createrepo 实战
内网机房里那台 CentOS 7 构建机上周又因为执行yum install -y gcc卡了十几分钟最后抛出一串Cannot find a valid baseurl for repo。这台机器躺在隔离区压根连不到外网可项目又急着装编译工具链。类似场景我碰过太多次服务器在专线内网、虚拟机只挂了主机模式、客户现场不允许访问互联网甚至只是外网镜像站临时抽风都会让默认的 yum 源变成摆设。Linux 配置本地 yum 源这件事表面看只是改一个.repo文件真正动手才会发现挂载路径、仓库元数据、GPG 校验、SELinux 上下文、多仓库优先级任何一个细节都能让你多折腾半小时。它解决的问题很直接在没有外网或外网不可靠的环境里让 RPM 包管理继续工作让yum install、yum update、yum groupinstall照常执行。适合谁看刚接触 Linux 的运维新手、需要在内网做批量部署的工程师、准备系统集成实验的学生以及手头有 ISO 镜像却不知道怎么变成仓库的人。下面我按自己实际踩坑的顺序把本地 yum 源从选型到落地整个讲一遍。1. 先搞清楚本地 yum 源到底解决了什么麻烦1.1 外网源在内网环境下的典型故障默认的 CentOS、RHEL、Rocky 安装完之后/etc/yum.repos.d/里会躺着CentOS-Base.repo这类文件它们的baseurl或mirrorlist指向公网地址。机器一旦进入纯内网DNS 解析不了、路由出不去、安全设备拦掉 80 和 443yum 就会在“下载元数据”这一步反复重试。最直观的报错有Could not resolve host: mirrorlist.centos.org、Cannot find a valid baseurl for repo: base/7/x86_64、Error: Failed to download metadata for repo base。很多人第一反应是去改 DNS或者怀疑网卡没配好但如果你的目标就是离线运行改 DNS 也解决不了根本问题因为外网源本身不可达。本地 yum 源的思路是把软件包仓库搬到本机或内网可达的位置。这个仓库可以是一张 DVD ISO 挂载后的目录也可以是你自己用createrepo生成的目录再通过file://、http://或ftp://暴露给 yum。yum 不关心仓库在互联网还是本地磁盘它只关心repodata目录里的元数据是否完整、baseurl是否指得对。元数据里记录了每个 RPM 包的名称、版本、依赖关系、文件列表、校验值yum 靠它做依赖解析。所以你只要让 yum 能读到一份合法的repodata它就能像访问外网源一样完成安装。这个机制也解释了为什么不能简单地把一堆 RPM 丢进目录就完事——没有createrepo生成的元数据yum 根本不知道目录里有什么。我在实际项目里总结过外网源不可用通常分三种情况第一种是彻底物理隔离机器连内网都只有特定端口这种必须用本地源第二种是外网时通时断比如通过代理访问yum 偶尔能成功但极不稳定构建流水线经常失败第三种是版本锁定需求外网源随时可能更新昨天能装的包今天版本变了导致编译结果不一致。本地源对这三种情况都能兜底尤其是第三种很多做嵌入式交叉编译的团队会专门把某个时间点的 RPM 集合冻结下来做成内部仓库保证半年后重新构建还能复现同样的环境。1.2 本地源适合哪些场景本地 yum 源最典型的场景是内网服务器批量初始化。比如你手上有二十台 CentOS 7 虚拟机需要统一装vim、net-tools、lsof、telnet、bash-completion如果每台都去连外网一是慢二是可能被防火墙拦三是并发下载会拖垮出口带宽。把 ISO 挂到每台机器本地或者在内网一台机器上做 HTTP 仓库其他机器指向它安装速度会从几分钟降到几秒。第二种场景是实验环境复现很多 Linux 课程要求“配置本地 yum 源”作为实验目的本质上就是让学生理解仓库、元数据、repo 文件三者的关系而不是死记命令。第三种场景是老旧系统维护。比如 RHEL 6.5 这类已经停止常规支持的版本公网源要么下架要么地址变更但客户现场还在跑关键业务不能随便升级。这时候找到当年的安装 ISO挂载后配成本地源至少能保证现有软件包可重装、可查询。第四种场景是安全审计要求某些环境不允许服务器直接访问互联网所有软件必须经过内部仓库审核后分发本地 yum 源就是这套流程的落地方式。还有一类场景容易被忽略容器镜像构建。你在 Dockerfile 里执行yum install时如果基础镜像对应的是内网环境同样需要把本地源配置进去否则构建阶段就会失败。需要提醒的是本地源不等于“万能源”。它只包含你放进去的 RPM 包ISO 里没有的包比如 EPEL 里的htop、nginx最新版本地源里也不会有。如果你需要这些要么提前把 RPM 下载好放进自定义仓库要么在内网单独搭一个 EPEL 镜像。我见过有人挂了一张 CentOS 7 的 DVD ISO然后抱怨yum install epel-release失败这不是配置问题是仓库里根本没这个包。所以动手之前先确认你的软件需求清单再决定用 ISO 源还是自定义源或者两者组合。2. 方案选型光盘、目录、HTTP 三种本地源怎么挑2.1 三种形态的核心差异本地 yum 源按访问协议和存放位置大致分三类光盘或 ISO 直接挂载、本地目录、内网 HTTP/FTP 服务。光盘/ISO 方式最简单mount之后写baseurlfile:///mnt/cdrom就能用适合单机、临时救急、实验环境。缺点是 ISO 里的包固定无法追加新 RPM如果多台机器都要用每台都得挂一份镜像占用磁盘空间。本地目录方式适合你已经把 RPM 包集中放在某个分区比如/data/localrepo然后用createrepo生成元数据baseurlfile:///data/localrepo。它比 ISO 灵活可以随时增删包但同样只对本机有效。HTTP 方式适合内网多机共享。你在一台机器上装httpd或nginx把仓库目录发布出去其他机器配置baseurlhttp://192.168.1.10/repo。这种方案最接近外网源的体验支持并发、支持yum makecache缓存、方便统一更新。缺点是多了一个 Web 服务要维护防火墙、SELinux、目录权限都要照顾到。FTP 方式现在用得少了因为配置比 HTTP 麻烦而且很多安全策略不鼓励明文 FTP。如果内网已经有文件服务器用 HTTP 暴露静态目录是最稳妥的。对比项光盘/ISO 挂载本地目录内网 HTTP配置难度最低低中等适用机器数单机单机多机共享能否追加 RPM不能能能是否需要额外服务不需要不需要需要 Web 服务典型 baseurlfile:///mnt/cdromfile:///data/repohttp://IP/repo常见坑重启后挂载丢失权限与 SELinux防火墙未放行选型时我一般先问三个问题这台机器是孤岛还是内网有共享节点软件包是一次性装完还是长期维护有没有权限开 Web 服务如果只是给一台测试机装几个包ISO 挂载最省事如果是给整个机架做基础环境HTTP 仓库更值得投入。别小看这个选择选错了后面迁移成本很高。我遇到过项目初期图省事每台机器挂 ISO后来要加一个内部 RPM二十台机器挨个重新挂载、重新生成元数据折腾了一下午。如果一开始就用 HTTP 仓库只需要在一台机器上更新其他机器yum clean all就能看到新包。2.2 选型时我优先看哪几个参数第一个参数是baseurl的协议。file://走本地文件系统不经过网络速度最快但要求路径必须存在且可读。http://走 TCP需要 Web 服务监听注意防火墙放行端口。第二个参数是gpgcheck。ISO 里的 RPM 通常带红帽系签名如果你导入过 GPG 公钥可以设gpgcheck1更安全如果只是内网测试图省事设gpgcheck0也能跑但生产环境不建议长期关闭。第三个参数是enabled默认 1如果你同时配置了多个仓库想临时禁掉某个改成 0 即可不用删文件。第四个参数是仓库优先级。CentOS 7 可以装yum-plugin-priorities在 repo 文件里写priority1数字越小优先级越高。当本地源和外网源同时存在或者你有多个自定义源时优先级能避免 yum 从错误的仓库拉包。第五个参数是exclude如果你不希望某个包被升级可以写excludekernel*这在锁定内核版本时很有用。第六个参数是cost它影响 yum 选择仓库的顺序数字越小越优先但不如priority常用。把这些参数理解清楚后面写.repo文件就不是照抄模板而是按需调整。还有一个容易忽略的选型点是系统版本与仓库路径的匹配。CentOS 7 的 ISO 挂载后Packages和repodata直接在根目录下baseurlfile:///mnt/cdrom即可。CentOS 8、Rocky 8/9 使用了 AppStream 和 BaseOS 两个仓库ISO 挂载后通常有BaseOS和AppStream两个子目录需要写两个 repo 段分别指向file:///mnt/cdrom/BaseOS和file:///mnt/cdrom/AppStream。如果你只写一个根路径yum repolist可能显示仓库存在但安装包时提示找不到。这个差异在从 CentOS 7 迁移到 Rocky 9 时特别容易踩我建议挂载后先find /mnt/cdrom -name repodata -type d看看元数据到底在几层目录下再决定baseurl写哪里。3. 从零搭建以 ISO 镜像为源的标准流程3.1 挂载 ISO 与系统版本确认动手前先确认系统版本和 ISO 是否匹配。执行cat /etc/redhat-release看发行版uname -r看内核uname -m看架构。比如输出CentOS Linux release 7.9.2009 (Core)和x86_64你就需要对应版本的 DVD ISO不要拿 i686 或 CentOS 8 的镜像去挂。ISO 可以放在本地磁盘比如/opt/iso/CentOS-7-x86_64-DVD-2009.iso也可以直接使用虚拟机光驱里的/dev/sr0。我习惯把 ISO 放在/opt/iso下目录名和文件名都避免中文和空格减少后续路径解析的麻烦。挂载命令分两种。如果是物理光驱或虚拟机已加载 ISO设备通常是/dev/sr0执行mkdir -p /mnt/cdrom后mount /dev/sr0 /mnt/cdrom。如果是 ISO 文件需要 loop 设备mount -o loop /opt/iso/CentOS-7-x86_64-DVD-2009.iso /mnt/cdrom。挂载完用df -h或mount | grep cdrom确认。然后进入/mnt/cdrom看一眼CentOS 7 应该能看到Packages、repodata、images、isolinux等目录CentOS 8 以上应该能看到BaseOS、AppStream。如果看不到repodata说明 ISO 不是 DVD 版可能是 minimal 或 netinstall后者没有完整仓库需要换镜像。注意如果挂载时报mount: /mnt/cdrom: wrong fs type, bad option, bad superblock先确认 ISO 文件是否完整可以用file命令查看或者重新下载。另一个常见错误是/mnt/cdrom目录不存在mount不会自动创建目录必须先mkdir。挂载完成后不要急着写 repo 文件先验证一下目录可读性。执行ls /mnt/cdrom/repodata/ | head应该能看到repomd.xml以及一些.xml.gz或.sqlite文件。repomd.xml是仓库元数据的入口yum 首先读它。如果这个文件不存在后面yum makecache必然失败。有些精简版 ISO 会把repodata放在子目录比如Server/repodata这时候baseurl要写到Server那一层。用find /mnt/cdrom -maxdepth 3 -name repomd.xml可以快速定位。3.2 写 repo 文件与缓存刷新写.repo文件之前先把系统自带的仓库配置备份掉。执行mkdir -p /etc/yum.repos.d/bak然后mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/。这么做是为了避免默认外网源干扰否则 yum 可能优先尝试外网地址即使本地源配好了也会报错。备份而不是删除是为了以后需要恢复外网源时还能找回来。如果你只想禁用而不是移走可以用yum-config-manager --disable或者把enabled0但新手阶段直接移走更直观。接下来新建/etc/yum.repos.d/local.repo内容如下[local] nameLocal CentOS 7 Yum Source baseurlfile:///mnt/cdrom enabled1 gpgcheck0如果是 CentOS 8 或 Rocky 9需要写两个段[local-baseos] nameLocal BaseOS baseurlfile:///mnt/cdrom/BaseOS enabled1 gpgcheck0 [local-appstream] nameLocal AppStream baseurlfile:///mnt/cdrom/AppStream enabled1 gpgcheck0这里的[local]是仓库 ID必须唯一不能有空格。name是描述随便写但建议写清楚用途。baseurl指向仓库根目录也就是包含repodata的那一层。enabled1表示启用。gpgcheck0表示不校验签名测试环境可以这样如果你要开启校验需要写gpgcheck1和gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7并确保公钥文件存在。很多新手写baseurlfile:///mnt/cdrom/带尾部斜杠一般也能识别但为了统一建议不带尾部斜杠。写完文件后执行yum clean all再执行yum makecache。yum clean all会清掉/var/cache/yum下的旧元数据避免缓存干扰。yum makecache会读取所有启用的仓库下载并缓存元数据到本地。如果这两步没有报错基本就成功了。最后用yum repolist查看仓库列表应该能看到local以及包数量。如果repolist显示仓库但包数量为 0或者直接报Cannot find a valid baseurl回到baseurl路径和挂载状态去排查。提示yum makecache报Error: Failed to download metadata for repo local时先手动执行ls /mnt/cdrom/repodata/repomd.xml。如果文件存在再看 SELinux 是否拦截。可以临时setenforce 0测试如果关掉 SELinux 就好了说明需要调整上下文而不是仓库本身有问题。3.3 验证安装与开机自动挂载缓存刷新成功后用yum repolist确认包数量然后安装一个小包验证比如yum install -y vim或yum install -y lrzsz。安装过程中观察输出它会显示从local仓库解析依赖并下载。如果提示No package vim available说明元数据没读到或者包确实不在 ISO 里。CentOS 7 DVD 通常包含vim如果连这个都没有大概率是baseurl指错了目录。安装完成后用rpm -q vim确认。如果 ISO 是 loop 挂载重启后挂载会消失需要写进/etc/fstab。对于 ISO 文件追加一行/opt/iso/CentOS-7-x86_64-DVD-2009.iso /mnt/cdrom iso9660 loop,ro 0 0对于光驱设备追加一行/dev/sr0 /mnt/cdrom iso9660 defaults,ro 0 0写完执行mount -a测试如果没有报错说明 fstab 配置正确。这里有个坑如果 fstab 写错系统重启时可能进入紧急模式尤其是在生产环境。建议先在测试机验证或者使用nofail选项比如iso9660 loop,ro,nofail 0 0这样即使挂载失败也不影响系统启动。另外loop选项在较新系统中可以省略因为 mount 会自动识别但显式写上更稳妥。还有一个细节是 SELinux 上下文。用file://访问/mnt/cdrom时SELinux 可能认为该目录没有正确的httpd_sys_content_t之类标签。对于本地文件协议通常default_t也能读但如果遇到权限拒绝可以执行restorecon -Rv /mnt/cdrom恢复默认上下文。更彻底的做法是把仓库放在/var/www/html下并设置正确的上下文。不过对于file://本地源大多数情况只要文件权限是 644、目录权限是 755就能正常读取。4. 用 createrepo 做自定义 RPM 仓库4.1 收集 RPM 与依赖的可靠方式ISO 源虽然方便但它的包是固定的你没法把下载的第三方 RPM 塞进去让 yum 识别。比如你需要一个 ISO 里没有的nginx或htop就得自己建仓库。建仓库第一步是收集 RPM。最直接的方式是在一台能访问外网的机器上用yumdownloader下载它属于yum-utils包。命令格式是yumdownloader --resolve --destdir/root/rpms httpd--resolve会递归下载依赖--destdir指定保存目录。这样下载下来的 RPM 放进仓库后离线机器安装时就不会因为缺依赖而失败。如果你的环境连临时外网都没有可以在另一台同版本系统的机器上从它的/var/cache/yum里找已经下载过的 RPM或者用安装 ISO 里的包。对于复杂依赖repotrack比yumdownloader更彻底它会追踪所有依赖树但下载量也更大。另一个办法是使用yum install --downloadonly --downloaddir/root/rpms先把包下到本地不安装。我一般会先在一台联网的 CentOS 7 上执行yumdownloader --resolve --destdir/root/rpms 包名然后把整个/root/rpms目录打包拷到内网。收集 RPM 时要注意架构匹配。x86_64的包不能给aarch64用noarch的包则通用。还要注意版本一致性比如你从 CentOS 7.9 下载的包拿到 CentOS 7.6 上可能因为glibc版本不够而无法安装。所以最好让下载源和目标系统版本尽量一致或者至少同属一个大版本。如果目标系统是 RHEL 6.5那就找 RHEL 6.5 或 CentOS 6.5 的包不要混用 7 的包。这一步偷懒后面yum install就会用Error: Package requires ...教育你。4.2 生成 repodata 与发布仓库把 RPM 集中到一个目录比如/data/localrepo然后执行createrepo /data/localrepo。如果系统还没装createrepo可以通过本地 ISO 源先安装yum install -y createrepo。执行成功后目录下会多出一个repodata子目录里面包含repomd.xml和各种元数据文件。以后每次往目录里新增或删除 RPM都要重新执行createrepo --update /data/localrepo--update只更新变化部分速度更快。如果不加--update它也会重新生成全量元数据但大仓库会慢一些。生成元数据后配置 repo 文件指向这个目录[custom] nameCustom Local Repo baseurlfile:///data/localrepo enabled1 gpgcheck0然后yum clean all yum makecache用yum repolist查看。如果要在内网共享可以把/data/localrepo拷贝或挂载到 Web 根目录比如/var/www/html/localrepo配置baseurlhttp://192.168.1.10/localrepo。用 HTTP 方式时确保httpd或nginx已启动防火墙放行 80 端口SELinux 允许读取。一个快速验证方法是本机curl http://127.0.0.1/localrepo/repodata/repomd.xml能返回 XML 内容就说明 Web 服务正常。注意createrepo生成的元数据默认不包含 GPG 签名信息。如果你对安全性要求高可以在生成后对 RPM 重新签名并用gpgcheck1校验。内网测试环境通常关闭校验即可但生产环境建议至少保留 ISO 源自带的签名校验。4.3 仓库优先级与 GPG 校验当你有多个仓库时优先级非常重要。比如本地源里有httpd 2.4.6外网源里有httpd 2.4.37如果没设优先级yum 可能从版本号更高的外网源拉包导致依赖链变化。安装yum-plugin-priorities后在 repo 文件里加priority1数字越小优先级越高。一般把基础 ISO 源设为priority1自定义源设为priority10EPEL 之类设为priority20。这样 yum 会优先从基础源满足依赖找不到再去自定义源避免意外升级。gpgcheck是另一个关键。开启校验需要两个条件仓库里的 RPM 有有效签名并且本机导入了对应公钥。ISO 源通常自带公钥文件路径类似/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7。你可以执行rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7导入。然后在 repo 文件里写[local] nameLocal CentOS 7 baseurlfile:///mnt/cdrom enabled1 gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7如果导入公钥后仍然报Public key for xxx.rpm is not installed检查gpgkey路径是否正确以及 RPM 是否来自可信源。有些第三方 RPM 没有签名开启校验会直接失败这时候要么关闭该仓库的gpgcheck要么重新签名。我的经验是基础系统包保持校验开启第三方测试包单独建仓库并关闭校验这样既安全又不影响灵活性。5. 常见问题与排查技巧实录5.1 报错速查表报错信息可能原因排查方向Cannot find a valid baseurl for repo: localbaseurl路径错误、挂载丢失、目录不可读ls检查路径mount确认挂载df -h看分区Error: Failed to download metadata for repo localrepodata不存在或损坏find定位repomd.xml重新挂载 ISOrepolist显示仓库但包数量为 0baseurl指到了空目录或错误层级检查是否指向包含Packages和repodata的目录No package xxx available仓库里确实没有该包或元数据未刷新换包名、yum clean all后重试Public key for xxx.rpm is not installedGPG 公钥未导入或 RPM 无签名导入公钥或临时设gpgcheck0mount: wrong fs typeISO 文件损坏或设备不对file检查 ISO确认/dev/sr0存在fstab配置错误导致系统启动卡住挂载项写错、设备不存在使用nofail进入救援模式修复Error: Package requires ...依赖包缺失或版本不匹配用yumdownloader --resolve补依赖HTTP 源无法访问防火墙、SELinux、Web 服务未启动curl测试systemctl status httpdyum makecache很慢或超时同时启用了多个不可达仓库禁用外网源只保留本地源5.2 我踩过的几个坑第一个坑是.repo文件扩展名。Linux 下文件名必须严格以.repo结尾local.repo.bak或local都不会被 yum 读取。我见过有人把文件写成local.repo.txt然后纳闷为什么repolist里没有。第二个坑是缓存。修改.repo文件后没有执行yum clean allyum 仍然使用旧缓存导致改了baseurl却看不到效果。养成习惯只要动了仓库配置先yum clean all再yum makecache。第三个坑是多个仓库冲突。你只配了本地源但备份目录/etc/yum.repos.d/bak里的文件如果还在原目录yum 会一并读取。备份时一定要移走不要只是复制。第四个坑是挂载顺序。如果你把 ISO 挂载到/mnt/cdrom但/mnt/cdrom本身在另一个挂载点之下或者挂载被覆盖路径就会变空。比如先挂载了 NFS 到/mnt再挂载 ISO 到/mnt/cdrom看起来没问题但重启后 NFS 挂载晚于 ISO可能把 ISO 盖掉。解决方法是把 ISO 挂载到独立目录比如/opt/cdrom不要放在可能被其他挂载覆盖的路径下。第五个坑是权限。file://协议要求 yum 进程能读取目录如果/mnt/cdrom权限是 700 且属主不是 rootyum 可能报权限拒绝。通常 ISO 挂载后权限是 555没问题但自定义目录要注意。第六个坑是createrepo后忘记更新。你往仓库里加了一个新 RPM但没执行createrepo --updateyum 的元数据里没有这个包自然搜不到。每次增删 RPM 都要更新元数据可以用inotify或定时任务自动化但手工维护时一定记得。第七个坑是时间同步。仓库元数据里包含时间戳如果客户端时间比仓库时间早很多yum 可能认为缓存过期或元数据无效。内网机器如果没配 NTP时间漂移大了会出怪问题。建议内网也配一个时间同步源或者手动date -s校正。提示排查 yum 问题时yum -v repolist和yum --showduplicates list能输出更详细的信息。strace -f -e traceopen,stat yum repolist可以看到 yum 实际打开了哪些文件适合定位路径错误。别一上来就重装系统大多数本地源问题都是路径和缓存的小事。6. 长期维护与批量落地建议6.1 仓库更新与版本锁定本地源建好之后维护比搭建更重要。如果你用的是 ISO 源它本质是只读的不需要频繁更新但 ISO 里的包版本会随着系统补丁更新而过时。如果你需要安全更新得定期下载新的 ISO 或增量 RPM重新挂载或生成仓库。对于自定义仓库建议按日期或版本建子目录比如/data/repo/2025-01、/data/repo/2025-06然后用软链接/data/repo/current指向当前使用的版本。这样升级仓库时只需要切换软链接出问题可以快速回滚。版本锁定是另一个重点。生产环境最怕“昨天装的包今天变了”。你可以在 repo 文件里写excludekernel* httpd*排除特定包也可以安装yum-plugin-versionlock用yum versionlock add httpd锁定版本。这样即使仓库里有新版本yum 也不会自动升级。锁定后如果要升级先yum versionlock delete httpd再执行更新。我通常会给编译工具链、数据库、Web 服务器做版本锁定避免自动升级引入不兼容。对于开发测试环境可以放宽但也要记录当前仓库快照。更新仓库时还要注意依赖完整性。你从外网下载新包时可能只下了主包没下依赖放到自定义仓库后客户端安装就会报缺依赖。所以每次更新都建议用yumdownloader --resolve或repotrack把依赖一起拉下来并且用createrepo --update刷新元数据。更新完成后在测试机上执行yum clean all yum makecache yum update --assumeno做一次干跑看看会升级哪些包确认没有意外再正式更新。这个习惯能避免很多半夜救火。6.2 批量分发与验收清单如果内网有几十台机器逐台配置 repo 文件效率太低。可以用 Ansible、SaltStack 或者简单的 shell 脚本批量推送。一个最小脚本逻辑是先检查/mnt/cdrom是否挂载没有就挂载备份/etc/yum.repos.d/*.repo生成local.repo执行yum clean all yum makecache最后用yum repolist验证。脚本里要处理不同系统版本的路径差异比如 CentOS 7 用/mnt/cdromRocky 9 用/mnt/cdrom/BaseOS和/mnt/cdrom/AppStream。如果内网有 HTTP 仓库脚本只需要写一个 repo 文件指向统一地址更简单。验收时我一般检查这几项yum repolist是否显示正确的仓库 ID 和包数量yum install -y一个小包是否成功yum remove是否正常yum history是否记录了操作重启后挂载是否自动恢复df -h看 ISO 挂载是否正常。如果是 HTTP 仓库还要检查客户端能否curl到repodata/repomd.xml以及并发下载时 Web 服务是否稳定。把这些做成检查清单每次新机器上线勾一遍能省很多沟通成本。最后说一个容易被忽略的细节日志。yum 的日志在/var/log/yum.log里面记录了安装、更新、卸载的历史。排查问题时先看日志能快速定位是包没找到、依赖冲突还是仓库不可用。如果是 HTTP 仓库Web 服务的访问日志也能告诉你客户端有没有成功请求元数据。内网环境虽然简单但把日志留好出问题时就是最直接的线索。我自己在实际操作中的体会是本地 yum 源最怕的不是技术难而是细节散。挂载、路径、缓存、权限、优先级、版本锁定每一步都不复杂但少做一步就可能在某个深夜卡住。我的习惯是每配好一个本地源立刻用yum install -y tree这种小包验证再重启一次确认挂载自动恢复最后把.repo文件和挂载命令记进内部文档。下次再遇到内网机器直接抄自己的作业五分钟就能让 yum 重新跑起来。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。