A quanto ho capito, brew
non inserisce nulla in /usr/local/bin
cui si scontra (ha lo stesso nome di) un eseguibile distribuito da Apple. Pertanto, avere /usr/local/bin
nel percorso prima /bin
e /usr/bin
non dovrebbe essere un problema, perché non dovrebbero esserci collisioni di nomi. * Tuttavia, vedi i problemi con ls
e tar
, e usando altri aggregatori di pacchetti come fink
e port
(MacPorts), molto sotto.
Brew
fa una delle due cose che conosco che aiutano a gestire le collisioni di nomi:
Brew
lascia fusti non collegati nella Cantina. Per installare roba, brew lascia gli strumenti dove sono e crea collegamenti simbolici a quegli strumenti /usr/local/bin
. Per gli strumenti che brew
non vogliono una collisione del nome, non crea un collegamento simbolico.
- Per molti, se non tutti, gli strumenti standard che sono anche in
/bin
e /usr/bin
, brew
antepongono il collegamento /usr/local/bin
con una "g", quindi ad esempio per eseguire una ls
versione brew, utilizzare gls
. Basta fare un ls -l
in /usr/local/bin
e cercare i file collegati: quelli sono quelli brew
messi lì. Nota: gli brew
strumenti installati a cui è necessario accedere con i loro nomi reali si trovano in /usr/local/Cellar/coreutils/8.21/libexec/gnubin
.
Non metto la /usr/local/bin
mia strada per due ragioni: quelle 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' brew doctor
output 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
Il motivo per cui non metto brew
prima gli strumenti, in realtà, per niente, è perché i comandi brew
installati ls
e tar
non gestiscono correttamente il file system ACL, infatti l'ultima volta che ho controllato (che era la scorsa settimana), non lo erano " t gestito a tutti . Questo è un GRANDE problema, e per evitarlo del tutto, insieme al man
problema di configurazione della pagina associato che tagga insieme all'impostazione del $PATH
giusto, mi assicuro di mettere gli OSX
strumenti correlati, specialmente quelli trovati in /bin
e /usr/bin
, prima.
Un altro motivo per cui non ho nemmeno messo /usr/local/bin
sul mio percorso è perché brew
non gioca bene con gli altri e fink
e port
(MacPorts) hanno attualmente molti più pacchetti supportati di cui ho bisogno ADESSO . Per esempio, posso ottenere gnome-terminal
con fink
, ma sarebbe un grande sforzo per costruire una formula e fare lo stesso con brew
. Quindi, conservo /sw
e /opt
nella mia ricerca $PATH
( rispettivamente per fink
e port
, rispettivamente) e riferimento alle cose di cui ho bisogno /usr/local/bin
, tra cui gnat
, sia esplicitato, o uso bash
alias
di, o fonte un setup
file per un ambiente completamente diverso quando scrivo il Ada
codice.
Il fatto è che dipende davvero da cosa vuoi e di cui hai bisogno in quel momento.
Ecco un esempio del problema ACL che ho menzionato sopra.
Con gli OSX
strumenti standard :
$ /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 brew
strumenti installati:
$ /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 molti altri brew
strumenti a casa, ma chi può permettersi di fare qualcosa per 6 mesi lungo la strada a causa di un ACL
problema!