読者です 読者をやめる 読者になる 読者になる

waste of time

主にPHP

rbenv + ruby-buildでrubyをインストールする

Ruby

yum installで入るrubyが1.8だったので、rbenvのプラグインであるruby-build経由で最新のruby(2016/5/29現時点の安定版v2.3.1)をインストールする。

この記事に書いてあることはすべて公式ドキュメントから辿れる内容なので、公式ドキュメントを見よう。
Rubyのインストール

rbenvをインストールする

github.com 書いてある通り、clone→make→パス追加→initするだけ。

ruby-buildをインストールする

github.com rbenvのプラグインとして動作させる場合は、.rbenv/pluginsの中にcloneするだけ。簡単。

rubyをインストールする

これで準備完了したので、rubyをインストールする。 インストールできるrubyの一覧を表示。

$ rbenv install --list

普通のruby(CRuby)の他に、jrubyとかmrubyとかrbxとかいろんなruby実装が出てくる。 rbxってのはrubyによるruby実装らしい(Rubinius)。pypyみたいな。

普通のrubyがやりたいので、一覧からバージョン表記のみのものを指定してインストールする。 今回は一番新しい2.3.1を入れる。

$ rbenv install 2.3.1

エラー出た。

Downloading ruby-2.3.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2
Installing ruby-2.3.1...

BUILD FAILED (CentOS release 6.7 (Final) using ruby-build 20160426-33-g3304f96)

Inspect or clean up the working tree at /tmp/ruby-build.20160529232814.3766
Results logged to /tmp/ruby-build.20160529232814.3766.log

Last 10 log lines:
installing rdoc:              /home/{USER}/.rbenv/versions/2.3.1/share/ri/2.3.0/system
installing capi-docs:         /home/{USER}/.rbenv/versions/2.3.1/share/doc/ruby
The Ruby readline extension was not compiled.
ERROR: Ruby install aborted due to missing extensions
Try running `yum install -y readline-devel` to fetch missing dependencies.

Configure options used:
  --prefix=/home/{USER}/.rbenv/versions/2.3.1
  LDFLAGS=-L/home/{USER}/.rbenv/versions/2.3.1/lib
  CPPFLAGS=-I/home/{USER}/.rbenv/versions/2.3.1/include

言われるがままreadline-develをインストールする。

$ sudo yum install readline-devel

再度rubyインストール。

$ rbenv install 2.3.1

Downloading ruby-2.3.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2
Installing ruby-2.3.1...
Installed ruby-2.3.1 to /home/{USER}/.rbenv/versions/2.3.1

Installed!
rbenv versionsコマンドで、インストール済みのrubyバージョンが見られる。
rbenv global 2.3.1でglobalのバージョンが設定できるし、rbenv local 2.3.1な感じでディレクトリごとのバージョンも設定できる。

rubyとかirbのパスはどこに通せば良いのだろうか。 ~/.rbenv/versions/2.3.1/bin/に直接通すものなのかな?globalのバージョンが自動で割り当てられるようにしたいんだけども…

2016/5/30追記
~/.rbenv/shimsの中が現在のバージョンに切り替わっている(?)ぽいのでここをパスに追加すれば良さそう。

2016/8/8追記
rbenv initでshimsとautocompletionが有効になるので、.bash_profile或いは.bashrcにeval "$(rbenv init -)"を加える必要があった。