きりかノート 3冊め

おあそびプログラミング

MacPorts で evolution-data-server が原因で gnome のインストールに失敗するのをどうにかする

MacPorts では、libiconv を最初にインストールしとけよ!というお話。

最近 Rabbit を使っていないのは Keynote の修業ってのもあるんだけど、MacBookruby-gnome 環境が構築できなかったからでもあったりする。(PowerBook はだいじょうぶ)インストール中に evolution-data-server が libiconv のシンボル衝突でこけるっていう macports ticket#10940 と同じ現象にはまっていた。

依存プログラムの中に、/usr/lib/libiconv と /opt/local/lib/libiconv にリンクしているものがあって、evolution-data-server までくるとそいつらが矛盾してしまうようだ。じゃ、犯人探しだ。

 % for lib in `find /opt/local/lib -name \*.dylib -type f`; do otool -L ${lib}; done

この出力結果で /usr/lib/libiconv にリンクしているやつを port deps でたどって、起点になっているものを探す(かなり地味な作業。自動化できると思うけどそれもおっくう)。で、自分の環境では、以下の2つが原因であることがわかった。

  • libbonobo
  • popt

で、こいつらを構築しなおして、依存プログラムも再コンパイルすれば ok。なはずなのだけど、popt が以前としてアウト。仕方ないので、port edit で popt の Portfile に以下の 1行を追加。

 configure.env   LDFLAGS="-L${prefix}/lib" CFLAGS="-I${prefix}/include"

で、あとは port -f uninstall で /usr/lib/libiconv にリンクしているものを削除して、evolution-data-server を port install で今度こそ完了。と思ったら、今度は #9162 の後半にある _POA_ のシンボルが衝突。うへえ。

(2007.02.04 追記)1.8.3 の Portfile でインストールできるようになったもよう。