前提条件
- Ruby周りは、下記の場所にインストールされているものとする。
- rbenvの場所:
/home/someuser/.rbenv/
- ruby-buildの場所:
/home/someuser/.rbenv/plugins/ruby-build
(ユーザー「someuser」がRubyを使う体で)
制限事項
- 本手順は、CentOS 7 / fedora 28 にて使用したものである。
手順
v2.4.1 → v2.4.2 に上げるパターンを例にとる
現在のバージョンを調べる
使用するユーザーになる
sudo su - someuser
現在のrubyのバージョン
ruby --version
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
rbenvに登録されているRubyバージョン(*印は、現在有効になっているバージョン)
rbenv versions
* 2.4.1 (set by /home/someuser/.rbenv/version)
rbenvでインストールできるRubyのバージョン一覧
rbenv install -l
Available versions:
・
・
・
2.4.0-preview3
2.4.0-rc1
2.4.0
2.4.1
2.5.0-dev
jruby-1.5.6
jruby-1.6.3
jruby-1.6.4
・
・
・
v2.4.2が無い!どうしよう!!
ruby-buildのアップデート
ruby-buildそのものを更新してみる
cd ~/.rbenv/plugins/ruby-build && git pull && cd -
この状況下ではどうか?
rbenv install -l
Available versions:
・
・
・
2.4.0-preview3
2.4.0-rc1
2.4.0
2.4.1
2.4.2
2.5.0-dev
jruby-1.5.6
jruby-1.6.3
jruby-1.6.4
・
・
・
v2.4.2 があらわれた!!
rbenvを使って、rubyを更新しデフォルトで使用するようにする
rbenv install 2.4.2 && rbenv global $_ && rbenv rehash
Downloading ruby-2.4.2.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.bz2
Installing ruby-2.4.2...
Installed ruby-2.4.2 to /home/someuser/.rbenv/versions/2.4.2
結果を確認する
現在のrubyのバージョン
ruby --version
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]
rbenvに登録されているRubyバージョン
rbenv versions
2.4.1
* 2.4.2 (set by /home/someuser/.rbenv/version)
切り替わった!! やったね!!
(Optional) jemallocを使う場合
$ RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install x.x.x && rbenv global $_ && rbenv rehash
あらかじめローカルに jemalloc-devel
が必要なので、インストールしておく。
jemallocが有効になっているか確認
v2.5 以前
irb(main):002:0> RbConfig::CONFIG['LIBS']
=> "-lpthread -ljemalloc -lgmp -ldl -lcrypt -lm "
v2.6以降
irb(main):002:0> RbConfig::CONFIG['MAINLIBS']
> "-lz -lpthread -lrt -lrt -ljemalloc -lgmp -ldl -lcrypt -lm"
-ljemalloc
が含まれていれば有効になっているはず
(Optional) /tmp
の空き容量が足りなくてインストールに失敗する時
環境変数 TMPDIR
に適当なディレクトリを設定してやることで、そこをテンポラリディレクトリとして使用するようになる
$ TMPDIR="/home/mastodon/rbenv_tmp" rbenv install x.x.x
(Optional) bundlerのインストール
そのままだとbundleコマンドが使えないので、gemでbundlerをインストールする
gem install bundler
(Optional) 古いバージョンのアンインストール
バージョンあたり150~200MB程度の容量を消費する。
米印のついているバージョンは現在使用中のものなので消さないように!
$ rbenv versions
2.5.1
2.5.3
* 2.6.0 (set by /home/someuser/.rbenv/version)
$ du -d 1 -h .rbenv/versions
170M .rbenv/versions/2.5.3
205M .rbenv/versions/2.6.0
170M .rbenv/versions/2.5.1
545M .rbenv/versions
$ rbenv uninstall 2.5.3
rbenv: remove /home/someuser/.rbenv/versions/2.5.3? [yN] y
$ rbenv versions
2.5.1
* 2.6.0 (set by /home/someuser/.rbenv/version)
まとめ
# Ruby-Build を最新にしてから
$ cd ~/.rbenv/plugins/ruby-build && git pull && cd -
# 任意のバージョンを入れる!
$ rbenv install x.x.x && rbenv global $_ && rbenv rehash
# ※jemallocを使うときはこれ
$ RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install x.x.x && rbenv global $_ && rbenv rehash
# ※さらに一時フォルダを指定したいときはこれ
$ TMPDIR="/home/someuser/rbenv_tmp" RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install x.x.x && rbenv global $_ && rbenv rehash
# 終わったらbundlerを入れる!
$ gem install bundler