2012-08-13 159 views
2

建立一個EC2服務器RVM我在尋找安裝RVM,安裝特定的紅寶石版本(使用RVM),並設置該安裝紅寶石版默認的方式。在我可以安裝rvm之前,我必須安裝gcc和一些其他非常基本的軟件包。我試過到目前爲止:通過腳本

1)使用net/SSH

  • 我要模擬一個僞TTY能夠sudo的一些命令和到現在爲止,我 無法弄清楚,如何從一個不成功的完整命令成功完成命令完成。
  • 安裝RVM後,我用RVM已經絆了問題(「RVM是不是一個函數」,錯誤信息,導致不能夠設置一個默認的紅寶石版)。

2)使用Capistrano的

  • 在ssh輸出被換行插入,使得例如一個進度條被在新的一行,每次印刷,一些取得進展。這是我可以忍受的。

  • 與rmv相同的問題,我可以安裝rvm,但我無法設置默認值:例如rvm --default use 1.9.2。沒有錯誤消息,但是當我後登錄,沒有默認設置和ruby -v顯示舊系統的紅寶石。

3)使用Capistrano的和RVM-Capistrano酒店

  • 現在我遇到了問題,那很任務,我嘗試安裝RVM失敗之前執行,因爲似乎有一些魔法
* executing "sudo -p 'sudo password: ' yum install --assumeyes git gcc-c++ autoconf automake make patch zlib-devel libtool bzip2-devel" 
    servers: ["ec2-54-247-142-214.eu-west-1.compute.amazonaws.com"] 
    [ec2-54-247-142-214.eu-west-1.compute.amazonaws.com] executing command 
** [out :: ec2-54-247-142-214.eu-west-1.compute.amazonaws.com] bash: /home/ec2-user/.rvm/bin/rvm-shell: No such file or directory 
    command finished in 2094ms 
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell 'default' -c 'sudo -p '\\''sudo password: '\\'' yum install --assumeyes git gcc-c++ autoconf automake make patch zlib-devel libtool bzip2-devel'" on ec2-54-247-142-214.eu-west-1.compute.amazonaws.com 
rake aborted! 

這裏COM:與外殼默認撥弄mands我問題,安裝RVM /紅寶石:

run 'curl -L https://get.rvm.io | bash -s stable' 
run 'rvm install ruby-1.9.2-p320' 
run 'echo "[[ -s \"\$HOME/.rvm/scripts/rvm\" ]] && source \"\$HOME/.rvm/scripts/rvm\"" >> .bashrc' 
run 'rvm --default use ruby-1.9.2-p320' 
run 'which ruby && ruby -v' 

這裏使用Capistrano的和RVM-Capistrano酒店和黑客有點

所發出的響應 rvm --default use 1.9.2

RVM is not a function, selecting rubies with 'rvm use ...' will not work. 
You need to change your terminal settings to allow shell login. 
Please visit https://rvm.io/workflow/screen/ for example. 

4.1)的錯誤信息

更新:在RVM聊天的mpapis幫助下,我現在能夠提出這個工作解決方案: 需要「rvm/capistrano」

role :server, ENV[ 'base_image_setup_server' ] if ENV[ 'base_image_setup_server' ] 

default_run_options[:pty] = true 
default_run_options[:shell] = :bash 

set :rvm_ruby_string, 'ruby-1.9.2-p320' 
set :rvm_type, :user 

def rvm_bin 
    '$HOME/.rvm/bin/rvm' 
end 

namespace :images do 

    task :install_basics do 
     run "#{sudo} yum install --assumeyes git gcc-c++ autoconf automake make patch zlib-devel libtool bzip2-devel" 
     run "#{sudo} yum update --assumeyes" 
    end 

    task :install_ruby do 
     rvm.install_rvm 
     rvm.install_ruby 
     run "#{rvm_bin} alias create default #{rvm_ruby_string}" 
     run 'echo "source ~/.rvm/environments/default" >> $HOME/.bashrc' 
     run 'which ruby && ruby -v' 
    end 

    ... 

    desc 'build the base-image' 
    task :base_image do 
     install_basics 
     install_ruby 
     install_boost 
     install_rake_and_rack 
     install_sioux 
     test_sioux 
    end 

主要的不同是,那個RVM是不是用作函數,而是程序直接。

親切的問候, 託斯滕

回答

2

檢查RVM網站Capistrano的整合https://rvm.io/integration/capistrano

有兩種安裝RVM和紅寶石任務:

after 'deploy:setup', 'ubuntu:install' 
after 'deploy:setup', 'rvm:install_rvm' # do it only with deploy setup 
before 'deploy', 'rvm:install_ruby'  # do it on every deploy 
namespace :ubuntu do 
    desc "setup ubuntu system" 
    task :install do 
    run "apt-get install -y make ...", :shell => "sh" 
    ... 
    end 
end 

你運行標準:

cap deploy:setup 
cap deploy:cold 

另外你可能想要看看我的示例Rails應用程序的簡單和工作部署腳本:https://github.com/mpapis/ad和我的博客文章:http://niczsoft.com/2012/03/fast-deployment-using-capistrano-rvm-and-more/

+0

@mapsis但沒有名爲'部署'的任務,但我有一個任務要做_before_安裝rvm/ruby​​(例如安裝編譯器)。謝謝。 – 2012-08-14 05:49:53

+0

更新,還注意與RVM2這個預先步驟將不會被需要,因爲所有必需的組件將與紅寶石一起安裝...你也應該能夠設置外部依賴關係 – mpapis 2012-08-14 07:21:08

+0

我不認爲你的例子會工作,因爲需要「 rvm/capistrano「會將終端改爲」/home/ec2-user/.rvm/bin/rvm-shell「。我已經通過明確地將shell重新更改爲bash來解決此問題。到目前爲止,我會更新這個問題。但是,謝謝你的努力。 – 2012-08-14 07:54:20