HOME/Articles/

rbenvのインストール

Article Outline

pythonに対するpyenvのようにrubyのバージョンを変更したり、個別にモジュールを管理したりできるrbenvを導入する。
あと、モジュールをインストールする gem installsudo を付けなくても良いのも地味に便利。
gemset(pyenvの仮想環境のようなもの)を作って個別にモジュール管理すれば、色々インストールして訳わからん状態になったときでも、一旦チャラにして観光構築をやりなおせる。

なお、rbenvはrubyをバイナリインストールできなくて、ソースからコンパイルするので、インストールにはそれなりに時間がかかる。

以下の手順はUbuntu 16.04で動作確認した。他のバージョンでは、特にインストールの準備に微妙な違いがあるかもしれない。

インストール

準備

インストールに必要なモジュールをインストールする。

sudo apt install git autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev

rbenv本体とプラグインのインストール

rbenv本体とプラグインをインストール。

export RBENV_ROOT=/proj/.rbenv    # 環境に合わせて修正してね
git clone https://github.com/sstephenson/rbenv.git ${RBENV_ROOT}
git clone https://github.com/sstephenson/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build
git clone git://github.com/jf/rbenv-gemset.git ${RBENV_ROOT}/plugins/rbenv-gemset
git clone https://github.com/sstephenson/rbenv-gem-rehash.git ${RBENV_ROOT}/plugins/rbenv-gem-rehash
git clone https://github.com/rkh/rbenv-update.git ${RBENV_ROOT}/plugins/rbenv-update

rbenv-gemset をインストールすることで、個別のモジュール環境を構築できる。pyenvのvirtualenvみたいな感じ。
rbenv-gem-rehashをインストールすることで、バージョン切り替えやgemのインストールの度にrbenv rehash を実行しなくてもよくなる。
rbenv-updateをインストールすることで、rbenv uppppdate でrbenvと各プラグインのアップデートができる。

~/.bashrcの編集

rbenvの設定のため、~/.bashrc に以下を追加。

export RBENV_ROOT=/proj/.rbenv    # 環境に合わせて修正してね
export PATH=$RBENV_ROOT/bin:$PATH
eval "$(rbenv init -)"

ここで設定を有効にするためにターミナルを開きなおす。

設定と使い方

rbenvでインストールできるバージョンの一覧を表示

rbenv install --list

rubyのインストール

インストールしたいバージョンを指定して実行する。

rbenv install 2.6.3

・・・ 気長に待つ。 ・・・

デフォルトで使用するバージョンの設定

デフォルトで使用したいバージョンを指定して実行する。

rbenv global 2.6.3

念のため指定したバージョンが実行されることを確認

ruby -v

gemsetの作成

色々試したあとに、インストールしたモジュールをチャラにしたいときを考えて、gemset(仮想環境みたいなもん)を構築しておく。

rbenv gemset create 《ベースバージョン》 《gemset名》

例えば、ruby 2.6.3 に test1 という名前のgemsetを作成する場合。

rbenv gemset create 2.6.3 test1

gemsetはインストールされた各バージョンに紐づいて作成される。

gemsetの設定

gemsetはディレクトリ毎に指定する。
カレントディレクトリに設定されたgemset(なければその親、さらに親と探す)と カレントのRubyバージョンが使用される。
カレントのRubyのバージョンに指定されたgemsetが存在しなければ新しくgemsetを作成するが、中身は空。
なので、gemsetを指定したときは、同時に rbenv local でローカルバージョンも指定しておくのが無難。

cd 《設定したいディレクトリ》
rbenv local 《バージョン》
rbenv gemset init 《gemset名》

gemset名を省略するとカレントディレクトリ名と同じ名前でgemsetが作成され、そのgemsetに設定される

例えば、こんな感じ。

cd /work
rbenv gemset init test1

作成されたgemsetの一覧表示

rbenv gemset list

こんな感じで表示される。Rubyのバージョンが異なれば同名のgemsetも作成できる。
ただし、中身は別物。

$ rbenv gemset list
2.3.8:
  test1
2.6.3:
  test1

カレントディレクトリで有効なgemsetの確認

rbenv gemset active

ついでにRubyのバージョンも確認

rbenv version

例えば、こんな感じ。

$ rbenv gemset active
env1 global
$ rbenv version
2.6.3 (set by /*******/.ruby-version)

gemsetの指定を無効にするには.rbenv-gemsets ファイルを削除する

コマンドで指定を無効にできないので、指定ファイルを手動で削除する。

rm .rbenv-gemsets

使用するgemsetを変更したい場合、すでにgemset設定済みのディレクトリでは再設定できない。
一旦gemsetの指定を無効にしてから、再度 rbenv gemset init ~ する必要がある。

その他

gem関連の設定を確認

gem関連の設定(GEM_PATHSなど)を確認したいときは以下を実行。

gem env

helpの表示

rbenv 全体のヘルプ(コマンドの確認など)

rbenv help

各コマンドのヘルプ(パラメータやオプションの確認など)

rbenv help 《コマンド》

メモ

rehashについて

設定を変えたりした場合は以下を実行する必要があるが、rbenv-gem-rehashをインストールしてあれば必要なタイミングで自動で行われるので不要。

rbenv rehash