链接纯桶公式时,为什么自制软件要求我添加--force选项?

时间:2018-06-25 02:01:32

标签: node.js homebrew

运行后

brew install yarn

我的系统上安装了以下版本的node

$ node -v
v10.5.0

因为nodeyarn的依赖项(如果我错了,请纠正我,如果我也错了,请告诉我)

但这会导致yarn出现问题(我面临的问题是this),因此我想使用旧版本的node使我的应用现在可以正常工作。根据{{​​3}},我做了这些:

$ brew install node@8
$ brew unlink node
$ brew link node@8

但是$ brew link node@8给了我以下内容:

Warning: node@8 is keg-only and must be linked with --force
Note that doing so can interfere with building software.

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/node@8/bin:$PATH"' >> ~/.zshrc

我使用了rvm,只需使用rvm use ruby-version-here就可以切换ruby,所以我认为brew link formula可以工作,但是为什么需要用力呢?

我了解brew仅限桶装,这意味着它仅在酒窖中,没有链接到/ usr / local / bin /或/ usr / local / lib /中,但是brew链接没有帮助我们链接它,为什么它需要--force选项,它的作用是危险的。

brew help link说:

  

如果通过--force(或-f),Homebrew将允许仅桶式公式   被链接。

我们为什么要谨慎链接它们?我们会破坏一些东西吗?

我想使用node@8代替node (the latest version),正确的方法是什么?我是否按照brew的建议使用force选项?

更新1: 当我继续搜索并找出原因时,我看到了this,但我并不完全理解。链接到新版本的公式时,似乎需要删除一些文件。但是我认为链接将只是在某处替换链接,也许只是替换一个文件?为什么要创建特定的--force选项来链接到仅桶的新公式?我怀疑纯桶配方的性质有一些特别之处。有人知道为什么吗?

注意: thisThis解释了仅桶的含义

1 个答案:

答案 0 :(得分:1)

首先,是的nodeyarn的依赖项,您可以使用以下命令进行检查:

brew deps yarn

然后,--force选项的名称可能不太好,但是它可以完成手册页中所述的内容:

  

如果传递了--force(或-f),Homebrew将允许链接仅桶的公式。

这只是Homebrew的工作方式,没有恐惧。

==编辑

Homebrew the documentation的先前版本中,其含义更加清晰:

  

如果传递了--force,Homebrew将在链接时删除前缀中已经存在的文件。

     

如果传递了--dry-run-n,Homebrew将列出所有       被brew link --force删除,但实际上不会链接或删除       任何文件。

==编辑(2)

这里是discussion,它是在引入--force参数之前允许链接仅桶式的公式。其背后的原因是,在全系统范围内安装仅桶式公式可能会干扰期望某些特定版本标准程序的其他工具。

相关问题