在生产环境中,安装软件包需要解决软件依赖问题;而有的依赖包在本地镜像源没有相关的依赖包。
然而,生产环境一般都是内网,搭建网络Yum源依然无法解决软件依赖的问题。你或许会说:这好办,我把所有的依赖包一个一个的从网上下载下来,再上传到服务器不就可以安装了吗?
该方法在软件依赖关系简单时是可以的;事实上,很多软件的依赖关系都是比较复杂的,如果依赖包较多,若网上一个一个去找,着实费劲!且有的对版本存在一定的要求,这使得这个方法可行性很低。
那么,有什么方法可以一劳永逸的解决离线安装软件依赖关系的问题呢?
我的解决办法就是:在我们自己可联网的虚拟机(搞运维的别说你自己的电脑没搭虚拟机)上,搭建一个网络yum源,按下面的操作将需要安装的软件的依赖包下载下来,再将依赖包传到内网的服务器上,就可以正常的安装了。
本处以安装docker-ce-19.03.8-3.el7.x86_64.rpm(在写一键安装K8S脚本时遇到的问题)为例。
1、搭建一个阿里云的网络yum源(docker-ce)
其他的网络yum源按其他的方法
安装必要的一些系统工具$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2$ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo$ sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo$ yum clean all #清除缓存$ yum makecache #重新生成缓存$ yum repolist #查看镜像仓库
2、不安装下载所有依赖包
$ mkdir -p /root/rpm #创建存放依赖包的目录$ sudo yum install --downloadonly --downloaddir=/root/rpm docker-ce-19.03.8-3.el7.x86_64.rpm$ tar zcvf rpm.tar.gz /root/rpm/ #将依赖包进行打包
说明:
--downloadonly 不更新,只需下载
--downloaddir=DLDIR 指定用于存储包的备用目录
然后将rpm.tar.gz(该软件的所有包)传到需要安装的主机上进行安装即可。