brew doctor 说“错误:/usr/bin 发生在 /usr/local/bin 之前”如何解决?
Posted
技术标签:
【中文标题】brew doctor 说“错误:/usr/bin 发生在 /usr/local/bin 之前”如何解决?【英文标题】:brew doctor says "Error: /usr/bin occurs before /usr/local/bin" how to fix? 【发布时间】:2012-07-05 08:38:59 【问题描述】:Adams-MacBook-Pro% brew doctor
Error: /usr/bin occurs before /usr/local/bin
This means that system-provided programs will be used instead of those
provided by Homebrew. The following tools exist at both paths:
clusterdb
createdb
createlang
createuser
dropdb
droplang
dropuser
ecpg
git
git-cvsserver
git-receive-pack
git-shell
git-upload-archive
git-upload-pack
gitk
pg_config
pg_dump
pg_dumpall
pg_restore
pg_upgrade
psql
reindexdb
vacuumdb
Consider amending your PATH so that /usr/local/bin
is ahead of /usr/bin in your PATH.
这是我的路径:
Adams-MacBook-Pro% echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
我认为将东西移到前面很危险?我该如何解决这个问题?另外,我什至不确定在哪里可以找到 /user/bin 在路径中声明的位置。
谢谢
【问题讨论】:
每个有这个问题的人,请按照 Homebrew 的说法运行echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
并且不要忘记重新启动终端(或您正在使用的任何命令行工具)并尝试再次运行 brew doctor
。
对于那些在 PATH 中已经有 /usr/local/bin
但不在 /usr/bin
之前的人,请参阅 Lelouchcr's answer 关于编辑 /etc/paths
(通过没有重复条目来保持 PATH 更整洁)。
【参考方案1】:
$PATH 只是一个包含字符串的变量。把东西放在前面:
% PATH=/usr/local/bin:$PATH
% echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
这并不危险,因为它只适用于您打开的当前 shell(它不会影响您的系统或其他 shell 的路径)。
要自动更改您打开的所有 shell 的路径,请将其放入 ~/.profile
。如果此文件不存在,您可以创建它。
在~/.profile
:
homebrew=/usr/local/bin:/usr/local/sbin
export PATH=$homebrew:$PATH
export
使该变量可用于 shell 的任何子进程。
【讨论】:
我这样做了,创建了 ~/.profile 然后 echo $PATH 但路径没有改变。我关闭了终端并重新打开,但它仍然是相同的路径。 brew医生还在抱怨。 要使对 ~/.profile 的任何更改生效,您要么必须重新打开终端,要么输入% source ~/.profile
。至于为什么它不工作,首先确保文件按预期运行。在~/.profile
echo 'profile works!'
中添加另一行,然后运行% source ~/.profile
。如果您看到打印到屏幕上,请告诉我。
我还应该注意空格在这里很重要。等号两边不能有空格。
是的,打印到屏幕上“配置文件有效!”。此外,user/local/bin 现在位于前面。 brew doctor 说:“你的系统正在酝酿中。”但是,我删除了“echo 'profile works!'现在这条路又断了。
当你打开一个新的终端时会发生同样的事情吗(消息和你的路径都被改变了)?【参考方案2】:
我找到了解决这个问题的另一种方法。
sudo vim /etc/paths
并像这样添加 /usr/local/bin 和 /usr/local/sbin
/usr/local/bin
/usr/local/sbin
/usr/bin
/bin
/usr/sbin
/sbin
打开一个新的终端标签,然后你会看到
~ $ env|grep PATH
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
【讨论】:
IMO 这是最干净的解决方法。它实际上解决了根本问题,并且不会两次将条目放入 PATH 中。 这对我有用。我尝试了 brew 的建议,创建了 .profile,甚至手动修改了 .bash。当然,我确实重新启动了计算机以确保它不是问题所在。除了这个答案之外,没有任何效果。谢谢! 这正是我想要找到的,我正在寻找这些条目在 PATH 变量中的位置,以便像你一样添加。 同意,这应该是公认的答案,因为这对我来说非常有效。【参考方案3】:只需在您喜欢的终端应用程序中运行以下行:
echo export PATH="/usr/local/bin:$PATH" >> ~/.bash_profile
重启终端并运行
brew doctor
问题应该解决
【讨论】:
【参考方案4】:我刚刚创建了一个 .bashrc 文件并添加了
自制=/usr/local/bin:/usr/local/sbin 导出 PATH=$homebrew:$PATH
这似乎成功了!
【讨论】:
应该是 /usr/local/bin(不是 sbin)? 这为我解决了这个问题 - 我使用的是 zsh,所以只编辑 .profile 或 .bash_profile 是行不通的,但是将这些行添加到 .zshrc 就可以了。【参考方案5】:也许 OP 正在使用 zsh。 解决方法是编辑 ~/.zshrc 每次打开 iterm 都会加载这个文件。 更改关于 PATH 的字眼。
【讨论】:
【参考方案6】:如果您真的想将其永久化和默认设置,请编辑文件 /etc/paths(使用 sudo)并将 /usr/local/bin 移至列表顶部。
在我自己的 .bash_profile 中,我使用了一个名为“pathadd”的脚本,它可以防止我的 PATH 在 shell 被分叉时变得笨拙和充满重复。所以我专门采取了 /etc/paths 操作,通过一次又一次地将 /usr/local/bin 添加到前面来避免在 PATH 中出现重复的目录。
【讨论】:
【参考方案7】:使用 $PATH 进行任何更改后,您需要重新启动终端。
【讨论】:
【参考方案8】:在需要编辑的 OS X Mountain Lion 上是 ~/.bash_profile
【讨论】:
以上是关于brew doctor 说“错误:/usr/bin 发生在 /usr/local/bin 之前”如何解决?的主要内容,如果未能解决你的问题,请参考以下文章
Homebrew brew doctor 关于 /Library/Frameworks/Python.framework 的警告,即使安装了 brew 的 Python
appium---MacAppium-Doctor提示WARN:“ ios_webkit_debug_proxy cannot be found”解决方案