鱒身(Masu_mi)のブログ

知った事をメモする場所。

ruby のupdateをしたらvimが動かなくなった

brewruby のバージョンを上げた。 何も考えずにコメントに出てきた通りに何かしてしまった。 でvim 開いたら下な感じ。

$ vim
dyld: Library not loaded: /usr/local/lib/libruby.2.0.0.dylib
  Referenced from: /usr/local/bin/vim
  Reason: image not found
Trace/BPT trap: 5
$ uname -a
Darwin air-trout.local 13.2.0 Darwin Kernel Version 13.2.0: Thu Apr 17 23:03:13 PDT 2014; root:xnu-2422.100.13~1/RELEASE_X86_64 x86_64
$ sw_vers
[No write since last change]
ProductName:    Mac OS X
ProductVersion: 10.9.3
BuildVersion:   13D65

メッセージ的に /usr/local/lib//libruby.2.0.0.dylib が無いだけ。 似たファイル見つけた結果、 brew にあるけどリンクが消えているだけと判断した。 バージョン変えてリンク切れってだけなので作り解決した。

$ ls -la /usr/local/lib/libruby.2.1.0.dylib
lrwxr-xr-x  1 masumi  admin  46 Jun 22 00:42 /usr/local/lib/libruby.2.1.0.dylib -> ../Cellar/ruby/2.1.2_1/lib/libruby.2.1.0.dylib
$ ln -s /usr/local/Cellar/ruby/2.0.0-p0/lib/*.dylib /usr/local/lib/
ln: /usr/local/lib//libruby.dylib: File exists

ついでな話しだけれど何か動かなくてリンクが駄目そうな時にOSXでは以下のコマンドが使える。

$ otool -L `which vim`
/usr/local/bin/vim:
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
        /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
        /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
        /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 20.0.0)
        /usr/local/lib/libruby.2.0.0.dylib (compatibility version 2.0.0, current version 2.0.0)
        /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
        /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.14.0)
        /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 59.0.0)
        /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1265.19.0)
        /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1056.13.0)

ldd な感じで、ときどき頼る。 ottol はオプションでシンボリックテーブル見たりテキスト領域読めたりとバイナリ解析でお世話になるであろうツールです。

バイナリアンかっこいい!!