Homebrew npm install:无法符号链接

Posted

技术标签:

【中文标题】Homebrew npm install:无法符号链接【英文标题】:Homebrew npm install: could not symlink 【发布时间】:2015-12-27 06:34:47 【问题描述】:

所以我犯了一个错误,试图摆脱所有 sudo 依赖项。我从站点下载了 npm 作为一个包并进行了手动/全局安装。但似乎我总是不得不使用 sudo 运行......所以我尝试卸载并使用自制软件运行。

现在我什至无法让 node 或 npm 运行...我想我必须用 brew link 链接它们,但我收到了这个错误:

Could not symlink share/doc/node/gdbinit
Target /usr/local/share/doc/node/gdbinit
already exists. You may want to remove it:
  rm '/usr/local/share/doc/node/gdbinit'

我试过删除它: 而且我的权限被拒绝了。

我尝试过运行 brew prune。 我尝试使用以下步骤卸载然后重新安装:

$ brew uninstall npm
$ brew uninstall node
$ npm uninstall npm -g
$ sudo rm -rf /usr/local/lib/node_module

Error: The 'brew link' step did not complete successfully

我正在运行 Yosemite 10.10.5。我安装了 git 版本 2.6.0。我的自制软件已更新。一位酿酒医生给了我这个警告:

Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
    node

不知道从这里去哪里。我正在努力摆脱对 CodeKit 的依赖,开始大吃一惊。

【问题讨论】:

I've tried removing that: And i've gotten permission denied. - 那是因为您首先以 root 身份安装。现在您必须使用sudo rm '/usr/local/share/doc/node/gdbinit' 删除。注意:如果您使用自制软件,请不要再将带有 sudo install 的任何内容安装到 /usr/local。这将造成巨大的混乱。 现在我得到'could not symlink share/system/systemtap/tapset/node.stp /usr/local/share/system/tapset is not writable。我试过做一个 sudo chown -R 'username'/usr/local/share/system/tapset 但这没有用。 我会简单地删除所有冲突文件。这有点古怪,但这就是为什么我们有很棒的包管理器,比如 hombrew。手动卸载实在是太痛苦了。 如您所知,我是使用命令行安装删除文件的新手......我是否必须一一尝试删除冲突文件? Homebrew 确实有一个命令说它会覆盖节点文件,但它似乎没有解决问题。 【参考方案1】:

看起来/usr/local 中的多个文件和目录现在归root 所有,因为您使用sudo 运行了几个步骤。要摆脱这些,请收回 /usr/local 下所有文件和目录的所有权:

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

完成后,再次运行brew doctor

可以在这里找到类似的问题:

https://apple.stackexchange.com/questions/192227/make-files-in-usr-local-writable-for-homebrew Brew doctor says: "Warning: /usr/local/include isn't writable."

【讨论】:

如果有多个用户,可以chown /usr/local目录吗? 好问题。据我了解,最新版本的 Homebrew 不再需要 chown。如果您仍然需要chown,请确保所有用户都包含在拥有该目录的组中,并且该组也具有写入权限。 我知道这是旧的,但做sudo chown -R $USER /usr/local 使我安装的一些东西再也找不到了。我该如何解决这个问题? 在 Mac High Sierra 中,您不能使用 chown,现在必须使用 sudo chown -R $(whoami) $(brew --prefix)/* sudo chown -R $(whoami) $(brew --prefix)/* 然后brew link --overwrite node 为我工作。【参考方案2】:

在我的情况下,我继续执行命令brew link node,并且在每次执行时,它一直说要删除一些文件。我只是按照说明继续使用sudo 删除它们。最后,经过 5 次这样的删除,我完成了链接。

【讨论】:

这种方法对我有用,除了 5 个文件而不是 434 个文件。幸运的是,它建议我可以通过运行 brew link --overwrite --dry-run node 来列出它们 我不得不通过brew link --overwrite --dry-run node 删除文件,然后运行@nwinkler 发布的sudo chown -R $(whoami) $(brew --prefix)/*【参考方案3】:

如果节点列为未链接的小桶,也会发生类似的情况。这就是在 MacOS Big Sur 上对我有用的方法:

    sudo mkdir -p /usr/local/sbin // sbin 有问题,如果没有,请忽略。 sudo chown -R $(whoami) /usr/local/sbin // 如果 sbin 不是问题,则忽略。 brew link --overwrite node brew cleanup // 想确保这个单独运行良好:) brew doctor // 找到未编译的头文件,但不关心这些。 node -v // 检查节点版本 npm -v // 检查 npm 版本

如果上述方法不起作用,请尝试从头开始,看看这些步骤是否有帮助:

    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

您绝对可以链接这些命令并使输入方式更短,但小胜利有助于缓解一些挫败感,同时也更容易准确识别失败的步骤,而不是显示链接命令错误和让人愤怒 (╯°□°)╯︵ ┻━┻ 因为他们现在更迷失了哈哈。

【讨论】:

以上是关于Homebrew npm install:无法符号链接的主要内容,如果未能解决你的问题,请参考以下文章

Homebrew:无法符号链接,/usr/local/bin 不可写[关闭]

React Native 初学-环境搭配

无法运行 npm 命令“npm install -g tty.js”。

npm install chromedriver 无法正常工作

npm install 和npm start各种报错无法解决的问题

无法执行“npm install --save firebase”