我的 iMac 上安装了 MacPorts,并且安装了相当多的端口。
不过,我有兴趣尝试 Homebrew,因为我听说过很多关于它的好评,而且我注意到它包含了我使用的几个工具的最新版本。
但是这两者可以在同一台机器上共存吗,还是我需要先完全卸载 MacPorts?
另外,如果两者能同时安装,它们会完全独立吗?Homebrew 的一个特点是它不会重新安装系统中已包含的内容的新版本(例如 python)。这是否也扩展到不安装 MacPorts 已经维护的内容的版本?
如果我随后卸载 MacPorts,会发生什么情况?
答案1
它们无法很好地共存。Apple gcc 在 /usr/local 中查找某些内容。这意味着 macports 编译可能会找到移植者未预料到的内容。请参阅 macports 邮件列表和错误,了解在 /usr/local 中找到的内容的示例。
答案2
我给了另一个答案关于类似问题:
如果 Homebrew 安装在 /usr/local 中,则在从源代码构建软件时会出现问题。这是默认设置,这是一个糟糕的选择,因为此路径位于编译器和其他工具的默认搜索路径中。因此,从其他打包软件构建的软件可能会选择错误的依赖项,使用 Homebrew 的版本而不是自己的版本。
几年前,在项目刚开始时,甚至 MacPorts 也在使用 /usr/local。但事实证明,它无法与其他工具配合使用,正如其常见问题解答中所述。不幸的是,Homebrew 开发人员不想听取以前的经验,并忽略了这些事实……
一般情况下,最好只使用一种工具来避免所有问题。MacPorts 正在尽力修补任何硬编码路径,例如 Fink 使用的 /sw。因此通常它可以正常工作,但在 /usr/local 中安装任何东西肯定会导致问题。
[…]
答案3
请注意,从 2.3.0 开始,MacPorts 可以自动隐藏 /usr/local(以及 port 不依赖的所有其他文件),使其不受 ports 的构建系统影响。此功能称为跟踪模式,可通过为 port 提供 -t 标志来激活,例如
sudo port -t install <portname>
这是相关的,因为根据 Homebrew 安装页面:
Homebrew 相对于竞争对手更胜一筹的原因之一是我们建议安装到 /usr/local。选择其他前缀后果自负!
因此,根据我的经验,我认为在 MacPort 安装时始终使用 -t 标志应该可以避免 MacPorts 和 Homebrew 在同一系统上共存时出现的大多数问题。回答你的最后一个问题:我看不出卸载 MacPorts 会导致任何问题。
答案4
当我在一台已经使用端口多年的计算机上安装 homebrew 时,我读到的内容如下:
Warning: You have MacPorts or Fink installed:
/opt/local/bin/port
This can cause trouble. You don't have to uninstall them, but you may want to
temporarily move them out of the way, e.g.
sudo mv /opt/local ~/macports
当心!