Según tengo entendido, brew
no pone nada en /usr/local/bin
que colisione (tenga el mismo nombre que) un ejecutable distribuido por Apple. Por lo tanto, tener /usr/local/bin
en la ruta antes de /bin
y /usr/bin
no debería ser un problema, porque no debería haber colisiones de nombres. *Sin embargo, vea los problemas con ls
y tar
, y el uso de otros agregadores de paquetes como fink
y port
(MacPorts), más abajo.
Brew
hace una de las dos cosas que conozco que ayudan a gestionar las colisiones de nombres:
Brew
deja los barriles sin enlazar en la bodega. Para instalar cosas, brew deja las herramientas donde están, y crea enlaces simbólicos a esas herramientas en /usr/local/bin
. Para las herramientas con las que brew
no quiere una colisión de nombres, no crea un enlace simbólico.
- Para muchas, si no todas, las herramientas estándar que también están en
/bin
y /usr/bin
, brew
prefija el enlace en /usr/local/bin
con una “g”, por lo que, por ejemplo, para realizar un ls
con una versión de cerveza, utilice gls
. Simplemente haga un ls -l
en /usr/local/bin
y busque los archivos enlazados - esos son los que brew
puso allí. Nota: Las herramientas instaladas en brew
a las que hay que acceder por su nombre real se encuentran en /usr/local/Cellar/coreutils/8.21/libexec/gnubin
.
No pongo /usr/local/bin
en mi ruta por dos razones - esas razones están al final de mi respuesta.
Para evaluar las colisiones de nombres en su sistema, use brew doctor
y busque esta sección - Aquí está la salida de interés 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 razón por la que no pongo las herramientas de brew
en primer lugar, de hecho, no en absoluto, es porque los comandos brew
instalados ls
y tar
no manejan la ACL del sistema de archivos correctamente, de hecho, la última vez que lo comprobé (que fue la semana pasada), no se manejaban en absoluto. Este es un GRAN problema, y para evitarlo por completo, junto con el problema asociado de configuración de la página man
que acompaña a la configuración del $PATH
correctamente, me aseguro de poner primero las herramientas relacionadas con el OSX
, especialmente las que se encuentran en el /bin
y el /usr/bin
.
Otra razón por la que ni siquiera pongo /usr/local/bin
en mi ruta es porque brew
no juega bien con otros, y fink
y port
(MacPorts) tienen mucho más paquetes soportados en la actualidad que los que necesito NOW. Por ejemplo, puedo conseguir gnome-terminal
con fink
, pero sería un gran esfuerzo construir una fórmula y hacer lo mismo con brew
. Así que guardo /sw
y /opt
en mi búsqueda $PATH
(para fink
y port
, respectivamente) y hago referencia a las cosas que necesito de /usr/local/bin
, incluyendo gnat
, ya sea deletreado, o utilizo bash
alias
‘s, o me abro un archivo setup
para un entorno completamente diferente cuando escribo código Ada
.
La cosa es que realmente depende de lo que quieras y necesites en ese momento.
Aquí hay un ejemplo del problema de ACL que mencioné antes.
Con las herramientas estándar de 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
y con las herramientas instaladas de brew
:
$ /usr/local/bin/gls -le /var/root
/usr/local/bin/gls: invalid option -- 'e'
Try '/usr/local/bin/gls --help' for more information.
y
$ /usr/local/bin/gls --help | grep -i acl
Obtendrás resultados similares con tar
y no conozco el hogar de muchas otras herramientas de brew
, ¡pero quién puede permitirse que algo se rompa 6 meses después por un problema de ACL
!