強迫 Homebrew 和 Macports 共存?

強迫 Homebrew 和 Macports 共存?

我有一個 MacOSX 系統,我已經使用了很多年了,在這段時間裡,我透過 Macports 安裝了相當多的軟體包。

我現在想嘗試 Homebrew,但從我在這裡和其他地方讀到的內容可以清楚地看出,Homebrew 和 Macports 的預設安裝不能輕易共存。

對我來說,卸載 Macports 不是一個可行的選擇,因為我的日常 MacOSX 工作涉及使用各種 Macports 安裝的實用程式。此外,我自己的許多本土實用程式現在與 Macports 相互依賴。最後,我經常使用的許多可執行檔和共用程式庫現在都安裝在 /usr/local 下,如果我清除該目錄樹,我的系統很快就會變得無法使用。

所以我的問題是:有沒有人想出一個可以與 Macports 共存的替代方法來安裝 Homebrew?具體來說,有沒有人弄清楚如何讓 Homebrew 使用目錄樹,例如 /usr/local/homebrew 而不是 /usr/local?

預先感謝您提供任何建議或指向文件的指示。

答案1

您可以告訴 Homebrew 使用它自己的目錄,然後將其添加到路徑中。儘管目的不同,但安裝指南的摘錄告訴我們:

多次安裝

無論您在哪裡提取 tarball,都創建一個 Homebrew 安裝。無論調用哪個brew 命令,軟體包都將安裝在其中。您可以根據需要使用它,例如 /usr/local 中的系統庫集和 ~/homebrew 中的開發調整公式

來源:https://github.com/mxcl/homebrew/wiki/installation

答案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,例如macports.sh portwill runwrapped port

為了方便起見,您可以放入macports.sh something一些與命令本身同名的腳本並將其放在您的 HOME 目錄中,例如~/bin~/.local/bin等。

我寫過一篇博文關於這件事一個月前。如果您需要查看詳細信息,可以閱讀它。

相關內容