安装rubygem redis依赖时报错:Loading command: install (LoadError) cannot load such file -- zlib

在安装redis-trib.rb时需进行Ruby环境准备

  1. 安装Ruby
 #在/usr/local目录下
 wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
 tar xvf ruby-2.3.1.tar.gz
 cd ruby-2.3.1/
 ./configure -prefix=/usr/local/ruby
 make
 make install
 #生成了/usr/local/ruby目录
 cd ../ruby
 #/usr/local/bin如果不在$PATH中,在/etc/profile中加一下,还是挺常用的
 cp bin/ruby /usr/local/bin
 cp bin/gem /usr/local/bin
 #可查看已安装的Ruby版本
 ruby -v
  1. 安装rubygem redis依赖
#在/usr/local目录下
wget http://rubygems.org/downloads/redis-3.2.0.gem
gem install -l redis-3.2.0.gem

此时报错:缺少zlib库
ERROR: Loading command: install (LoadError)
cannot load such file – zlib
ERROR: While executing gem … (NoMethodError)
undefined method `invoke_with_build_args’ for nil:NilClass

解决方法

#安装zlib库
yum install zlib-devel
#集成zlib库到ruby环境
cd /usr/local/ruby-2.3.1/ext/zlib
ruby extconf.rb
#!!!直接在/usr/local/ruby-2.3.1/ext/zlib下执行!!!
make
make install

解决方法


中间乱七八糟的错误操作:
集成zlib库到ruby环境后返回到/usr/local/ruby-2.3.1下重新编译,仍报错
尝试一些文章中的在ext/openssl/Makefile 增加 top_srcdir = …/…也未能解决等(其实Makefile本身已定义topdir及top_srcdir如下)
ext/openssl/Makefile
后面只好make distclean进行清理(清除所有生成的文件),并删掉ruby目录以及/usr/local/bin下gem和ruby

[root@Node2 ruby-2.3.1]#  make
	CC = gcc
	LD = ld
	LDSHARED = gcc -shared
	CFLAGS = -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -std=iso9899:1999 
	XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT -fPIE
	CPPFLAGS =   -I. -I.ext/include/x86_64-linux -I./include -I.
	DLDFLAGS = -fstack-protector -pie  
	SOLIBS = 
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
目标:x86_64-redhat-linux
配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
线程模型:posix
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
copying dummy probes.h
generating opt_sc.inc
executable host ruby is required. use --with-baseruby option.
make: *** [opt_sc.inc] 错误 1

解决方法:

#要yum先安装一下
yum install ruby
cd ruby-2.3.1/
./configure -prefix=/usr/local/ruby
make
make install
gem install -l redis-3.2.0.gem
#已装过zlib-devel,不会再报错

本来很简单的问题,但网上资料有的表述遗漏,不独立判断直接用,解决过程反而被曲折。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值