是否可以使用 RVM 安装预编译的 Ruby 版本?

是否可以使用 RVM 安装预编译的 Ruby 版本?

我正在使用 EC2,有时会启动一些我只想使用一小段时间的服务器。通常我想在这些服务器上安装某个或某些版本的 Ruby,而 RVM 对此非常方便——如果不是因为编译 Ruby 需要很长时间的话。当其余服务器设置只需几分钟即可完成时,仅仅为了编译 Ruby 就必须等待近半个小时,这真的很无聊。它完全破坏了云计算体验。

有没有办法既能享受 RVM 的便利,又不必为启动的每个新服务器编译每个 Ruby 版本?我可以预编译一个 Ruby 版本并将其保存在可访问的地方,然后让 RVM 使用它而不是从源代码编译它吗?安装 Ruby 版本后,我是否可以简单地将某个目录存档在 RVM 根目录下,将其保存在某个地方,然后在我启动的下一个服务器上将其提取到正确的位置?在这种情况下,我需要保留哪些文件和目录?

我想使用 RVM 不仅能够在 Ruby 版本之间切换,还因为它允许我为不同的应用程序保留单独的 gemset,因此不使用 RVM 会非常不方便。

所有服务器具有相同的操作系统和架构,Ubuntu 10.04,32 位。

答案1

如果您汇总并部署预先配置的 ~/.rvm 文件夹并确保远程 .bashrc 已配置为使用它,您会遇到任何问题吗?据我所知,rvm 旨在允许您执行此操作。

我认为唯一的障碍可能是确保您拥有正确的 gem 和包以允许您的代码运行。但是,您会在目标平台上准备 .rvm,对吗?此外,还要考虑您的 ruby​​ 环境所需的任何操作系统包。

答案2

现在可能有点过时了,但从 1.16 版本开始,rvm 支持下载预编译的二进制文件。

当我询问主要版本(即 1.9.3)时,我遇到了困难

20130212 00:31:00 dev@domU-xxxx:~ rvm install 1.9.3
Searching for binary rubies, this might take some time.
No binary rubies available for: ubuntu/12.04/i386/ruby-1.9.3-p385.
Continuing with compilation. Please read 'rvm mount' to get more information on binary rubies.

因此我查看了预构建二进制文件中实际可用的内容:

20130212 00:31:27 dev@domU-xxxx:~ rvm list remote

# Rubies available for 'ubuntu/12.04/i386':

   ruby-1.9.3-p194
   ruby-1.9.3-p286
   ruby-1.9.3-p327
   ruby-1.9.3-p362
   ruby-1.9.3-p374
   ruby-2.0.0-rc1

并修改了我的安装以请求最新的预编译版本

20130212 00:34:25 dev@domU-xxxx:~ rvm install 1.9.3-p374
Searching for binary rubies, this might take some time.
ruby-1.9.3-p374 - #configure
ruby-1.9.3-p374 - #download
######################################################################## 100.0%
ruby-1.9.3-p374 - #validate archive
ruby-1.9.3-p374 - #extract
ruby-1.9.3-p374 - #validate binary
ruby-1.9.3-p374 - #setup
Saving wrappers to '/home/dev/.rvm/bin'.
ruby-1.9.3-p374 - #importing default gemsets, this may take time ...
20130212 00:35:59 dev@domU-xxxxx:~

如您所见,运行时间不到 2 分钟(而在 EC2 小型实例上编译则需要 15-20 分钟)。希望这能帮助遇到同样问题的人。

答案3

嗯...为什么不创建一个带有 RVM 和 Ruby 版本的 EBS AMI 并在需要时启动它呢?只是一个想法。:)

答案4

在 RVM 的最新版本中,你可以传入--binary选项

rvm install ruby-2.2.1 --binary --max-time 20

您可以使用以下代码找到可用二进制文件的完整列表:rvm list remote

rvm list remote

# Remote rubies available:

   jruby-0.9.0
   jruby-1.6.5
   jruby-1.7.8
   jruby-1.7.9
   jruby-9.0.0.0.pre1
   jruby-9.0.0.0.pre2
   jruby-9.0.0.0.pre2200
   jruby-9.0.0.0.rc1
   jruby-9.0.0.0.rc1200
   jruby-9.0.0.0.rc2
   jruby-9.0.0.0.rc2200
   rubinius-1.4.6
   rubinius-2.3.0
   rubinius-2.5.3
   rubinius-2.5.4
   rubinius-2.5.5
   rubinius-2.5.7
   ruby-1.9.3-p547
   ruby-1.9.3-p551
   ruby-2.0.0-p481
   ruby-2.0.0-p576
   ruby-2.0.0-p598
   ruby-2.1.2
   ruby-2.1.3
   ruby-2.1.5
   ruby-2.2.0
   ruby-2.2.1

# * - installed already

# To download and install: rvm install {name} --binary

相关内容