因为工作的原因,需要在隔离的内网环境中搭建 YUM 私有源。搭建完成后,发觉绕了一些弯路,而且网上类似文章虽多,但基本很少有对镜像和源进行校验,所以还是同样做个备忘(主要是十一月都要过半了,文章还没一篇)。
搭建 YUM 私有源有两个方法,一个是借用镜像,另一个是同步网上公开的 YUM 源,本篇采用的是前一种方法,至于另一种主要是还没解决与内网服务器同步的问题(非一次性),等有合适的解决方法之后再另外写一篇(挖坑)。
挂载镜像
因为公司用的都是阿里云服务器,所以镜像也是从阿里巴巴开源镜像站下载,版本是 CentOS-7-x86_64-Everything-1908(当然从其他源也是一样的,这里只是为了日后方便说明)。
最开始我是先在能连外网的 CentOS 7 服务器中下载 httpd
包和其依赖,但事后发觉其实没这个必要,等 YUM 私有源搭建好之后再安装也不迟,顺便还可以在本机做个测试。不过步骤还是放在附录中,以防以后需要用到。
先把下载好的 iso 镜像做个校验(非必要,但建议),sha256sum 可在当前版本下的 sha256sum.txt 查看,这里是 sha256sum.txt,因为下载的是 Everything,所以对应的是 bd5e6ca18386e8a8e0b5a9e906297b5610095e375e4d02342f07f32022b13acf
。
查看镜像的 sha256sum:
# macOSopenssl dgst -sha256 ~/Downloads/CentOS-7-x86_64-Everything-1908.iso
# Linuxsha256sum CentOS-7-x86_64-Everything-1908.iso
# Windowscertutil -hashfile ./CentOS-7-x86_64-Everything-1908.iso SHA256
校验完成后,便可以上传文件到内网服务器:
# 把 ios 文件上传到内网服务器
# 建立挂载镜像的目录mkdir -p /var/www/html/centos/7# 挂载镜像,loop 选择表示把文件作为硬盘分区挂载,默认只读mount -o loop CentOS-7-x86_64-Everything-1908.iso /var/www/html/centos/7
修改源指向
# 首先备份 /etc/yum.repos.d 目录mv /etc/yum.repos.d /etc/yum.repos.d.bak# 验证备份ll /etc | grep yum.repos.d.bak# 重新创建目录mkdir -r /etc/yum.repos.d# 新建文件,并写入内容vi /etc/yum.repos.d/centos.repo# 下面是 centos.repo 中的内容[load]name=CentOS-$releasever - Everythingbaseurl=file:///var/www/html/centos/7enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever
字段说明:
- name:源名称,$releasever 获取系统大版本号;
- baseurl:源目录,因为没安装 httpd,所以这里指向的是本地;
- enabled:是否启用源,1 表示启用,0 表示禁用;
- gpgcheck:是否对源进行校验,这里也可以填写 0 表示禁用;
- gpgkey:指向本地的 RPM-GPG-KEY 路径,不用可以删除;
接下来就可以在本机使用 YUM 源了,不过先清除下本机的 YUM 缓存:
# 清除缓存yum clean all
# 查看仓库列表yum repolist
启动 httpd 服务
# 安装 httpdyum install httpd
# 启动服务service httpd start
# 查看防火墙状态systemctl status firewalld.service
# 防火墙如果启用,则需开放 80 端口# 开放服务器 80 端口,permanent 表示永久有效firewall-cmd --add-service=http --permanentfirewall-cmd --add-port=80/tcp --permanent# 重启防火墙firewall-cmd --reload
现在可以通过 http://10.1.1.42/centos/7
打开页面,将会成功显示镜像内容,之后在其他局域网的服务器中使用,只要把 centos.repo
中的 baseurl 改为 http://10.1.1.42/centos/7
即可。
最后
快要写完时,发现 CentOS 7 和 CentOS 6 是需要对应的镜像,两者并不能通用,而且 CentOS 6 并没有 Everything 的镜像可下载,所以在又把上面的链接和挂载目录重新编辑过。
另外实际使用中,可以写个 sh 脚本直接用 wget 从服务器下载自动替换 repo。
对了,补充一点,YUM 是以大写形式书写的,可以参考维基:yum (software) - Wikipedia
再补充一点,当初想建立 YUM 私有源时,以为和搭建镜像站是同一码事(虽然它们的确是放在一起的),后面才意识到其实两者是可以分开的。
信息
附录
关于下载 httpd 和依赖包,并上传到内网服务器中。
# 在外网服务器上下载 httpd(包含依赖)yum install --downloadonly --downloaddir=/root/httpd httpd
# 把下载完成的包复制到内网远程服务器
# 在内网服务器中安装yum localinstall httpd/*.rpm
版本
- 系统版本
- CentOS 6.8
- CentOS 7.2