読者です 読者をやめる 読者になる 読者になる

Snow Leopard + ruby + macports エラー

Mac MacPorts Ruby

ここ最近、まつもとゆきひろコードの世界 を読んでる。
それに載ってるサンプルを実践しようと tk 付き ruby のインストールを試みたらつまずいたのでメモ。

インストール

普通に MacPorts を使ってインストールを試みたところ、

  
$ sudo port install ruby +thread_hooks +mactk  
...  
/usr/bin/gcc-4.2 -dynamic -bundle -undefined suppress -flat_namespace -o ../../.ext/i686-darwin10/tcltklib.bundle stubs.o tcltklib.o -L. -L../.. -L. -L/opt/local/lib -framework Tk -framework Tcl  -arch x86_64  -lruby -lm -ldl  -lpthread -ldl -lobjc    
ld: in /opt/local/lib/libsqlite3.dylib, file is not of required architecture  
collect2: ld returned 1 exit status  
make[1]: *** [../../.ext/i686-darwin10/tcltklib.bundle] Error 1  
make: *** [all] Error 1  

失敗。
-arch x86_64 や file is not of required architecture があやしい。
アーキテクチャがどうのこうの。
調べたら標準の OS 10.6 は dynamic libraries が 64bit で動作しているんだとか。
Snow Leopard にアップデートしたことが原因っぽい。

いったん・・・

MacPorts でインストールしたライブラリなどを
全部アンインストール&リビルドすればいけるようだったので、

  
$ port installed  
$ sudo port -f uninstall installed  
...  
$ port installed  
No ports are installed.  

何をインストールしてたか確認してから、キレイに全部アンインストール。

もう一度インストール

もう一度 ruby を最初からインストール。

  
$ sudo port install ruby +thread_hooks +mactk  
...  
--->  Installing ruby @1.8.7-p174_0+darwin+mactk+thread_hooks  
--->  Activating ruby @1.8.7-p174_0+darwin+mactk+thread_hooks  
--->  Cleaning ruby  

無事成功した。
Leopard からの互換性を保ちつつ進化したように感じた Snow Leopard だったけど、
意外と対応してないアプリだとかしばらく弊害あるのかね。

参考

Snow Leopardにアップデートした後に気をつけること 主にMacPortsとrubygemsについて