结论:挂载iso镜像配本地yum源最可靠省事;centos 7安装iso本身是完整自洽的yum仓库,无需createrepo,关键在挂稳配准——必须用-o loop挂载、baseurl为file:///mnt/cdrom、enabled=1、gpgcheck=0,并通过/etc/fstab实现开机自动挂载。

直接说结论:用挂载的 ISO 镜像配本地 yum 源,是最可靠、最省事的方式;别试图手动复制 RPM 包再用 createrepo,除非你真要定制包集合或剔除某些包。
CentOS 7 的安装 ISO 本身就是一个完整、自洽、带 repodata 的 yum 仓库,直接挂上就能用,不需要额外生成元数据。
挂载 ISO 镜像并启用 file:// 源
这是绝大多数离线场景下的首选做法。关键不是“怎么建”,而是“怎么挂得稳、配得准”:
-
mount -o loop /path/to/CentOS-7-x86_64-DVD-1804.iso /mnt/cdrom—— 必须加-o loop,否则报错 “you must specify the filesystem type” -
baseurl路径必须是file:///mnt/cdrom(三个斜杠),少一个就解析失败,yum makecache会静默跳过该源 - 挂载点目录(如
/mnt/cdrom)需提前mkdir -p,且确保 SELinux 不拦截(若启用了 enforcing 模式,可临时设为 permissive:setenforce 0) - 不要用
/media/cdrom当挂载点——很多教程这么写,但默认该目录可能被 udev 或桌面环境占用,导致挂载后内容为空或只读异常
yum.repos.d/ 配置文件里最容易错的三项
配完挂载,下一步就是写 repo 文件。以下参数看似简单,但每项都卡过人:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
enabled=1:必须是数字1,写成yes、true或空格都会让源失效 -
gpgcheck=0:ISO 镜像里的 GPG key 路径不统一(有的在/mnt/cdrom/RPM-GPG-KEY-CentOS-7,有的在/mnt/cdrom/misc/keys/),不如直接关掉校验;若坚持开,务必确认gpgkey路径真实存在且可读 -
name值不能含空格或特殊字符(如[centos-local]合法,但name=CentOS Local在旧版 yum 解析时可能截断)
开机自动挂载 ISO 镜像
重启后挂载消失,是新手最常踩的坑。靠 /etc/fstab 是最稳妥的方案:
- 先确认 ISO 路径绝对稳定(比如放在
/opt/CentOS-7-x86_64-DVD-1804.iso,别放/tmp或用户家目录) - 在
/etc/fstab末尾加一行:/opt/CentOS-7-x86_64-DVD-1804.iso /mnt/cdrom iso9660 defaults,loop 0 0 - 执行
mount -a测试语法是否正确;失败时看dmesg | tail,常见原因是 ISO 路径不存在或 loop 设备已满(losetup -a查看) - 别依赖 systemd mount unit——CentOS 7 默认没启用
systemd-fsck@.service对 ISO 的支持,容易启动卡住
验证本地源是否真正生效
别只信 yum makecache 输出 “Metadata cache created”,它可能跳过了你的源:
- 运行
yum repolist enabled,确认输出里有你配置的源 ID(如local)且状态是enabled - 运行
yum --disablerepo="*" --enablerepo="local" list httpd,强制只查本地源;如果返回 “Available Packages”,说明路径和 repodata 都对 - 如果
yum install httpd还去连公网,大概率是其他 repo 文件里有enabled=1的网络源没禁用,用ls /etc/yum.repos.d/*.repo检查,把不用的 .repo 文件改名或移走
真正的麻烦不在配置步骤,而在于挂载点生命周期管理、GPG key 路径漂移、以及多个 repo 文件之间的优先级冲突——这些细节不显眼,但会让整个本地源“看起来配好了,实际不工作”。










