Homebrew + Command Line Tools for Xcode + rbenv 環境構築

職場で使用しているMacBook Air(Late 2010)は,Snow Leopardで運用していましたが,このたびLionをクリーンインストールすることにしました.

そして,今回はMacPortsはやめて,初めてHomebrewで運用することにしました.Homebrewは,/usr/local配下を一般ユーザに対し書き込み権限を与えてしまうので,どうも気が進まなかったのですが,Homebrewでインストールされるアプリは,依存するライブラリをシステムのライブラリを使用することで,MacPortsと違いディスク容量を節約することができるということで,こちらに決めました.

HomebrewはXcodeJavaのアップデートが必要ということで,Javaのアップデートはセキュリティ上必須なので,ささっと済ませましたが,Xcodeはサイズが8GBも食うということで「Command Line Tools for Xcode」をインストールすることにしました.これなら200MB弱で済みます.

Downloads for Apple Developersより,Command Line Tools for Xcodeをダウンロードし,インストールします.Apple IDが必要です.

$ gcc -v
Using built-in specs.
Target: i686-apple-darwin11
:
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)

gccが利用できるようになりました.

$ ls -l /usr/bin/gcc
lrwxr-xr-x 1 root wheel 12 4 27 17:53 /usr/bin/gcc@ -> llvm-gcc-4.2

「 LLVM-GCC」? GCCじゃないの?
ということで調べてみますと,「LLVM」とは Low Level Virtual Machine の略で機械語を生成するコンパイラ技術のようです.Xcode 4からはGCCではなくLLVMなのだそうです.そしてややこしいのが,ソースコードをパースする部分,いわゆるフロントエンドの部分が次の2つが用意されています.

  • LLVM-GCC 4.2(llvm-gcc-4.2)
  • Apple LLVM Compiler 2.0(clang)

参考になったのがこのサイトのページ

要するに,フロントエンドの部分において,GCCでパースするのがLLVM-GCCで,ClangでパースするのがApple LLVM Complierです.
従って,これまでのGCCを必要とするソースコードはLLVM-GCCを利用し,高速コンパイラの恩恵を得たいときはApple LLVM Compilerということです.
では,Clang(Apple LLVM Compiler)を利用したい場合はどうしたら良いのか,実は,/usr/bin/cc は,clangにリンクが張られているのです.

$ ls -l /usr/bin/cc
lrwxr-xr-x  1 root  wheel  5  4 27 17:53 /usr/bin/cc@ -> clang

ほらね.で,バージョンを調べてみると次の通り.

$ cc -v
Apple clang version 3.1 (tags/Apple/clang-318.0.58) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.3.0
Thread model: posix

特に気にする必要はありませんが,ソースコードをビルドするときに色々と問題が出てくるかもしれません.

さて,Homebrewのインストールです.

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

==> This script will install:
/usr/local/bin/brew
/usr/local/Library/Formula/...
/usr/local/Library/Homebrew/...
 :
==> Installation successful!
You should run `brew doctor' *before* you install anything.
Now type: brew help

インストールは無事上手くいきました.「brew doctor せよ」ということでやってみると...

$ brew doctor

Error: Your Xcode is configured with an invalid path.
You should change it to the correct path. Please note that there is no correct
path at this time if you have *only* installed the Command Line Tools for Xcode.
If your Xcode is pre-4.3 or you installed the whole of Xcode 4.3 then one of
these is (probably) what you want:

    sudo xcode-select -switch /Developer
    sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

DO NOT SET / OR EVERYTHING BREAKS!

エラーがでました.Xcodeのパスがおかしいとのこと.実はXcode4以前は/Developer配下にインストールされていましたが,今は/Applications配下にインストールされるということで,xcode-selectを使ってセットしなさいということみたいですが...

んでもって,現在のパス設定はどうなっているかというと...

$ sudo xcode-select -print-path
/Developer

実は,Xcode4をセットアップせずに「Command Line Tools for Xcode」のみセットアップしたときは,/Developerも,/Applications/Xcode.appのディレクトリも作成されないのです.

$ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
xcode-select: Error: Path "/Applications/Xcode.app/Contents/Developer" is not a directory.

コンパイラなどの開発ツールは/usr/bin配下にインストールされているはずですので,次のように指定すると...

$ sudo xcode-select -switch /usr/bin

開発ツールの場所を探すxcrunで確認したときに...

$ xcrun -find gcc
sh: /usr/bin/usr/bin/xcodebuild: No such file or directory
/usr/bin/usr/bin/xcodebuild fails with 32512 - Unknown error: 32512

と何だか変なパスになってしまい,xcodebuildが見つからないという状態になってしまいます.実は後でrbenv環境でRubyをインストールする際に,このあたりの設定をきちんとしないと上手くいきません.

そこで,次のようにパスを設定しておきます.

$ sudo xcode-select -switch /

これで再度「xcrun -find gcc」をしたときに何故かhungupしてしまいますが,Xcode4を入れていない限り,これ以外設定しようがありません...が,「brew doctor」を実行すると今度はちゃんと成功しています.

$ brew doctor
Your system is raring to brew.

さて,これでbrewコマンドが使えるようになったのですが,ここで環境変数をチェックしてみます.

$ brew --env
CC: /usr/bin/clang
CXX: /usr/bin/clang++ => /usr/bin/clang
LD: /usr/bin/clang
CFLAGS: -Os -w -pipe -march=native -Qunused-arguments
CXXFLAGS: -Os -w -pipe -march=native -Qunused-arguments
MAKEFLAGS: -j2

環境変数「CC」は「clang」となっています.このままでも無事にビルドできることはできますが,GCCのパースを必要とする場合は,次のようにして切り替えることができます.

$ brew --env --use-llvm
CC: /usr/bin/llvm-gcc => /usr/llvm-gcc-4.2/bin/llvm-gcc-4.2
CXX: /usr/bin/llvm-g++ => /usr/llvm-gcc-4.2/bin/llvm-g++-4.2
LD: /usr/bin/llvm-gcc => /usr/llvm-gcc-4.2/bin/llvm-gcc-4.2
CFLAGS: -Os -w -pipe -march=core2 -msse4.1
CXXFLAGS: -Os -w -pipe -march=core2 -msse4.1
MAKEFLAGS: -j2

よって,次のようにすることによってパース(コンパイラ)の指定を切り替えることができます.

  • brew –env –use-llvm … コンパイラはLLVM-GCCを利用.パースはGCC
  • brew –env –use-clang … コンパイラはApple LLVM Compilerを利用,パースはClang

さて,brewを利用するためにパスの設定をしておきましょう.「/usr/local/bin」を最優先させておきます.

$ sudo vi /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

有効にするためにターミナルを再起動させます.

続いて,Homebrewのリポジトリを最新版に

$ brew update

とりあえず,Gitは入れましょう.

$ brew install git

MacPortsと違って,gitだけ入り,他の余計なものはインストールされません.実にシンプル!

Rubyを入れるためにまず,readlineとOpenSSLのライブラリをインストールしておきます.

$ brew install readline
$ brew link readline
$ brew install openssl
$ brew link openssl

さて,やっとrbenvです.これもbrewで一発セットアップです.便利ですねー.

$ brew install rbenv
==> Downloading https://github.com/sstephenson/rbenv/tarball/v0.3.0
######################################################################## 100.0%
==> Caveats
To enable shims and autocompletion, add rbenv init to your profile:
  eval "$(rbenv init -)"
==> Summary
/usr/local/Cellar/rbenv/0.3.0: 32 files, 160K, built in 6 seconds

eval “$(rbenv init -)”」の一行を「.bash_profile」か「.bashrc」に追加しておきます.

有効にするためにターミナルを再起動させておきます.

続いて「ruby-build」,使うかどうかわかりませんが「rbenv-gemset」をインストールします.

$ brew install ruby-build
$ brew install rbenv-gemset

さてそろそれ大詰めです.Rubyのインストールです.まずは,インストール可能なバージョンを調べてみます.

$ rbenv install

usage: rbenv install VERSION
       rbenv install /path/to/definition

Available versions:
  1.8.6-p383
   :
  1.9.3-p194
  1.9.3-preview1
  1.9.3-rc1
  2.0.0-dev
  jruby-1.6.3
   :
  ree-1.8.7-2012.02

今回はバージョン1.9.3-p194を入れてみます.コンフィグのオプションとしてreadlineのライブラリのパスを指定しておきます.これを行うことでirbで日本語が利用できるようになります.opensslの指定は余計かもしれませんが一応しておきます.

$ CONFIGURE_OPTS="--with-readline-dir=/usr/local --with-openssl-dir\
=/usr/local" rbenv install 1.9.3-p194

Downloading http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz...
Installing yaml-0.1.4...
Installed yaml-0.1.4 to /Users/furuya/.rbenv/versions/1.9.3-p194
Downloading http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz...
Installing ruby-1.9.3-p194...
Installed ruby-1.9.3-p194 to /Users/furuya/.rbenv/versions/1.9.3-p194

インストール完了.今のRuby環境を確認します.

$ rbenv version
system (set by /Users/furuya/.rbenv/version)

$ ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]

現在は,OS X同梱のRubyでバージョン1.8.7です.そして現在有効なバージョンを調べてみます.

$ rbenv versions
1.9.3-p194

先ほど入れた「1.9.3-p194」です.それではこのバージョンに切り替えます.有効にするために「rbenv rehash」するのを忘れずに...

$ rbenv global 1.9.3-p194
$ rbenv rehash

再度,現在のRuby環境を確認します.

$ rbenv version
1.9.3-p194 (set by /Users/furuya/.rbenv/version)

$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.3.0]

irbで日本語が入力できるか確認します.

$ irb
irb(main):001:0> puts "あああ"
あああ
=> nil
irb(main):002:0> exit

上手くいきました!

広告
Posted in Mac

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中