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

The*_*heo 5 ruby amazon-ec2 rvm

我正在使用 EC2,有时会启动我只想使用很短时间的服务器。通常我想在它们上安装某个或多个版本的 Ruby,对于这个 RVM 来说非常方便——如果不是因为编译 Ruby 需要很长时间。当剩下的服务器设置在几分钟内完成时,只需要等待近半个小时来编译 Ruby 真的很无聊。它完全扼杀了云计算体验。

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

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

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

Jam*_*ook 5

现在可能有点长,但从 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.
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

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:~
Run Code Online (Sandbox Code Playgroud)

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


小智 0

如果您汇总并部署预配置的 ~/.rvm 文件夹并确保远程 .bashrc 配置为使用它,您会遇到任何问题吗?据我所知,rvm 的设计目的就是让您能够做到这一点。

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