错误:“brew链接”步骤未成功完成

时间:2012-09-26 17:26:12

标签: macos node.js npm homebrew

我正在尝试通过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卸载节点并重试安装但没有运气。

21 个答案:

答案 0 :(得分:147)

我运行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

步骤3:打开新终端并安装节点

$ brew install node

答案 1 :(得分:118)

node.js的自制软件包现在再次包含npm,所以当我错过自制软件包关于首先删除独立版本的消息时,这发生在我身上。

假设像我一样,您在先了解npm uninstall npm -g之前尝试升级已经破坏了node / npm,您可以rm -rf /usr/local/lib/node_modules/npm然后brew link node。这将删除独立自托管的npm包(而不是brew想安装的那个),并让brew符号链接从Cellar捆绑出来。

答案 2 :(得分:39)

sudo chown -R $(whoami) /usr/local 

会像酿造网站故障排除

中提到的那样做得很好

https://github.com/Homebrew/homebrew/wiki/troubleshooting

答案 3 :(得分:36)

您可能已经使用不同的方法安装了旧版本的node.js,因此您需要手动删除以brew方式获取的文件。

执行brew link -n node并手动删除那些有冲突的文件和目录,然后再次尝试brew link node

答案 4 :(得分:32)

我有点迟了,对我有用的是:

* 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

在此序列之后,一切都成功了

答案 5 :(得分:14)

试试这个。来自另一个参考并为我工作。

sudo brew uninstall node
brew update
brew upgrade
brew cleanup
brew install node
sudo chown -R $(whoami) /usr/local
brew link --overwrite node
sudo brew postinstall node

答案 6 :(得分:9)

将我的所有应用程序从旧Mac转移到新Mac后,我遇到了同样的问题。

我通过运行brew doctor

找到了解决方案
  

警告:找到了破损的符号链接。使用brew prune

删除它们

运行brew prune后,Homebrew终于回到正轨:)

答案 7 :(得分:4)

我的问题有一个稍微不同的解决方案。 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)会扩展到您的用户名,有点偏离帮助懒惰的副本粘贴;)

答案 8 :(得分:4)

thx @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

答案 9 :(得分:3)

节点的大多数brew安装问题都是由权限错误或先前已安装节点引起的,然后尝试通过brew安装它。最终对我有用的解决方案是:

警告:这将卸载nodejs(多个版本),请谨慎使用:

  1. 通过brew删除节点:

    brew uninstall node

  2. 也是通过武力做的:

    brew uninstall node --force

  3. 使用脚本来源:Remove node

    curl -O https://raw.githubusercontent.com/DomT4/scripts/master/OSX_Node_Removal/terminatenode.sh

  4. 然后:

    chmod +x /path/to/terminatenode.sh
    

    然后:

    ./terminatenode.sh .
    
    1. 然后确保执行以下命令:

      chown $ USER / usr / local

    2. 然后进行brew更新(继续执行此操作直到所有内容都更新):

      brew update

    3. 清理咖啡并再次运行更新(可能是多余的)并运行医生以确保安装到位:

      酿造清理; brew更新;酿酒医生

    4. 最后通过brew(详细)安装节点:

      brew install -v node

答案 10 :(得分:2)

最终答案:将该目录的所有者更改为您是谁

sudo chown -R `whoami` /usr/local/include

如果你经营brew医生,那么brew也推荐使用

答案 11 :(得分:1)

我尝试了所有方法,但没有一个起作用。 最简单的方法是从https://nodejs.org/en/download/

重新安装节点

只需下载pkg并进行安装。 现在我有了一个工作的npmnode

答案 12 :(得分:1)

安装时出现错误,无法链接节点和/ usr / local / include不可写

以下解决方案对我有用:- 首先创建include文件夹,请注意,这需要sudo权限

cd /usr/local

sudo mkdir include

sudo chown -R $(whoami) $(brew --prefix)/*

brew link node

答案 13 :(得分:1)

我还设法弄乱了我的NPM并在这些Homebrew版本之间安装了软件包,无论我多少次取消链接/链接和卸载/安装节点,它仍然无效。

事实证明你必须从路径中移除NPM,否则Homebrew将无法安装它:https://github.com/mxcl/homebrew/blob/master/Library/Formula/node.rb#L117

希望这可以帮助有同样问题的人,并节省那么一小时左右我不得不花时间寻找问题...

答案 14 :(得分:0)

我完全卸载了brew并再次启动,只是再次发现同样的问题。

Brew似乎可以通过将所需的二进制文件符号链接到系统中来实现,其他安装方法通常会复制文件。

我在这里找到了一组现有的节点库:

/usr/local/include/node

经过一番头疼之后,我记得在这个旧版本的日期安装节点并且它还没有通过brew。

我手动删除了整个文件夹并成功链接了npm。

这可以解释为什么使用brew卸载甚至卸载brew本身都没有效果。

排名最高的答案非常简单,但我想我会加上我对其必要性的观察。

我猜测其他brew包的一些问题可能是由旧的非brew实例包引起的。

答案 15 :(得分:0)

我一直在努力解决这个问题。 (对我来说,“npm uninstall npm -g”什么都没做)

我尝试了很多东西:

npm uninstall npm -g
brew uninstall node
brew install node

我仍然遇到一些问题,当我尝试链接节点文件时出现错误

最后我尝试了这个

brew link --overwrite node

这似乎解决了这个问题。 (它会覆盖冲突的文件,也会链接节点和npm)

希望这有帮助

答案 16 :(得分:0)

在symlinking节点上已经破坏了我的头......似乎没有任何工作......但最终有效的是设置正确的权限。这个' sudo chown -R $(whoami)/ usr / local'为我做了工作。

答案 17 :(得分:0)

我使用以下命令在El Capitan修复此问题。老实说,不知道它做了什么,但我想分享,因为它解决了我的问题。

brew link --overwrite node

答案 18 :(得分:0)

不知道,如果这是一个好主意:在尝试所有其他解决方案后没有成功,我只是重命名/ usr / local / lib / dtrace,链接节点并重新重命名该目录。之后,节点按预期工作。

答案 19 :(得分:0)

由Finder删除此文件:

  

/usr/local/lib/dtrace/node.d

在终端:

$ brew link --overwrite --dry-run node

然后:

$ brew link node

答案 20 :(得分:-5)

您需要手动删除npm包。

首先取消链接节点:brew link -n node

删除npm文件夹:rm -R /usr/local/Cellar/node/0.8.10/lib/node_modules/npm

再次链接:brew link node

将会有一个指向npm新位置的软链接