下面介绍下如何在屏蔽比较严重的网络情况下使用rvm来半手工的安装ruby, 如下操作基于CentOS 7,其他操作系统可能有所不同。

安装rvm

官网安装步骤

1
2
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -L get.rvm.io | bash -s stable

问题点:

get.rvm.io是重定向到https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer这个地址的。可是有些国内机构的网络中,raw.githubusercontent.com这个域名是被屏蔽的。

措施:

可先在本地下载rvm-installer脚本,再拷贝脚本到服务器后,再执行安装命令

1
2
3
4
5
6
7
# 1. 本机上下载
curl -L get.rvm.io > rvm-installer.sh
# 2. 拷贝rvm-installer.sh到服务器
# 3. 服务器本地执行安装命令
cat rvm-installer.sh | bash -s stable

使用rvm安装ruby

官网安装步骤:

1
2
rvm requirements run
rvm install 2.3.8

问题点:

安装ruby时,会下载ruby源码和rubygems,然后进行编译安装。某些网络情况下,ruby源码和rubygems都下载不下来。会导致安装失败。

措施:

指定ruby下载源为rubychina,或手动下载ruby源码, 再下载rubygems,放在rvm archives目录下,最后执行安装命令即可。以全局安装ruby 2.3.8, rubygems 3.0.8为例

1
2
3
4
5
6
7
8
9
10
# 1. 修改ruby source为rubychina
echo "ruby_url=https://cache.ruby-china.com/pub/ruby" >> /usr/local/rvm/user/db
# 2. 本地下载rubygems 3.0.8
wget https://rubygems.org/rubygems/rubygems-3.0.8.tgz
# 3. 将rubygems拷贝到服务器的/usr/local/rvm/archives/中
# 4. 执行安装命令
rvm install 2.3.8

替换使用rubychina的gem源

将默认的Gem源从rubygems.org替换为rubychina

1
2
3
4
$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
$ gem sources -l
https://gems.ruby-china.com
# 确保只有 gems.ruby-china.com

Reference

留言