rbenv で ruby のバージョン管理
UbuntuにRubyのバージョン管理ツール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 ..........................................
rbenv
でRubyのバージョンを管理するのに、元のバージョンを必ずしも削除する必要は無いようだが、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がある。不勉強で詳しいことは分からないが、ruby
やgem
をインストールして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
について
rbenvの使い方と仕組みについて https://qiita.com/Kodak_qiita/items/73147ed4f0eec54d6e94
rbenvとは?(rbenvを利用したRubyのインストール) https://qiita.com/yunzeroin/items/33a51c805e60ed5eca0e
.bash_profile
と.bashrc
の使い分けについては次が詳しかった。
.bash_profile ? .bashrc ? いろいろあるけどこいつらなにもの? https://qiita.com/hirokishirai/items/5a529c8395c4b336bf31
本当に正しい .bashrc と .bash_profile の使ひ分け https://qiita.com/magicant/items/d3bb7ea1192e63fba850
ログインシェルとインタラクティブシェルと~/.bashrc達の関係 https://qiita.com/incep/items/7e5760de0c2c748296aa
Bundler
についてはこちらが参考になった。