是否可以安装由 asdf 管理的依赖项的 Homebrew 软件包?

zei*_*hef 8 homebrew dependencies runtime asdf-vm

我最近转向 asdf 来管理运行时(特别是 Node、Ruby 和 Python)。但是,我通过 Homebrew 安装了很多软件包,这些软件包依赖于 Homebrew 本身安装的这些运行时之一的版本。我想删除这些并仅通过 asdf 管理运行时。

如何让 Homebrew 使用 asdf 管理的运行时?

Str*_*s3D 1

对此的简短回答是否定的

长的答案是事情很复杂,虽然没有什么可以阻止 Brew 使用 asdf 安装的版本,但它在实践中不太可能工作。让我详细说明一下。

酿造

Brew 是MacOS 的包管理器(尽管现在支持其他操作系统)。Brew 是在系统范围内安装的,您必须使用sudo它来安装它。它。仅取决于底层操作系统,使用它安装的软件包仅取决于操作系统或其他 Brew 软件包。Brew 并不是为管理同一包的多个版本而设计的,但目前它对它的支持确实有限。

对于每个包,都有一个为其定义的 Brew“公式”,用于指定如何编译/安装该包。该公式还指定包具有的任何依赖项,Brew 会递归安装包,直到安装了您请求的包所需的所有内容。例如,如果您运行brew install vim,Brew 可能会安装其他 Brew 软件包,如ruby和 ,python因为它们在公式中列为依赖项vim

阿斯达夫

asdf 是一个版本管理器,通常安装在用户级别。经常在$HOME/.asdf. 它是专门为在用户级别处理同一包的多个版本而设计的。它依赖于操作系统或其他操作系统包管理器来实现插件依赖,但插件也可以依赖其他插件。

问题

鉴于 asdf 和 Brew 之间的这些差异,有几个问题会阻止 Brew 软件包依赖 asdf 插件:

  • Brew 在系统级别全局安装。它安装的软件包不应依赖于在用户级别安装的东西(例如由 asdf 安装的软件包)。您可以通过将 asdf 安装为系统级来解决此问题。我不知道有人曾经这样做过。
  • Brew 大部分是独立的,Brew 软件包被设计为仅依赖于其他 Brew 软件包或操作系统提供的东西。无论您的$PATHBrew 上有什么,都将安装您正在安装的软件包列为依赖项的任何其他 Brew 软件包。