跑后
brew install yarn我的系统上安装了以下版本的node:
$ node -v
v10.5.0因为node是yarn的依赖(如果我错了,请告诉我是否也是对的)
但是它会导致yarn的问题(我面临的问题是这),所以我现在想使用一个旧版本的node来使我的应用程序正常工作。根据这的说法,我是这样做的:
$ 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/ or /usr/local/lib/,但是它不是brew链接帮助我们连接它,为什么它需要强制选项,它做什么,它做什么,它感觉很危险。
brew help link说:
如果
我们为什么要小心地把它们联系起来呢?我们会弄坏什么吗?
我想使用node@8而不是node (the latest version),那么正确的方法是什么呢?我只是按照brew的建议使用强制选项吗?
更新1:当我不断搜索并找出原因时,我看到了这,但我并不完全理解它。它似乎需要删除一些文件时,链接到新版本的公式。但我以为链接只是替换链接的某个地方,也许只是替换一个文件?为什么要创建一个特定的--强制选项来连接到新的只使用桶的公式?我怀疑只有桶的配方有什么特别之处。有人明白为什么吗?
发布于 2018-06-25 19:24:13
首先,是的node是yarn的依赖项,您可以用以下方法检查它:
brew deps yarn然后,--force选项的名称可能不太好,但它执行了手册页中所说的操作:
如果
这就是自制的工作方式,没有什么可害怕的。
==编辑
在以前版本的自制文档中,更清楚的是:
如果
--force被传递,Homebrew将删除链接时前缀中已经存在的文件。 如果--dry-run或-n被传递,Homebrew将列出被brew link --force删除的所有文件,但实际上不会链接或删除任何文件。
==编辑(2)
下面是引入讨论参数之前的--force,以允许只链接keg公式。其背后的原因是,安装桶-纯公式系统宽,可能会干扰其他工具,期待一些特定版本的标准程序。
https://stackoverflow.com/questions/51015419
复制相似问题