Comme je le comprends, 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
y /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
y tar
et en utilisant d'autres agrégateurs de paquets comme fink
y port
(MacPorts), bien en dessous.
Brew
fait l'une des deux choses que je connais qui aident à gérer les collisions de noms :
-
Brew
laisse les fûts non reliés dans la cave. Pour installer du matériel, brew laisse les outils là où ils sont, et crée des liens symboliques vers ces outils dans le répertoire /usr/local/bin
. Pour les outils qui brew
ne veut pas de collision avec un nom, il ne crée pas de lien symbolique.
-
Pour la plupart, si ce n'est tous les outils standard qui sont également dans
/bin
y /usr/bin
, brew
préfixe le lien dans /usr/local/bin
avec un "g", donc par exemple, pour effectuer une ls
avec une version de brassage, utilisez gls
. Il suffit de faire un ls -l
en /usr/local/bin
et cherchez les fichiers liés - ce sont ceux-là même brew
mettre là. Remarque : Le brew
Les outils installés auxquels on doit accéder par leur vrai nom se trouvent dans /usr/local/Cellar/coreutils/8.21/libexec/gnubin
.
Je ne mets pas /usr/local/bin
sur 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 le brew doctor
d'intérêt :
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 mets pas brew
La raison pour laquelle les outils de l'entreprise ne sont pas les premiers, en fait, pas du tout, c'est parce que la brew
installé ls
y 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'ont pas été traités du tout . Il s'agit d'un GROS problème, et pour l'éviter complètement, ainsi que les coûts associés, il est nécessaire de mettre en place un système de gestion de la qualité. man
Le problème de configuration de la page qui accompagne la mise en place de l $PATH
droite, je m'assure que je mets le OSX
les outils connexes, notamment ceux qui se trouvent dans /bin
y /usr/bin
d'abord.
Une autre raison pour laquelle je ne mets même pas /usr/local/bin
sur mon chemin, c'est parce que brew
ne joue pas bien avec les autres, et fink
y port
(MacPorts) ont beaucoup plus de paquets supportés actuellement que ce dont j'ai besoin. MAINTENANT . Par exemple, je peux obtenir gnome-terminal
con fink
mais ce serait un gros effort de construire une formule et de faire de même avec brew
. Donc, je garde /sw
y /opt
dans ma recherche $PATH
(pour fink
y port
respectivement) et faire référence aux éléments dont j'ai besoin dans /usr/local/bin
dont gnat
soit en toutes lettres, soit en utilisant bash
alias
ou je crée un setup
pour un environnement totalement différent lorsque j'écris Ada
code.
Le fait est que cela 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é ci-dessus.
Avec la norme OSX
outils :
$ /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 le brew
outils 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.
と
$ /usr/local/bin/gls --help | grep -i acl
Vous obtiendrez des résultats similaires avec tar
et je ne sais pas chez moi combien d'autres brew
mais qui peut se permettre de voir quelque chose se briser 6 mois plus tard à cause d'une erreur de manipulation. ACL
problème !