Si je comprends bien, brew ne met rien dans /usr/local/bin qui entre en collision (a le même nom que) un exécutable distribué par Apple. Par conséquent, avoir /usr/local/bin dans le chemin avant /bin et /usr/bin ne devrait pas être un problème, car il ne devrait pas y avoir de collision de noms. *Cependant, voir les problèmes avec ls et tar, et en utilisant d'autres agrégateurs de paquets comme fink et port (MacPorts), tout en bas.
Brew fait l'une des deux choses que je connais qui aident à gérer les collisions de noms :
Brew laisse les fûts non liés dans la cave. Pour installer des trucs, l'infusion laisse les outils là où ils sont, et crée des liens symboliques vers ces outils dans /usr/local/bin. Pour les outils avec lesquels brew ne veut pas de collision de nom, il ne crée pas de lien symbolique.
- Pour beaucoup, sinon tous les outils standard qui sont aussi dans
/bin et /usr/bin, brew préfixe le lien dans /usr/local/bin avec un “g”, donc par exemple, pour effectuer un ls avec une version de brassage, utilisez gls. Faites simplement un ls -l dans /usr/local/bin et cherchez les fichiers liés - ce sont ceux que brew a mis là. Note : Les outils brew installés qui doivent être accessibles par leur vrai nom se trouvent dans /usr/local/Cellar/coreutils/8.21/libexec/gnubin.
Je ne mets pas /usr/local/bin dans mon chemin pour deux raisons - ces raisons sont au bas de ma réponse.
Pour évaluer les collisions de noms dans votre système, utilisez brew doctor et cherchez cette section - Voici la sortie d'intérêt 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
La raison pour laquelle je ne fais pas passer les outils de brew en premier, en fait, pas du tout, est que les commandes brew installées ls et tar ne gèrent pas correctement l'ACL du système de fichiers, en fait, la dernière fois que j'ai vérifié (c'était la semaine dernière), ils n'étaient pas du tout gérés. C'est un GRAND problème, et pour l'éviter complètement, ainsi que le problème de configuration de la page man qui y est associé et qui marque le réglage de la $PATH, je m'assure de mettre les outils liés à OSX, en particulier ceux qui se trouvent dans /bin et /usr/bin, en premier.
Une autre raison pour laquelle je ne mets même pas /usr/local/bin sur mon chemin est que brew ne joue pas bien avec les autres, et que fink et port (MacPorts) ont beaucoup plus de paquets supportés actuellement que j'ai besoin de NOW. Par exemple, je peux obtenir gnome-terminal avec fink, mais ce serait un gros effort de construire une formule et de faire la même chose avec brew. Donc, je garde /sw et /opt dans ma recherche $PATH (pour fink et port, respectivement) et je référence les choses dont j'ai besoin à partir de /usr/local/bin, y compris gnat, soit en toutes lettres, soit j'utilise bash alias, soit je source un fichier setup pour un environnement entièrement différent lorsque j'écris du code Ada.
Le truc, c'est que ça dépend vraiment de ce que vous voulez et de ce dont vous avez besoin à ce moment-là.
Voici un exemple du problème de l'ACL que j'ai mentionné plus haut.
Avec les outils OSX 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
et avec les outils brew installés:
$ /usr/local/bin/gls -le /var/root
/usr/local/bin/gls: invalid option -- 'e'
Try '/usr/local/bin/gls --help' for more information.
et
$ /usr/local/bin/gls --help | grep -i acl
Vous obtiendrez des résultats similaires avec tar et je ne connais pas beaucoup d'autres outils brew à la maison, mais qui peut se permettre d'avoir quelque chose qui tombe en panne 6 mois plus tard à cause d'un problème ACL !