LoginSignup
6
4

More than 3 years have passed since last update.

rbenvでインストールしたRubyのバージョンを上げる

Last updated at Posted at 2017-10-11

前提条件

  • 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
6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4