Centos离线安装mysql、redis、nginx等工具缺乏层层依赖的解决方案

Centos离线安装mysql、redis、nginx等工具缺乏层层依赖的解决方案

前段时间,有个项目有边缘部署的需求,一台没有的外网的Centos系统服务器,需要先安装jdk,node,mysql,reids,rocketmq,nginx,docker等基础工具,再部署整个系统涉及的各个子服务。linux安装软件不像windows那般便捷,大部分时候,只需要一个安装包,直接下一步下一步就完事儿了。当然,如果是有外网的情况,通过yum镜像仓库来安装也非常方便,可以自动下载安装所需的依赖项。以前的项目也遇到类似于这种纯局域网的场景,那时因为服务器机房访问方便,可以拿个随身wifi或者手机,插到usb口,给服务器临时创造外网条件,把一些安装比较麻烦的工具先装好。最差地,可以先把docker安装好,后面的那些工具可以考虑通过docker镜像来安装,以此来处理依赖问题。这次,服务器机房层层把关,去一趟实属不便。没办法,只能当回铁头娃,缺啥补啥,硬着头皮装。

困境

我最先安装的是docker,平时在有外网的环境,通过yum轻轻松松一步两步三步依次执行,两三分钟就能装好,第一次纯离线环境安装,上来第一个软件就给我整红温了。

这里我就不谈具体什么什么报错了,其实说到底都是缺少依赖。和docker类似,好多工具我都选择了rpm包的方式进行安装。在网上找到需要的版本,下载了docker-ce、docker-ce-cli、containerd.io、libseccomp等几个rpm包,依次使用rpm -ivh命令安装,然后就提示了一堆需要的依赖没有,安装中断了。安装docker缺失的依赖不算多,我挨个找了对应的rpm包,安装后,顺利启动了docker服务。

但是,当我安装mysql的时候,缺失的依赖是一层套一层,一层套一层,比如它提示我缺少a、b、c三个依赖,我下载了a、b、c三个依赖的rpm包后,安装时又提示缺少d、e、f等依赖,以此递归。

红温。。。

破防。。。

yum-utils

CentOS/RHEL 系统中的一个软件包,它提供了一些有用的工具来增强 yum(Yellowdog Updater

Modified)的功能

这个时候产生了两个想法,一是直接全面使用docker镜像安装,绕开层层依赖的问题;二是找到能够一次性处理层层依赖的方法。我倾向于使用第二种方式处理,并且,还真有这种工具。yum-utils的一个子功能yumdownloader,适用于离线环境下载rpm包,并且支持层层处理并下载所需的所有依赖。

破局

这里其实有个巧合,因为这个服务的centos系统也是我安装的,系统镜像我有,我直接在虚拟机中一比一复刻出了同样的centos环境,所以安装相同软件所需要的依赖是一样的。当然其实没有这个契机应该也能处理,只是可能需要多经历几次rpm依赖包下载的过程。

我记得当时在安装mysql-community-client时就报了一大堆的依赖缺失项,下载了一部分,安装的时候也报类似的错误,然后在虚拟机有外网的环境使用yumdownloader去下载这些依赖。

shell 复制代码
# 安装yum-utils工具
yum install yum-utils
# 下载perl、net-tools、perl-Getopt-Long等依赖
yumdownloader \
    perl \
    net-tools \
    perl-Getopt-Long --resolve

注意这里的--resolve参数,可以下载这三个软件包以及安装这三个软件包所需的依赖软件包。yumdownloader下载的文件会保存在当前目录,所以最好先创建并进入一个空目录下。执行完成后会发现下载了一大堆rpm包,将所有rpm包tar -cvf dependency.tar压缩到tar包,将tar包复制到离线服务器上并解压,使用rpm -vxf *.rpm批量安装。

这儿安装的时候,可能因为安装顺序的原因,先安装的rpm包依赖后安装的,就会导致安装失败,提示缺少什么什么依赖,但实际依赖可能是全的,只是执行顺序排到后面的,可以加上--force参数,跳过一来检查报错,把每个包执行安装,执行完后去掉--force再执行一次,都提示已安装就可以了。

相关推荐
小猪咪piggy2 分钟前
【MySQL】(10)用户和权限管理
数据库·mysql
GUIQU.22 分钟前
【MySQL】SQL简述
数据库·sql·mysql
敲上瘾1 小时前
数据库(MySQL)基础
linux·数据库·mysql
顽强d石头2 小时前
viewDesign里的table内嵌套select动态添加表格行绑定内容丢失
数据库·mysql·view design
胖哥真不错2 小时前
Python基于Django和MySQL实现突发公共卫生事件舆情分析系统(有大屏功能)
python·mysql·django·突发公共卫生事件舆情分析系统·大屏功能
长流小哥5 小时前
MySQL C API高效编程:C语言实现数据库操作的深入解析
数据库·c++·mysql
JhonKI5 小时前
【MySQL】存储引擎 - MEMORY详解
数据库·mysql
didiplus6 小时前
MySQL 8.0 OCP(1Z0-908)英文题库(11-20)
数据库·mysql·adb·认证·ocp
朝新_7 小时前
【MySQL】第二弹——MySQL表的增删改查(CURD))
mysql
天狼12228 小时前
第8章-1 查询性能优化-优化数据访问
mysql·性能优化