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
!