Ruby言語やLinuxのネタが多いです。
February 21, 2010 [おもひで]
■ [Ruby] rvmを試す (インストール編)
twitter経由で。各種バージョンのRubyを一つの環境上にインストールしてスイッチして使うことができるツール、とのこと。バージョン間での挙動の違いにはいつも苦しめられているのでもしかしたらRubyアプリ/ライブラリ開発の救世主に!?
ということで、さっそく試してみることにした。以下、Fedoraの場合ね。
まずはこの辺を見ながらインストール。
% sudo gem install rvm % rvm-install
bashなら.bash_profileに、zshなら.zshrcに以下を追記する。
if [[ -s /home/mutoh/.rvm/scripts/rvm ]] ; then source /home/mutoh/.rvm/scripts/rvm ; fi
shellを閉じて、新しいshellを起動する、と書いてあるので、とりあえず、同じコンソール上でzshを再起動。
% zsh % env : : rvm_path=/home/mutoh/.rvm rvm_rubies_path=/home/mutoh/.rvm/rubies rvm_scripts_path=/home/mutoh/.rvm/scripts rvm_archives_path=/home/mutoh/.rvm/archives rvm_src_path=/home/mutoh/.rvm/src rvm_log_path=/home/mutoh/.rvm/log rvm_bin_path=/home/mutoh/.rvm/bin rvm_gems_path=/home/mutoh/.rvm/gems rvm_config_path=/home/mutoh/.rvm/config rvm_tmp_path=/home/mutoh/.rvm/tmp rvm_hooks_path=/home/mutoh/.rvm/hooks rvm_version=0.1.16
何やらいろいろとrvm関連の初期値が指定されている。
で、rvm向けに各バージョンのrubyを取得。curlが必要なのでインストールされていない場合はインストールしておく。
各バージョンのrubyをダウンロード+コンパイルし、rubygemsやrakeをインストールしている模様。結構時間かかる。
% rvm install 1.8.6,1.8.7,1.9.1,1.9.2 (以下、ログはピックアップね。) Installation of ruby-1.8.6-p399 is complete. Installation of rubygems ruby-1.8.6-p399 completed successfully. Installing rake Installing ruby-1.8.7-p249 Installation of ruby-1.8.7-p249 is complete. Installation of rubygems ruby-1.8.7-p249 completed successfully. Installing rake Installation of ruby-1.9.1-p378 is complete. Updating rubygems for ruby-1.9.1-p378 Installing rake Error running '/home/mutoh/.rvm/rubies/ruby-1.9.1-p378/bin/gem install rake ', please check /home/mutoh/.rvm/log/ruby-1.9.1-p378/gems.install*.log Installation of ruby-1.9.2-preview1 is complete. Updating rubygems for ruby-1.9.2-preview1 Installing rake Error running '/home/mutoh/.rvm/rubies/ruby-1.9.2-preview1/bin/gem install rake ', please check /home/mutoh/.rvm/log/ruby-1.9.2-preview1/gems.install*.log
大体うまく行ってるけど、1.9.1, 1.9.2-preview1のgem install rakeがこけたらしい。ログを見るとどちらも以下のエラーが。
Permission denied - /home/mutoh/.ri/cache/.doc_dirs
とりあえず内容を見てみる。
% ls /home/mutoh/.ri/cache/ -rw-r--r-- 1 root root 1188 2010-02-21 23:46 .doc_dirs -rw-r--r-- 1 root root 1830076 2010-02-21 23:46 classes
結論からすると、この2つのディレクトリはrootしか書き込み権限がないとまずいらしい。
とりあえず、sudo chmod -R a+w /home/mutoh/.ri/cacheして個別に実行しておく。
% sudo chmod -R a+w /home/mutoh/.ri/cache % /home/mutoh/.rvm/rubies/ruby-1.9.1-p378/bin/gem install rake % /home/mutoh/.rvm/rubies/ruby-1.9.2-preview1/bin/gem install rake
以上で無事にインストールできた模様。
% rvm list rvm Rubies ruby-1.8.6-p399 [ x86_64 ] ruby-1.8.7-p249 [ x86_64 ] ruby-1.9.1-p378 [ x86_64 ] ruby-1.9.2-preview1 [ x86_64 ] System Ruby system [ x86_64 ]
rvm versionでそれぞれのrubyへスイッチできる。すごい。
% ruby -v ruby 1.8.6 (2009-08-04 patchlevel 383) [x86_64-linux] % rvm 1.9.1 % ruby -v ruby 1.9.1p378 (2010-01-10 revision 26273) [x86_64-linux] % rvm 1.8.7 % ruby -v ruby 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux] % rvm 1.9.2 % ruby -v ruby 1.9.2dev (2009-07-18 trunk 24186) [x86_64-linux] % rvm list rvm Rubies ruby-1.8.6-p399 [ x86_64 ] ruby-1.8.7-p249 [ x86_64 ] ruby-1.9.1-p378 [ x86_64 ] => ruby-1.9.2-preview1 [ x86_64 ] System Ruby system [ x86_64 ]
カレントのrubyが=>で分かるようになっている。
% rvm install jruby
こちらはコンパイルなし。
% rvm list
rvm Rubies
jruby-1.4.0 [ [amd64-java] ]
ruby-1.8.6-p399 [ x86_64 ]
ruby-1.8.7-p249 [ x86_64 ]
ruby-1.9.1-p378 [ x86_64 ]
=> ruby-1.9.2-preview1 [ x86_64 ]
System Ruby
system [ x86_64 ]
% rvm jruby
% ruby -v
jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (OpenJDK 64-Bit Server VM 1.6.0_0) [amd64-java]
いいね!
そういえば、環境変数はどうなってるんだろう。
rvm_path=/home/mutoh/.rvm rvm_rubies_path=/home/mutoh/.rvm/rubies rvm_scripts_path=/home/mutoh/.rvm/scripts rvm_archives_path=/home/mutoh/.rvm/archives rvm_src_path=/home/mutoh/.rvm/src rvm_log_path=/home/mutoh/.rvm/log rvm_bin_path=/home/mutoh/.rvm/bin rvm_gems_path=/home/mutoh/.rvm/gems rvm_config_path=/home/mutoh/.rvm/config rvm_tmp_path=/home/mutoh/.rvm/tmp rvm_hooks_path=/home/mutoh/.rvm/hooks rvm_version=0.1.16 rvm_interactive=1 install_flag=1 GEM_HOME=/home/mutoh/.rvm/gems/jruby-1.4.0 GEM_PATH=/home/mutoh/.rvm/gems/jruby-1.4.0:/home/mutoh/.rvm/gems/jruby-1.4.0%global BUNDLE_PATH=/home/mutoh/.rvm/gems/jruby-1.4.0 MY_RUBY_HOME=/home/mutoh/.rvm/rubies/jruby-1.4.0 RUBY_VERSION=jruby-1.4.0 IRBRC=/home/mutoh/.rvm/rubies/jruby-1.4.0/.irbrc rvm_ruby_gem_path=/home/mutoh/.rvm/gems/jruby-1.4.0:/home/mutoh/.rvm/gems/jruby-1.4.0%global rvm_ruby_gem_home=/home/mutoh/.rvm/gems/jruby-1.4.0 rvm_ruby_interpreter=jruby rvm_ruby_version=1.4.0 rvm_ruby_package_name=jruby-1.4.0 rvm_url=http://jruby.kenai.com/downloads/1.4.0/jruby-bin-1.4.0.tar.gz rvm_major_version=4 rvm_minor_version=0 rvm_ruby_binary=/home/mutoh/.rvm/rubies/jruby-1.4.0/bin/ruby rvm_ruby_home=/home/mutoh/.rvm/rubies/jruby-1.4.0 rvm_ruby_log_path=/home/mutoh/.rvm/log/jruby-1.4.0 rvm_ruby_src_path=/home/mutoh/.rvm/src/jruby-1.4.0 rvm_ruby_irbrc=/home/mutoh/.rvm/rubies/jruby-1.4.0/.irbrc rvm_ruby_selected_flag=1 rvm_ruby_string=jruby-1.4.0
長い。こうやって切り替えをしてるのね。改めてみると他愛もないことのような気もするけど、そこはコロンブスの卵。インストールやVMの切り替えなどをここまでシンプルに手順化/自動化してくれたのはすごい。きっと重宝するに違いない。感謝。
% rvm 1.9.1 --default % ruby -v ruby 1.9.1p378 (2010-01-10 revision 26273) [x86_64-linux] % rvm system (元々入っているRubyにスイッチ) % ruby -v ruby 1.8.6 (2009-08-04 patchlevel 383) [x86_64-linux] % zsh (新しいshellを起動) % ruby -v ruby 1.9.1p378 (2010-01-10 revision 26273) [x86_64-linux]
February 22, 2010 [おもひで]
% rvm gem install allison --no-rdoc
おぉ。簡単だ。ちなみに、rdocは各環境に不要なので--no-rdocオプションをつけた。
% cd git/locale (Ruby-Localeのgithubのディレクトリと思ってください) % rvm rake test
お、いい感じ…、ってテストでエラーでてるやんけっ!!(汗)
February 24, 2010 [おもひで]
% rvm ruby -e 'p "0.7".to_f' jruby-1.4.0: jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (OpenJDK 64-Bit Server VM 1.6.0_0) [amd64-java] 0.7 ruby-1.8.6-p399: ruby 1.8.6 (2010-02-05 patchlevel 399) [x86_64-linux] 7.0 ruby-1.8.7-p249: ruby 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux] 0.7 ruby-1.9.1-p378: ruby 1.9.1p378 (2010-01-10 revision 26273) [x86_64-linux] 0.7 ruby-1.9.2-preview1: ruby 1.9.2dev (2009-07-18 trunk 24186) [x86_64-linux] 0.7
しかしバージョン間の違いをいとも簡単に見比べることができるのは楽しいね。
% rvm system % ruby -v -e 'p "0.7".to_f' ruby 1.8.6 (2009-08-04 patchlevel 383) [x86_64-linux] 0.7
% rvm list --all : : (ruby-)1.8.6(-p383) (ruby-)1.8.6-head : :
1.8.6-headというのが最新なのかな。じゃ、これをインストールしてみよう。
% rvm install 1.8.6-head % rvm list rvm Rubies jruby-1.4.0 [ [amd64-java] ] ruby-1.8.6-head [ x86_64 ] ruby-1.8.6-p399 [ x86_64 ] ruby-1.8.7-p249 [ x86_64 ]
同じバージョンでも複数のパッチレベルを試せるのね。素敵。
% rvm 1.8.6-head % ruby -v -e 'p "0.7".to_f' ruby 1.8.6 (2010-02-05 patchlevel 399) [x86_64-linux] 7.0
がくっ。そうか、ヘッドとは現在の最新のパッチレベルだから今回は同じ399だったってことか…。
ひとまず見なかったことにして今日は寝るとしよう(^^;)。
