趣味のコーディング環境をVMのUbuntuからMac OS Xに移動するにあたって、考えどころはパッケージ管理。VMを介さずともPOSIXネイティブコードが動く環境を手に入れた代償に、Ubuntuの「aptだけでほぼ完結」という、メンテナたちの不断の努力の成果を手放さなければならないのだ。Mac OSでのアプリケーション配布はいろいろ形式があるようだ:
- *.pkg
- いわゆるインストーラ。でもアンインストールの機能はない。
/Library/Receipts
配下にインストールログっぽい証跡が残るので、*.dom
をlsdom
コマンドに通すと削除すべきファイルは分かるようになっている。でもパッケージによっては何も残してくれない。 - *.mpkg
- *.pkgを束ねたものっぽい。メタパッケージみたいなものか。
- *.app
- アプリケーションバンドル。実体はディレクトリで、その下にバイナリとかリソースファイルが転がってる。
/Applications
にそのままコピーするとインストール完了。アンインストールも基本は削除だけっぽいが、ものによっては/Library
とか~/Library
の配下にファイルを残しているので、それも消さないとだめっぽい。 - *.dmg
- ディスクイメージ。実行するとマウントされる。中をみるとたいてい*.m?pkgか*.appが入っている。
なんとどれもアンインストール機構を備えていない。この辺は強く改善を要望したいところ。別にインストール厨じゃなくても、パッケージのバージョンアップとかは普通に必要になるし、この辺は確実にできる仕組みが備わってるのが「現代的OS」じゃなかろうか。
で、ことPOSIXなアプリケーションであれば、アンインストール機構まできちんと備えたパッケージングシステムがサードパーティでメンテナンスされている:
こういうのは、メンテナとパッケージの数が多い方が強いので、さしあたりMacPortsを選択。多勢が決したら乗り換えるかもしれないけど。MacPortsはLeopardなら先にXcodeを入れて、X11をXquartsの配布でアップデートしろと言ってるので、その通りやった。この辺の手順は
検索すればいつでも出てくるので書かない。
ちょっと困ったのが、Pythonのライブラリ。MacPortsだと
/opt/local
配下にインストールされるので、OSに標準でついてくるPythonから読ませるためにはPYTHONPATHを変更しなきゃいけないし、2.5向けのパッケージで致命的に抜けているのがあったり、結局tracは開発版を使うことになるので、どこかでPython-eggとかで手で入れなきゃいけないのが出てくるし、そうするとportで完全にアンインストールできなくなるし。中途半端に一元化するのはあとあと面倒ということで、Pythonは当面OS付属のを使うことにする。
MacPortsのメンテナンスが強化されるか、自分がメンテナンスに乗り出すかすれば、Portsを使うことにすると思うんだけど。
標準で入っているPythonは2.5.1で、
/System/Library/Frameworks/Python.framework/Versions/2.5
へのシンボリックリンクになっている。setuptoolsとか、Subversionバインディングとかは、件のディレクトリに入ってる状態。
easy_install
すればたいていのものは揃いそう。インストール先は件のディレクトリでも
/usr/lib/python2.5/site-packages
でもなく、
/Library/Python/2.5/site-packages
になる。ここはPython-eggs専用らしい。またコンソールスクリプトは
/usr/local/bin
にインストールされる。システムにビルトインされているのと、自分が入れたのが明確に分離されるというのも、標準のPythonで何とかなると思った理由だったり。うーむ。
python setup.py bdist_mpkg
でせっかくパッケージが作れるのに、アンインストール機能がパッケージャについてないのは残念だなぁ。
とりあえず、easy_installで入れたパッケージ達:
- Mercurial
- hgsvn
- Pygments
- pytz
- Genshi -- trunkから
- Trac -- trunkから