一、背景
项目安装部署过程中,有很多包需要在线下载,但又是网络是隔离的,无法连接外网。搭建一个本地yum源或者局域网yum源,用于离线安装。
二、下载rpm包
在一台可以联外网linux服务器上下载所需rpm包,生成仓库清单,并打包
cat download_rpm.sh
#!/bin/bash
yum -y install createrepo yum-utils
yum install --downloadonly unixODBC-devel --downloaddir=/root/yum/
yum install --downloadonly unixODBC --downloaddir=/root/yum/
yum install --downloadonly vim --downloaddir=/root/yum/
yum install --downloadonly epel-release --downloaddir=/root/yum/
yum install --downloadonly traceroute --downloaddir=/root/yum/
yum install --downloadonly tree --downloaddir=/root/yum/
yum install --downloadonly telnet* --downloaddir=/root/yum/
yum install --downloadonly unzip zip --downloaddir=/root/yum/
yum install --downloadonly pcre pcre-devel --downloaddir=/root/yum/
yum install --downloadonly bc blas --downloaddir=/root/yum/
yum install --downloadonly lrzsz --downloaddir=/root/yum/
yum install --downloadonly wireshark --downloaddir=/root/yum/
yum install --downloadonly openssl openssl-devel --downloaddir=/root/yum/
yum install --downloadonly ntpdate --downloaddir=/root/yum/
yum install --downloadonly ntp --downloaddir=/root/yum/
yum install --downloadonly lynx --downloaddir=/root/yum/
yum install --downloadonly lsof --downloaddir=/root/yum/
yum install --downloadonly bind-utils --downloaddir=/root/yum/
yum install --downloadonly perl gcc gcc-c++ make cmake kernel kernel-headers kernel-devel --downloaddir=/root/yum/
yum install --downloadonly flex bison ncurses libncurses-dev ncurses-devel libmicrohttpd --downloaddir=/root/yum/
yum install --downloadonly binutils* --downloaddir=/root/yum/
yum install --downloadonly compat-libcap1* --downloaddir=/root/yum/
yum install --downloadonly compat-libstdc++* --downloaddir=/root/yum/
yum install --downloadonly glibc* --downloaddir=/root/yum/
yum install --downloadonly glibc-devel* --downloaddir=/root/yum/
yum install --downloadonly ksh* libaio* --downloaddir=/root/yum/
yum install --downloadonly libaio-devel* --downloaddir=/root/yum/
yum install --downloadonly libgcc* --downloaddir=/root/yum/
yum install --downloadonly libstdc++* --downloaddir=/root/yum/
yum install --downloadonly libstdc++-devel* --downloaddir=/root/yum/
yum install --downloadonly libXi* --downloaddir=/root/yum/
yum install --downloadonly libXtst* --downloaddir=/root/yum/
yum install --downloadonly sysstat* --downloaddir=/root/yum/
yum install --downloadonly elfutils* --downloaddir=/root/yum/
yum install --downloadonly binutils --downloaddir=/root/yum/
yum install --downloadonly glibc*.i686 --downloaddir=/root/yum/
yum install --downloadonly glibc-devel --downloaddir=/root/yum/
yum install --downloadonly glibc-devel*.i686 --downloaddir=/root/yum/
yum install --downloadonly compat-libcap1 --downloaddir=/root/yum/
yum install --downloadonly compat-libstdc++-33 --downloaddir=/root/yum/
yum install --downloadonly compat-libstdc++-33*i686 --downloaddir=/root/yum/
yum install --downloadonly compat-libstdc++-33*.devel --downloaddir=/root/yum/
yum install --downloadonly compat-libstdc++-33 --downloaddir=/root/yum/
yum install --downloadonly compat-libstdc++-33*.devel --downloaddir=/root/yum/
yum install --downloadonly libaio*.i686 --downloaddir=/root/yum/
yum install --downloadonly libaio-devel --downloaddir=/root/yum/
yum install --downloadonly libaio-devel*.devel --downloaddir=/root/yum/
yum install --downloadonly libgcc --downloaddir=/root/yum/
yum install --downloadonly libgcc*.i686 --downloaddir=/root/yum/
yum install --downloadonly libstdc++ --downloaddir=/root/yum/
yum install --downloadonly libstdc++*.i686 --downloaddir=/root/yum/
yum install --downloadonly libstdc++-devel --downloaddir=/root/yum/
yum install --downloadonly libstdc++-devel*.devel --downloaddir=/root/yum/
yum install --downloadonly libXi --downloaddir=/root/yum/
yum install --downloadonly libXi*.i686 --downloaddir=/root/yum/
yum install --downloadonly libXtst --downloaddir=/root/yum/
yum install --downloadonly libXtst*.i686 --downloaddir=/root/yum/
yum install --downloadonly sysstat --downloaddir=/root/yum/
yum install --downloadonly libtool-ltdl --downloaddir=/root/yum/
yum install --downloadonly libtool-ltdl-devel gdb --downloaddir=/root/yum/
yum install --downloadonly libXp* --downloaddir=/root/yum/
yum install --downloadonly libgthost --downloaddir=/root/yum/
yum install --downloadonly psmisc --downloaddir=/root/yum/
yum install --downloadonly zlib zlib-devel --downloaddir=/root/yum/
yum install --downloadonly net-tools.x86_64 --downloaddir=/root/yum/
# 如果是系统已经安装过的包,则使用yumdownloader命令
# yumdownloader ftp --destdir=/root/yum/
#生成rpm仓库清单文件
cd ~
creatrepo -v yum
tar -zcf yum.tar.gz yum
三、搭建本地yum源
将离线rpm压缩包下载拷贝到离线环境,在rpm压缩包所在路径创建install_localrepo.sh
cat install_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
cd /etc/yum.repos.d/
mkdir /etc/yum.repos.d/bak
mv *.repo bak/
echo "
[YUM]
name=yum
baseurl=file:///tmp/yum
enable=1
gpgcheck=0 " > /etc/yum.repos.d/yum.repo
yum clean all
yum makecache
四、使用完毕后,如果不需要本地仓库
cd /etc/yum.repos.d/bak
mv *.repo ../
rm -rf /etc/yum.repos.d/yum.repo
rm -rf /tmp/yum
五、搭建局域网yum,供整个局域网离线机器使用
在局域网中找一台机器作为主机,将离线rpm压缩包下载拷贝到主机,在rpm压缩包所在路径创建intall_httprepo.sh
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 &
cd /etc/yum.repos.d/
mkdir /etc/yum.repos.d/bak
mv *.repo bak/
echo "
[YUM]
name=yum
baseurl=http://10.0.43.17:8000/yum
enable=1
gpgcheck=0 " > /etc/yum.repos.d/yum.repo
yum clean all
yum makecache
在局域网其他机器创建intall_httprepo.sh
cat intall_otherrepo.sh
#!/bin/bash
cd /etc/yum.repos.d/
mkdir /etc/yum.repos.d/bak
mv *.repo bak/
echo "
[YUM]
name=yum
baseurl=http://10.0.43.17:8000/yum
enable=1
gpgcheck=0 " > /etc/yum.repos.d/yum.repo
yum clean all
yum makecache
注: 其他机器和搭建局域网yum源的机器8000端口要通