强制 Homebrew 和 Macports 共存?

强制 Homebrew 和 Macports 共存?

我有一个已经使用多年的 MacOSX 系统,在此期间,我通过 Macports 安装了不少软件包。

我现在想尝试 Homebrew,但从我在这里和其他地方读到的内容可以清楚地看出,Homebrew 和 Macports 的默认安装不能轻易共存。

对我来说,卸载 Macports 不是一个可行的选择,因为我的日常 MacOSX 工作中有很多都涉及使用各种 Macports 安装的实用程序。此外,我自己开发的许多实用程序现在都与 Macports 相互依赖。最后,我经常使用的许多可执行文件和共享库现在都安装在 /usr/local 下,如果我清除该目录树,我的系统很快就会变得无法使用。

所以我的问题是:有没有人想出另一种安装 Homebrew 的方法,可以与 Macports 共存?具体来说,有没有人想出如何让 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 port将运行port包装。

为了方便起见,你可以放入macports.sh something一些与命令本身同名的脚本并将它们放在你的HOME目录中,例如~/bin,,~/.local/bin等等。

我写过一篇博客文章一个月前就写过。如果你需要了解详情,可以阅读一下。

相关内容