Homebrew と Macports を強制的に共存させますか?

Homebrew と Macports を強制的に共存させますか?

私は何年も MacOSX システムを使用しており、この間、Macports 経由でかなりの数のパッケージをインストールしました。

今、Homebrew を試してみたいと思っていますが、ここで読んだことや他の場所で読んだことから、Homebrew と Macports のデフォルトのインストールは簡単には共存できないことは明らかです。

私の MacOSX での日々の作業の多くは、Macports でインストールされたさまざまなユーティリティの使用を伴うため、Macports をアンインストールすることは現実的な選択肢ではありません。さらに、私が独自に開発したユーティリティの多くは、Macports と相互依存しています。最後に、私が日常的に使用する多くの実行ファイルと共有ライブラリは現在 /usr/local にインストールされており、そのディレクトリ ツリーを消去すると、私のシステムはすぐに使用できなくなります。

そこで質問です。Macports と共存できる Homebrew をインストールする別の方法を思いついた人はいますか? 具体的には、Homebrew が /usr/local ではなく /usr/local/homebrew などのディレクトリ ツリーを利用する方法を思いついた人はいますか?

ご提案やドキュメントへのご指摘がありましたら、よろしくお願いいたします。

答え1

Homebrew に独自のディレクトリを使用するように指示し、それをパスに追加することができます。同じ目的ではありませんが、インストール ガイドからの次の抜粋では次のように説明されています。

複数のインストール

tarball を解凍した場所に Homebrew インストールを作成します。どの brew コマンドが呼び出されても、パッケージがインストールされる場所です。これは、/usr/local にシステム ライブラリ セットを配置し、~/homebrew に開発用の調整されたフォーミュラを配置するなど、必要に応じて使用できます。

ソース:https://github.com/mxcl/homebrew/wiki/インストール

答え2

これらを強制的に共存させる方法は、MacPorts をデフォルトでは表示しないようにし、MacPorts プログラムを呼び出すときに表示できるようにすることです。つまり、次のようなスクリプトで MacPorts プログラムをラップします。

if [ "$#" -le 0 ]; then
  echo "Usage: $0 command [arg1, arg2, ...]" >&2
  exit 1
fi
if [[ -z $MACPORTS_PREFIX ]]; then
  MACPORTS_PREFIX='/opt/local'
fi
export PATH="$MACPORTS_PREFIX/bin:$MACPORTS_PREFIX/sbin:$PATH"
export DYLD_LIBRARY_PATH="$MACPORTS_PREFIX/lib:$DYLD_LIBRARY_PATH"
export CPATH="$MACPORTS_PREFIX/include:$CPATH"
command=$1
shift
exec $command $* 

このスクリプトに という名前を付けるとmacports.sh、 によるラッピングが可能になりmacports.sh macports_bin、 は wrapped としてmacports.sh port実行されますport

便宜上、macports.sh somethingコマンド自体と同じ名前のスクリプトをいくつか作成し、 、 など、HOME ディレクトリに配置すること~/bin~/.local/binできます。

私は書いたブログ投稿これについては 1 か月前に書きました。詳細を知りたい場合は読んでみてください。

関連情報