rbenv で ruby のバージョン管理

UbuntuRubyのバージョン管理ツールrbenvを入れて、最新バージョンをインストールした記録。

環境:Ubuntu 16.04 LTS

現在のgitのバージョン

$ git --version
git version 2.19.1

デフォルトのRubyをアンインストール

Ubuntu に入っているRubyの古いバージョンを削除する 次のコマンドで確認。2.3.1が入っている。

$ ruby -v
ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]
$ apt show ruby
Package: ruby
Version: 1:2.3.0+1
..........................................

rbenvRubyのバージョンを管理するのに、元のバージョンを必ずしも削除する必要は無いようだが、aptのアンインストールコマンドはあまり使う機会がないのでやってみる。

$ sudo apt purge ruby

rbenvのインストール

gitから最新版をクローン

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
Cloning into '/home/user/.rbenv'...
remote: Enumerating objects: 2744, done.
remote: Total 2744 (delta 0), reused 0 (delta 0), pack-reused 2744
Receiving objects: 100% (2744/2744), 515.63 KiB | 1.26 MiB/s, done.
Resolving deltas: 100% (1720/1720), done.

rbenvが入っていない状態でrbenv -vでバージョン確認すると、sudo apt install rbenvでインストールすることを勧められるが、バージョンが古い場合もあるのでgitを使うのがいいだろう。

rbenvの設定

インストールしたらまずrbenvの設定を.bashrcに加える。

ネットで検索すると~/.bash_profileに書くみたいなのもあるけど、rbenvの設定のようなものはシェルを立ち上げるたびに読み込まれるべきなので、~/.bashrcに書く。ちなみに私は.bash_profileを今は使っていない。

vim~/.bashrcを読み込みGでファイル末尾に移動。 iを押してインサートモードに入り次を追加書きする。

export RBENV_ROOT="${HOME}/.rbenv"
if [ -d "${RBENV_ROOT}" ]; then
  export PATH="${RBENV_ROOT}/bin:${PATH}"
  eval "$(rbenv init -)"
fi

この内容で次のように設定される。

  • RBENV_ROOT環境変数rbenvが保存されているDIRを設定し
  • ~/.rbenv/bin(実行ファイルが入っているDIR)をPATHに追加
  • shellを実行するたびにrbenv init -コマンドが実行されるようにする

Escでノーマルモードに戻り:wで保存して:qで終了。

~/.bashrcを読み込みなおしておこう。

$ source ~/.bashrc
$ echo $RBENV_ROOT
/home/user/.rbenv

ruby-buildをインストール

.rbenv/pluginsというDIRを作ってgithubからruby-buildをダウンロードしインストールしておく。ruby-buildは、Rubyをインストールするためのrbenvプラグイン

$ ls ~/.rbenv
CONDUCT.md  LICENSE  README.md  bin/  completions/  libexec/  rbenv.d/  src/  test/
$ mkdir -p ~/.rbenv/plugins
$ cd ~/.rbenv/plugins/
$ git clone git://github.com/sstephenson/ruby-build.git
Cloning into 'ruby-build'...
remote: Enumerating objects: 47, done.
remote: Counting objects: 100% (47/47), done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 9276 (delta 19), reused 36 (delta 14), pack-reused 9229
Receiving objects: 100% (9276/9276), 1.94 MiB | 3.26 MiB/s, done.
Resolving deltas: 100% (6027/6027), done.

Ruby のインストール

rbenv install -lでインストール可能なバージョンが見れる。膨大なリストが出てくる。本家だけでなくjrubyとかmrubyとかも。

$ rbenv install -l
Available versions:
  1.8.5-p52
  1.8.5-p113
  .......................
  2.5.0
  2.5.1
  2.5.2
  2.5.3
  .......................

Ruby本家サイトでは(2018.11月現在)最新安定版が2.5.3となっているのでそれを入れておこう。 ......としたが依存関係で一旦アウト。 下記libreadline-devを先にインストールしておくことでうまくいった。

$ sudo apt install -y libreadline-dev

気をとりなおして再度挑戦。Rubyのインストール自体は少し時間がかかる。

$ rbenv install 2.5.3
Downloading ruby-2.5.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.bz2
Installing ruby-2.5.3...
Installed ruby-2.5.3 to /home/user/.rbenv/versions/2.5.3

rehash:インストール後の必須処理

インストール成功だと、rbenv versionsで確認できる。

$ rbenv versions
  2.5.3

このままではruby -vでインストールしたバージョンはまだ見えない。 新しいRubyやgemをインストールした後では、必ずrbenv rehashを実行する必要がある。

$ rbenv rehash

rbenvをインストールした際、RBENV_ROOTの配下に/.rbenv/shims/というDIRがある。不勉強で詳しいことは分からないが、rubygemをインストールしてrubyコマンドだけでなくirb,gem,rakeなどのコマンドをインストールしていくと、バージョン毎に使うコマンドを切り替える必要がある。shimsはそれを振り分ける役割りらしい。 なので新しいコマンドをインストールした後は必ずrehashしておくこと。

Rubyの使用バージョンを指定

今のところ2.5.3をグローバル使用(システム全体で使用するバージョン)に指定しておく。

$ rbenv global 2.5.3

これでRubyの最新バージョンが使える状態になる。

$ ruby -v
ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-linux]

RubyGemsのアップデート、Bundler のインストール

ついでにRubyGemsもアップデートし、bundlerをインストールしておく。

$ gem update --system
$ gem -v
2.7.8

$ gem install bundler
$ bundler -v
Bundler version 1.17.1

bundlerのインストール後は、環境再設定のために必ずrehashしておくこと。

$ rbenv rehash

[参考サイト]

rbenvについて

.bash_profile.bashrcの使い分けについては次が詳しかった。

Bundlerについてはこちらが参考になった。