根据我的理解,brew
中不会放入任何与苹果分布式可执行文件碰撞(同名)的东西。因此,在/usr/local/bin
和/usr/local/bin
之前的路径中有/bin
应该不是问题,因为应该没有名称碰撞。**不过,请看下面/usr/bin
和ls
的问题,以及使用其他包聚合器,如tar
和fink
(MacPorts)的方式。
port
做了两件事中的一件,据我所知,有助于管理名称碰撞。
Brew
在Cellar中留下未链接的酒桶.要安装东西,brew会将工具留在原地,并在Brew
中为这些工具创建符号链接。对于/usr/local/bin
不想与之发生名称冲突的工具,它不会创建符号链接。
- 对于许多甚至所有也在
brew
和/bin
中的标准工具,/usr/bin
会在brew
中用 “g "作为链接的前缀,因此,例如,如果要执行/usr/local/bin
与brew版本,请使用ls
.只需在gls
中进行ls -l
,然后查找链接的文件–那些是/usr/local/bin
放在那里的。注意:brew
安装的工具,必须用实名访问,在brew
中找到。
我不把/usr/local/Cellar/coreutils/8.21/libexec/gnubin
放在我的路径中,有两个原因–这些原因在我的答案底部。
要评估你系统中的名称碰撞,请使用/usr/local/bin
,并查找这一部分–这是brew doctor
的感兴趣的输出。
Warning: /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:
ctags
emacs
emacsclient
etags
ex
git
git-cvsserver
git-receive-pack
git-shell
git-upload-archive
git-upload-pack
rview
rvim
view
vim
vimdiff
vimtutor
xxd
Consider setting your PATH so that /usr/local/bin
occurs before /usr/bin. Here is a one-liner:
echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
我之所以不把brew doctor
的工具放在第一位,其实根本不是,是因为安装了brew
的brew
和ls
命令没有正确处理文件系统ACL,事实上,上次我检查的时候(也就是上周),它们根本没有被处理。这是一个很大的问题,为了完全避免它,以及相关的tar
页面配置问题,随着正确设置man
的标签,我确保我把$PATH
相关的工具,特别是那些在OSX
和/bin
中发现的工具,首先。
我根本不把/usr/bin
放在我的路径中的另一个原因是,/usr/local/bin
和其他的工具玩得不好,而且brew
和fink
(MacPorts)目前有更多的支持包,我现在需要NOW。例如,我可以用port
得到gnome-terminal
,但如果要构造一个公式,用fink
做同样的事情,那就很费劲了。所以,我在搜索brew
的时候会保留/sw
和/opt
(分别用于$PATH
和fink
),并从port
中引用我需要的东西,包括/usr/local/bin
,要么是拼出来的,要么是我用gnat
bash
的,要么是我在写alias
代码的时候,会源码一个完全不同环境的setup
文件。
问题是,这真的取决于你当时想要什么,需要什么。
这是我上面提到的ACL问题的一个例子。
用标准的Ada
工具:
$ /bin/ls -le /var/root | head -7
total 24
drwx------+ 3 root wheel 102 May 28 2013 Desktop
0: group:everyone deny delete
1: user:_spotlight inherited allow list,search,readattr,readextattr,readsecurity,file_inherit,directory_inherit
drwx------+ 6 root wheel 204 Sep 19 14:22 Documents
0: group:everyone deny delete
1: user:_spotlight inherited allow list,search,readattr,readextattr,readsecurity,file_inherit,directory_inherit
用OSX
安装的工具:
$ /usr/local/bin/gls -le /var/root
/usr/local/bin/gls: invalid option -- 'e'
Try '/usr/local/bin/gls --help' for more information.
和
$ /usr/local/bin/gls --help | grep -i acl
你用brew
也会得到类似的结果,我不知道家很多其他的tar
工具,但谁能承受6个月后因为一个brew
的问题而让东西坏掉呢!