在同一台机器上同时安装 Homebrew 和 Macports 安全吗?

在同一台机器上同时安装 Homebrew 和 Macports 安全吗?

我的 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

根据MacPorts 常见问题解答

请注意,从 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

当心!

相关内容