在特定的网络环境或出于安全、速度等考虑,将CentOS系统的Yum软件源配置为使用本地光盘(或ISO镜像文件)是一种非常实用且高效的技术手段,这种方法可以彻底摆脱对外部网络的依赖,确保软件包安装的稳定性和一致性,本文将详细介绍在不同版本的CentOS中,如何一步步地配置光盘为本地的Yum源。

准备工作
在开始配置之前,请确保您已经准备好以下几项内容:
- 一台已安装的CentOS系统:本文以CentOS 7和CentOS 8/9为例,它们在配置上略有不同。
- CentOS官方安装镜像(ISO文件)或物理光盘:该镜像应与您系统的主版本号一致。
- 管理员权限:执行后续命令需要root用户权限或使用
sudo。
挂载光盘或ISO镜像
配置的第一步是将光盘或ISO文件中的内容挂载到系统的一个目录下,以便Yum能够读取其中的软件包。
创建挂载点
我们会在/mnt目录下创建一个专门用于挂载的子目录,例如cdrom。
mkdir /mnt/cdrom
挂载物理光盘
如果您的服务器有物理光驱并已放入CentOS安装光盘,可以使用以下命令进行挂载。/dev/cdrom是光驱的设备文件,它通常是一个指向实际设备(如/dev/sr0)的符号链接。
mount /dev/cdrom /mnt/cdrom
执行后,可以使用 df -h 命令查看是否挂载成功。
挂载ISO镜像文件
如果您没有物理光盘,而是下载了ISO镜像文件到服务器上(例如存放在/root/目录下),可以使用loop设备进行挂载。
mount -o loop /root/CentOS-8-x86_64-1905-dvd1.iso /mnt/cdrom
请将ISO文件路径替换为您自己的实际路径,同样,使用df -h命令验证挂载结果。
创建Yum仓库配置文件
Yum的仓库配置文件存放在/etc/yum.repos.d/目录下,为了使用本地光盘源,我们需要在该目录下创建一个新的.repo文件。
建议先备份或禁用系统默认的网络源,以避免Yum优先从网络下载,可以通过重命名默认的repo文件来实现:
cd /etc/yum.repos.d/ mkdir backup mv CentOS-*.repo backup/
创建一个新的配置文件,例如命名为local-dvd.repo。

vim /etc/yum.repos.d/local-dvd.repo
编写配置文件内容
根据CentOS版本的不同,配置文件的内容有所差异。
针对CentOS 7的配置
CentOS 7的DVD镜像中,所有软件包都存放在一个目录下,配置相对简单,在local-dvd.repo文件中输入以下内容:
[local-dvd] name=CentOS 7 Local DVD Repository baseurl=file:///mnt/cdrom enabled=1 gpgcheck=1 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7
参数解释:
[local-dvd]:仓库的唯一标识符,名称可以自定义。name:仓库的描述性名称,便于人类阅读。baseurl:指定仓库的地址。file://协议表示这是一个本地路径,指向我们挂载的目录。enabled=1:启用此仓库,设置为0则禁用。gpgcheck=1:启用GPG签名校验,确保软件包的完整性和安全性。gpgkey:指定GPG公钥文件的路径,该文件通常在光盘根目录下。
针对CentOS 8/9的配置
从CentOS 8开始,系统引入了BaseOS和AppStream两个核心仓库的概念,BaseOS提供底层核心工具集,AppStream则提供应用程序、运行时环境等,我们需要在配置文件中分别定义这两个仓库。
在local-dvd.repo文件中输入以下内容:
[BaseOS] name=CentOS 8 BaseOS Local DVD baseurl=file:///mnt/cdrom/BaseOS enabled=1 gpgcheck=1 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-centosofficial [AppStream] name=CentOS 8 AppStream Local DVD baseurl=file:///mnt/cdrom/AppStream enabled=1 gpgcheck=1 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-centosofficial
关键区别:
- 两个仓库段:我们定义了
[BaseOS]和[AppStream]两个独立的仓库。 : baseurl分别指向挂载点下的BaseOS和AppStream子目录。- GPG密钥:GPG密钥文件名可能与CentOS 7不同,通常为
RPM-GPG-KEY-centosofficial,请根据光盘中的实际文件名进行修改。
验证与使用
配置完成后,需要清理Yum缓存并重新生成仓库元数据,以使配置生效。
yum clean all
列出所有可用的Yum仓库,检查我们新创建的本地源是否出现。
yum repolist
如果命令的输出中包含了local-dvd(或BaseOS、AppStream)仓库,并且状态为enabled,说明配置成功。
您可以尝试安装一个软件包来测试:

yum install -y vim
您会发现Yum正在从本地挂载的光盘中读取和安装软件,而无需访问互联网。
实现开机自动挂载
通过mount命令进行的挂载在系统重启后会失效,为了确保本地Yum源始终可用,需要将其设置为开机自动挂载,最推荐的方法是修改/etc/fstab文件。
使用vim编辑/etc/fstab文件,在末尾添加一行。
- 对于物理光盘:
/dev/cdrom /mnt/cdrom iso9660 defaults 0 0 - 对于ISO镜像文件:
/root/CentOS-8-x86_64-1905-dvd1.iso /mnt/cdrom iso9660 loop,ro 0 0
参数说明:
- 第一列:设备文件或ISO镜像路径。
- 第二列:挂载点目录。
- 第三列:文件系统类型,光盘通常是
iso9660。 - 第四列:挂载选项。
defaults是默认选项,对于ISO,需要加上loop和ro(只读)。 - 第五、六列:
dump和fsck相关选项,通常设为0 0。
保存文件后,可以执行mount -a命令来测试fstab配置是否有误,若无错误输出则表示成功,下次重启系统时,光盘或ISO将自动挂载到指定目录。
相关问答FAQs
问题1:我已经配置了本地光盘源,但Yum安装软件时仍然尝试从网络下载,这是为什么?
解答: 这个问题通常由两个原因导致,第一,您可能没有禁用系统默认的网络仓库文件,Yum会按顺序或优先级检查所有已启用的仓库,如果网络源的优先级更高或先被检查,它就会尝试从网络下载,请检查/etc/yum.repos.d/目录下是否存在其他启用的.repo文件,并将其中的enabled=1修改为enabled=0,或者直接将它们移动到其他目录(如backup),第二,您创建的本地仓库配置文件可能存在语法错误,例如baseurl路径不正确,导致Yum无法访问,从而跳过该仓库,请仔细检查配置文件,并使用yum repolist命令确认您的本地源是否已成功加载并显示为可用状态。
问题2:在CentOS 8/9中,我的ISO镜像里除了BaseOS和AppStream,还有PowerTools、Extras等目录,这些需要配置吗?
解答: 这取决于您的具体需求。BaseOS和AppStream是CentOS 8/9的核心仓库,包含了运行系统所需的大部分软件包,对于绝大多数用户来说,配置这两个就足够了。PowerTools(在CentOS Stream中称为PowerTools或CRB)主要包含开发工具和额外的软件包,如果您需要进行软件开发或安装一些特定的编译工具,那么也建议配置它。Extras则提供了一些额外的软件包,如EPEL的引入等,如果需要,您可以参照BaseOS和AppStream的格式,在同一个.repo文件中添加新的仓库段,例如[PowerTools],并设置正确的baseurl指向挂载点下的PowerTools目录即可。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复