能否使用由asdf管理的依赖项安装Homebrew软件包?

8

我最近转而使用asdf管理运行时(特别是Node、Ruby和Python)。但是,我安装了很多通过Homebrew安装的软件包,这些软件包依赖于Homebrew自己安装的某个版本的其中一个运行时。我想删除这些软件包,并仅通过asdf管理运行时。

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


同样的问题。我已经尝试将~/.asdf/shims放在PATH的最前面,但Homebrew仍然会重新安装和编译Ruby、Rust等到/usr/local/Cellar,尽管~/.asdf/installs已经有了完全相同版本的软件。 - Katrin Leinweber
1个回答

0

简短的回答是不行

长话短说,事情很复杂,虽然没有什么阻止Brew使用asdf安装的版本,但实际上这样做不太可能成功。让我详细解释一下。

Brew

Brew是MacOS(现在也支持其他操作系统)的软件包管理器。Brew被系统范围地安装,您必须使用sudo来安装它。它只依赖于底层操作系统,使用它安装的软件包只依赖于操作系统或其他Brew软件包。Brew并不是为了管理同一软件包的多个版本而设计的,但它今天确实有限的支持。

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

asdf

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

问题

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接