Homebrewがすごい

少し前から、おもいつきでHomebrewを使っている。

Homebrewというのは、MacOSX用のパッケージ管理システムの一つだ。

パッケージというのは、Unixのソフトウェア管理の考え方だ。

Unixシステムでは、伝統的に大部分のソフトウェアがソースコードで配布されている。

そしてソフトウェアは細かくなっていて、相互に依存関係がある。

依存関係とは、特定のソフトウェアを動作させるために、他のライブラリ・ソフトウェアが必要になったりする、ということだ。

パッケージ管理システムは、この依存関係を適切に処理する。必要なソフトウェアを指定すると、その依存関係を処理して、必要なソフトウェアを自動でインストールしてくれる。

MacOSX用のパッケージ管理システムで従来から知られているものには、MacPortsとFinkがある。

MacPortsはBSDでのパッケージ管理の仕組みをMacOSXに導入したものだ。MacOSXはもともとBSDベース(より正確には、MacOSXの前身であるNextシステムがBSDベース)だからだ。

Finkは、Linuxのパッケージ管理の仕組みをMacOSXに応用したものだ。

従来のMacOSXのパッケージシステムは、パッケージ間の依存関係を解決するための方法として、基本的にMacOSX上の各種のソフトウェアとは独立してパッケージ管理するというポリシーだった。たとえばあるソフトウェアがPythonに依存する場合、MacOSX上のもともと含まれているではなく新規にPythonをインストールしてしまう。インストール先はMacPortsであれば、 /opt/local という独自のディレクトリだ。Pythonのコンパイルオプションという観点からはこれは綺麗なのだが、実際上、微妙に異なるバイナリが2箇所に入ってしまうことになる。

これは、ちょっとしたスクリプトを書く際に、これは意外と面倒なことをおこす。

Homebrewはこのような問題を、できるだけ既存のバイナリは活用することと、 /usr/local/ というおなじみのディレクトリにインストールするという方針になっている。これは非常にクリーンで、あたりまえの方法だ。

また、Formula(インスール手順を記述したスクリプト)がシンプルなので、ちょっとUnixの環境がわかればすぐに書けるようになっている。

とにもかくにも、シンプルに、素直に設計されている。

まだまだ、管理されているパッケージは少ないが、ぜひつかってみてほしい。

とりあえず、僕は完全に移行した。