Da quanto ho capito, brew
non mette nulla in /usr/local/bin
che collida (ha lo stesso nome di) un eseguibile distribuito da Apple. Quindi, avere /usr/local/bin
nel percorso prima di /bin
e /usr/bin
non dovrebbe essere un problema, perché non dovrebbero esserci collisioni di nomi. *Comunque, vedi i problemi con ls
e tar
, e l'uso di altri aggregatori di pacchetti come fink
e port
(MacPorts), più avanti.
Brew
fa una delle due cose che conosco che aiutano a gestire le collisioni dei nomi:
Brew
lascia i fusti non collegati in cantina. Per installare roba, brew lascia gli strumenti dove sono, e crea collegamenti simbolici a quegli strumenti in /usr/local/bin
. Per gli strumenti con cui brew
non vuole una collisione di nome, non crea un link simbolico.
- Per molti, se non tutti i tool standard che sono anche in
/bin
e /usr/bin
, brew
fa precedere il link in /usr/local/bin
da una “g”, così per esempio, per eseguire un ls
con una versione brew, usa gls
. Fai semplicemente un ls -l
in /usr/local/bin
e cerca i file collegati - sono quelli che brew
ha messo lì. Nota: Gli strumenti installati da brew
che devono essere accessibili con i loro veri nomi si trovano in /usr/local/Cellar/coreutils/8.21/libexec/gnubin
.
Non metto /usr/local/bin
nel mio percorso per due ragioni - queste ragioni sono in fondo alla mia risposta.
Per valutare le collisioni di nomi nel tuo sistema, usa brew doctor
e cerca questa sezione - Ecco l'output di brew doctor
di interesse:
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
La ragione per cui non metto gli strumenti di brew
per primi, anzi, per niente, è che i comandi brew
installati ls
e tar
non gestiscono correttamente l'ACL del filesystem, infatti, l'ultima volta che ho controllato (che era la settimana scorsa), non venivano gestiti affatto. Questo è un GROSSO problema, e per evitarlo del tutto, insieme al problema associato alla configurazione della pagina man
che accompagna l'impostazione corretta di $PATH
, mi assicuro di mettere gli strumenti relativi a OSX
, specialmente quelli che si trovano in /bin
e /usr/bin
, per primi.
Un'altra ragione per cui non metto affatto /usr/local/bin
nel mio percorso è che brew
non gioca bene con altri, e fink
e port
(MacPorts) hanno molti più pacchetti supportati al momento di cui ho bisogno NOW. Per esempio, posso ottenere gnome-terminal
con fink
, ma sarebbe un grande sforzo costruire una formula e fare lo stesso con brew
. Così, tengo /sw
e /opt
nella mia ricerca $PATH
(per fink
e port
, rispettivamente) e faccio riferimento alle cose che mi servono da /usr/local/bin
, incluso gnat
, o lo spelling, o uso bash
alias
‘s, o faccio il source di un file setup
per un ambiente completamente diverso quando scrivo codice Ada
.
Il fatto è che dipende davvero da quello che vuoi e di cui hai bisogno in quel momento.
Ecco un esempio del problema ACL che ho menzionato sopra.
Con gli strumenti standard OSX
:
$ /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 con gli strumenti installati brew
:
$ /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
Otterrai risultati simili con tar
e non conosco a casa molti altri strumenti brew
, ma chi può permettersi che qualcosa si rompa 6 mesi dopo per un problema ACL
!