∞RVMの基本
なぜRVMを使うべきか疑問に思っていませんか?まず、RVMは複数のRubyインタプリタ/ランタイムのインストールを容易かつ一貫性のあるものにするだけでなく、ほとんどのRubyインストールでは標準ではサポートされていないgemsetなどの機能を提供します。
RVMを使用すると、既存のRubyインストールを混乱させることなく(指示しない限り)、異なるRubyをさまざまな方法で使用したり、複数の異なるRubyを別々のターミナルで同時に実行したりできます!
∞はじめに
まず、RVMをインストールする必要があります。
∞インストール後の設定
sshまたはローカルシェルアカウントを介してログインすると、RVMは関数としてロードされます。問題が発生した場合は、ターミナルの設定に関する次のリンクを参照してください。
非対話型シェルでは、RVMはPATHにのみ追加され、ロードされません。つまり、このモードではRubyを使用できませんが、Rubyをロードする簡単な方法があります。
source $(rvm 1.9.3 do rvm env --path)
ログインまたはシェルを起動すると、シェルタイプに関係なくRVMが自動的にロードされます。便利ですね!
新しいシェルを開いて、rvmで操作を始めましょう。
.bash_profileに関する警告について。一部のLinuxディストリビューションでは、デフォルトの.bash_profile(場合によっては.bashrc)に次の行が含まれています。
[ -z "$PS1" ] && return
条件 `[ -z "$PS1" ]` は、文字列 "$PS1" の長さがゼロの場合(非対話型シェル)に真になります。rvmは対話型シェルと非対話型シェルの両方でロードする必要があるため、このファイルを修正することを強くお勧めします。
まず、前の手順が成功し、rvmが正しくロードされていることを確認します。これを行うには、RVMがシェル関数としてロードされていることを確認するために、次のコマンドを実行します。`type rvm | head -1`
∞依存関係の自動インストール
Rubyをインストールする際に、RVMは依存関係のインストールに`sudo`を使用する必要がある場合があります。特に`rvm install`などのRVMコマンドを呼び出すユーザーには、`sudo`権限があることを確認してください。
`sudo`権限を持たないユーザーがRVMコマンドを実行できるようにしたい場合は、依存関係の自動インストールをオフにする必要があります。
rvm autolibs disable
ただし、これは依存関係を手動で管理する必要があることを意味します。
∞Rubyのインストール
"rvm is a function"と表示されたら、準備完了です。例として、Ruby 2.1.1をインストールして使用するには、次の手順を実行します。
$ rvm install 2.1.1
RVMを使用してRubyインタプリタを正常にインストールしたら、`use`コマンドを実行して使用できます。たとえば、Ruby 2.1.1の場合は次のようになります。
$ rvm use 2.1.1 $ ruby -v ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0] $ which ruby /Users/rys/.rvm/rubies/ruby-2.1.1/bin/ruby
注:新しいユーザーの間で、Rubyバージョンを切り替える適切な方法について混乱が見られます。インストール済みのRubyの出力`rvm list`に表示されているものの「ruby-」の部分を含める必要はありません。これは、REE RubyとMRI Rubyなどの違いを示すためだけに使用されます。ただし、MRIやRubinus、またはREE間を切り替える場合は、ree|ruby|rbxの部分を使用する必要があることに注意してください。切り替えたい場合は、バージョン番号とパッチレベルを使用してください。-headバージョンである場合は、数字が含まれていないため、完全な文字列を使用してください。これは、デフォルトのRubyを設定する場合にも適用されます。以下に、私の意味するところの例を示します。
# This changes to MRI Ruby 2.1.1 and sets it as your default. $ rvm --default use 2.1.1 # The following changes to ruby-head (MRI Ruby) but does _not_ # set it as your default Ruby. $ rvm use ruby-head # This changes to jruby-head and _does_ set it as # your default ruby $ rvm --default use jruby-head # You use the following full form if, for example, # you previously had a different Ruby selected (maybe JRuby) $ rvm use ruby-2.1.1 # This changes to whatever RVM recognizes as the most current # MRI Ruby 2.1.1, and sets it as default. $ rvm --default use 2.1.1
**注:**メジャー.マイナーのバージョン番号 *のみ* を使用する場合、RVMはそのメジャー.マイナーのバージョンの`$rvm_path/config/db`にある最新の最新パッチレベルを確認して使用します。たとえば、2.0.0-p451のみがインストールされていて、2.0.0-p481が最新の場合、RVMは2.0.0-p481をダウンロード、インストールして、デフォルトの2.0.0として設定しようとします。この動作は、必要に応じて行うことも、行わないこともあります。必要ない場合は、デフォルトのRubyとしてRVMが使用するRubyを指定する際に、パッチレベルを含めるようにしてください。RVMは、RVMを更新するたびに既知のリスト(`$rvm_path/config/db`と`$rvm_path/config/known`)を更新するため、メジャー.マイナーの「最新」バージョン(執筆時点では2.1.2など)は変更される可能性があります。このため、RVMはインストールされているものに基づいて動作しません。これらの2つのファイルに維持されているものに基づいて動作します。
**注:**RubyはRuby 2.1.1からセマンティックバージョニングスキームに切り替えました。これは、rvmを使用してRubyを管理する方法に影響を与える可能性があります。Rubyセマンティックバージョニング
**重要:**RVMはインストールされているシステムRubyには一切干渉しません。「使用」するには、次のようにRVMが適用した環境変更を元に戻すことができます。
$ rvm use system $ ruby -v ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] $ which ruby /usr/bin/ruby
`which`は、現在のシェルにRubyの場所を返すように指示します。この場合、RVMは実際には自分自身をシステムから「隠して」、システムにインストールされているRubyへのアクセスを戻していることがわかります。隠されているというのは、RVMが消えたという意味ではなく、システム環境と関連する変数が、RVMがまったくインストールされていないかのように、システムRubyが期待する状態に戻されます。別の`$ rvm use default`を実行すると、RVMがサービスに戻り、デフォルトのRubyとして設定されているRubyがロードされます。それはいつでも`$ rvm alias show default`を実行することで確認できます。
この点を十分に強調できません!RVMはシステムRubyやそのgemを制御しません。RVMによってインストールされたRubyとgemのみがRVMの制御下にあります!
∞次のステップ
さらに詳しい説明については、サイトの他のページをご覧ください。特に、ワークフローの例を確認してください。
Rubyの切り替えはシェル単位で行われることに注意してください。新しいシェルを開いたときにどのRubyが使用可能になるかを設定する方法の詳細については、デフォルトのRubyインタプリタの設定方法に関するページをご覧ください。
Rubyインタプリタの処理に慣れてきたら、次にRVMのgemsetについて学習を始めましょう。
RVMが選択してアクティブにしたRuby(もしあれば)をいつでも確認したい場合は、この情報をシェルプロンプトに追加できます。
シェルでタブ補完を使用する場合は、シェル補完の使用に関するドキュメントも参照してください。