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の環境がわかればすぐに書けるようになっている。
とにもかくにも、シンプルに、素直に設計されている。
まだまだ、管理されているパッケージは少ないが、ぜひつかってみてほしい。
とりあえず、僕は完全に移行した。