osxにてrbenvを使ってインストールしたrubyのアーキテクチャーがまちまちに、、、

気づくのに結構時間がかかった、、、、、。

shell$ rbenv shell 1.9.2-p180
shell$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.8.0]

shell$ rbenv shell 1.9.2-p290
shell$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i386-darwin10.8.0]

shell$ rbenv shell 1.9.3-p0
shell$ ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [i386-darwin10.8.0]

私の環境の場合(SnowLeopard) rbenv install RUBY で各バージョンをインストールした所、1.9.2p180のみx86_64でインストールされていた。このバージョンのみrequie_gccの設定が入っていないのがその理由っぽい(xcodeコンパイルするのかな?)。こいつのおかげで色々面倒になる。できればそろえたい。本当はx86_64でそろえるのが良いのかな?とも思ったんだけど色々な手間を考えてi386でそろえる事にした(前のエントリーでもmysqli386で入れてみたし)。

shell$ rm -rf ~/.rbenv/versions/1.9.2-p180
shell$ export CONFIGURE_OPTS="--with-arch=i386"
shell$ ruby-build 1.9.2-p180 ~/.rbenv/versions/1.9.2-p180 --with-gcc

ちなみに--with-gccオプションが本当に必要なのかは知らない


追記
以下な感じのエラーが出る場合は(1.8.7をインストールする際に発現)

Last 10 log lines:
ld: warning: directory not found for option '-L/Users/webadmin/.rbenv/versions/1.8.7-p352/lib'
ld: warning: ignoring file cparse.o, file was built for i386 which is not the architecture being linked (x86_64)
compiling readline
/usr/bin/gcc-4.0 -I. -I../.. -I../../. -I../.././ext/readline -DHAVE_READLINE_READLINE_H -DHAVE_READLINE_HISTORY_H -DHAVE_RL_FILENAME_COMPLETION_FUNCTION -DHAVE_RL_COMPLETION_MATCHES -DHAVE_RL_DEPREP_TERM_FUNCTION -DHAVE_RL_COMPLETION_APPEND_CHARACTER -DHAVE_RL_BASIC_WORD_BREAK_CHARACTERS -DHAVE_RL_COMPLETER_WORD_BREAK_CHARACTERS -DHAVE_RL_BASIC_QUOTE_CHARACTERS -DHAVE_RL_COMPLETER_QUOTE_CHARACTERS -DHAVE_RL_FILENAME_QUOTE_CHARACTERS -DHAVE_RL_ATTEMPTED_COMPLETION_OVER -DHAVE_RL_LIBRARY_VERSION -DHAVE_RL_EVENT_HOOK -DHAVE_RL_CLEANUP_AFTER_SIGNAL -DHAVE_REPLACE_HISTORY_ENTRY -DHAVE_REMOVE_HISTORY -I'/Users/webadmin/.rbenv/versions/1.8.7-p352/include'  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE  -I'/Users/webadmin/.rbenv/versions/1.8.7-p352/include'  -fno-common -g -O2 -pipe -fno-common   -c readline.c
readline.c: In function ‘username_completion_proc_call’:
readline.c:730: error: ‘username_completion_function’ undeclared (first use in this function)
readline.c:730: error: (Each undeclared identifier is reported only once
readline.c:730: error: for each function it appears in.)
make[1]: *** [readline.o] Error 1
make: *** [all] Error 1

export CONFIGURE_OPTS="--with-arch=i386"
↓↓↓↓↓↓↓
export CONFIGURE_OPTS="--with-arch=i386 --with-readline-dir=/usr/local/Cellar/readline/6.2.1" CFLAGS="-arch i386" LDFLAGS="-arch i386"

に変えてトライしてみて(readlineはHomebrewでインストールした場合ね)