Amazon-Ec2

是否可以使用 RVM 安裝預編譯的 Ruby 版本?

  • July 16, 2015

我正在使用 EC2,有時會啟動我只想在短時間內使用的伺服器。通常我想在它們上安裝一些或多個版本的 Ruby,對於這個 RVM 來說非常方便——如果不是因為編譯 Ruby 需要很長時間。當剩下的伺服器設置在幾分鐘內完成時,必須等待近半小時才能編譯 Ruby,這真的很無聊。它完全扼殺了雲計算體驗。

有沒有辦法獲得 RVM 的便利,而不會為我啟動的每個新伺服器編譯每個 Ruby 版本帶來不便?我可以預編譯一個 Ruby 版本並將其保存在可訪問的地方,然後讓 RVM 使用它而不是從原始碼編譯它嗎?安裝 Ruby 版本後,我可以簡單地將某個目錄存檔在 RVM 根目錄下,將其保存在某處,然後在我啟動的下一個伺服器上將其解壓縮到正確的位置嗎?在這種情況下,我需要保留哪些文件和目錄?

我想使用 RVM 不僅是為了能夠在 Ruby 版本之間切換,還因為它允許我為不同的應用程序保留單獨的 gemset,所以不使用 RVM 會非常不方便。

所有伺服器都具有相同的作業系統和架構,Ubuntu 10.04,32 位。

如果您匯總並部署預先配置的 ~/.rvm 文件夾並確保遠端 .bashrc 配置為使用它,您會遇到任何問題嗎?據我所知,rvm 旨在允許您執行此操作。

我想像的唯一障礙可能是確保您擁有正確的 gem 和包以允許您的程式碼執行。但是,你會在目標平台上準備你的 .rvm 對嗎?此外,請考慮您的 ruby​​ 環境所需的任何作業系統包。

現在可能有點長,但從 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 分鐘)。希望這可以幫助其他有同樣問題的人。

引用自:https://serverfault.com/questions/196319