文章目录
- 前言
- 一、系统及内核版本
- 二、本地 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 源,也会忘了一些最基础的命令和配置文件。哈,所以我一直铭记,好记性不如烂笔头。