前言
当我们在一个没有公网的环境下去部署一些组件时往往会遇到需要各种依赖包且依赖包本身也还有很多依赖关系。如果没有一次性把全部的依赖包打包下载好,就会出现下载了这个发现它依赖这个那个的,非常烦。
而使用yumdownloader 或者yum install xx --downloadonly --downloaddir=/tmp/ 命令又只会下载当前系统没有的依赖包,而且版本可能不太对,因此为了彻底解决这一问题,尤其对于系统依赖包而言,通过下载与目标服务器(不能连公网的服务器)相同的镜像,并使用最小化安装到能连上公网的机器,之后用yum命令把其相关的依赖包下载下来,并由此构建一个本地yum源放在目标服务器中,才是彻底的解决方案。
1、准备一台与生产部署环境内核版本基本一致的镜像,安装mini install版作为本地环境
查看目标服务器的系统镜像版本,并在官网上下载对应的镜像文件
# cat /proc/version
Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017
redhat: redhat的版本跟centos的版本有对应关系,包可以共用
centos:
centos各版本下载
点击指定版本:
进入isos/x86_64/目录
使用种子进行下载镜像文件。
2、配置好本地环境的yum源、保证可通公网,一般都可以配置阿里的yum源即可
# cd /etc/yum.repos.d/
# mkdir bak
# mv ./*repo bak
# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# yum clean all
# yum makecache
3、通过yum将所需要的依赖包全部下载至本地目录
# yum install --downloadonly --downloaddir= <target_dir> <package-name>
备注:为保证生产部署环境可以部署自己的本地yum源,我们需要额外的去下载好 createrepo
# yum install --downloadonly --downloaddir=/myrpm createrepo
4、打包以上所有需要的依赖包到生产部署环境,搭建本地yum源
1)通过rpm手动安装createrepo
根据提示安装所需依赖包即可
# rpm -ihv createrepo-0.9.9-28.el7.noarch.rpm
2)搭建本地yum源
#创建本地rpm包repodata的索引目录
# createrepo /myrpm/
Spawning worker 0 with 197 pkgs Spawning worker 1 with 197 pkgs Workers Finished Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete
#若后续有更新其他依赖包,不需要重建,只需要update一下索引目录就好
# createrepo --update /myrpm/
Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete
#配置yum源配置文件
# cd /etc/yum.repos.d/
# mkdir bak
# mv ./*repo bak
# cat local_yum.repo [local_yum] name=local_yum baseurl=file:///myrpm gpgcheck=0 enabled=1 priority=1
#清除yum缓存
# yum clean all
5、通过本地yum源部署安装
yum install package-name