rvm をインストールし、(rvm を使用して) 特定の Ruby バージョンをインストールし、このインストール済み Ruby バージョンをデフォルトとして設定する方法を探しています。rvm をインストールする前に、gcc とその他の非常に基本的なソフトウェア パッケージをインストールする必要があります。私がこれまでに試したこと:
1) net/ssh の使用
- いくつかのコマンドを sudo できるように疑似 tty をシミュレートする必要がありますが、これまでのところ、成功した完全なコマンドの完了と成功していない完全なコマンドの完了を区別する方法がわかりませんでした。
- rvm をインストールした後、rvm の使用に関する問題に遭遇しました (「rvm は関数ではありません」というエラー メッセージが表示され、デフォルトの Ruby バージョンを設定できません)。
2) カピストラーノの使用
ssh の出力には改行が挿入されているため、進行状況バーなどは毎回新しい行に出力され、何らかの進行が行われます。それは私が一緒に暮らすことができるものです。
rmv にも同じ問題があり、rvm をインストールできますが、デフォルトを設定できません
rvm --default use 1.9.2
。エラー メッセージは表示されませんが、後でログインすると、デフォルトが設定されておらずruby -v
、古いシステムの ruby が表示されます。
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!
rvm/ruby をインストールするために発行するコマンドは次のとおりです。
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'
ここでは、への応答として発行されるエラー メッセージを示します。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) capistrano と rvm-capistrano の使用と少しのハッキング
更新: 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 が関数として使用されるのではなく、プログラムが直接使用されることです。
よろしく、 トルステン