176

我正在尝试通过 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并重试安装,但没有成功。

4

21 回答 21

165

我运行 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
于 2014-02-03T06:07:20.987 回答
144

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

假设像我一样,你已经通过尝试升级破坏了 node/npm,然后才知道npm uninstall npm -g,你可以rm -rf /usr/local/lib/node_modules/npm,然后brew link node. 这删除了独立的自托管 npm 包(而不是一个 brew 想要安装的包),并让 brew 符号链接它来自 Cellar 的捆绑包。

于 2012-10-05T17:54:29.700 回答
43
sudo chown -R $(whoami) /usr/local 

正如 brew 站点故障排除中提到的那样,会做得很好

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

于 2014-10-09T09:27:47.110 回答
38

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

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

于 2012-09-26T17:31:51.363 回答
33

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

* 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

在这个序列之后一切都成功了

于 2013-11-20T23:43:26.180 回答
21

尝试这个。从另一个参考中获得并为我工作。

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
于 2016-05-08T17:24:54.413 回答
10

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

我通过运行找到了解决方案brew doctor

警告:发现损坏的符号链接。删除它们brew prune

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

于 2013-10-09T10:10:25.287 回答
4

谢谢@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
于 2014-01-27T11:13:20.837 回答
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

附言。$(users)将扩展为您的用户名,我会不遗余力地帮助懒惰的复制贴纸;)

于 2013-09-18T14:50:36.797 回答
3

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

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

  1. 通过 brew 删除节点:

    brew卸载节点

  2. 也通过武力做到了:

    brew卸载节点--force

  3. 要使用脚本 Source: Remove node

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

然后:

chmod +x /path/to/terminatenode.sh

然后:

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

    chown $USER /usr/local

  2. 然后进行 brew update (继续这样做,直到所有内容都更新):

    酿造更新

  3. 清理 brew 并再次运行更新(可能是多余的)并运行医生以确保一切就绪:

    冲泡清理;酿造更新;冲泡医生

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

    冲泡安装 -v 节点

于 2014-08-25T04:56:27.770 回答
3

最终答案:将该目录的所有者更改为您的任何人

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

如果您运行 brew doctor ,这也是 brew 推荐的

于 2014-07-10T13:32:39.520 回答
2

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

下面的解决方案对我有用:- 首先创建包含文件夹,注意这需要 sudo 权限

cd /usr/local

sudo mkdir include

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

brew link node
于 2018-07-31T08:38:41.577 回答
1

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

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

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

于 2013-04-01T16:45:13.957 回答
1

我已经尝试了所有方法,但没有一个有效。最简单的方法是从https://nodejs.org/en/download/重新安装节点

只需下载pkg并安装它。现在我有一个工作npmnode一次。

于 2020-01-10T21:45:41.030 回答
1

通过 Finder,删除此文件:

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

在终端:

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

然后:

$ brew link node
于 2017-12-28T14:18:31.347 回答
0

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

于 2013-09-12T20:05:18.407 回答
0

我为此苦苦挣扎了一段时间。(对我来说“npm uninstall npm -g”什么也没做)

我尝试了很多东西:

npm uninstall npm -g
brew uninstall node
brew install node

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

最后我尝试了这个

brew link --overwrite node

这似乎已经解决了它。(它会覆盖所有冲突的文件并链接节点和 npm)

希望这可以帮助

于 2013-11-22T22:52:24.400 回答
0

我完全卸载了 brew 并重新开始,只是再次发现同样的问题。

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

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

/usr/local/include/node

经过一番挠头后,我记得在这个旧版本的日期安装了节点,而且它不是通过 brew 安装的。

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

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

排名最高的答案非常简单,但我想我会添加我对为什么有必要的观察。

我猜测其他 brew 软件包的一系列问题可能是由旧的非 brew 软件包实例造成的。

于 2014-02-15T03:29:01.293 回答
0

一直在符号链接节点上破坏我的头......似乎没有任何工作......但最终有效的是设置正确的权限。这个 'sudo chown -R $(whoami) /usr/local' 为我完成了工作。

于 2015-09-11T04:02:04.757 回答
0

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

brew link --overwrite node
于 2016-02-06T00:47:02.090 回答
-5

您需要手动删除 npm 包。

第一个取消链接节点:brew link -n node

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

再次链接:brew link node

会有一个软链接到 npm 的新位置

于 2012-09-28T14:48:30.183 回答