Homebrew (a diferencia de Macports) no antepone los programas a los del sistema.

Macports se inserta /opt/local/bin/antes /usr/binen 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/binla 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 pythonhe visto que Homebrew evita colisiones al requerir que los usuarios escriban python2o python3. Esto es menos claro para el caso de git.

Respuestas (1)

La convención general es, de hecho, poner /usr/local/binpor delante de /usr/bin. Esto se puede hacer editando el /etc/patharchivo o sudo launchctl config user path "/usr/local/bin:$PATH". Esto hará que los ejecutables en /usr/binsean 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/binque pueda causar conflictos en todo el sistema (los ejecutables homebrew en realidad están instalados /usr/local/Cellary 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/biny /usr/local/binnunca me he encontrado con ningún problema. YMMV, por supuesto.