MacPorts で無限ループ?

MacPorts の更新しようと思って、sync して upgrade しようとしたら……

$ sudo port sync
$ sudo port -fucv upgrade outdated

これでたくさんコンパイルを始めたのでしばらく放置してみたけど、6時間くらいかけてもまだなにか一生懸命コンパイルしてるのでなにしてるかのぞいてみたら、ただひたすら glib2 を何度も繰り返しコンパイルしてインストールしていた orz。

MacPorts の依存関係の解決はかなりプアで、既に最新版がインストールされていても何故か再インストールしようとするし(この時点でかなりダメだ)、さらに別の依存パッケージ経由で同じパッケージに依存している時に、それを複数回再コンパイルしようとする(つまり、module1 -> libaaa -> libccc と module1 -> libbbb -> libccc というような菱形の依存関係があったとしたら、libccc は2回再コンパイルされる。しかも libccc は既に最新版がインストール済みと判っているのに……)。しかしまさか無限ループするとは思わなかった。

しょうがないのでいったん止めて、手動で依存関係に変更がないか確認して依存関係を無視するオプション(-n)つきでインストールした。

$ sudo port -funv upgrade outdated

どうも MacPorts にはいつも困らされている気がする。もちろん貴重なパッケージ管理システムだけども。