(wrist blog)

twitterはこちら http://twitter.com/wrist

osxとdebian上でrbenv + ruby-buildを使ってruby 2.0.0-p0をインストール

今更な上に色んな人が書いていますが自分もやってみました。

rbenv, ruby-build

rbenvはrvmのような複数バージョンのRubyを管理するためのツールで、 ruby-buildはrbenv installを提供するrbenvのプラグインです。 環境変数でバージョンの切替などができる模様です。

参考: rbenvとRVMとの違い

インストール環境

  • mac osx(Mountain Lion 10.8.3, x86_64)
  • さくらVPS上のdebian(squeeze 6.0.7, x86_64)
  • homebrew/apt-get, gitはインストール済み

mac osx上でのインストール

この記事を参考にさせて頂きました。 ここではhomebrewを使ってrbenv, ruby-buildのインストールを行います。 ちなみにruby 2.0.0-p0を使いたいだけならばhomebrewで直接導入もできるみたいです。

0. 準備

予めreadline、opensslをインストールしておきます。

$ brew update
$ brew install readline
$ brew install openssl

1. rbenv, ruby-buildのインストール

以下のようにしてインストールします。

$ brew install rbenv
$ brew install --HEAD ruby-build

2013/10/27追記

ruby-buildでインストール可能なrubyのバージョン一覧を更新したいときは、gitで入れた場合はpullするだけですが、homebrewで入れている場合は一旦brew uninstall --HEAD ruby-buildした後に再びinstallしてやれば最新のruby-buildがインストールされるのでこれで一覧が更新されます。

2. ruby 2.0.0-p0をインストール

以下を実行して

$ rbenv install -l

一覧にruby 2.0.0-p0があることを確認した後に、

$ RUBY_CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install 2.0.0-p0

でインストールします。インストール後、以下を実行します。

$ rbenv rehash
$ rbenv global 2.0.0-p0

rbenv rehash~/.rbenv/shimsを更新することで、インストールしたrubyやgemの情報を更新するコマンドです。 ~/.rbenv/shimsirb, gem, rake, rails, rubyといったrubyに関するコマンドを維持するためのディレクトリで、 このディレクトリをパスの先頭に追加してやる必要があります。 公式にはこのためにrbenvは予め以下を実行することで、パスの追加及び自動補完を有効化し、 ついでに.zshenv(bashの場合は.bash_profile)にeval $(rbenv init -)を書き込んでくれる旨が書かれています。

$ echo 'eval "$(rbenv init -)"' >> ~/.zshenv

rbenv init -のみを実行すると何が行われているかが分かると思います。

一方でrbenv global~/.rbenv/versionを更新するためのコマンドです。 このファイルが存在しない場合、rbenvはシステムにインストールされたrubyを使用することを想定するようです。 またrbenv localでアプリケーション毎に利用するrubyのバージョンを切り替えられたりするようです。

この上で、以下を実行してバージョンを確認します。

$ ruby -v

これでruby 2.0.0p0が表示されれば無事インストール完了です。

2013/10/27 追記

osxをmavericksにアップデートしたらrbenv install実行時に以下のようなエラーが出るようになりました。

BUILD FAILED

Inspect or clean up the working tree at /var/folders/nc/h5hw29596zzbhrcstv7h24hr0000gn/T/ruby-build.20131027021741.58118
Results logged to /var/folders/nc/h5hw29596zzbhrcstv7h24hr0000gn/T/ruby-build.20131027021741.58118.log

Last 10 log lines:
checking build system type... x86_64-apple-darwin13.0.0
checking host system type... x86_64-apple-darwin13.0.0
checking target system type... x86_64-apple-darwin13.0.0
checking for gcc-4.2... gcc-4.2
checking for gcc... (cached) gcc-4.2
checking whether the C compiler works... no
configure: error: in `/var/folders/nc/h5hw29596zzbhrcstv7h24hr0000gn/T/ruby-build.20131027021741.58118/ruby-2.0.0-p195':
configure: error: C compiler cannot create executables
See `config.log' for more details
make: *** No targets specified and no makefile found.  Stop.

コンパイラが問題だということが分かるので、

$ CC="/usr/bin/clang" RUBY_CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install 2.0.0-p0

コンパイラを明示的に指定してインストールすることで解決します。

debian上でのインストール

この記事を参考にさせて頂きました (Qiita上で僕も記事を書くべきのような気もして来ましたが…)。 debianではapt-getを使って必要なパッケージ一式を取得した後に、 rbenv, ruby-buildをgithub上のリポジトリをcloneして取得します。

0. 準備

予めビルドに必要なパッケージ一式をインストールします。

$ sudo apt-get update
$ sudo apt-get install build-essential bison openssl libreadline6 \
libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev \
libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf \
libc6-dev ncurses-dev

1. rbenv, ruby-buildのインストール

公式を参考に以下のようにしてgitで取得し、各種設定を行います。 rbenvのインストールは以下のように行います。~/.rbenv/binにパスを通しているのは、rbenv init`の実行のためです。

$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshenv
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l  # restart login shell

この上でruby-buildをインストールします。

$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

2. ruby 2.0.0-p0をインストール

以下を実行して

$ rbenv install -l

一覧にruby 2.0.0-p0があることを確認した後に、

$ rbenv install 2.0.0-p0

でインストールします。インストール後、以下を実行します。

$ rbenv rehash
$ rbenv global 2.0.0-p0