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


10

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

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

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

だから私の質問はこれです:Macportsと共存できるHomebrewをインストールする別の方法を誰かが考え出しましたか?具体的には、Homebrewに/ usr / localの代わりに/ usr / local / homebrewなどのディレクトリツリーを利用させる方法を誰かが理解しましたか?

提案やドキュメントへのポインタを事前に感謝します。


試してみたい場合は、OS X仮想マシンをセットアップしてみませんか?これはAppleのOS X 10.7のTOSに反するものではなく、必要なものは何でも試すことができます。両方を並行して使用するのは一種の作業ですが、問題が発生し始めても驚くことはありません...
Daniel Beck

どうもありがとうございましたが、何らかの方法がある場合は、両方のパッケージマネージャーを同じOSX環境で実行することをお勧めします。これは、Homebrewが好きな場合、そのシステムを介してパッケージを徐々にインストールし、古いMacportsベースのパッケージを徐々にアンインストールしたいからです。残念ながら、Homebrewを決定し、レガシーMacportsのすべてのコードを一気に吹き飛ばしてから、Homebrewを介して別の大急ぎですべてを置き換えるのに苦労することは、私にとって実行可能な代替手段ではありません。
HippoMan 2012年

回答:


2

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

複数のインストール

tarballを抽出する場所にHomebrewインストールを作成します。どのbrewコマンドが呼び出されても、パッケージがインストールされる場所です。これは、必要に応じて使用できます。たとえば、/ usr / localのライブラリのシステムセットと、〜/ homebrewの開発用に微調整された式

ソース:https : //github.com/mxcl/homebrew/wiki/installation


カロロスさん、ありがとうございます。私は同じwikiページで、次のなステートメントに励まさないよ:「しかし、自分に好意を行うと、インストールには/ usr / local ... 危険を覚悟で別のプレフィックスを選んで!」しかし、私は、この試みとレポートバックをあげます後。
HippoMan 2012年

/ usr / local / homebrewにhomebrewをインストールしようとしました。しかし、インストールしようとしたいくつかのパッケージが失敗しています。/ usr / local / homebrew / bin / brew doctorを実行すると、文字通り何十もの予期しないdylib、静的ライブラリ、.pcファイル、.laファイルへの参照と、/ usr / localのインストールが必要な特定のパッケージに関する警告が表示されます。私のシステムは、レガシーソフトウェアのインストール(これらの「予期しない」ファイルのほとんどがインストールされている場所)を吹き飛ばした場合、まったく動作しなくなるため、自分のシステムで自作を使用する方法がないようです。まあ...(ため息)...
HippoMan '29

@HippoMan:うまくいかなくてすみません。ただし、1つの質問:/ usr / local / homebrewがパスに正しく設定されていますか?つまり、PATHおよび(DY)LD_LIBRARY_PATH
Karolos

@HippoMan:失敗しているパッケージは?私はそれらのいくつかをインストールしてみましたが、問題はありませんでした(/ etc / pathsを編集して/ usr / local / homebrew / binを追加した後)。
Karolos 2012年

はい、PATHおよびLD_LIBRARY_PATHが/ usr / local / homebrewツリーの下のbinおよびlibを指すように正しく設定されています。失敗したパッケージの1つはgawkで、これはavidemuxの前提条件です。しかし、なんらかのエラーが発生した場合に備えて、最初からやり直してもう一度試します。
HippoMan 2012年

1

それらを強制的に共存させる方法は、デフォルトで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_binmacports.sh portれるように、でラッピングを実行portできます。

便宜上、あなたが置くことができるmacports.sh somethingコマンド自体と同じ名前を持ついくつかのスクリプトにそのように、自分のホームディレクトリに入れ~/bin~/.local/binなど

私はこれについて1か月前にブログ投稿しました。詳細を確認する必要がある場合は、それを読むことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.