当Brew认为链接已经存在时,如何解决Brew的symlink错误?

时间:2018-10-02 14:02:48

标签: homebrew symlink

请帮助您了解发生了什么-或是否需要采取任何措施。我处理过很多有关处理brew,节点,symlink,卸载并重新安装节点,npm,yarn的文章,尝试了brew cleanup。当brew doctor发出这些警告时

 Warning: Broken symlinks were found. Remove them with `brew prune`:
      /usr/local/lib/node_modules/npm/node_modules/.bin/JSONStream
      /usr/local/lib/node_modules/npm/node_modules/.bin/errno
      /usr/local/lib/node_modules/npm/node_modules/.bin/is-ci
      /usr/local/lib/node_modules/npm/node_modules/.bin/node-gyp
      /usr/local/lib/node_modules/npm/node_modules/.bin/opener
      /usr/local/lib/node_modules/npm/node_modules/.bin/qrcode-terminal
      /usr/local/lib/node_modules/npm/node_modules/.bin/rc
      /usr/local/lib/node_modules/npm/node_modules/.bin/semver
      /usr/local/lib/node_modules/npm/node_modules/.bin/sshpk-conv
      /usr/local/lib/node_modules/npm/node_modules/.bin/sshpk-sign
      /usr/local/lib/node_modules/npm/node_modules/.bin/sshpk-verify
      /usr/local/lib/node_modules/npm/node_modules/.bin/uuid
      /usr/local/lib/node_modules/npm/node_modules/.bin/which

当我尝试brew prune时,我得到了:

newmbp$ brew link node
Warning: Already linked: /usr/local/Cellar/node/10.11.0

我注意到文件(要链接或取消链接)位于单独的文件夹中,但是一直在努力了解将文件放在/usr/local/Cellar/usr/local/lib中的含义

导致所有这些的主要原因是笔记本电脑上的风扇经常不时地疯狂运行,而这通常是在MAMP运行时进行的。

1 个答案:

答案 0 :(得分:2)

brew prune删除了断开的符号链接,因此该问题已解决。

brew link node抱怨的事实与此无关;这是完全不同的命令。甚至不是错误,只是一个警告:“您要求我链接node,但它已经被链接了”,所以一切都很好。


Homebrew将其文件安装在/usr/local/Cellar中。另一方面,/usr/local/lib是通常用于库的共享目录。为了让软件找到已安装的Homebrew库,它会将它们符号链接到其中。

例如,假设您有一个公式foo版本1.2.3,它安装了一个库bar。运行brew install foo后,您应该会得到以下内容:

# the library files
/usr/local/Cellar/foo/1.2.3/lib/bar
# a symlink to the library files from /usr/local/lib
/usr/local/lib/bar -> /usr/local/Cellar/foo/1.2.3/lib/bar

如果您brew uninstall foo,它将同时删除库文件和符号链接。

可以用brew unlink <formula>(删除它们)和brew link <formula>(添加它们)来操纵这些Homebrew符号链接。 brew install为您运行brew link,因此您无需这样做。这就是收到警告的原因:您的Node符号链接已经存在。

brew doctor执行各种检查,包括check_for_broken_symlinks。该目录查找诸如/usr/local/var/usr/local/lib之类的目录,以查找损坏的符号链接。损坏的符号链接是其目标不存在的符号链接,通常是因为它已被删除。

这里要了解的重要一点是,Homebrew会查看所有符号链接,而不仅仅是它们创建的符号链接。符号链接损坏 可能会引起问题,这就是Homebrew向您发出警告的原因,但是如果一切正常,您可以忽略该警告。