错误:“冲泡链接”步骤未成功完成
Posted
技术标签:
【中文标题】错误:“冲泡链接”步骤未成功完成【英文标题】:Error: The 'brew link' step did not complete successfully 【发布时间】:2012-09-18 09:34:58 【问题描述】:我正在尝试通过 Homebrew 安装 node.js。不幸的是,我收到了这个错误:
➜ ~ brew install node
==> Downloading http://nodejs.org/dist/v0.8.10/node-v0.8.10.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/node/0.8.10
==> make install
==> Caveats
Homebrew installed npm.
We recommend prepending the following path to your PATH environment
variable to have npm-installed binaries picked up:
/usr/local/share/npm/bin
Warning: Could not link node. Unlinking...
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link node'
==> Summary
/usr/local/Cellar/node/0.8.10: 856 files, 13M, built in 103 seconds
然后我尝试手动链接节点...
➜ ~ brew link node
Linking /usr/local/Cellar/node/0.8.10... Warning: Could not link node. Unlinking...
Error: Could not symlink file: /usr/local/Cellar/node/0.8.10/lib/node_modules/npm/scripts/relocate.sh
Target /usr/local/lib/node_modules/npm/scripts/relocate.sh already exists. You may need to delete it.
To force the link and delete this file, do:
brew link -f formula_name
To list all files that would be deleted:
brew link -n formula_name
没有运气,所以我尝试强制链接节点...
➜ ~ brew link -f node
Linking /usr/local/Cellar/node/0.8.10... Warning: Could not link node. Unlinking...
Error: Permission denied - /usr/local/lib/dtrace/node.d
我在任何方面都不熟悉 dtrace,而且我害怕弄乱权限,所以我尝试了 sudo..
➜ ~ git:(master) sudo brew link -f node
Password:
Error: Cowardly refusing to `sudo brew link'
You can use brew with sudo, but only if the brew executable is owned by root.
However, this is both not recommended and completely unsupported so do so at
your own risk.
我已尝试通过brew uninstall node
卸载节点并重试安装,但没有成功。
【问题讨论】:
我无法获取 automake。 mongodb 和 node 与 homebrew 链接 【参考方案1】:您可能已经使用其他方法安装了旧版本的 node.js,因此您需要手动删除妨碍 brew 的文件。
执行brew link -n node
并手动删除那些冲突的文件和目录,然后再次尝试brew link node
。
【讨论】:
花了一些时间,但这正是我需要做的。谢谢:) 我对@987654323@ 有同样的问题。如何找到冲突的文件和目录?【参考方案2】:您需要手动删除 npm 包。
第一个取消链接节点:brew link -n node
删除 npm 文件夹:rm -R /usr/local/Cellar/node/0.8.10/lib/node_modules/npm
再次链接:brew link node
会有一个软链接到 npm 的新位置
【讨论】:
这不会删除 brew 尝试安装的新 npm 吗?在此之后,我没有安装有效的 npm,而在我的答案中删除了 OLD npm 文件夹。 在我看来,您也在尝试删除新包 - 而肯定是旧包需要删除?我实际上发现 /usr/local/bin/npm 有一个符号链接【参考方案3】:node.js 的 homebrew 包现在再次包含 npm,所以当我错过了 homebrew 包关于首先删除独立版本的消息时,这发生在我身上。
假设你和我一样,在知道npm uninstall npm -g
之前已经尝试升级破坏了node/npm,你可以先rm -rf /usr/local/lib/node_modules/npm
然后brew link node
。这将删除 standalone 自托管的 npm 包(而不是 brew 想要安装的一个),并让 brew 符号链接它从 Cellar 捆绑的一个。
【讨论】:
删除 npm 后,您需要关闭并重新打开终端以将其从路径中删除,以便链接正常工作,正如 @dain 在他的评论中提到的那样。 这对我有用。就我而言,我无法在升级期间链接 Elixir 和 Erlang。关注的目录不属于我的用户名,而是属于“root”。我决定删除这些目录并重新安装。 当我尝试链接节点时,我得到:*错误:没有这样的小桶:/usr/local/Cellar/node *| 有什么想法吗? 在尝试升级 npm 之后,我花了一个小时试图弄清楚这一点。在独立版本首先被删除之前,Brew 不会让我链接。 nate 的建议对我有用。 如何重新安装 npm?还是使用 brew install node 安装?【参考方案4】:我还设法弄乱了我的 NPM 并在这些 Homebrew 版本之间安装了软件包,无论我取消链接/链接和卸载/安装节点多少次,它仍然无法正常工作。
事实证明,您必须从路径中删除 NPM,否则 Homebrew 将不会安装它:https://github.com/mxcl/homebrew/blob/master/Library/Formula/node.rb#L117
希望这会帮助遇到同样问题的人,并节省我花费寻找问题的时间...
【讨论】:
谢谢。我必须结合投票率最高的答案来让它正常工作。【参考方案5】:不知道这是否是个好主意:在尝试了所有其他解决方案均未成功后,我只是重命名了/usr/local/lib/dtrace,链接节点并再次重命名了目录。之后,节点按预期工作。
【讨论】:
【参考方案6】:我的问题的解决方案略有不同。 brew 想要在其中创建符号链接的目录不属于当前用户。
ls -la /usr/local/bin/lib/node | grep node
产生:
drwxr-xr-x 3 24561 wheel 102 May 4 2012 node
drwxr-xr-x 7 24561 wheel 238 Sep 18 16:37 node_modules
对我来说,以下修复了它:
sudo chown $(users) /usr/local/bin/lib/node_modules
sudo chown $(users) /usr/local/bin/lib/node
ps。 $(users)
将扩展为您的用户名,我会稍微帮助懒惰的复制粘贴;)
【讨论】:
我遇到了同样的问题。如果您手动为其他应用程序运行“make install”,这显然会发生。我最近就是这样做的,解决方案是像你一样 chown。【参考方案7】:将所有应用程序从旧 Mac 转移到新 Mac 后,我遇到了同样的问题。
我通过运行brew doctor
找到了解决方案:
警告:发现损坏的符号链接。用
brew prune
删除它们
在运行brew prune
之后,Homebrew 终于回到了正轨:)
【讨论】:
brew cleanup
如今【参考方案8】:
我有点晚了,对我有用的是:
* npm uninstall npm -g
* brew uninstall node
* brew install node
* sudo rm -rf /usr/local/lib/dtrace/node.d
* brew link node (caused error with permissions)
* sudo chmod 777 /usr/local/lib/dtrace/node.d
* brew link node
在这个序列之后一切都成功了
【讨论】:
这终于对我有用了。在安装了 npm 后尝试通过 brew 安装节点后,我遇到了问题。它对我来说基本上破坏了 npm。我必须 rm -rf npm 文件夹,然后通过 brew 安装(npm 卸载不再为我工作)。之后,其余步骤完美运行。sudo chmod 777
这绝不是正确的解决方案,如果您遇到权限问题,请调查出现问题的原因并设置完成工作所需的最低权限级别。此命令将允许系统上的任何人修改文件。
太棒了。谢谢你。虽然我第一次运行brew link node
时没有烫发问题。
我只是获得了它的所有权,而不是 chmod 那个目录。 chown myuser -R -v /usr/local/lib/dtrace/ 我也遇到了 dtrace 不作为目录存在的问题。错误是一样的,但没有目录存在。【参考方案9】:
我为此苦苦挣扎了一段时间。 (对我来说“npm uninstall npm -g”什么也没做)
我尝试了很多东西:
npm uninstall npm -g
brew uninstall node
brew install node
当我尝试链接节点文件时,我仍然遇到一些问题并且出现错误
我终于试过了
brew link --overwrite node
这似乎已经解决了。 (它会覆盖所有冲突的文件并链接节点和 npm)
希望对你有帮助
【讨论】:
【参考方案10】:谢谢@suweller。
我解决了这个问题:
➜ bin git:(master) ✗ brew link node
Linking /usr/local/Cellar/node/0.10.25... Warning: Could not link node. Unlinking...
Error: Permission denied - /usr/local/lib/node_modules/npm
我遇到了和 suweller 一样的问题:
➜ bin git:(master) ✗ ls -la /usr/local/lib/ | grep node
drwxr-xr-x 3 24561 wheel 102 11 Okt 2012 node
drwxr-xr-x 3 24561 wheel 102 27 Jan 11:32 node_modules
所以我通过以下方式解决了这个问题:
➜ bin git:(master) ✗ sudo chown $(users) /usr/local/lib/node_modules
➜ bin git:(master) ✗ sudo chown $(users) /usr/local/lib/node
在我解决了这个问题后,我又得到了一个:
➜ bin git:(master) ✗ brew link node
Linking /usr/local/Cellar/node/0.10.25... Warning: Could not link node. Unlinking...
Error: Could not symlink file: /usr/local/Cellar/node/0.10.25/lib/dtrace/node.d
Target /usr/local/lib/dtrace/node.d already exists. You may need to delete it.
To force the link and overwrite all other conflicting files, do:
brew link --overwrite formula_name
To list all files that would be deleted:
brew link --overwrite --dry-run formula_name
所以我通过以下方式删除了 node.d:
➜ bin git:(master) ✗ sudo rm /usr/local/lib/dtrace/node.d
得到另一个权限错误:
➜ bin git:(master) ✗ brew link node
Linking /usr/local/Cellar/node/0.10.25... Warning: Could not link node. Unlinking...
Error: Could not symlink file: /usr/local/Cellar/node/0.10.25/lib/dtrace/node.d
/usr/local/lib/dtrace is not writable. You should change its permissions.
并修复它:
➜ bin git:(master) ✗ sudo chown $(users) /usr/local/Cellar/node/0.10.25/lib/dtrace/node.d
最后一切正常:
➜ bin git:(master) ✗ brew link node
Linking /usr/local/Cellar/node/0.10.25... 1225 symlinks created
【讨论】:
【参考方案11】:我运行 Mac OS X Mavericks。我尝试安装节点 0.10.25,但最佳答案对我不起作用。
natevw 对 rm -rf /usr/local/lib/node_modules/npm
说,但如果 /usr/local/lib/node_modules
上的权限如下所示:
drwxr-xr-x 3 root admin 102 Feb 2 20:45 node_modules
那么 brew 将无法在该目录中创建其 npm 符号链接。这是我的解决方案:
第 1 步:更新 Homebrew
$ brew update
第 2 步:删除系统上所有位置的 node/npm
根据您过去安装 node/npm 的方式,其中一些命令不是必需的。
$ brew uninstall npm
$ brew uninstall node
$ npm uninstall npm -g
$ sudo rm -rf /usr/local/lib/node_modules
注意:我通过运行 brew -v link node
找到了杂散的节点文件(这给了我 brew 抱怨的链接错误的详细输出)。您可能需要:
$ sudo rm -rf /usr/local/include/node
$ sudo rm -rf /usr/local/lib/node
第三步:打开一个新的终端并安装节点
$ brew install node
【讨论】:
谢谢!这对我有很大帮助并解决了我的问题。 +1 为我工作......虽然我不得不删除 node_modules(以's'结尾)目录...... 这应该成为公认的答案。也适用于优胜美地。 这对我也有用,但是我必须运行这个 chown 命令才能最终允许链接。 sudo chown -Rwhoami
/usr/local Sauce
要在你的 mac 上删除节点,我关注了这篇文章:stackabuse.com/how-to-uninstall-node-js-from-mac-osx【参考方案12】:
我完全卸载了brew并重新启动,却再次发现同样的问题。
Brew 似乎通过将所需的二进制文件符号链接到您的系统中来工作,而其他安装方法通常会复制文件。
我在这里找到了一组现有的节点库:
/usr/local/include/node
经过一番摸索后,我记得当时是针对这个旧版本安装节点的,而且它不是通过 brew 实现的。
我手动删除了整个文件夹并成功链接了 npm。
这可以解释为什么使用 brew uninstall 甚至卸载 brew 本身都没有效果。
排名最高的答案非常简单,但我想我会添加我对为什么有必要的观察。
我猜测其他 brew 包的一系列问题可能是由旧的非 brew 包实例造成的。
【讨论】:
【参考方案13】:最终答案:将该目录的所有者更改为您的任何人
sudo chown -R `whoami` /usr/local/include
如果你运行 brew doctor , brew 也会推荐它
【讨论】:
【参考方案14】:大多数节点的 brew 安装问题是由权限错误或之前安装了节点然后尝试通过 brew 安装它引起的。最终对我有用的解决方案是:
警告:这将卸载nodejs(多个版本)谨慎使用:
通过 brew 删除节点:
brew卸载节点
也是通过武力做到的:
brew卸载节点--force
使用脚本来源:Remove node:
curl -O https://raw.githubusercontent.com/DomT4/scripts/master/OSX_Node_Removal/terminatenode.sh
然后:
chmod +x /path/to/terminatenode.sh
然后:
./terminatenode.sh .
然后确保执行以下命令:
chown $USER /usr/local
然后进行一次 brew 更新(一直这样做,直到所有内容都更新):
酿造更新
清理 brew 并再次运行更新(可能是多余的)并运行医生以确保一切就绪:
酿造清理;酿造更新;酿造医生
最后通过 brew 安装节点(详细):
brew install -v 节点
【讨论】:
数字格式不正确......但步骤在那里。明天将更正格式问题。【参考方案15】:sudo chown -R $(whoami) /usr/local
正如 brew 站点故障排除中提到的那样,效果会很好
https://github.com/Homebrew/homebrew/wiki/troubleshooting
【讨论】:
我很惊讶他们推荐这个。这样做不是更好吗:sudo chmod -R g+w /usr/local
(虽然老实说,都吓到我了)
@getWeberForStackExchange 我试过你说的,但对我没有任何影响。任何想法为什么会这样?
@AlistairMacDonald 您现在可能已经解决了这个问题,但我可能需要更多信息来找出您遇到问题的原因。更改 /usr/local 中所有内容的所有权应该允许当前用户在 /usr/local 结构中创建节点链接。我建议只更改每个文件的组权限而不是所有权,这稍微不那么疯狂。我的命令假定您的用户是拥有所有 /usr/local 的组的一部分。 /usr/local 中也可能有不同的组,这需要chgrp
命令。
我在 OS X 10.11 下安装了 home-brew,专门用于获取午夜指挥官和 wget。我没有安装 npm。如 mc 安装期间的问题所述,“brew link”步骤失败。这个答案对我有用;我进行了更改,使用“brew link午夜指挥官”重新运行了链接,然后运行良好。之后,在命令行输入“mc”按预期调出午夜指挥官。在那之后,“brew install wget”没有大张旗鼓地工作。很好的答案。
这个命令是brew doctor
推荐的,但我更喜欢sudo su
,执行命令然后关闭终端【参考方案16】:
一直在符号链接节点上搞砸了我的头......似乎没有任何工作......但最终有效的是设置正确的权限。这个 'sudo chown -R $(whoami) /usr/local' 为我完成了工作。
【讨论】:
【参考方案17】:我使用以下命令在 El Capitan 中修复了这个问题。老实说,不知道它的作用,但我想我会分享,因为它解决了我的问题。
brew link --overwrite node
【讨论】:
【参考方案18】:试试这个。从另一个参考中获得并为我工作。
brew uninstall node
brew update
brew upgrade
brew cleanup
brew install node
sudo chown -R $(whoami) /usr/local
brew link --overwrite node
brew postinstall node
【讨论】:
brew postinstall node
是票
这是票!出于某种原因,我不得不运行 brew upgrade 2X 并且第二次它要求我安装 XCode 的更新。在brew link --overwrite node
和最终命令之间,似乎一切正常。您建议的最终命令由于 'sudo.相反,使用brew postinstall node
【参考方案19】:
通过 Finder,删除此文件:
/usr/local/lib/dtrace/node.d
在终端:
$ brew link --overwrite --dry-run node
然后:
$ brew link node
【讨论】:
当我运行brew link --overwrite --dry-run node
时,我看到了错误No such keg: /usr/local/Cellar/node
。我错过了什么?【参考方案20】:
我在安装时遇到错误,无法链接节点并且 /usr/local/include 不可写
以下解决方案对我有用:- 首先创建include文件夹,注意这需要sudo权限
cd /usr/local
sudo mkdir include
sudo chown -R $(whoami) $(brew --prefix)/*
brew link node
【讨论】:
【参考方案21】:我已经尝试了所有方法,但没有一个有效。 最简单的方法是从https://nodejs.org/en/download/重新安装节点
只需下载pkg
并安装它。
现在我又有了一个工作的npm
和node
。
【讨论】:
以上是关于错误:“冲泡链接”步骤未成功完成的主要内容,如果未能解决你的问题,请参考以下文章