当前位置:首页 > 问答 > 正文

Redis离线环境要装GCC,步骤和注意点都得知道,不然装不上咋办

为什么离线装Redis非得先装GCC?Redis这个软件是用C语言写的,你从官网下载下来的那个Redis压缩包,里面全是源代码,就像一堆写满了代码的文本文件,你的电脑没法直接运行这些文本,必须用一个“翻译官”把它转换成电脑能懂的机器语言,这个“翻译官”就是GCC(GNU Compiler Collection),它是Linux系统上最常用的C语言编译器,没有它,你执行make这个编译命令时,系统会直接告诉你“命令未找到”或者编译失败,Redis自然就装不上,在离线环境下,你的首要任务就是把GCC这个“翻译官”连同它需要的所有“工具书”和“帮手”(也就是依赖包)都准备好,搬到你的离线服务器上。

整个离线安装GCC和Redis的过程,可以大致分为三个关键阶段,每个阶段都有需要注意的坑点。

第一阶段:准备阶段——在一台能联网的、操作系统版本尽可能相同的机器上“抓包”

这是最关键的一步,准备工作做得好,后面才能顺风顺水,你不能随便找个电脑下载GCC就完事了,必须找一台和你的离线服务器操作系统一模一样的机器(最好是相同版本号的CentOS、Ubuntu等),这台机器必须有网络。

Redis离线环境要装GCC,步骤和注意点都得知道,不然装不上咋办

  1. 确认离线服务器的系统环境:你要在你的离线服务器上执行命令cat /etc/os-release,精确记录下操作系统的名称、版本号,比如是CentOS 7.9还是Ubuntu 20.04,这个信息至关重要。
  2. 搭建一个“模拟环境”:找一台能联网的、和离线服务器系统版本一致的电脑,如果找不到完全一致的,至少也要保证大版本相同(比如都是CentOS 7.x),但要注意,小版本不同可能会带来依赖库版本差异,增加失败风险。
  3. 使用yum/dnf的离线下载功能:以CentOS为例,你需要用yumdnf命令的downloadonly插件来下载GCC及其所有依赖包,但不进行安装
    • 确保安装了downloadonly插件:yum install yum-plugin-downloadonly
    • 创建一个大点的目录来存放下载的包,比如mkdir /opt/gcc_offline_packages
    • 执行下载命令:yum install --downloadonly --downloaddir=/opt/gcc_offline_packages gcc,这个命令会分析安装GCC需要哪些软件包,并把它们全部下载到指定的目录里。
    • 注意点1:光有gcc一个包是远远不够的,它依赖glibclibgcccpp等一大堆基础包,所以必须用这种方式让包管理器自动解决依赖关系。
    • 注意点2:Redis的编译可能还需要make工具,所以保险起见,你最好把make也一起下载了:yum install --downloadonly --downloaddir=/opt/gcc_offline_packages make
  4. 完整打包:下载完成后,将/opt/gcc_offline_packages这个目录下的所有.rpm文件(如果是CentOS/RHEL系统)打包成gcc_offline_packages.tar.gz,把这个压缩包通过U盘、内网共享等方式,拷贝到你的离线服务器上。

第二阶段:安装阶段——在离线服务器上“手动”安装GCC

你手头已经有了一个包含所有依赖的软件包集合,接下来就是在离线服务器上安装了。

Redis离线环境要装GCC,步骤和注意点都得知道,不然装不上咋办

  1. 上传和解压:将gcc_offline_packages.tar.gz上传到离线服务器的某个目录,比如/opt,然后解压。
  2. 使用rpm命令强制安装:进入存放rpm包的目录,执行安装命令,这里有个大坑。
    • 错误做法:直接rpm -ivh *.rpm,这很可能会失败,因为rpm包之间有依赖关系,它不会自动按顺序安装,会提示你先装A才能装B,先装B才能装C的死循环。
    • 正确做法:使用yumdnf的本地安装功能,它能自动解决依赖关系,命令是:yum localinstall *.rpmdnf localinstall *.rpm,这个命令会扫描当前目录下的所有rpm包,然后自动计算安装顺序并完成安装。
    • 注意点3:如果系统提示缺少某些依赖,而你确信你的包目录里已经有了,可能是包版本冲突或者系统里存在更旧的版本,这时候可以尝试加上--nogpgcheck(跳过GPG验证)和--disableplugin=fastestmirror(禁用快联镜像)参数,即yum localinstall *.rpm --nogpgcheck --disableplugin=fastestmirror
  3. 验证安装:安装完成后,一定要验证,在终端输入gcc --versionmake --version,如果都能正确输出版本信息,恭喜你,最艰难的一步已经完成了。

第三阶段:编译安装Redis——享受胜利果实

GCC装好后,安装Redis就相对简单了,步骤和在线安装基本一样。

  1. 上传Redis源码包:将从官网下载的redis-x.x.x.tar.gz源码包上传到离线服务器,比如/usr/local/src/目录。
  2. 编译安装
    • tar -zxvf redis-x.x.x.tar.gz 解压。
    • cd redis-x.x.x 进入解压后的目录。
    • make 进行编译,这一步就是在调用你刚刚装好的GCC。
    • 注意点4:如果make失败,最常见的原因是内存不足,Redis编译需要一定的内存,如果虚拟机或服务器内存太小,可能会编译失败,可以尝试增加交换分区(swap)来解决。
    • make install 安装,这一步会把编译好的redis-serverredis-cli等可执行文件拷贝到系统的/usr/local/bin/目录下。
  3. 最后验证:输入redis-server --version,如果能看到版本号,说明Redis安装成功。

总结一下最大的几个注意点:

  • 系统一致性:准备包的环境必须和离线环境高度一致,这是成功的基石。
  • 依赖完整性:务必使用yum downloadonly或等价的dnf download命令来抓取所有依赖,不要试图手动一个个找。
  • 安装顺序:在离线端,优先使用yum localinstall而不是rpm -ivh来利用其自动解决依赖的能力。
  • 编译环境:确保离线服务器有足够的内存用于编译Redis。

只要按照这个流程,细心操作,离线安装GCC和Redis是完全可行的,这个过程虽然比在线安装麻烦很多,但能让你更深入地理解软件安装的底层依赖关系。