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再执行一次,都提示已安装就可以了。

相关推荐
风跟我说过她6 分钟前
Hadoop HA (高可用) 配置与操作指南
大数据·hadoop·分布式·zookeeper·centos
yuyue_9991 小时前
理解 mvcc
mysql
码码哈哈爱分享3 小时前
MariaDB 与 MySQL 区别
数据库·mysql·mariadb
爱敲代码的TOM3 小时前
深入MySQL底层1-存储引擎与索引
数据库·mysql
sz-lcw6 小时前
MySQL知识笔记
笔记·mysql·adb
牛奶咖啡137 小时前
关系数据库MySQL的常用基础命令详解实战
数据库·mysql·本地远程连接到mysql·创建mysql用户和密码·修改mysql用户的密码·设置mysql密码的使用期限·设置和移除mysql用户的权限
没有bug.的程序员8 小时前
MVCC(多版本并发控制):InnoDB 高并发的核心技术
java·大数据·数据库·mysql·mvcc
什么半岛铁盒10 小时前
C++项目:仿muduo库高并发服务器-------Channel模块实现
linux·服务器·数据库·c++·mysql·ubuntu
岚天start11 小时前
Nginx配置中location和proxy_pass指令尾部是否带斜杠的区别
运维·nginx·centos·proxy_pass·location·uri·斜杠
muxin-始终如一11 小时前
MySQL与Redis面试问题详解
数据库·redis·mysql