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 不可写[关闭]
无法运行 npm 命令“npm install -g tty.js”。
npm install chromedriver 无法正常工作