MacPorts で大惨事

`port upgrade outdated`したら、しっちゃかめっちゃか。

何か(多分 gettext)のアップデートで、libintl の名称変更(アップデート)があり、libintl に依存したコマンド類が軒並み全滅しました。それだけなら、まだ救いはあった気がしますが、coreutils をインストールしていたので、大惨事です。

MacPorts を使った処理の中で、当然ながらいろいろなコマンドが実行されます。rm なり、chmod なり。/opt/local/bin を優先していたため、それらすべて、実行できなくなってしまいました。

で、処理が非常に中途半端な状態で終わり、「フェイルセーフ?なにそれ?おいしいの?」といった状況に追い込まれました。

パッケージを強制的にアップグレードなりインストールなりアクティベートなりしようとしても、「そんなパッケージはレジストリにないぜっ!」と反抗期を迎えます。

紆余曲折を経て、"/opt/local/var/macports/receipts/(パッケージ名)/(バージョン番号)"に本来削除されているはずのものが居座り続けている事が原因である事が分かりました。問題のバージョンのディレクトリを削除する事で、エラーメッセージも消え、無事にアップグレード作業を続ける事ができる様になりました。

インストール済みパッケージで、依存 dylib が見つからない事によるエラーが発生した場合は、その dylib に依存したパッケージを一通り強制アップグレードなりして、依存する dylib を参照し直す(?)様にしたら問題が解決するはずです。きっと。
libintl3.dylib に関するメッセージが表示され、port のビルド・アップグレード・実行ができない

後始末として、coreutils を削除して、OSX 組み込みのものを使う様にしました。元々、ls に色をつけたかっただけなので、`ls -G`と"CLICOLOR"および"LSCOLORS"で十分でした。その他のコマンドに関しては、違いを把握していないので、今後の状況次第です。

どうも、MacPorts は自分にとって鬼門な気がして仕方ありません。


"/opt/local/var/macports/receipts/(パッケージ名)/(バージョン番号)" に関して、公式ドキュメントなりを調べたわけではないので、万が一お試しになる方は、自己責任でよろしくお願いします。MacPorts のレジストリを扱う API があるとかないとか、という話がどこかにあった気がします…。それを使ってどうこうするのか、できるのかは知りません。

プロフィール

このブログ記事について

このページは、koshigoeが2009年1月19日 22:44に書いたブログ記事です。

ひとつ前のブログ記事は「自分は世の中の誰よりもプログラムが書けないだろうと思った」です。

次のブログ記事は「MacPorts のインストール済みパッケージ一覧のバックアップとか」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。