【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}'


http://mirrors.tencentyun.com/epel/



写一个小脚本,将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  intall_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

推荐阅读更多精彩内容