Homebrew: brew doctor 报了很多错误,我该如何修复?

9

我很久以前安装了homebrew,但我并没有经常使用它,现在想重新开始使用它,因为它是一个非常有用和易于使用的软件包安装器。无论如何,我运行了brew doctor命令,结果得到了一系列警告,不确定如何修复!我特别担心删除.dylib、.la和.pc文件,以防那些未通过homebrew安装的软件包需要它们。如果您能提供任何帮助,将不胜感激。如果有影响的话,我的操作系统是Mac OS X Mountain Lion(10.8.3),我的警告列表如下:

UOS-12044:~ as34g12$ brew doctor
Warning: /usr/local/include isn't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew.

If a brew tries to write a header file to this directory, the install will
fail during the link step.

You should probably `chown` /usr/local/include
Warning: /usr/local/share isn't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew.

If a brew tries to write a file to this directory, the install will
fail during the link step.

You should probably `chown` /usr/local/share
Warning: Some directories in /usr/local/share/locale aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.
You should probably `chown` them:

    /usr/local/share/locale
    /usr/local/share/locale/be
    /usr/local/share/locale/be/LC_MESSAGES
    /usr/local/share/locale/ca
    /usr/local/share/locale/ca/LC_MESSAGES
    /usr/local/share/locale/da
    /usr/local/share/locale/da/LC_MESSAGES
    /usr/local/share/locale/de
    /usr/local/share/locale/de/LC_MESSAGES
    /usr/local/share/locale/el
    /usr/local/share/locale/el/LC_MESSAGES
    /usr/local/share/locale/es
    /usr/local/share/locale/es/LC_MESSAGES
    /usr/local/share/locale/fr
    /usr/local/share/locale/fr/LC_MESSAGES
    /usr/local/share/locale/ja
    /usr/local/share/locale/ja/LC_MESSAGES
    /usr/local/share/locale/nl
    /usr/local/share/locale/nl/LC_MESSAGES
    /usr/local/share/locale/sv
    /usr/local/share/locale/sv/LC_MESSAGES
    /usr/local/share/locale/tr
    /usr/local/share/locale/tr/LC_MESSAGES
Warning: Some directories in /usr/local/share/man aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.
You should probably `chown` them:

    /usr/local/share/man/de
    /usr/local/share/man/de/man1
Warning: The /usr/local directory is not writable.
Even if this directory was writable when you installed Homebrew, other
software may change permissions on this directory. Some versions of the
"InstantOn" component of Airfoil are known to do this.

You should probably change the ownership and permissions of /usr/local
back to your user account.
Warning: Setting DYLD_LIBRARY_PATH can break dynamic linking.
You should probably unset it.
Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.

Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:

    /Library/Frameworks/Python.framework/Versions/2.7/bin/python-config
    /Library/Frameworks/Python.framework/Versions/2.7/bin/python2-config
    /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
    /soft/star-hikianalia/bin/gsl-config
Warning: Unbrewed dylibs were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected dylibs:
    /usr/local/lib/libatomic.1.dylib
    /usr/local/lib/libg2c.0.0.0.dylib
    /usr/local/lib/libgcc_ext.10.4.dylib
    /usr/local/lib/libgcc_ext.10.5.dylib
    /usr/local/lib/libgcc_s.1.dylib
    /usr/local/lib/libgfortran.3.dylib
    /usr/local/lib/libgomp.1.dylib
    /usr/local/lib/libitm.1.dylib
    /usr/local/lib/libmacfuse_i32.2.dylib
    /usr/local/lib/libmacfuse_i64.2.dylib
    /usr/local/lib/libntfs-3g.80.dylib
    /usr/local/lib/libntfs.9.0.0.dylib
    /usr/local/lib/libosxfuse_i32.2.dylib
    /usr/local/lib/libosxfuse_i64.2.dylib
    /usr/local/lib/libquadmath.0.dylib
    /usr/local/lib/libssp.0.dylib
    /usr/local/lib/libstdc++.6.dylib
    /usr/local/lib/libublio.1.dylib
Warning: Unbrewed .la files were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected .la files:
    /usr/local/lib/libatomic.la
    /usr/local/lib/libfftw3.la
    /usr/local/lib/libfftw3_threads.la
    /usr/local/lib/libfftw3f.la
    /usr/local/lib/libfftw3f_threads.la
    /usr/local/lib/libg2c.la
    /usr/local/lib/libgfortran.la
    /usr/local/lib/libgmp.la
    /usr/local/lib/libgomp.la
    /usr/local/lib/libitm.la
    /usr/local/lib/libmpc.la
    /usr/local/lib/libmpfr.la
    /usr/local/lib/libntfs-3g.la
    /usr/local/lib/libntfs.la
    /usr/local/lib/libosxfuse_i32.la
    /usr/local/lib/libosxfuse_i64.la
    /usr/local/lib/libquadmath.la
    /usr/local/lib/libssp.la
    /usr/local/lib/libssp_nonshared.la
    /usr/local/lib/libstdc++.la
    /usr/local/lib/libsupc++.la
    /usr/local/lib/libublio.la
Warning: Unbrewed .pc files were found in /usr/local/lib/pkgconfig.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected .pc files:
    /usr/local/lib/pkgconfig/cfitsio.pc
    /usr/local/lib/pkgconfig/fftw3.pc
    /usr/local/lib/pkgconfig/fftw3f.pc
    /usr/local/lib/pkgconfig/libntfs-3g.pc
    /usr/local/lib/pkgconfig/libublio.pc
    /usr/local/lib/pkgconfig/osxfuse.pc
Warning: Unbrewed static libraries were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected static libraries:
    /usr/local/lib/libatlas.a
    /usr/local/lib/libatomic.a
    /usr/local/lib/libcblas.a
    /usr/local/lib/libcfitsio.a
    /usr/local/lib/libf77blas.a
    /usr/local/lib/libfftw3.a
    /usr/local/lib/libfftw3_threads.a
    /usr/local/lib/libfftw3f.a
    /usr/local/lib/libfftw3f_threads.a
    /usr/local/lib/libfrtbegin.a
    /usr/local/lib/libg2c.a
    /usr/local/lib/libgfortran.a
    /usr/local/lib/libgmp.a
    /usr/local/lib/libgomp.a
    /usr/local/lib/libiberty.a
    /usr/local/lib/libitm.a
    /usr/local/lib/liblapack.a
    /usr/local/lib/libmpc.a
    /usr/local/lib/libmpfr.a
    /usr/local/lib/libntfs-3g.a
    /usr/local/lib/libntfs.a
    /usr/local/lib/libptcblas.a
    /usr/local/lib/libptf77blas.a
    /usr/local/lib/libquadmath.a
    /usr/local/lib/libssp.a
    /usr/local/lib/libssp_nonshared.a
    /usr/local/lib/libstdc++.a
    /usr/local/lib/libsupc++.a
    /usr/local/lib/libublio.a
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:

    fftw
Warning: You have uncommitted modifications to Homebrew
If this a surprise to you, then you should stash these modifications.
Stashing returns Homebrew to a pristine state but can be undone
should you later need to do so for some reason.
    cd /usr/local/Library && git stash && git clean -f
Warning: Some installed formula are missing dependencies.
You should `brew install` the missing dependencies:

    brew install gmp harfbuzz icu4c libmpc mpfr

Run `brew missing` for more details.

提前感谢您的帮助!

2个回答

25

错误消息中指出问题所在;

Warning: /usr/local/include isn't writable
You should probably change the ownership and permissions of /usr/local

返回到您的用户帐户。

如果您运行ls -l /usr/local/,则应该有以下输出:

total 4
-rw-r--r--    1 user  admin    493 23 Apr 15:14 CONTRIBUTING.md
drwxr-xr-x   17 user  admin    578  5 May 14:54 Cellar
drwxr-xr-x    3 user  admin    102 23 Apr 16:33 Frameworks
drwxr-xr-x   10 user  admin    340 24 Apr 08:50 Library

这里的user是你的用户名,admin是你所在的用户组。如果你看到类似以下的内容:

drwxr-xr-x   17 root  wheel    578  5 May 14:54 Cellar

你需要运行chown -R user:admin /usr/local命令,这将把所有权更改回你的用户。

这应该解决第一部分的问题。但是请注意,如果你之前运行过"sudo make install"命令安装了Homebrew管理之外的软件,这可能会导致其他软件无法工作。

关于DYLD_LIBRARY_PATH问题,如何修复brew doctor错误有一个很好的答案。


请解释一下,如果使用sudo安装,它会如何阻止其他软件的运行?在chown之后,那些软件不是已经拥有这些目录的权限了吗? - Nakilon
几种方法: 1)仅因为软件是用 sudo 安装的,并不意味着它将作为根用户运行。它可能只需要访问一些核心文件来更改设置,然后作为不同的用户运行。 2)相反,如果您使用 sudo make install 安装软件,则可能会将所有文件更改回 root:root 用户和组,从而停止您的自制软件再次工作。 - Ewan

2

基本上,/usr/local目录中的内容不是通过homebrew完成的,这会使其产生混淆。因此,您必须选择保留homebrew内容或其他内容。

如果您不知道哪个是哪个,我建议您备份/usr/local并将其删除,然后从头开始使用全部homebrew或全部其他内容。


2
我在考虑也许应该删除Homebrew并坚持使用其他安装方法,我不想完全依赖Homebrew,特别是因为它很容易被其他安装程序所混淆...感谢您的帮助 :) - Aarran Shaw
请注意,fink和macports故意不使用/usr/local,以便您可以在那里安装其他东西(基于设计师对Unix的长期经验),但在所有情况下,如果有选择,请通过软件包管理器进行安装。 - mmmmmm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接