文章目录

  • 前言
  • 一、系统及内核版本
  • 二、本地 yum 源配置方法
  • 三、关于永久性挂载 iso 镜像
  • 四、关于 repo 文件
  • 总结



前言

不管是在测试还是在开发环境中,会配置本地 yum 源几乎是每个从事 linux 运维或者开发的人员所必备的能力。我见过很多人在使用 linux 系统时,一旦发现缺少依赖包,第一反应都是去 Google 或者 Baidu 下载对应的包。运气好的,包没有什么依赖,直接一条 “rpm -ivh” 语句就能搞定;运气不好的,包在安装过程中存在依赖关系,然后又去折腾怎么解决依赖。

事实上,很多时候配置好本地 yum 源,就能满足日常的开发和测试需要;当然有些包确实是系统镜像没有封装过的,我们还需要配置第三方的网络 yum 源或者单独去找对应的包。本文简单介绍了如何在 CentOS 环境下使用 iso 镜像配置本地 yum 源。如有不当之处,欢迎指正!


一、系统及内核版本

OS Version:CentOS Linux release 7.6.1810 (Core) 
Kernel Version:3.10.0-957.el7.x86_64

二、本地 yum 源配置方法

步骤1:备份原有的 yum 源。

[root@mylinux ~]# mkdir /etc/yum.repos.d/repo_backup
[root@mylinux ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_backup/

步骤2:创建挂载目录并上传 iso 镜像。

[root@mylinux ~]# mkdir /iso   //此目录用于存放上传的 iso 镜像。
[root@mylinux ~]# ls -l /iso/
总用量 4481024
-rw-r--r-- 1 root root 4588568576 4月  23 15:38 CentOS-7.6-x86_64-DVD-1810.iso

[root@mylinux ~]# mkdir /mnt/cdrom   //此目录用于做 iso 镜像的挂载点。

步骤3:以只读形挂载 iso 镜像。

[root@mylinux ~]# mount -o loop /iso/CentOS-7.6-x86_64-DVD-1810.iso /mnt/cdrom/
mount: /dev/loop0 写保护,将以只读方式挂载

步骤4:创建本地 yum 源的 repo 文件。

[root@mylinux test]# cat > /etc/yum.repos.d/local.repo << EOF
> [local]
> name=local
> baseurl=file:///mnt/cdrom
> enabled=1
> gpgcheck=0
> EOF

步骤5:清除 yum 缓存并显示当前可用的 yum 源。

[root@mylinux ~]# yum clean all   //清除 yum 缓存
[root@mylinux ~]# yum repolist   //显示当前可用的 yum 源

注意事项:

  • 以上操作可以确保能够使用 iso 镜像所提供的本地 yum 源,但是由于 iso 挂载是临时性的,当系统发生重启时,挂载就会丢失,本地 yum 源将不能够被使用。当然,如果想要再使用本地 yum 源的话,只需要执行步骤3步骤5的操作即可。
  • 如果要实现永久挂载 iso 镜像,我们也可以在 “/etc/fstab” 文件中设置开机自动挂载,这样的话,本地 yum 源就可以一直被使用。关于如何在 “/etc/fstab” 文件设置自动挂载,且看下文。
  • 另外,虽然永久挂载可以让我们免去系统重启导致本地 yum 源不可用的麻烦,但是,如果有人误删除了 iso 镜像文件,那么在系统下一次重启时,会因为 “/etc/fstab” 文件无法根据列表进行挂载导致系统进入救援模式(如果发生这样的问题,不要慌,直接在救援模式下编辑 “/etc/fstab” 文件,将 iso 挂载那一个条目注释掉或者删除掉,系统即可正常重启),而临时挂载则不会有这样的问题。

三、关于永久性挂载 iso 镜像

步骤1:将 iso 镜像自动挂载写入 “/etc/fstab” 文件(我这里以追加文本的方式写入 fstab 文件)。

[root@mylinux ~]# echo "/iso/CentOS-7.6-x86_64-DVD-1810.iso   /mnt/cdrom   iso9660   defaults   0 0" >> /etc/fstab

[root@mylinux ~]# tail -n 1 /etc/fstab   //查看 fstab 文件最后一行是否无误。
/iso/CentOS-7.6-x86_64-DVD-1810.iso   /mnt/cdrom   iso9660   defaults   0 0

步骤2:让系统读取 fstab 列表进行挂载(如果挂载信息写的不对,命令返回的结果会提示报错)。

[root@mylinux ~]# mount -a
mount: /dev/loop0 写保护,将以只读方式挂载

四、关于 repo 文件

无需校验的 repo 文件内容

[root@mylinux ~]# cat /etc/yum.repos.d/local.repo 
[local]
name=local
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
  • enabled 设置为“1”表示启用该仓库,设置为“0”表示不启用;
  • gpgcheck 设置为“1”表示启用校验,设置为“0”表示不启用。

需要校验的 repo 文件内容

[root@mylinux ~]# cat /etc/yum.repos.d/local.repo 
[local]
name=local
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

或者

[root@mylinux ~]# cat /etc/yum.repos.d/local.repo 
[local]
name=local
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7

【说明:使用 vimdiff 去对比这两个文件,会发现是一模一样的】
[root@mylinux ~]# vimdiff /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 /mnt/cdrom/RPM-GPG-KEY-CentOS-7

总结

对于我个人而言,在缺少包的时候会下意识使用本地 yum 源,一方面是因为很多时候内部局域网是无法访问外部网络的;另一方面,确实是本地 yum 源很多时候已经满足了我装依赖包的需求。

之所以写这篇文章,一来是为了给有需要的朋友做一个参考;另外,也是在这方面对自己做一个总结。有的时候,太长时间不去配置 yum 源,也会忘了一些最基础的命令和配置文件。哈,所以我一直铭记,好记性不如烂笔头。