一、实验背景
项目安装部署过程中,有很多包需要在线下载,但又是网络是隔离的,无法连接外网。
此时,我们需要将epel源中的所有rpm包一次性全部下载,拷贝到内网机器,搭建一个本地yum源或者局域网yum源,用于离线安装。
二、将CentOS7.x的epel源中rpm包一次性下载
在一台联网的CentOS7.x 机器上,最好是云主机,网速带宽足够
# yum -y install yum-utils epel-release createrepo
# yum list all --disablerepo="*" --enablerepo="epel"
# yum list all --disablerepo="*" --enablerepo="epel" | awk '{print $1}'
# yum list all --disablerepo="*" --enablerepo="epel" | grep -Ev "Loaded|Loading|Installed" | awk '{print $1}'
写一个小脚本,将epel源中的所有rpm包一次性下载
# cat dowmload_epel_rpm.sh
########################################
#!/bin/bash
rpms=`yum list all --disablerepo="*" --enablerepo="epel" | grep -Ev "Loaded|Loading|Installed" | awk '{print $1}'`
mkdir -p yum
for rpm in ${rpms}
do
repotrack ${rpm} -p yum
done
######################################
一万多个包,下起来要点时间,找台机器,跑一晚上得了!
生成rpm仓库清单文件
# creatrepo -v yum
# tar -zcf yum.tar.gz yum
三、将离线rpm压缩包下载拷贝到离线环境,用于搭建本地yum源或者局域网yum源
搭建本地yum
# cat isntall_localrepo.sh
###############################################
#!/bin/bash
parent_path="$( cd "$(dirname "$0")"; pwd -P )"
cd "$parent_path"
rm -rf /tmp/yum
tar -zxf yum.tar.gz -C /tmp
echo "
[YUM]
name=yum
baseurl=file:///tmp/yum
enable=1
gpgcheck=0 " > /etc/yum.repos.d/yum.repo
yum clean all
###############################################
如果需要安装组件X
# yum -y install X --disablerepo="*" --enablerepo="YUM"
使用完毕后,如果不需要本地仓库
# rm -rf /etc/yum.repos.d/yum.repo
# rm -rf /tmp/yum
搭建局域网yum,供整个局域网离线机器使用
在局域网中找一台机器
# cat isntall_httprepo.sh
########################################################
#!/bin/bash
parent_path="$( cd "$(dirname "$0")"; pwd -P )"
cd "$parent_path"
rm -rf /tmp/yum
tar -zxf yum.tar.gz -C /tmp
cd /tmp/
nohup python -m SimpleHTTPServer 8000 > /tmp/SimpleHTTPServer.log 2>&1 &
echo "
[YUM]
name=yum
baseurl=http://xx.xx.xx.xx:8000/yum
enable=1
gpgcheck=0 " > /etc/yum.repos.d/yum.repo
yum clean all
########################################################
在局域网其他机器
# echo "
[YUM]
name=yum
baseurl=http://xx.xx.xx.xx:8000/yum
enable=1
gpgcheck=0 " > /etc/yum.repos.d/yum.repo
# yum clean all
注: 其他机器和搭建局域网yum源的机器8000端口要通
如果需要安装组件X
# yum -y install X --disablerepo="*" --enablerepo="YUM"
使用完毕后,如果不需要本地仓库
# rm -rf /etc/yum.repos.d/yum.repo
# rm -rf /tmp/yum
四、参考
CentOS7.x上ansible的离线安装包制作
https://www.jianshu.com/p/93231de9f2f8
CentOS7.x上主包及其依赖的下载
https://www.jianshu.com/p/339cfc4bf71e
Linux/上使用 python -m SimpleHTTPServer 快速搭建http服务
https://www.jianshu.com/p/24c53e955743