我有一个已经使用多年的 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 中为开发调整的公式
答案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
等等。
我写过一篇博客文章一个月前就写过。如果你需要了解详情,可以阅读一下。