当前位置: 首页 > ops >正文

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

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

  • 困境
  • yum-utils
  • 破局

前段时间,有个项目有边缘部署的需求,一台没有的外网的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去下载这些依赖。

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

http://www.xdnf.cn/news/4599.html

相关文章:

  • 全面解析 iTextSharp:在 .NET 中高效处理 PDF
  • 贵州安全员考试内容有哪些?
  • Python学习笔记--Django的安装和简单使用(一)
  • 【Linux网络】Socket 编程预备
  • 图像管理与人脸识别工具深度解析
  • 查看单元测试覆盖率
  • 辰鳗科技朱越洋:紧扣时代契机,全力投身能源转型战略赛道
  • maven 安装 本地 jar
  • 算法的时间复杂度
  • 手写 vue 源码 ===:自定义调度器、递归调用规避与深度代理
  • 基于大模型预测的产钳助产分娩全方位研究报告
  • 【工具教程】批量提取PDF指定内容并重命名,PDF文档根据指定识别文字改名,基于java的实现方案
  • (7)Nokov 室内光学跟踪系统
  • 玄机 第一章 应急响应-Linux日志分析
  • C#学习7_面向对象:类、方法、修饰符
  • MySQL 8.0 OCP(1Z0-908)英文题库(11-20)
  • 编写大模型Prompt提示词方法
  • 奥威BI:AI+BI深度融合,重塑智能AI数据分析新标杆
  • 382_C++_在用户会话结束时,检查是否有其他会话仍然来自同一个客户端 IP 地址,没有连接状态设置为断开,否则为连接
  • M0芯片的基础篇Timer
  • Android RecyclerView自带的OnFlingListener,Kotlin
  • 58.[前端开发-前端工程化]Day05-webpack-Git安装-配置-Git命令
  • 【目标检测标签转换工具】YOLO 格式与 Pascal VOC XML 格式的互转详解(含完整代码)
  • Tcp 通信简单demo思路
  • Typora安装使用教程,图片相对储存路径路径设置
  • 什么是 DDoS 攻击?从零到精通的全面解析
  • 如何在 Java 中调用本机摄像头并结合 Vue 实现实时视频流?
  • 初识Linux · TCP基本使用 · 回显服务器
  • 矢量网络分析仪测驻波比:从原理到实战操作全解析
  • 101alpha_第6个