サポート
RVMはボランティアコミュニティによって維持されています。問題はRVM issue trackerにご報告ください。
もしお手伝いいただける方、またはメンテナの一員になりたい方がいらっしゃいましたら、ぜひお手伝いをお願いします。RVM Github組織で、RVM関連のプロジェクトをさらに見つけることができます。
スポンサー
Carbon Ads

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(もしあれば)をいつでも確認したい場合は、この情報をシェルプロンプトに追加できます。

シェルでタブ補完を使用する場合は、シェル補完の使用に関するドキュメントも参照してください。