如何修复Mac OSX 10.9上的'brew doctor`错误(未发现Cellar和Homebrew sbin中未链接的kegs)?

时间:2013-12-11 08:27:46

标签: macos homebrew package-managers

我正在尝试解决brew问题。当我运行brew doctor时,我得到以下输出:

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:

    autoconf
    libevent

Warning: Homebrew's sbin was not found in your PATH but you have installed
formulae that put executables in /usr/local/sbin.
Consider setting the PATH for example like so
    echo export PATH="/usr/local/sbin:$PATH" >> ~/.bash_profile

所以我继续尝试了所有的建议。首先brew link autoconf,结果是:

Linking /usr/local/Cellar/autoconf/2.69... Warning: Could not link autoconf. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/autoconf/2.69/share/emacs/site-lisp/autotest-mode.elc
Target /usr/local/share/emacs/site-lisp/autotest-mode.elc 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

所以我再次尝试了建议的命令:brew link --overwrite autoconf

Linking /usr/local/Cellar/autoconf/2.69... Warning: Could not link autoconf. Unlinking...

Error: Permission denied - /usr/local/share/emacs/site-lisp/autotest-mode.elc

我对permission denied的初步回复通常是以sudo为前缀,这导致brew告诉我:Error: Cowardly refusing to sudo brew link`。

尝试brew link libevent时,我得到与brew link autoconf相同的结果。

最后,我尝试通过运行建议的echo export PATH="/usr/local/sbin:$PATH" >> ~/.bash_profile来解决未找到的sbin。这样运行没有错误,但是当我再次运行brew doctor时,仍会显示消息。

有人知道如何解决这些问题吗?欢迎所有提示!

3 个答案:

答案 0 :(得分:14)

这里的一般问题是你的系统上已经安装了autoconf和libevent,它们也在你的自制“Cellar”中。因此,您的系统上有两个autoconf副本,以及系统上的两个libevent副本。

自制软件尝试做的是删除这些库的先前安装(系统范围)版本,并使用来自自制软件酒窖的符号链接替换所有相关的 REAL 文件。这样可以让homebrew完全控制为您升级和管理这些库。它还可以在两个地方为您提供这些库的一个副本。

问题是自制软件没有删除这些REAL文件的unix权限,你需要自己动手。以下是autoconf的方法:

$ sudo rm /usr/local/share/emacs/site-lisp/autotest-mode.elc
$ sudo chmod 777 /usr/local/share/emacs/site-lisp/
$ sudo rm -rf /usr/local/share/autoconf
$ brew link --overwrite autoconf

您应该看到:

  

链接/usr/local/Cellar/autoconf/2.69 ...创建了21个符号链接

更新我刚刚注意到关于sbin的部分。我不确定这个问题最初是如何发生的,但我可以解释如何修复它。

自制软件推荐的修复程序(ECHO ...)仅在您下次登录Mac时生效。要使此更改生效,您必须强制终端重新读取.bash_profile文件。运行homebrew提供的ECHO命令后,只需$ source ~/.bash_profile

由于此问题现在已有几个月了,您可能已经发现此错误消息已消失。

答案 1 :(得分:2)

运行以下命令以授予权限:

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

授予权限后,现在必须将它们链接起来,因为它已经安装:

$ brew link autoconf
$ brew link libevent

答案 2 :(得分:0)

您可能希望在/usr/local/share/emacs/site-lisp/autotest-mode.elc上使用chmod更改写入权限

之后你应该得到这样的东西: 链接/usr/local/Cellar/autoconf/2.69 ...创建了21个符号链接