在安装redis-trib.rb时需进行Ruby环境准备
- 安装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
- 安装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如下)
后面只好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,不会再报错
本来很简单的问题,但网上资料有的表述遗漏,不独立判断直接用,解决过程反而被曲折。。。