Pelo que sei, brew
não coloca nada em /usr/local/bin
que colida (tem o mesmo nome que) um executável distribuído pela 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 nomes. *No entanto, ver os problemas com ls
e tar
, e utilizando outros agregadores de pacotes como fink
e port
(MacPorts), muito abaixo.
Brew
faz uma de duas coisas que eu sei que ajudam a gerir as colisões de nomes:
Brew
deixa barris sem ligação na Adega. Para instalar coisas, a cerveja deixa as ferramentas onde elas estão, e cria ligações simbólicas a essas ferramentas em /usr/local/bin
. Para ferramentas com as quais brew
não quer uma colisão de nome, não cria uma ligação simbólica.
- ** Para muitas se não todas as ferramentas padrão que também estão em
/bin
e /usr/bin
, brew
prefere o link em /usr/local/bin
com um “g”, por exemplo, para executar um ls
com uma versão de cerveja, use gls
.** Basta fazer um ls -l
em /usr/local/bin
e procurar os ficheiros ligados - esses são os brew
colocados lá. Nota: As ferramentas brew
instaladas que devem ser acedidas pelos seus nomes reais são encontradas em /usr/local/Cellar/coreutils/8.21/libexec/gnubin
.
não ponho /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 no seu sistema, use brew doctor
e procure esta secção - Aqui está o resultado de interesse do 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 não ponho as ferramentas do brew
em primeiro lugar, de facto, de modo algum, é porque os comandos brew
instalados ls
e tar
não lidam correctamente com o sistema de ficheiros ACL, de facto, da última vez que verifiquei (o que foi na semana passada), não foram tratados de todo. Este é um GRANDE problema, e para o evitar completamente, juntamente com a questão da configuração de man
página associada que etiquetas juntamente com a definição do $PATH
correcto, certifico-me de colocar as ferramentas relacionadas com o OSX
, especialmente as encontradas em /bin
e /usr/bin
, em primeiro lugar.
** Outra razão pela qual nem sequer ponho /usr/local/bin
no meu caminho é porque brew
não joga bem com os outros, e fink
e port
(MacPorts) têm actualmente muito mais pacotes suportados que eu preciso 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
. Assim, guardo /sw
e /opt
na minha pesquisa $PATH
(para fink
e port
, respectivamente) e coisas de referência que preciso do /usr/local/bin
, incluindo gnat
, ou escrevo, ou utilizo bash
&&, ou crio um ficheiro alias
para um ambiente totalmente diferente quando escrevo setup
.
A questão é que depende realmente do que se quer e do que se precisa na altura.
Aqui está um exemplo do problema da LCA que mencionei acima.
Com as ferramentas Ada
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 OSX
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 brew
e não conheço muitas outras tar
ferramentas, mas quem se pode dar ao luxo de ter algo a partir 6 meses por causa de um problema brew
!