2013/01/15

Mac OS X 10.7.5 (LION) へrbenv + ruby-buildを利用してRuby実行環境を構築する

はじめに

Webアプリ開発の勉強の目的で半年ほど前にMacBook Airを購入したままながらく放置していましたが、ようやく環境構築に取り組もうと思い立ち、Rubyのインストールを行いました。
勉強対象とする言語は特になんでも良かったのですが、Twitterやgithub、Cookpadなど様々なWebサービス利用されているRailsの登場により人気が出てきているRubyを使ってみようと思った程度です。

Rubyのインストールの方法はいくつかありますが、ここではUNIX/Linux環境で複数のRubyを共存/切り替えを行うためのツールであるrbenvと、rbenvのみではRubyのバージョン切り替えのみしか行えないため、異なるバージョンをコンパイルしインストールするためのrbenvプラグインであるruby-buildを利用してインストールを行いました。

Rubyのバージョン管理ツールとしては多機能なRVMが主流なようですが、最近ではシンプルな機能を持つとされているrbenvのほうも人気が出てきているようですので、rbenvを使うことにしました。
以下に、Mac OS X 10.7.5(LION)でrbenvとruby-buildを使ってのRubyインストールの手順まとめましたので記載致します。

インストール環境

インストール環境は以下です。

プラットフォーム MacBook Air
OS Mac OS X 10.7.5
rbenvインストール先 /usr/local/Cellar
ruby-buildインストール先 /usr/local/Cellar

事前準備

rbenv,rbenv-build,Rubyをインストールするための事前準備としてXcode,homebrewを導入しておく必要があります。

Command Line Tools for Xcodeのインストール

Mac OS X 10.7.5(LION)に対応したCommand Line Tools for Xcodeをダウンロードしてインストールします。
Command Line Tools for Xcodeインストール後には、以下のようにllvm-gccコンパイラがインストールされていると思います。

% ls -l /usr/bin/gcc
lrwxr-xr-x  1 root  wheel  12  7 28 18:37 /usr/bin/gcc -> llvm-gcc-4.2
% which llvm-gcc-4.2
/usr/bin/llvm-gcc-4.2

※後に少し記述しますが、ruby 1.9.3p125以前のバージョン(Ruby1.8系含む)をインストールする場合は、純正のgccが必要になります。

homebrewのインストール

Mac OS用パッケージマネージャ(Mac OS Xの環境(各種ライブラリ)などを利用しオープンソースソフトなどをインストールするためのツール)であるhomebrewを以下の通りインストールします。
homebrewはrbenv他必要なパッケージのインストールに利用します。

% /usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

インストールされていることを確認します。

% which brew
/usr/local/bin/brew
% brew -v 
Homebrew 0.9.3

homebrewから必要なパッケージ類のインストール

rbenv, rbenv-buildのインストール

公式手順通りにrbenv,ruby-buildをそれぞれインストールします。

% brew install rbenv
% brew install ruby-build

.zshrcにrbenv用の環境変数を設定します。

% vim ~/.zshrc
### 環境変数等の設定追加
export PATH=$HOME/.rbenv/shims:$PATH
eval "$(rbenv init -)"

環境変数を再読み込みします。

% source ~/.zshrc
その他ライブラリのインストール

必要に応じてライブラリ類もインストールします。

opensslのインストール

OpenSSLをRubyから扱うライブラリをインストールします。

$ brew install openssl
$ brew link openssl
readlineのインストール

irbなどで利用するコマンドライン入力インタフェースを提供するモジュール"readline"をインストールします。

% brew install readline
% brew link readline

Rubyのインストールと設定

Ruby 1.9.3のインストール

Ruby 1.9.3をインストールします。
まず、以下コマンドでインストール可能なrubyソースの一覧を確認します。

% rbenv install -l

2013/01/15時点で最新のRuby 1.9.3-p362をインストールします。
明示的にLLVM GCCコンパイラを利用するように環境変数を設定します。

% export CC=/usr/bin/gcc

rbenvを使ってRuby 1.9.3-p362をコンパイルし、インストールします。
Configureオプションには、別途インストールしていたreadlineやopensslライブラリのインストール先PATHを指定しています。

% CONFIGURE_OPTS="--with-readline-dir=/usr/local --with-openssl-dir=/usr/local" rbenv install 1.9.3-p362

インストールされたRubyのバージョン一覧は"rbenv versions"で確認できます。
現状ではsystem(標準でインストールされているRuby)と1.9.3-p362がインストールされている状態ですので、それが表示されます。
現在設定されているRubyのバージョンには"*"が付与されます。
(なお、"rbenv version"だと現在設定されているRubyのバージョンが表示されます。)

% rbenv versions
* system
  1.9.3-p362 (set by /Users/XXX(ユーザ名)/.rbenv/version)

※Xcodeでインストールされるコンパイラ

Xcode 4.3から純正のgccが無くなり、llvm-gccもしくはclang(どちらもLLVM利用)の2つしかコンパイラがないため、gccを利用してビルドする必要があるRuby 1.9.3p125以前のインストールができません。
以下のようにエラーとなります。
これらのRubyをインストールするには以下のメッセージの通り、Xcode 4.2あるいはgithubから自分で純正のgccをビルドして利用する必要があります。

% rbenv install 1.9.2-p320

ERROR: This package must be compiled with GCC, but ruby-build couldn't
find a suitable `gcc` executable on your system. Please install GCC
and try again.

DETAILS: Apple no longer includes the official GCC compiler with Xcode
as of version 4.2. Instead, the `gcc` executable is a symlink to
`llvm-gcc`, a modified version of GCC which outputs LLVM bytecode.

For most programs the `llvm-gcc` compiler works fine. However,
versions of Ruby older than 1.9.3-p125 are incompatible with
`llvm-gcc`. To build older versions of Ruby you must have the official
GCC compiler installed on your system.

TO FIX THE PROBLEM: Install the official GCC compiler using these
packages: https://github.com/kennethreitz/osx-gcc-installer/downloads

You will need to install the official GCC compiler to build older
versions of Ruby even if you have installed Apple's Command Line Tools
for Xcode package. The Command Line Tools for Xcode package only
includes `llvm-gcc`.

BUILD FAILED
利用するRubyのバージョン切り替え

現時点ではMac OS Xで標準インストールされているRubyを利用するように設定されています。

% rbenv version
system (set by /Users/XXX(ユーザ名)/.rbenv/version)
% ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0]

rbenvで新しくインストールしたRubyを利用するように変更します。

・システム全体で使用するRubyのバージョンを指定する

システム全体で使用するRubyのバージョンを指定するには"rbenv global"を実行します。

% rbenv global 1.9.3-p362

rbenv rehashを実行します。
これにより、$HOME/.shimsディレクトリ配下にrubyやgemでインストールしたツールを起動するための実行ファイルが作成されます。

% rbenv rehash

利用するRubyのバージョンが変更されていることが確認できます。

% rbenv version
1.9.3-p362 (set by /Users/XXX(ユーザ名)/.rbenv/version)
% ruby -v     
ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-darwin11.4.2]

・システム全体で使用するRubyのバージョンをOS標準のRubyに戻す

標準でインストールされているRubyに戻す手順は以下の通りです。

% rbenv global system
% rbenv rehash
ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0]

おわりに

以上で、Mac OS X 10.7.5(LION)でrbenvとruby-buildを使ってRuby 1.9.3の最新版をインストールすることができました。
次はRuby on Railsの環境構築を行ってみようと思います。

参考

RVMとrbenvの違いは以下にいろいろとまとめられており、参考にさせていただきました。

Rubyのインストールは以下の記事を参考にさせていただきました。

LLVMについては以下の記事がわかりやすかったと思います。

0 Comments:

コメントを投稿