昨天因为想用fpm制作rpm包,因为是一个比较复杂的环境,因此产生了一些波折。
使用fpm工具首先要配置ruby 环境
yum install rubygems ruby-devel rubugems-devel
然后常规操作,更换gem源:
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
但是在加入的时候报错:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B
然后尝试使用官方的解决办法:
添加源成功后,使用gem 命令安装,报错:
can't modify frozen object
判断下,应该是ruby版本过低的原因,因此准备更新ruby版本,现在版本为1.8.7太低了。
准备使用rvm工具进行更新:
安装指令为:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable
之后因为报错,会提示你执行另外两条指令:
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
curl -sSL https://get.rvm.io | bash -s stable
执行后rvm可以正常使用
修改rvm的ruby安装源:(若无文件夹可以创建)
echo "ruby_url=https://cache.ruby-china.org/pub/ruby" > ~/.rvm/user/db
使rvm配置文件生效
source /usr/local/rvm/scripts/rvm
查看rvm中管理的所有ruby版本
rvm list known
选择安装一个版本
rvm install 2.6.0
这是一个安装和编译过程,将./configure 以及 make,make install这些过程都压缩在rvm中,但我在安装的过程中,遇见了很大的问题
在make insall 过程中一直出现:
/usr/local/rvm/src/ruby-2.6.0/lib/rubygems/core_ext/kernel_require.rb:54:in `require': /usr/local/rvm/src/ruby-2.6.0/.ext/x86_64-linux/openssl.so: undefined symbol: EC_GROUP_new_curve_GF2m - /usr/local/rvm/src/ruby-2.6.0/.ext/x86_64-linux/openssl.so (LoadError)
这个是查看编译日志看到的错误。
我查了很多的资料,同时Google了很多内容,确定问题为openssl版本不兼容问题,我确实对这台设备做了 openssl环境升级因为需要安装python3.7.2.
最后的解决办法为:
rvm package install openssl
需要关注的一点是,需要注意rvm 安装的路径,因为需要用到
默认是安装在/usr/local/rvm/usr
然后依赖rvm安装的openssl 进行安装ruby
[root@Jenkins-ops-node2 user]# rvm install 2.6.0 \
> --with-openssl-dir=/usr/local/rvm/usr/ \
> --verify-downloads 1
最终成功了
参考链接:ruby安装
网友评论