在工作中,在生产中经常会遇到这样的情况,服务器部署环境无法链接互联网,只能在内网运行。这时候如果使用Centos系统,就会发现安装软件是一件很痛苦的事情,不知道如何下手,因为如果有外网环境的话,在Centos下安装软件和开发工具是意见很麻烦的事情,因为linux上通过yum安装软件的时候是需要把相关的依赖也会安装的,所以如果只copy一个rpm包到服务器上安装是无法完成安装的。
下面介绍一种可以在无网环境的Linux下安装软件和开发工具的方法。
首先准备一台跟目标服务器操作系统、环境一样的机器,例如:1
2机器A. 192.168.10.12 有外网访问权限
机器B. 192.168.10.13 无外网访问权限
我们的目标就是在机器B上安装我们需要的软件。
原理:
借助yum安装的“缓存”,在有网的机器上打开yum的keepcache开关,把下载的软件和相应的依赖缓存起来,然后copy缓存到目标机器上,在目标机器上正常通过yum进行安装。
- 1.需要在一台可以连外网的机子上安装一个同版本的centos的虚拟机。可能不同的版本包含了不同的基层依赖包,这样有可能会导致后续的安装失败。
- 2.修改两台机器上的yum配置文件 /etc/yum.conf ,将 keepcache=0 修改成 keepcache=1, 打开缓存开关。因为yum在安装的时候会先去缓存查找,如果没有查找成功则会去网络下载。
- 在机器A上使用yum命令安装需要的软件。比如 sudo yum install -y yum-utils, 这个时候yum-utils的安装缓存就会保存起来。 在目录 /var/cache/yum/ 下可以看到,一般来说是个 x86_64的文件夹。
- Copy机器A上 /var/cache/yum/的目录文件到机器B上的相应目录。
- 5.在机器B上执行 yum install -y yum-utils,完成软件的安装。
至此,就可以在无网的linux服务器完成软件的安装了。
注意,如果在有网的机器上添加了相应的repo的话,例如docker-ce.repo,在目标机器上也要添加相应的repo文件。