MacPorts と Homebrew の違いについて

Mac のパッケージ管理システムとして最近は Homebrew の方がメジャーなようですが、MacPorts や Fink という選択肢もあります。 個人的な感覚としては少し前までは MacPorts がデファクトスタンダードだったような気がします。その後 Homebrew が出てきてデファクトの座を追われたような印象を持っていたのですが、両者の間に(Fink はおいておいて)どのような違いがあるのか気になったので少し調べてみました。

パッケージのインストール先

  • Homebrew は /usr/local にインストールする
  • MacPorts は /opt/local にインストールする

インストールに必要なユーザー権限

  • Homebrew は一般ユーザーの権限でインストールする
  • MacPorts は管理者の権限でインストールするため、sudo が必要

インストールするパッケージについて

  • Homebrew は必要なソフトウェアのうち OSX に元から入っているものがあればそれを使う
  • MacPorts は必要なソフトウェアは全部新たにインストールするため、環境のセットアップに時間がかかる

その他

Python で SciPy、Numpy、NLTK を使おうとして Homebrew でインストールしようとしたらうまくいかなかった、という話もありました(Ars Technica のフォーラムにて)。

Homebrew がパッケージをインストールする /usr/local は Mac でインストールする他のアプリケーション(GUI のアプリとか)のプログラムが置かれることがあるそうです。その点 /opt/local は MacPorts がインストールするものだけしかそこにはないため、一旦インストールしたけれど環境を作り直したいときなどにディレクトリごとごっそり削除jすることができて管理がしやすいという意見もありました。

以前は MacPorts はインストールするパッケージをすべてビルドしていたらしく時間がかかり、そのためもともと入っているソフトウェアをそのまま利用する Homebrew の方がビルドするパッケージの数が少なくなるので相対的にセットアップに必要な時間が短くて済み、より好まれるという一面もあったようです。

しかし、渋川さんのエントリによると 2012 年の時点でも MacPorts はビルド済みのバイナリをインストールするようになっていたようなので今は所要時間の問題は解決されているような印象を受けました。Homebrew の方はどういう感じなんでしょうか。

Homebrew の方が高機能?

最近は Homebrew で GUI のアプリケーションをインストールする仕組みもあるようです。これはかなり便利なのでは。MacPorts には同じようなものはないのかな。