DarwinPorts はなかなか良いのだ
Gentoo for Mac OS X の不安要素
先週、iBook で UNIX 環境を構築するために Portage システムをもつ Gentoo for Mac OS X を導入した。Gentoo Linux に慣れていることもあって、特にトラブルもなくなかなか快適な環境だと思った。しかしこのシステムでいくつか不安を覚えてしまった。
Mac OS X の利用するディレクトリにバイナリが混在してしまう点と、Gentoo Linux と Portage Tree を共用する点。
前者の対策として、ファイルが競合する場合に上書きしないように設定されているので問題は起きにくいと思うのだが、不安といえば不安。何かあった場合も Portage でインストールしたパッケージを分離することも難しい。
後者は、Gentoo for Mac OS X のメリットとして考えられるのだが、実は、それは逆に言えば Mac OS X 独自の部分への対応が困難なのではないかという懸念がある。Mac OS X は既に基本的な UNIX のライブラリは持ち合わせているし、X11 も Apple から提供されている。また、数値計算で便利な vecLib.framework といったライブラリも持っている。こういった Mac OS X とうまく共存できるようなパッケージ管理システムが望ましい。Gentoo for Mac OS X も、ある程度そこら辺は考えら得ているようだが、Gentoo Linux の Portage Tree と同期をとる以上、整合性の面などで難しい面も出てきてしまうのではないかと思う。
もちろん Gentoo for Mac OS X はまだ若いシステムだろうし、Gentoo Linux コミュニティのもつ力は凄いのでこういった不安要素は時間の問題かもしれないが。
DarwinPorts
せっかくなので、今のうちに他のシステムも試してみようと思い、DarwinPorts を使ってみることにした。DarwinPorts は Mac OS X におけるパッケージ管理を主眼においているので、Mac OS X との親和性は良いと考えられる。インストール先も /opt がデフォルト(変更可能)であるからいざというときは簡単に使用を停止可能だ。
残念ながら日本語による資料はほとんどない。ただしオフィシャルサイトのドキュメントは非常に丁寧に書かれており、導入の手順も非常にシンプルなのですぐに環境が構築できた。
DarwinPorts は FreeBSD に代表される ports システムをもとにしている。ports は Portage のもとにもなったシステムでよく出来たシステムだと思うのだが、Makefile が分かりづらいといった話もよく聞く。DarwinPorts はこの点は考慮されているのか、それぞれのパッケージの管理には Tcl を使っている(Portage は Python + bash)。Tcl なんて知らないよ、と思ったんだが、ざっと見た感じ分かりやすそうだったので、自分でパッケージを追加したいときも手軽に出来そうだった。
Mac OS X との親和性も非常に良さそうだ。依存するライブラリなどは、ちゃんと Mac OS X 標準のライブラリを使えるようになっている。X11 ももちろん Apple のライブラリを使うようになっている。また、インストールのさいに .pkg (.mpkg) といったインストーラ形式のパッケージングも選択できるようだ。この .pkg (.mpkg) 形式はインストールは簡単でもアンインストールが困難という問題があるのだが、アンインストーラを開発中との記述もあった。
TeXShop や Aquaterm といった Mac OS X 向けのアプリケーションもいくつか port に入っている。こういった GUI アプリケーションは通常 .app パッケージ形式で /Applications フォルダなどにインストールするのだが、DarwinPorts でインストールした場合、/Applications/Darwinports フォルダに .app 形式でインストールされる。これは便利。
Portage システムの面白さに、コンパイルのオプション設定が柔軟に出来る点があるのだが、これは DarwinPorts では variants というものを使用するらしい。まだここら辺の扱いはよく分からない。
雑感
DarwinPorts 気に入った◎ 僕としては Mac OS X のパッケージ管理システムの中では一番使いやすい。大きな難点として、日本語情報が少ない、パッケージ数が Fink より少ない(いずれ Gentoo for Mac OS X にも負けると思う)あたりか。