Macのパッケージマネージャーとしては「MacPorts」と「Homebrew」が有名です。
最近はHomebrewの人気が高まってきていますが、古いmacOSのサポートの手厚さや、安定性の高さなどからMacPortsを愛用している方も多いと思います。
今回はMacPortsを以前から使用しているものの、Homebrewも使ってみたいという方のために、両者を混在して使用する方法を説明したいと思います。
MacPortsとHomebrewを共存
MacPortsとHomebrewを共存させるのは公式にはどちらのパッケージマネージャーからも推薦されていません。特にHomebrewは「/usr/local」というUNIXシステムに共通のディレクトリをデフォルトのインストール先として使用するため、混在させると危険性が高いのです。
そこで今回はHomebrewを「~/homebrew」にインストールし「/usr/local」を避けることにします。なおかつHomebrewを使用するときだけ「~/homebrew/bin/」にパスを通し、MacPortsとHomebrewのコマンドが混在しないように設定します。
これにはHomebrewをインストールする際、ホームディレクトリで以下のコマンドを実行します。
mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
これで「~/homebrew/bin」以下に「brew」コマンドがインストール されました。しかしこのままだとパスが通っていないのでコマンドを実行することができます。次のような関数を準備してパスを通すことにします。.zshrcや.bashrcを以下のように設定します。
homebrew() { export PATH="$HOME/homebrew/bin:/bin:/usr/bin" } export PATH="/opt/local/bin:$PATH" # 普段はMacPorts優先
これで普段は/opt/local/binにインストールされたMacPortsのコマンドを使用しながらも、「homebrew」を打ち込めばbrewコマンドを実行できるようになります。
$ homebrew $ brew --prefix /Users/sora/homebrew
あとは通常通り「brew install」でHomebrewのパッケージをインストールすることができます。
brew install tmux
例えばtmuxをインストールすると、実行ファイルのほか、設定ファイルのサンプルなども「~/homebrew」以下に正しくインストールされていることがわかります。
なおPATHを元に戻す関数は準備していませんが、シェルを立ち上げ直せば最初の環境に戻るので実用的な面では問題ないと思います。
まとめ
HomebrewとMacPortsを共存させる方法を説明しました。今回はMacPortsをメインに、Homebrewをサブにする設定ですが、逆の設定も可能だと思います。
ただしHomebrewは「/usr/local」がデフォルトで、それ以外の場所にインストールした場合、パッケージによっては正しく動作しない場合があると公式サイトに注意が掲載されています。
2つのパッケージ管理システムを混在させる場合、動作原理を十分理解した上で実行することをおすすめします。