Ruby源码安装 cannot load such file -- zlib (LoadError) 和 cannot load such file -- openssl (LoadError) 及 gem No rule to make target `/include/ruby.h', needed by`zlib.o'. Stop. 解决办法

发生问题时我的前置条件

  1. linux版本: Linux version 3.10.0-862.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Fri Apr 20 16:44:24 UTC 2018
  2. gcc版本: gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
  3. Ruby版本:ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
  4. gem版本: 3.0.6
  5. Ruby安装方式: 源码安装且源码未删除
  6. 安装Ruby及gems目的: 使用ruby搭建redis集群

cannot load such file -- zlib 问题解决

原因

  1. 缺少zlib函式库
  2. 缺少ruby-zlib

解决

  1. (未安装zlib时)下载安装zlib

    • 我是使用源码安装,由是默认安装到/usr/local/lib,我选择使用root用户操作
    • 安装版本zlib-1.2.11
      1. 下载软件包 wget http://www.zlib.net/zlib-1.2.11.tar.gz
      2. 解压缩软件包 tar -zxvf zlib-1.2.11.tar.gz
      3. 进入zlib源码目录 cd zlib-1.2.11/
      4. 配置 ./configure
      5. make make
      6. 检查 make check
      7. 安装 make install
      8. 查看是否成功(目录中存在libz.a) find /usr/local/lib -name libz.a
  2. 安装 ruby-zlib
    • Ruby源码提供了该源码,直接找到对应目录安装

      1. cd /root/ruby-2.6.5/ext/zlib
      2. ruby ./extconf.rb
        • 如果报错 checking for zlib.h... no 或 checking for deflateReset() in -lzlib... no
        • 则 ruby ./extconf.rb --with-zlib-dir =/usr/local/zlib
      3. make
        • 如果报错 make: *** No rule to make target /include/ruby.h', needed byzlib.o'. Stop.
        • 根据日志得知 zlib.o: $(top_srcdir)/include/ruby.h 去查看源码的确不存在变量值的话
          1. 在Makefile文档第一行,设置变量top_srcdir的路径
          2. (我采用)用绝对/相对路径替换$(top_srcdir)
            • 建议先备份Makefile
            • vim Makefile
            • : %s/$(top_srcdir)/..\/../g
            • :wq
      4. 如果上一步make报错,在修改后再次make
      5. make install

cannot load such file -- openssl 问题解决

原因

  1. 未安装openssl-devel
  2. 缺少ruby-openssl

解决

  1. (未安装openssl时)下载安装openssl

    • 我是使用源码安装,默认安装到/usr/local/ssl,且没有链接命令
    • 安装版本 openssl-1.0.2t
      1. 下载软件包 wget https://www.openssl.org/source/openssl-1.0.2t.tar.gz
      2. 解压缩软件包 tar -zxvf openssl-1.0.2t.tar.gz
      3. 进入目录 cd openssl-1.0.2t
      4. ./config shared zlib
      5. make depend
      6. make
      7. make install
      8. 验证是否安装成功(显示版本信息) /usr/local/ssl/bin/openssl version -a
      9. 如有需要则可以手工链接openssl命令
        • 先确认/usr/bin/openssl和/usr/include/openssl不存在,若存在请备份或删除原来的openssl

          • (可选)备份方式

            • mv /usr/bin/openssl /usr/bin/openssl.bak
            • mv /usr/include/openssl /usr/include/openssl.bak
        • 链接刚刚安装的openssl
          • ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
          • ln -s /usr/local/ssl/include/openssl /usr/include/openssl
        • (可选)写入ld.so.conf记录动态库的路径
          • echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
          • ldconfig -v
        • 验证链接是否成功 openssl version -a
  2. 安装ruby-openssl
    • Ruby源码提供了该源码,直接找到对应目录安装

      1. cd /root/ruby-2.6.5/ext/openssl
      2. ruby ./extconf.rb
        • (未链接刚安装的openssl可能)报错 checking for openssl.h... no 或 checking for deflateReset() in -openssl... no
        • 则 ruby ./extconf.rb --with-openssl-dir=/usr/local/ssl
      3. make
        • 如果报错 make: *** No rule to make target /include/ruby.h', needed byzlib.o'. Stop.
        • 根据日志得知 zlib.o: $(top_srcdir)/include/ruby.h 去查看源码的确不存在变量值的话,处理方式同安装ruby-zlib
          1. 在Makefile文档第一行,设置变量top_srcdir的路径
          2. (我采用)用绝对/相对路径替换$(top_srcdir)
            • 建议先备份Makefile
            • vim Makefile
            • : %s/$(top_srcdir)/..\/../g
            • : wq
      4. 如果上一步make报错,在修改后再次make
      5. make install

No rule to make target /include/ruby.h', needed byzlib.o'. Stop. 解决办法

原因

  1. 可能是缺少$(top_srcdir)/include/ruby.h变量对应值

解决

  1. 如果报错 make: *** No rule to make target /include/ruby.h', needed byzlib.o'. Stop.
  2. 根据日志得知 zlib.o: $(top_srcdir)/include/ruby.h 去查看源码的确不存在变量值的话
    1. 在Makefile文档第一行,设置变量top_srcdir的路径
    2. (我采用)用绝对/相对路径替换$(top_srcdir)
      • 建议先备份Makefile

        • cp Makefile Makefile.bak
      • vim Makefile
      • : %s/$(top_srcdir)/..\/../g
      • : wq

Ruby cannot load such file -- zlib和openssl(LoadError)及gem No rule to make target `/include/ruby.h‘解决相关推荐

  1. 成功解决Ubuntu下的include/darknet.h:14:14: fatal error: cuda_runtime.h: No such file or directory

    成功解决Ubuntu下的include/darknet.h:14:14: fatal error: cuda_runtime.h: No such file or directory 目录 解决问题 ...

  2. 【跳坑日记】Ubuntu 16.04安装 Ruby2.7.0遇到的坑:cannot load such file -- openssl (LoadError)

    出错描述 运行环境 操作系统:Ubuntu 16.04 64位 Ruby版本:2.7.0 错误描述 通过源码安装Ruby 2.7.0版本时报错,内容:ruby-2.7.0/lib/rubygems/c ...

  3. zlib、OpenSSL漏洞及解决

    1. 漏洞描述 CVE: CVE-2016-9843. zlib 1.2.8版本中存在拒绝服务漏洞.攻击者可利用该漏洞造成受影响的应用程序崩溃,导致拒绝服务. CVE: CVE-2020-1967.  ...

  4. 执行redis命令redis-trib.rb查看集群信息报错cannot load such file -- redis (LoadError)

    问题描述: 在执行redis-trib.rb命令查看集群状态的时候,报错: [aiprd@hadoop1 ~]$ redis-trib.rb check 192.168.30.10:7000 Trac ...

  5. pod install 报 cannot load such file -- executable-hooks/wrapper (LoadError)

    错误提示: Error loading RubyGems plugin "/Users/jan/.rvm/rubies/ruby-3.0.4/lib/ruby/gems/3.0.0/plug ...

  6. Jekyll 运行的时候提示错误 cannot load such file -- webrick (LoadError)

    完整的错误信息如下: LinkChecker: [Warning]done in 13.838 seconds.Auto-regeneration: enabled for 'D:/WorkDir/R ...

  7. internal:gem_prelude:4:in `require': cannot load such file -- rubygems.rb (LoadError) from intern

    错误提示信息"cannot load such file -- rubygems.rb" 有可能是因为中文路径(或者其他字符路径)导致的.请卸载ruby之后,然后在英文路径下,重新 ...

  8. Py_Initialize fails - unable to load the file system codec

    Py_Initialize fails - unable to load the file system codec https://stackoverflow.com/questions/56947 ...

  9. redmine cannot load such file – rbpdf-font

    在安装redmine的过程中,执行 bundle exec rake db:migrate RAILS_ENV="production" 报出错误: LoadError: cann ...

最新文章

  1. 在OpenShift平台上验证NVIDIA DGX系统的分布式多节点自动驾驶AI训练
  2. python 实现分治法的几个例子
  3. Collections.binarySearch用法
  4. 服务化改造的云上利器 | 阿里云 EDAS 重大升级发布
  5. vue 修改div宽度_Vue 组件通信方式及其应用场景总结(1.5W字)
  6. PSIM软件学习---08 C程序块的调用
  7. 滴滴司机毒打投资人;华为回应自研系统;微信回应被删聊天记录可提取 | 一周业界事...
  8. python turtle绕原点旋转_「加德老师与小朋友们的编程之旅」Python海龟作图(上)
  9. cartopy模块介绍与安装
  10. Python 数据可视化之matpotlib画图
  11. python画散点图、折线图
  12. SAP常用TCODE
  13. ideaIU-2019.3.2.exe安装教程
  14. reviewboard mysql_Ubuntu下ReviewBoard安装全过程_MySQL
  15. 运动式蓝牙耳机什么牌子好、运动式蓝牙耳机推荐
  16. html脚注制作,幸福西饼:静态页面制作项目总结
  17. 【OR】二次规划(1)
  18. 凹凸贴图和法线贴图的区别
  19. 图之深度优先生成森林
  20. 学生党matlab哪个版本最好用,学生党福音!仅4个GPU打造自己的BigGAN,PyTorch代码已开源...

热门文章

  1. 机器人项目:智能寻迹小车
  2. “21 天好习惯”第一期-7
  3. win7原版iso_【JUJUMAO_MSDN系统】Windows 10 1903 64位 五版合一 原版ISO镜像
  4. C++数字三角形问题(动态规划)
  5. 服务器raid配置和安装系统,R390X G2服务器配板载RSTe阵列卡UEFI模式安装windows2008 R2系统典型配置...
  6. matlab 打开xml文件怎么打开方式,导入 XML 文档
  7. 计算机新建怎么没有表格,为何我的电脑新建项目里没有EXCEL表格呢,
  8. 没有自制力,你有资格玩吗?
  9. 华为鸿蒙糸统其它手机可以用吗,鸿蒙系统vivo能用吗
  10. Spark SQL_JZZ158_MBY