Xcodeとrvmと最新のrubyではめられた感じ満載の@HIROCASTERでございませう。
手元のXcodeがすごく古かったので、刷新しようとしたらあれやこれや作業が必要になった。
最新のXcodeだけでは、最新のRubyをコンパイルできないし、Ruby1.9.3-p194からSSL証明書をちゃんとチェックするので、その設定してあげないとcurlでgem取ってこれないので、なんもできないとかいろいろ同時に問題が起きた。
今日はMacに最新のXcode4.3.2をインストールした状態で、最新のRuby1.9.3-p194を利用できる状態を構築します。
Xcode 4.3.2
App Store などから Xcode をインストールする。
4.3.2は /Applications へアプリがインストールされるので起動する。
メニューの Xcode -> Preferences… を起動する。
Downloads タブを開き Command Line Tools をインストールする。
古いXcodeが入っていた場合など
Xcodeの参照先などがおかしくなっているため、下記の様になるように設定し直してください。
$ xcode-select -print-path
/Developer
$ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
$ xcode-select -print-path
/Applications/Xcode.app/Contents/Developer
osx-gcc-installer
Xcode 4.3.2 だとRubyのコンパイルをするのに問題があるようなので、osx-gcc-installer をインストールして、これを使う。
https://github.com/kennethreitz/osx-gcc-installer をブラウザで開き GCC-10.7.pkg をダウンロードしてインストール
libksba
libksba が Ruby 1.9.3 では必要なようなので、インストールする。
僕はMacPortsを利用しているので、こんな感じ。
$ sudo port install libksba
brewを利用している場合は
$ brew install libksba
rvm
まずは rvm をインストールする。
$ curl -L get.rvm.io | bash -s stable
$ source /Users/hirocaster/.rvm/scripts/rvm
環境変数を有効にするのに .zshrc あたりにこれを加えておく
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
openssl
$ rvm pkg install openssl
ユーザー名の部分は適当に環境に合わせて変更してください。
Ruby 1.9.3-p194 からhttpsへのアクセス挙動がセキュアになったので、きちんとした証明書を設定してあげないとgemを取ってくるときなどにエラーをはくので、curlの証明書を設置しています。必要に応じて、curlを最新版にしてから実施してください。
rvmが使う証明書の位置を把握する
$ ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE'
"/Users/hirocaster/.rvm/usr/ssl/cert.pem"
<
curlの証明書を置く
$ sudo cp /opt/local/share/curl/curl-ca-bundle.crt ~/.rvm/usr/ssl/cert.pem
$ sudo chown <ユーザー名> ~/.rvm/usr/ssl/cert.pem
これでも gem を取得する際にSSLエラーが出る場合はやむを得ず、HTTPSで取得するのをやめることもできます。
~/.gemrc あたりにこう書きます。
:sources:
- http://rubygems.org
Gemfile なんかは
source 'https://rubygems.org'
の部分を
source 'http://rubygems.org'
しておく。でも、あまり推奨された方法ではありませんね。HTTPSで取得できる場合、HTTPSで取得した方が良いです。
pkg
このあたりも入れておく。
$ rvm pkg install iconv
$ rvm pkg install readline
環境確認
以下のような環境になっていることを確認してください。こうなってなければ、上記の設定にミスがあります。
gcc
$ gcc -v
Using built-in specs.
Target: i686-apple-darwin11
Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.9~22/src/configure --disable-checking --enable-werror --prefix=/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.9~22/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)
rvm requirements
$ rvm requirements
Notes for Mac OS X 10.7.3, Xcode 4.3.2.
For MacRuby: Install LLVM first.
For JRuby: Install the JDK. See http://developer.apple.com/java/download/ # Current Java version "1.6.0_26"
For IronRuby: Install Mono >= 2.6
For Ruby 1.9.3: Install libksba # If using Homebrew, 'brew install libksba'
You can use & download osx-gcc-installer: https://github.com/kennethreitz/osx-gcc-installer
** NOTE: Currently, Node.js is having issues building with osx-gcc-installer. The only fix is to install Xcode over osx-gcc-installer.
We had reports of http://hpc.sourceforge.net/ making things work, but it looks like not easiest/safest to setup.
To use an RVM installed Ruby as default, instead of the system ruby:
rvm install 1.8.7 # installs patch 357: closest supported version
rvm system ; rvm gemset export system.gems ; rvm 1.8.7 ; rvm gemset import system.gems # migrate your gems
rvm alias create default 1.8.7
And reopen your terminal windows.
Xcode 4.2:
* is only supported by ruby 1.9.3+
* it breaks gems with native extensions, especially DB drivers.
Xcode 4.3+ users
- please be warned
- only ruby-1.9.3-p125+ is partially supported
- in case of any compilation issues:
* downgrade to Xcode 4.1
* uninstall Xcode and install osx-gcc-installer
and reinstall your rubies.
ruby 1.9.3-p194
$ rvm install 1.9.3-p194 --with-iconv-dir=$rvm_path/usr --with-openssl-dir=$rvm_path/usr --with-readline-dir=$rvm_path/usr --with-gcc=clang
“–with-gcc=clang” をつけてコンパイルします。
$ rvm use 1.9.3-p194 --default
$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.3.0]
railsもいれとこう
$ gem install rails
$ rails -v
Rails 3.2.3
最新をちょくちょくアップデートしていく方が、楽だなぁ。と感じた今日この頃。
高橋 征義、後藤 裕蔵、まつもと ゆきひろ |
まつもと ゆきひろ、、まつもと ゆきひろのAmazon著者ページを見る、検索結果、著者セントラルはこちら、David Flanagan、卜部 昌平 (監訳)、長尾 高弘 |