【rpm】CentOS7.x上下载epel源中rpm包,搭建离线仓库

一、实验背景

 

项目安装部署过程中,有很多包需要在线下载,但又是网络是隔离的,无法连接外网。

此时,我们需要将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}'

 

【rpm】CentOS7.x上下载epel源中rpm包,搭建离线仓库

 

写一个小脚本,将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】CentOS7.x上下载epel源中rpm包,搭建离线仓库

一万多个包,下起来要点时间,找台机器,跑一晚上得了!

 

生成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

########################################################

【rpm】CentOS7.x上下载epel源中rpm包,搭建离线仓库

在局域网其他机器

#  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

【rpm】CentOS7.x上下载epel源中rpm包,搭建离线仓库

注: 其他机器和搭建局域网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