¿Es seguro instalar Homebrew y Macports en la misma máquina?

73

Tengo MacPorts instalados en mi iMac con una buena cantidad de puertos instalados.

Sin embargo, estoy interesado en probar Homebrew, ya que he escuchado muchas cosas buenas al respecto, y porque he notado que contiene versiones más actualizadas de varias de las herramientas que uso.

Pero, ¿pueden los dos coexistir en la misma máquina, o primero necesito desinstalar MacPorts por completo?

Además, si los dos pueden instalarse al mismo tiempo, ¿serán completamente independientes el uno del otro? Una de las características de Homebrew es que no reinstala nuevas versiones de cosas que ya están incluidas en el sistema (por ejemplo, Python). ¿Esto también se extiende a no instalar versiones de cosas que MacPorts ya mantiene?

¿Qué sucede si luego desinstalo MacPorts?

Rico
fuente

Respuestas:

24

No coexistirán bien juntos. El gcc de Apple busca en / usr / local algunas cosas. Esto significa que una compilación de macports podría encontrar algo que el portero no esperaba. Consulte las listas de correo y errores de macports para ver ejemplos de cosas que se encuentran en / usr / local.

usuario151019
fuente
44
Solo he tenido una visión muy superficial de homebrew, pero si cambiara la ubicación de instalación predeterminada de homebrew de / usr / local a algo como / opt / homebrew / usr / local, ¿se evitaría ese problema?
Babu
@Babu - Según brew, debes proceder con precaución
Peter Ajtai
@babu: posiblemente, pero habrá problemas con los que homebrew o macports forst pn la ruta y el otro recogiendo esos ejecutables también sospecho que los puertos de cualquiera de los sistemas no se prueban completamente usando otra ruta
user151019
18

Di otra respuesta sobre una pregunta similar:

Homebrew causará problemas al crear software desde la fuente si está instalado en / usr / local. Este es el valor predeterminado, que es una mala elección ya que esta ruta se encuentra en la ruta de búsqueda predeterminada de los compiladores y otras herramientas. Por lo tanto, las compilaciones de otro software de empaque podrían detectar la dependencia incorrecta, utilizando la versión de Homebrew en lugar de la suya.

Hace años, al comienzo del proyecto, incluso MacPorts estaba usando / usr / local. Pero resultó no cooperar con otras herramientas como se documenta en sus preguntas frecuentes. Desafortunadamente, los desarrolladores de Homebrew no querían escuchar sobre experiencias anteriores e ignoraron tales hechos ...

En general, generalmente es mejor apegarse a una herramienta solo para evitar todos los problemas. MacPorts está haciendo todo lo posible para parchear cualquier ruta codificada, por ejemplo, a / sw que utiliza Fink. Por lo general, funcionará, pero tener algo instalado en / usr / local definitivamente le causará problemas.

[...]

raimue
fuente
Parece que también es posible instalar homebrew ~/.homebrew. ¿Seguiría interfiriendo con MacPorts si se instala allí?
Behrang
Cualquier otra ubicación que no sea / usr / local debería estar bien.
raimue
¿MacPort y Homebrew coexistirán bien si uno instalara Homebrew en / opt / local, donde está instalado MacPort?
Adam LS
1
No debe instalar otro software manualmente en / opt / local cuando MacPorts ya está instalado allí. Definitivamente interferirá a medida que coloque allí archivos desconocidos para MacPorts, lo que generará conflictos al instalar puertos.
raimue
8

Solía ​​pensar que las preocupaciones acerca de lo que harán las herramientas de compilación Gnu /usr/localestaban al borde de lo paranoico. Las herramientas de compilación esperan que haya muchas cosas allí: en los viejos tiempos antes de los administradores de paquetes (bromeo), compilamos lo que sea /usr/local. Pero aunque Autoconf generalmente resuelve problemas, la gran complejidad de construcción de muchos proyectos de código abierto sí causa problemas y estos problemas pueden ser difíciles de resolver cuando se encuentra en dificultades.

Pero el riesgo de problemas con Autoconf para encontrar algo que no debería ser /usr/localnecesario debe equilibrarse con la molestia de mantenimiento que tiene dos, tres o cuatro copias diferentes diferentes de Perl, Tcl y Ruby, cada una con una cobertura diferente de sus diferentes bibliotecas de paquetes. Desagradable.

Dado que mi experiencia con MacPorts y Fink generalmente ha sido la exasperación causada por exactamente esto, y en algún momento cambiar a compilar a la antigua usanza /usr/local, me complació ver que Homebrew no se metió con eso. Intenté configurar MacPorts para instalar /usr/local, pero MacPorts hace todo lo posible para dificultarlo. Entiendo que la motivación es hacer la vida más fácil para ellos cuando se enfrentan a gritos de ayuda en su lista de correo y rastreador de errores: tenga en cuenta, sin embargo, que si bien debemos respetar el esfuerzo de los empacadores voluntarios y tratar su tiempo como algo valioso, su la conveniencia de depuración no es el único tipo de simplicidad que le afecta, como usuario.

Homebrew, al menos a este respecto, hace las cosas como solían hacerlo, y MacPorts intenta no interferir. Si está dispuesto a documentar qué paquetes necesita con Homebrew, y limpiar / usr / local limpiar y reinstalar en caso de dificultades, siempre puede retroceder en caso de que las cosas salgan mal. Y una vez que se da cuenta de que los problemas en / usr / local generalmente no conllevan el riesgo de daños permanentes en sus máquinas, puede sentirse más libre de asumir riesgos.

Solo notaré cuánto peor es el empaquetado en OSX que FreeBSD: Apple realmente no parece preocuparse por la usabilidad de su subsistema BSD, porque este es un problema con el que podrían ayudar.

Charles Stewart
fuente
Bueno, mi pregunta se hace desde la perspectiva de un usuario tonto que solo está usando el administrador de paquetes para "obtener cosas". No estoy del todo seguro de que sería capaz de "resolver las cosas un poco [yo] si las cosas salen mal". Aún así, vota de todos modos por la aclaración adicional. ¡Gracias!
Rico
1
MacPorts como buenas razones para no usar / usr / local, ver trac.macports.org/wiki/FAQ#defaultprefix
raimue
3
@Raim: buenas razones para ellos: es casi una compensación entre su conveniencia de seguimiento de errores y la simplicidad de la instalación en la máquina del usuario. Me importa lo último.
Charles Stewart
1
La cantidad de cosas que pueden salir mal porque alguien (o algo) instaló una copia de $ lib /usr/locales interminable. Arquitecturas, versiones, características configuradas y marcas, instalaciones parciales, instalaciones desactualizadas con problemas de seguridad, yy causarán problemas. Claro, adelante si sabe lo que está haciendo, pero no presente errores al respecto. La experiencia muestra que las personas presentan errores de todos modos, y esa es exactamente la razón por la cual -texiste el modo de rastreo ( ver más abajo) y por qué evitar /usr/locales la recomendación predeterminada.
Neverpanic
@neverpanic: mi opinión sobre los riesgos de compilar todo a / usr / local ha cambiado desde que escribí esta respuesta, principalmente porque la complejidad de compilación de los proyectos típicos de código abierto simplemente aumenta y los problemas de Autoconf no son más fáciles de resolver. resolver: al menos, "rayando en paranoico" es injusto. Sin embargo, todavía no me gusta el enfoque del "universo de compilación privado" de Macports, y merece enfatizar que la simplicidad de las interacciones de la lista de correo no es el único tipo de simplicidad por la que debe preocuparse el usuario final. Agregaré advertencias a mi respuesta.
Charles Stewart, el
6

De acuerdo con las preguntas frecuentes de MacPorts :

Tenga en cuenta que a partir de 2.3.0, MacPorts puede ocultar / usr / local automáticamente (y todos los demás archivos de los que no depende un puerto) de los sistemas de compilación de los puertos. Esta característica se llama modo de rastreo y se activa al proporcionar el indicador -t al puerto, por ejemplo

sudo port -t install <portname>

Esto es relevante porque de acuerdo con la página de instalación de Homebrew:

Una de las razones por las que Homebrew simplemente funciona en relación con la competencia es porque recomendamos instalar en / usr / local. ¡Elija otro prefijo bajo su propio riesgo!

Por lo tanto, y con poca experiencia personal, teorizo ​​que usar siempre el indicador -t para las instalaciones de MacPort debería evitar la mayoría de los problemas de que MacPorts y Homebrew coexistan en el mismo sistema. Para abordar su última pregunta: no veo ninguna razón por la cual desinstalar MacPorts pueda causar algún problema.

webappzero
fuente
Tenga en cuenta que sufrirá una importante penalización de rendimiento. Pero en general, esto debería funcionar en casi todos los casos.
Neverpanic
Gracias por señalar esa advertencia @neverpanic. Supongo que dicha penalización de rendimiento solo afecta el tiempo de instalación del puerto y no tiene ningún efecto sobre las características de tiempo de ejecución del puerto instalado. ¿Cierto?
webappzero
Correcto. Solo evita problemas de tiempo de compilación, no problemas de tiempo de ejecución tampoco (pero son muy raros).
Neverpanic
En la práctica, no pude recordar este requisito de usar siempre el indicador de seguimiento. Por lo tanto, no recomiendo esta práctica a otros a menos que esté seguro de que usará -t de manera consistente.
webappzero
Si no desea recordarlo, puede escribir un script de envoltura o un alias de shell (pero tenga en cuenta la interacción entre sudo y alias de shell) para que siempre lo pase por usted. Tenga en cuenta que El Capitan actualmente rompe el modo de rastreo. Estoy trabajando en una solución alternativa.
Neverpanic
4

Mientras instalo homebrew en una computadora donde he estado usando puertos durante años, esto es lo que puedo leer:

Warning: You have MacPorts or Fink installed:
  /opt/local/bin/port

This can cause trouble. You don't have to uninstall them, but you may want to
temporarily move them out of the way, e.g.

  sudo mv /opt/local ~/macports

¡Ten cuidado!

plang
fuente
1

La sudo port -t ...solución de webappzero debería ayudar. Para ser honesto, corro con Fink, MacPorts y Homebrew a la vez, con deferencia a MacPorts (por ahora de todos modos), y solo uso cualquiera de los otros dos para instalar cosas que no puedo obtener de MacPorts. Me he encontrado con muy pocas dificultades de esta manera, incluso antes de aprender el port -ttruco. Sin embargo, si está tratando de usar múltiples administradores de paquetes para mantener entornos complejos de desarrollo y servidores, probablemente se encuentre en un mundo de incomodidad al menos. Elija uno y evite los otros, pero para algo que necesita desesperadamente de ellos, y coloque el principal más temprano en el camino.

Si lo que escucho es cierto acerca de que Apple va a prohibir que se instalen cosas en / usr / que no sean las propias de Apple (o tal vez ya lo están haciendo en El Crapitan, a lo que estoy evitando la calificación "hasta" después de más) los problemas con él se resuelven), supongo que eso mitigará el problema después de que Homebrew no use otra cosa, ya sea que estemos de acuerdo con el enfoque de mano dura de Apple o no.

Al final, me gusta la idea de limitar los propios puertos de Apple a su propio árbol, solo desearía que no fuera / usr /. Prefiero que hayan usado / System / bin /, etc., etc., para aislar sus propias cosas, para poder evitarlo con un software actualizado y mantenido por la comunidad más fácilmente.

S. McCandlish
fuente