カテゴリー:
環境構築
タグ:
 Ruby rbenv

このエントリーをはてなブックマークに追加
更新日時:
2017年07月17日(月)
作成日時:
2017年07月17日(月)

前の記事 / 次の記事

システム全体(system wide)にインストールする方法ではなく、
オーソドックスにユーザーごとにインストールして使う方法。

システム全体にインストールする方法については、

あたりを参考にすると良いかと。

公式:

参考:

環境:CentOS release 6.8 (Final)

1. gitがインストールされていなければgitをインストール

$ git --version
git version 1.7.1

バージョン情報を確認できなければインストールされてないのでインストールする。

$ sudo yum -y install git

2. gitを使ってrbenvをインストール

2-1. rbenv本体のインストール

rbenv本体をclone

$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv

高速化のためにbashの拡張をコンパイルせよと書いてあるので、従う。

$ cd ~/.rbenv && src/configure && make -C src

2-2. パスを通す

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

2-3. ログイン時に自動的に読み込まれるようにする

まずは次のコマンドを実行せよと書いてあるので実行すると、

~/.rbenv/bin/rbenv init

次のようなメッセージが表示されるので従う。

# Load rbenv automatically by appending
# the following to ~/.bash_profile:

eval "$(rbenv init -)"

これは環境に応じて適切なメッセージが表示されるようになっていると思われる。
今回は、~/.bash_profile に eval "$(rbenv init -)" を追加せよということなので追加する。

echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

2-3. SELLを再起動してパスを反映させる

$ exec #SHELL -l

2.4. 確認

$ rbenv -v
$ rbenv 1.1.1-2-g615f844

バージョン情報を確認できればとりえあずインストール完了。

2-5. ruby-buildのインストール

rbenvはあくまでrubyのバージョンを切り替えるためのツールであり、
rbenv自体にrubyをインストールする機能はないので、
rubyをインストールするためのツールであるruby-buildをrbenvのプラグインとしてインストールする。

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

3. 使い方

3-1. まずは、アップデート方法。

rbenv

$ cd ~/.rbenv/
$ git pull

ruby-build

$ cd ~/.rbenv/plugins/ruby-build/
$ git pull

3-2. インストールできるバージョンの確認

$ rbenv install --list
  2.4.0-dev
  2.4.0-preview1
  2.4.0-preview2
  2.4.0-preview3
  2.4.0-rc1
  2.4.0
  2.4.1
  2.5.0-dev

とかずらずら出てくる。

ここに出てくる文字列でインストールするバージョンを指定できるので、
rubyのインストールを行う場合は、一覧からインストールしたいバージョンを見つけて、
その文字列をメモしておく。

3-3. rubyをインストールする

試しに2.3系と2.4系をインストールしてみる。

$ rbenv install -v 2.3.4
$ rbenv install -v 2.4.1

勝手にダウンロードして勝手にコンパイルしてくれるのでしばし待つ。

3.4. インストールされているバージョンの確認

$ rbenv versions
  2.3.4
  2.4.1

3.5. デフォルトで使用するバージョンを確認

$ rbenv version
system (set by /home/hoge/.rbenv/version)

インストールしただけではデフォルトで使用するバージョンは設定されない。
当然rubyを利用することもできない。

$ ruby
The `ruby' command exists in these Ruby versions:
  2.3.4
  2.4.1

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

$ rbenv global 2.4.1

改めてデフォルトで使用するバージョンを確認。

$ rbenv version
2.4.1 (set by /home/hoge/.rbenv/version)

設定できた。

$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

rubyのコマンドも当然使える。

3.7. デフォルトで使用するバージョンを切り替え

基本、最初に設定する時と同じ。

$ rbenv global 2.3.4

$ rbenv version
2.4.1 (set by /home/hoge/.rbenv/version)

$ ruby -v
ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-linux]

3.8. ディレクトリごとに使用するバージョンを指定する

まずは一旦、デフォルトで使用するバージョンを2.4.1に戻しておく。

$ rbenv global 2.4.1

2.3というディレクトリをつくり、
そのディレクトリ内では2.3.4が使われるようにしてみる。

何もしない状態では、サブディレクトリ内で使用するrubyのバージョンは、
デフォルトで使用するバージョンに従う。

$ mkdir 2.3
$ cd 2.3/
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

localコマンドで使用するバージョンを指定することで、
そのディレクトリ内では指定されたバージョンが使われるようになる。

$ rbenv local 2.3.4
$ ruby -v
ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-linux]

この時、親ディレクトリで使用するバージョンは2.4.1のまま。

$ cd ../
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

3.9. 注意事項

というか、自分が勘違いした点。

ちなみにglobalコマンドはデフォルトで使用するrubyのバージョンを指定するもので、
ルートディレクトリで使用するrubyのバージョンを指定するものではないので注意。

同様に、localコマンドはlocalコマンドを発行したディレクトリで使用するrubyのバージョンを指定するもので、
サブディレクトリで使用するrubyのバージョンを指定するものではないので注意。

サブディレクトリ内であってもglobalコマンドを発行すれば、デフォルトで使用するrubyのバージョンが指定されるし、
ルートディレクトリでlocalコマンドを発行すれば、ルートディレクトリで使用するrubyのバージョンが指定される。