Macports se inserta /opt/local/bin/
antes /usr/bin
en la ruta, por lo que si el mismo programa existe en ambas carpetas, el instalado por Macports tiene prioridad.
No tengo claro cómo Homebrew maneja este problema. Tomando un ejemplo concreto, digamos que corro brew install git
, ahora tengo
> /usr/local/bin/git --version
git version 2.14.2
> git --version
git version 2.13.5 (Apple Git-94)
Para usar el más reciente (git 2.14), es tedioso usar /usr/local/bin/git
. Además, dar más prioridad a /usr/local/bin
la mía puede tener efectos secundarios indeseables.
¿Cuál es la forma estándar de ejecutar programas Homebrew actualizados cuando chocan con los que ya están en macOS? Porque python
he visto que Homebrew evita colisiones al requerir que los usuarios escriban python2
o python3
. Esto es menos claro para el caso de git
.
La convención general es, de hecho, poner /usr/local/bin
por delante de /usr/bin
. Esto se puede hacer editando el /etc/path
archivo o sudo launchctl config user path "/usr/local/bin:$PATH"
. Esto hará que los ejecutables en /usr/bin
sean sombreados por los que están en /usr/local/bin
. Las preguntas frecuentes de Homebrew sugieren esto.
Las recetas caseras no vincularán deliberadamente ningún programa /usr/local/bin
que pueda causar conflictos en todo el sistema (los ejecutables homebrew en realidad están instalados /usr/local/Cellar
y vinculados a /usr/local/bin
). Cuando instala un paquete que puede causar un conflicto, homebrew le advertirá y dirá algo como "No vinculamos automáticamente este paquete. Si realmente lo desea, puede ejecutar `brew link ..." Homebrew generalmente es bastante bueno en cuanto a ser respetuoso con los paquetes de sistema existentes.
Como anécdota empírica, siempre he seguido /usr/bin
y /usr/local/bin
nunca me he encontrado con ningún problema. YMMV, por supuesto.