開発環境のバージョン管理

★ブログ移行のお知らせ
サイトを移行しました。以下をクリックください。
きよしの倶楽部 – 生活を潤わす情報を発信中。GTDを得意としてます。


ーーー
今までMACにおいて、rubyは基本的にOSが提供している1.8系を使っていてあまり不便はなかったけど、ここにきて1.9系が必要になってMBAの方はhomebrewに全てを切り替えて、最新版をインストールした。ちなみに現在は

XXXX-Mac-mini:~ XXXX$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

ってな感じです。

MBAの方で何も考えずhomebrew経由でrubyをインストールしたら、思いの外、2.0まで上がってしまって若干焦ったが、特に不便はないのでそのまま使っている状態。

一方でメイン機(MAC mini MT LION)はさすがにこれではまずいと思い、goole先生に相談。素敵な記事にヒットしましたので実行してみます。

rbenvで複数バージョンのRubyを管理するmac os lion - Hacking My Way 〜 itogのhack日記

もう完全に書かれているままをコピペ。途中、Xcodeのバージョンが古いといわれる例のwaring

Warning: Your Xcode (4.4.1) is outdated
Please install Xcode 4.6.1.

がでたので、アップデート。アップデートしたような気もするのですが、たくさん同じOS機器を使っているとこんな事もある。

XXX-Mac-mini:~ XXX$ brew install rbenv
==> Downloading https://github.com/sstephenson/rbenv/archive/v0.4.0.tar.gz
######################################################################## 100.0%
==> Caveats
To use Homebrew's directories rather than ~/.rbenv add to your profile:
  export RBENV_ROOT=/usr/local/var/rbenv

To enable shims and autocompletion add to your profile:
  if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
==> Summary
🍺  /usr/local/Cellar/rbenv/0.4.0: 31 files, 152K, built in 3 seconds

てなこと。他のサイトにはif文は省略されているようだが、ここは素直にきちんと言われた通りを書いてみる事にする。

source ~/.bash_profile

で読ませてみても特にエラーなし。参照サイトではgccを入れ替えているようですが、エラーが出てから対応すりゃいいや、ってことで

XXXX-Mac-mini:~ XXXX$ rbenv install -l
Available versions:
  1.8.6-p383
  1.8.6-p420
  1.8.7-p249
  1.8.7-p302
  1.8.7-p334
  1.8.7-p352
  1.8.7-p357
  1.8.7-p358
  1.8.7-p370
  1.8.7-p371
  1.9.1-p378
  1.9.2-p180
  1.9.2-p290
  1.9.2-p318
  1.9.2-p320
  1.9.3-dev
  1.9.3-p0
  1.9.3-p125
  1.9.3-p194
  1.9.3-p286
  1.9.3-p327
  1.9.3-p362
  1.9.3-p374
  1.9.3-p385
  1.9.3-p392
  1.9.3-preview1
  1.9.3-rc1
  2.0.0-dev
  2.0.0-p0
  2.0.0-preview1
  2.0.0-preview2
  2.0.0-rc1
  2.0.0-rc2
  2.1.0-dev
  jruby-1.5.6
  jruby-1.6.3
  jruby-1.6.4
  jruby-1.6.5
  jruby-1.6.5.1
  jruby-1.6.6
  jruby-1.6.7
  jruby-1.6.7.2
  jruby-1.6.8
  jruby-1.7.0
  jruby-1.7.0-preview1
  jruby-1.7.0-preview2
  jruby-1.7.0-rc1
  jruby-1.7.0-rc2
  jruby-1.7.1
  jruby-1.7.2
  jruby-1.7.3
  jruby-1.7.4-dev
  maglev-1.0.0
  maglev-1.1.0-dev
  mruby-dev
  rbx-1.2.4
  rbx-2.0.0-dev
  rbx-2.0.0-rc1
  ree-1.8.6-2009.06
  ree-1.8.7-2009.09
  ree-1.8.7-2009.10
  ree-1.8.7-2010.01
  ree-1.8.7-2010.02
  ree-1.8.7-2011.03
  ree-1.8.7-2011.12
  ree-1.8.7-2012.01
  ree-1.8.7-2012.02
  topaz-dev

バージョン表示までは何とかなってるっぽいです。(もし'rbenv: no such command `install''がでるようでしたら"brew install ruby-build"を実行です。)

んじゃ、必要なバージョンをインストールしてみましょう。切り替えも試したいので、ここはとりあえず、1.9を突っ込んでみます。

XXXX-Mac-mini:~ XXXX$ rbenv install 1.9.3-p0

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 Homebrew's apple-gcc42 package with this
command: brew tap homebrew/dupes ; brew install apple-gcc42

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

うわ! やっぱ怒られた。なんか、めんどくせー事いってるな。1.9.3-p125より古いものも、場合によっては使うだろうからオフィシャルGCCコンパイラが必要みたい。TO FIX THE PROBLEMを一つずつトライ。
このコマンド結構時間がかかりました。

XXXX-Mac-mini:~ XXX$ brew tap homebrew/dupes ; brew install apple-gcc42
Cloning into '/usr/local/Library/Taps/homebrew-dupes'...
remote: Counting objects: 874, done.
remote: Compressing objects: 100% (474/474), done.
remote: Total 874 (delta 487), reused 774 (delta 400)
Receiving objects: 100% (874/874), 150.15 KiB | 90 KiB/s, done.
Resolving deltas: 100% (487/487), done.
Tapped 41 formula
==> Downloading http://r.research.att.com/tools/gcc-42-5666.3-darwin11.pkg
######################################################################## 100.0%
==> Caveats
NOTE:
This formula provides components that were removed from XCode in the 4.2
release. There is no reason to install this formula if you are using a
version of XCode prior to 4.2.

This formula contains compilers built from Apple's GCC sources, build
5666.3, available from:

  http://opensource.apple.com/tarballs/gcc

All compilers have a `-4.2` suffix. A GFortran compiler is also included.
==> Summary
🍺  /usr/local/Cellar/apple-gcc42/4.2.1-5666.3: 104 files, 75M, built in 7.6 minutes

'There is no reason to install'とか、インストールする前に表示しないとアカン気がしますね。さ、後半のXcode comandline toolがどうのこうの、は一切無視してここでもう一度トライ! 結論からいうとうまくいきました。コンパイルするので結構な時間がかかりますけど。

XXXX-Mac-mini:~ XXXX$ rbenv install 1.9.3-p0
Downloading yaml-0.1.4.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf90508c29852361d01b
Installing yaml-0.1.4...
Installed yaml-0.1.4 to /Users/XXXX/.rbenv/versions/1.9.3-p0

Downloading ruby-1.9.3-p0.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/8e2fef56185cfbaf29d0c8329fc77c05
Installing ruby-1.9.3-p0...
Installed ruby-1.9.3-p0 to /Users/XXXX/.rbenv/versions/1.9.3-p0

Downloading rubygems-1.8.23.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/178b0ebae78dbb46963c51ad29bb6bd9
Installing rubygems-1.8.23...
Installed rubygems-1.8.23 to /Users/XXXX/.rbenv/versions/1.9.3-p0

"$ rbenv rehash"でshimsを更新してから、バージョンを確認。

XXXX-Mac-mini:~ XXXX$ rbenv versions
* system (set by /Users/XXXX/.rbenv/version)
  1.9.3-p0

いってそうです。globalコマンドでシステム全体のバージョンを切り替えてみましょう。

XXXX-Mac-mini:~ XXXX$ rbenv global 1.9.3-p0
XXXX-Mac-mini:~ XXXX$ ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin12.3.0]

ちゃんといってます。では、本題の2.0をインストール。

XXXX-Mac-mini:~ XXXX$ ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin12.3.0]
XXXX-Mac-mini:~ XXXX$ rbenv install 2.0.0-p0
Downloading openssl-1.0.1e.tar.gz...
-> https://www.openssl.org/source/openssl-1.0.1e.tar.gz
Installing openssl-1.0.1e...
Installed openssl-1.0.1e to /Users/XXXX/.rbenv/versions/2.0.0-p0

Downloading ruby-2.0.0-p0.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz
Installing ruby-2.0.0-p0...
Installed ruby-2.0.0-p0 to /Users/XXXX/.rbenv/versions/2.0.0-p0

バージョン確認&設定更新。

XXXX-Mac-mini:~ XXXX$ rbenv versions
  system
* 1.9.3-p0 (set by /Users/XXXX/.rbenv/version)
  2.0.0-p0
XXXX-Mac-mini:~ XXXX$ rbenv rehash

システム全体のバージョンを切り替え。

XXXX-Mac-mini:~ XXXX$ rbenv global 2.0.0-p0
XXXX-Mac-mini:~ XXXX$ ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12.3.0]

という結果でした。

なお、rbenvは特定フォルダのみでバージョンを有効にするlocalコマンドもあるようです。

$ rbenv local 1.8.7-p371

これは面白い仕様ですね。ただ、ミスを誘発しかねない気もしますけど。


しかし、結局環境設定にそれなりの時間がかかってしまう。なんかな〜。こういうの、今時っぽくないですね。