场景
工作中,经常需要在公司的内网环境节点安装一些第三方的服务(例如HaProxy),一般他们都依赖一些基础工具,或者基础库,例如 openssl 、openssl-devel、gcc 等等。如果能联网,直接通过 yum 命令安装相当方便。
但是往往公司的内网都是禁止访问外网的,甚至连内网 yum 源也没有,如果你打算手动离线安装这些基础的组件,你会发现,他们又依赖了上层的组件,上层一会继续依赖更上层的,令人无比窒息。
解决方案
在线的时候,我们可以通过 yum 直接安装这些基础组件,他会自动帮我们实现依赖自动安装,那我们是否可以搭建一个离线的 yum 源呢 ?
答案是可以的。
我们可以将一个完整的包含所需的基础组件的一个 ISO 操作系统文件,挂载为一个自定义 yum 源。
实现过程
- 下载 ISO 文件
http://bay.uchicago.edu/centos-vault/7.2.1511/isos/x86_64/
下载地址里面的 CentOS-7-x86_64-Everything-1511.iso 镜像文件
- 创建目录
创建目录 /usr/local/iso 用于存放 iso 镜像文件,/usr/local/iso/files 用来存放挂载的镜像文件
mkdir /usr/local/iso
mkdir /usr/local/iso/files
cd /usr/local/iso
-
将 CentOS-7-x86_64-Everything-1511.iso 上传到节点 /usr/local/iso 目录
-
修改 /etc/fstab 系统文件
vi /etc/fstab
最后一行加入
/usr/local/iso/CentOS-7-x86_64-Everything-1511.iso /usr/local/iso/files iso9660 defaults,loop 0 0
- 挂载
mount -a
- 查看是否挂载成功
mount -l
打印的内容,直接看最下面一行,显示你挂载的 ISO 路径即可
7. 修改 yum 源配置
备份/etc/yum.repos.d下所有文件
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/CentOS* //etc/yum.repos.d/bak
- 新建 CentOS-Media.repo
cd /etc/yum.repos.d
vi CentOS-Media.repo
CentOS-Media.repo 的内容:
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///usr/local/iso/files
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7