新しく来た開発マシン(OSX Mountain Lionになった)に開発環境を構築しようとしたらGemfileに指定されているRMagickのバージョン2.13.1に対応するImageMagick 6.7.7-6がなぜかHomebrewでエラーとなり入らなかったので、良い機会だと(これを書いた当時)最新のRMagick 2.13.2、ImageMagick 6.8.6-3に変えてみました。
新開発機ではテストは綺麗に通って問題なく動いたのでステージング環境でも同じバージョンのImageMagickを更新してデプロイしてみたところJenkinsさんが定期実行しているテストがコケまくり( ゚д゚)
あろうことかすべてのテストがこけている。RMagickがImageMagickのライブラリが見つけられず起動すらしていない有り様でした。
どうやらOSXの環境では最新の組み合わせで実行可能なようですが、まだすべてのプラットフォームで動くわけではなさそう。
時期尚早ということで以前から使っているバージョンの組み合わせに戻して、新開発機の方を対応させることにしました。新開発機にImageMagick 6.7.7-6をどうにかして入れられればひとまずやり過ごせる。
なぜ入らなかったのか確かめるためにHomebrewのコマンド出力をverboseにして実行します。
この辺りは少し前に書いたHomebrewで複数のバージョンのパッケージをインストールして使い分けるを参照していただけると何をやっているかわかると思います。
$ cd $(brew --prefix) $ brew unlink imagemagick $ brew versions imagemagick 6.8.6-3 git checkout 870d5e9 /usr/local/Library/Formula/imagemagick.rb 6.8.0-10 git checkout 321b293 /usr/local/Library/Formula/imagemagick.rb 6.7.7-6 git checkout 7d951fb /usr/local/Library/Formula/imagemagick.rb : $ git checkout 7d951fb /usr/local/Library/Formula/imagemagick.rb $ brew -v install imagemagick :
しばらく待ってるとエラーで終了。
: brew: superenv removed: -L/usr/X11/lib -O2 brew: superenv removed: -g -O2 -Wall ld: library not found for -lXext clang: error: linker command failed with exit code 1 (use -v to see invocation) make[1]: *** [magick/libMagickCore.la] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [install] Error 2 :
どやらX11のライブラリlibXextが見つからないようです。ただ、/usr/X11/libを確認してもちゃんと存在します。
ここで、少し前の行に表示されている見慣れないbrew: superenv removed...
という行に気付きました。
homebrew superenv
でググってみたところ、こちらのQiitaの記事「Homebrew の superenv」を発見。
実行時の環境変数
PATH
は無視され、Homebrew によって再構築される
...
コマンド実行時に--env=std
オプションをつけることでsuperenv
を回避可能
...
ニッチなツールをインストールするために自分で Formula を書くとか、だいぶ昔に書かれた野良 Formula を使うときとか、そういう時に影響がでそうな話。
これじゃないっすか〜
$ brew install imagemagick --env=std
するっと入ったヽ(´ー`)ノ
コメントする