在日常服务器维护中,我们有时会遇到无法连接互联网的特殊环境,例如某些内网隔离的生产服务器或网络配置尚未完成的初期部署阶段,若需安装系统组件或特定软件包,直接从本地CentOS系统光盘或ISO镜像添加软件源,便成为一种极为可靠和高效的解决方案,这种方法不仅能规避网络依赖,还能确保软件版本的稳定与一致性。
准备工作与核心原理
开始操作前,您需要准备好与当前系统版本匹配的CentOS安装光盘,或者其ISO镜像文件,这是整个过程的基石,确保软件包的兼容性,其核心原理在于,将光盘或镜像文件挂载到Linux文件系统的某个目录下,使其成为一个可访问的文件夹,随后,通过创建本地YUM仓库的配置文件,告诉系统的包管理工具YUM,可以从这个本地目录中查找、安装并解决软件依赖关系。
第一步:挂载您的光盘或ISO镜像
我们需要创建一个目录作为挂载点。/mnt/cdrom 是一个惯用的选择,您可以通过以下命令创建它:
mkdir -p /mnt/cdrom
进行挂载操作。
- 如果您使用的是物理光盘,请将光盘放入服务器的光驱,通常情况下,Linux系统会自动识别光盘设备,设备文件通常为
/dev/sr0或/dev/cdrom,执行挂载命令:
mount /dev/cdrom /mnt/cdrom
- 如果您使用的是ISO镜像文件,操作同样简单,假设您的ISO文件位于
/root/CentOS-7-x86_64-DVD-2009.iso,则挂载命令为:
mount -o loop /root/CentOS-7-x86_64-DVD-2009.iso /mnt/cdrom
执行完成后,可以通过 df -h 命令查看挂载结果,如果看到 /mnt/cdrom 一行,并且显示了正确的容量,即表示挂载成功。
第二步:配置本地YUM仓库文件
挂载成功后,光盘内的所有文件,包括关键的RPM软件包和仓库元数据,都呈现在 /mnt/cdrom 目录下,我们需要让YUM知道这个新仓库的存在。
在 /etc/yum.repos.d/ 目录下,系统存放着所有YUM源的配置文件,为了避免与网络源(如Base、Updates)产生冲突,我们最好创建一个新的配置文件,我们可以将其命名为 local-cdrom.repo。
使用文本编辑器(如vi或nano)创建并编辑该文件:
vi /etc/yum.repos.d/local-cdrom.repo
在文件中写入以下内容:
[Local-CDROM] name=CentOS Local CDROM Repository baseurl=file:///mnt/cdrom enabled=1 gpgcheck=1 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7
让我们来解读一下这几行配置的含义:
[Local-CDROM]:这是仓库的唯一ID,用于标识这个源。name:仓库的描述性名称,可以自定义。baseurl:这是最关键的一行,指明了仓库的地址。file://协议后接的是我们刚才创建的挂载点绝对路径。enabled=1:表示启用这个仓库,如果设为0,则YUM会忽略它。gpgcheck=1:启用GPG密钥检查,确保所安装软件包的完整性和来源可信,这是系统安全的重要一环。gpgkey:指定GPG公钥文件的位置,这个文件通常就在光盘的根目录下,请根据您的CentOS主版本号(如7、8)进行相应调整。
编辑完成后,保存并退出文件。
第三步:使用本地源并验证效果
配置完成后,建议您清除一下YUM的缓存,以确保它能够识别到新的仓库信息。
yum clean all
可以让YUM重新建立元数据缓存:
yum makecache
您可以尝试使用这个本地源来安装软件了,尝试安装一个常用的工具 vim:
yum install vim
在安装过程中,您可以观察到YUM的提示信息中,软件包来源显示为我们刚配置的 Local-CDROM,并且安装速度会非常快,因为它不再从网络下载,而是直接从本地光盘读取。
可能遇到的问题与处理建议
- 挂载点正忙:如果挂载时提示设备正忙,请检查当前工作目录是否在
/mnt/cdrom中,或者是否有其他进程正在占用,切换到其他目录再执行挂载命令即可。 - GPG密钥验证失败:如果出现GPG密钥错误,请确认
gpgkey路径是否正确,以及光盘内的GPG密钥文件是否存在,在极度信任的内网环境下,作为临时措施,可以将gpgcheck=0来跳过检查,但出于安全考虑,不建议在生产环境中长期这样做。 - 软件包依赖不全:系统安装光盘通常只包含了发布时最核心、最常用的软件包,如果您需要的软件依赖一些不在光盘内的包,那么安装可能会失败,在这种情况下,您可能需要寻找包含更丰富软件包的完整版ISO(如Everything版),或者在网络恢复后,从官方在线仓库进行安装。
个人观点
在我看来,掌握从本地光盘添加软件源这项技能,是每一位系统管理员或运维工程师的基本素养,它代表的是一种解决问题的务实思路:在受限环境中,优先利用手头既有的、可控的资源来达成目标,相比于完全依赖网络,本地源在速度、稳定性和安全性上,对于特定场景有着不可替代的优势,它不仅能解燃眉之急,更深层的价值在于让我们更理解Linux软件包管理的工作机制,即YUM如何与不同的“仓库”交互,这种基于本地介质的分发方法,在自动化部署、批量安装等进阶应用中,也同样扮演着重要角色,当您下次再面对一台离线的服务器时,希望这个方法能成为您工具箱里一件得心应手的工具。

