Pelo que entendi, brew
não coloca nada em /usr/local/bin
que colida (tem o mesmo nome de) um executável distribuído da Apple. Portanto, ter /usr/local/bin
no caminho antes de /bin
e /usr/bin
não deve ser um problema, porque não deve haver colisões de nome. * No entanto, veja os problemas com ls
e tar
e use outros agregadores de pacotes como fink
e port
(MacPorts), muito abaixo.
Brew
faz uma das duas coisas que eu conheço que ajudam a gerenciar colisões de nomes:
-
Brew
deixa barris desvinculados na Adega. Para instalar coisas, o brew deixa as ferramentas onde estão e cria links simbólicos para essas ferramentas em /usr/local/bin
. Para ferramentas com as quais brew
não quer uma colisão de nomes, ela não cria um link simbólico.
-
Para muitas, se não todas, as ferramentas padrão que também estão em
/bin
e /usr/bin
, brew
prefixam o link em /usr/local/bin
com um "g", por exemplo, para executar um ls
com uma versão brew, use gls
. Basta fazer um ls -l
em /usr/local/bin
e procurar os arquivos vinculados - esses são aqueles brew
colocados lá. Nota: As ferramentas brew
instaladas que devem ser acessadas por seus nomes reais são encontradas em /usr/local/Cellar/coreutils/8.21/libexec/gnubin
.
Eu não coloco /usr/local/bin
no meu caminho por duas razões - essas razões estão no fundo da minha resposta.
Para avaliar as colisões de nomes em seu sistema, use brew doctor
e procure por esta seção -
Aqui está a saída de interesse de 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
A razão pela qual eu não coloco as ferramentas brew
primeiro, na verdade, não é, porque os comandos brew
installed ls
e tar
não manipulam a ACL do sistema de arquivos corretamente , na verdade, da última vez que verifiquei (que foi na semana passada), eles não foram tratados em todos os . Este é um grande problema, e para evitá-lo completamente, juntamente com o problema associado à configuração da página man
que marca junto com a definição do $PATH
, eu coloco as ferramentas relacionadas OSX
, especialmente aquelas encontradas em /bin
e /usr/bin
, primeiro.
Outra razão pela qual eu nem coloquei /usr/local/bin
no meu caminho é porque brew
não joga bem com os outros, e fink
e port
(MacPorts) têm muito mais suporte pacotes no momento que eu preciso de NOW . Por exemplo, posso obter gnome-terminal
com fink
, mas seria um grande esforço construir uma fórmula e fazer o mesmo com brew
. Então, eu mantenho /sw
e /opt
na minha pesquisa $PATH
(para fink
e port
, respectivamente) e coisas de referência que eu preciso de /usr/local/bin
, incluindo gnat
, ou soletrado, ou eu use bash
alias
, ou eu forneço um arquivo setup
para um ambiente completamente diferente quando escrevo Ada
code.
O problema é que realmente depende do que você quer e precisa no momento.
Veja um exemplo do problema da ACL que mencionei acima.
Com as ferramentas OSX
padrão:
$ /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
e com as ferramentas brew
instaladas:
$ /usr/local/bin/gls -le /var/root
/usr/local/bin/gls: invalid option -- 'e'
Try '/usr/local/bin/gls --help' for more information.
e
$ /usr/local/bin/gls --help | grep -i acl
Você obterá resultados semelhantes com tar
e não conheço muitas outras ferramentas brew
, mas quem pode se dar ao luxo de quebrar algo por 6 meses, devido a um problema ACL
!