linux,不使用rvm情况下,安装ruby

Centos 6.5在使用yum -y install ruby 安装ruby的时候,版本号会低于2.2.2. ,在搭建redis集群环境时,执行gem install redis命令时提示以下错误信息:

ERROR:  Error installing redis:
	redis requires Ruby version >= 2.2.2.

Centos6.5 yum源默认是1.8.0版本,查看当前ruby版本:

# ruby --version  // 结果ruby 1.8.0.0p648 (2013-12-16) [x86_64-linux]

解决方法:

一、在电脑翻墙的情况下,可以采用RVM方式, ,需要先curl,再安装RVM,之后安装大于等于2.2.2版本的ruby即可。

1.安装curl

# yum -y install curl

2.安装RVM

# curl -L get.rvm.io | bash -s stable

3.获得秘钥

# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

4.继续执行

# curl -sSL https://get.rvm.io | bash -s stable

5.RVM安装完成

使用source让当前shell读入路径为/usr/local/rvm/scripts/rvm的shell文件并依次执行文件中的所有语句,并重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录

# source /usr/local/rvm/scripts/rvm

6.查看Ruby可用版本

# rvm list known


这里选择2.3.7版本安装,等待时间比较长。

# rvm install 2.3.7

7.使用安装的2.3.7版本

# rvm use 2.3.7

8、设置默认版本

# rvm use 2.3.7 --default

9、卸载之前的2.0.0版本

# rvm remove 2.0.0

10、查看ruby版本

# ruby --version

版本号为 ruby 2.3.7p456

接着返回继续执行gem install redis命令j即可。

二、下载ruby安装包进行升级。

 redis-3.3.0.gem 下载, 提取码:cnjs

ruby-2.3.1下载,提取码:ju7y

openssl-1.0.1s下载,提取码:8q3d
需要用到的资源,从上面链接下载

tar -zxvf ruby-2.3.1.tar.gz

./configure -prefix=/usr/local/ruby
make && make install
cd /usr/local/ruby
cp bin/ruby /usr/local/bin
cp bin/gem /usr/local/bin

在配置 redis-3.1.1 群集中,使用gem install 安装 ruby redis 接口时报:

# [root@localhost src]# gem install redis --version 3.0.0
# # 由于源的原因,可能下载失败,就手动下载下来安装
[root@localhost src]# gem install /usr/local/src/redis-3.2.1.gem
ERROR: While executing gem ... (Gem::Exception)
    Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources


原因:
缺少openssl,需要安装openssl包,我现在这里来安装一个openssl-1.0.1s.tar.gz。

解决方法步骤

1.解压在/usr/local/src目录下,进入/usr/local/src/openssl-1.0.1s目录准备安装:

[root@localhost src]# tar -xzvf openssl-1.0.1s.tar.gz 
[root@localhost src]# cd openssl-1.0.1s 
[root@localhost openssl-1.0.1s]# ./config -fPIC --prefix=/usr/local/openssl enable-shared [root@localhost openssl-1.0.1s]# ./config -t 
[root@localhost openssl-1.0.1s]# make && make install

openssl的配置文件必须要配置-fPIC参数,如果没有该参数下面的安装中会出现问题!
安装完成,可以检测一下是否安装成功:

[root@localhost openssl-1.0.1s]# openssl version

2.进入ruby源码[/usr/local/src/ruby-2.3.1]目录下的ext/openssl 目录:

[root@localhost openssl]# ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib
checking for t_open() in -lnsl... no 
checking for socket() in -lsocket... no 
checking for assert.h... yes 
checking for openssl/ssl.h... yes 
.............................................中间略............................................. 
checking for EVP_CTRL_GCM_GET_TAG in openssl/evp.h... yes 
creating extconf.h 
creating Makefile

 成功。

3.接下来并且将ruby 源码目录下的include目录软链接到 / 目录下:

[root@localhost openssl]# ln -s /usr/local/ruby-2.3.1/include /

接着再执行make,如果在配置openssl时没有-fPIC参数时就会出现如下错误

[root@localhost openssl]# make 
gcc -shared -o openssl.so ossl_x509.o ossl_x509cert.o ossl_x509crl.o ossl_pkcs7.o ossl_cipher.o ossl_pkey_dh.o ossl_ssl_session.o ossl_x509attr.o ossl_x509ext.o ossl_ocsp.o ossl_asn1.o ossl_x509name.o ossl_x509revoked.o ossl_rand.o ossl_pkcs12.o ossl_x509store.o ossl_ssl.o ossl.o ossl_digest.o ossl_config.o ossl_pkcs5.o ossl_bio.o ossl_pkey_dsa.o ossl_pkey.o ossl_x509req.o ossl_pkey_ec.o ossl_hmac.o openssl_missing.o ossl_ns_spki.o ossl_pkey_rsa.o ossl_engine.o ossl_bn.o -L. -L/usr/local/ruby/lib -Wl,-R/usr/local/ruby/lib -L/usr/local/ssl/lib -Wl,-R/usr/local/ssl/lib -L. -rdynamic -Wl,-export-dynamic -lssl -lcrypto -lrt -ldl -lcrypt -lm -lc 
/usr/bin/ld: /usr/local/ssl/lib/libssl.a(s2_meth.o): relocation R_X86_64_32 against `a local symbol'
can not be used when making a shared object; recompile with -fPIC 
/usr/local/ssl/lib/libssl.a: could not read symbols: Bad value 
collect2: ld returned 1 exit status 
make: *** [openssl.so] Error 1

有配置-fPIC参数时就继续走下去:

[root@localhost openssl]# make

compiling ossl_pkey_dsa.c

compiling openssl_missing.c

compiling ossl_x509name.c

compiling ossl_pkey_rsa.c

.............................................中间略.............................................

compiling ossl_bn.c

compiling ossl.c l

inking shared-object openssl.so
 

再执行

[root@localhost openssl]# make install

4.回过头来,这时候我们已经把配置集群遇到的各种问题已经解决好了,再次使用gem install 安装 ruby redis 接口: 

gem install -l ./redis-3.3.0.gem
gem list --check redis gem 
 

[root@localhost src]# gem install /usr/local/src/redis-3.0.0.gem 

Successfully installed redis-3.0.0 
Parsing documentation for redis-3.0.0 
Installing ri documentation for redis-3.0.0 
Done installing documentation for redis after 0 seconds 
WARNING: Unable to pull data from 'https://rubygems.org/': SSL_connect returned=1 errno=0 state=error: certificate verify failed (https://rubygems.org/specs.4.8.gz) 
1 gem installed

可以看到这时ruby redis接口已经安装成功了;

猜你喜欢

转载自blog.csdn.net/liangweihua123/article/details/84817526