¿Cuál es la diferencia / uso de homebrew, macports u otras herramientas de instalación de paquetes? [cerrado]

239

Recientemente me cambié a una Mac desde Ubuntu. Me decepcionó que Mac no tenga lo conveniente sudo apt-geten Ubuntu. He oído que debería usar homebrew, pero no estoy exactamente seguro de lo que hace homebrew o macports.

ROBOTPWNS
fuente
44
muy relacionado: apple.stackexchange.com/questions/32724/…
cregox
8
Hace unos años, la puerta de entrada de homebrew tenía una declaración que decía algo así como "homebrew es mejor porque está escrito en Ruby". No tengo nada en contra de Ruby, en absoluto. Me gusta oop y ruby ​​es un buen lenguaje oop. Tengo un problema con cualquier desarrollador de software que piense que un idioma es mejor que todos los demás. Por esa sola razón no tengo interés en homebrew. Además, macports ha estado funcionando bien para mí durante muchos años.
Mike Makuch

Respuestas:

146

MacPorts es el camino a seguir.

  1. Como @ user475443 señaló, MacPorts tiene muchos más paquetes. Con brew te encontrarás atrapado pronto porque la fórmula que necesitas no existe.

  2. MacPorts es una aplicación nativa: C + TCL. No necesitas a Ruby en absoluto. Para instalar Ruby en Mac OS X, es posible que necesites MacPorts, así que solo ve con MacPorts y estarás feliz.

  3. MacPorts es realmente estable, en 8 años nunca tuve un problema con él, y todo mi ecosistema Unix se transmitió en él.

  4. Si usted es un desarrollador de PHP, puede instalar la última versión de Apache (Mac OS X usa 2.2), PHP y todas las extensiones que necesita, luego actualice todo con un solo comando. Olvídate de hacer lo mismo con Homebrew.

  5. Grupos de apoyo de MacPorts.

    foo@macpro:~/ port select --summary
    
    Name        Selected      Options
    ====        ========      =======
    db          none          db46 none
    gcc         none          gcc42 llvm-gcc42 mp-gcc48 none
    llvm        none          mp-llvm-3.3 none
    mysql       mysql56       mysql56 none
    php         php55         php55 php56 none
    postgresql  postgresql94  postgresql93 postgresql94 none
    python      none          python24 python25-apple python26-apple python27 python27-apple none
    

    Si tiene PHP55 y PHP56 instalados (con muchas extensiones diferentes), puede intercambiarlos con solo un comando. Todas las extensiones relativas son parte del grupo y se activarán dentro del grupo elegido: php55 o php56. No estoy seguro de que Homebrew tenga esta característica.

  6. A los rubistas les gusta reescribir todo en Ruby, porque lo único que están a gusto es el propio Ruby.

sustantivo
fuente
26
A los rubistas les gusta reescribir: ¡jeje, echen un vistazo a los chicos de NodeJS que implementan protocolos binarios para MySQL en JS! :)
kolypto
37
No necesita MacPorts para instalar Ruby: Ruby se incluye con OS X, y brew usa el sistema Ruby.
Michael Ekstrand
55
@Michael Ekstrand OS X no incluye la última versión de Ruby.
sustantivo
89
No puedo votar esto. Es demasiado sarcástico, y el sarpullido socava la información.
OldPeculier
34
Votación para contrarrestar las votaciones "anti-sarcásticas" omitidas. Cualquier información recibida de un ser humano siempre tendrá un sesgo natural ("sarpullido" en este caso). Aprecio la perspectiva de este usuario, quizás específicamente porque la respuesta no se lee como una entrada de wikipedia.
rinogo
109

Homebrew y macports resuelven el mismo problema: la instalación de bibliotecas y utilidades comunes que no están incluidas en osx.

Por lo general, se trata de bibliotecas relacionadas con el desarrollo y el uso más común de estas herramientas es para desarrolladores que trabajan en osx.

Ambos necesitan las herramientas de línea de comando xcode instaladas (que puede descargar por separado desde https://developer.apple.com/ ), y para algunos paquetes específicos necesitará instalar todo el IDE de xcode.

xcode se puede instalar desde la tienda de aplicaciones mac, es una descarga gratuita, pero lleva un tiempo ya que es de alrededor de 5 GB (si no recuerdo mal).

macports es una versión osx de la utilidad de puerto de BSD (como osx se deriva de BSD, esta fue una elección natural). Para cualquiera que esté familiarizado con cualquiera de las distribuciones de BSD, macports se sentirá como en casa.

Una gran diferencia entre homebrew y macports; y la razón por la que prefiero homebrew es que no sobrescribirá las cosas que deberían instalarse "nativamente" en osx. Esto significa que si hay un paquete nativo disponible, homebrew le notificará en lugar de sobrescribirlo y causar problemas más adelante. También instala bibliotecas en el espacio del usuario (por lo tanto, no necesita usar "sudo" para instalar cosas). Esto ayuda a deshacerse de las bibliotecas también, ya que todo está en una ruta accesible para usted.

homebrew también disfruta de una comunidad de usuarios más activa y sus paquetes (llamados fórmulas) se actualizan con bastante frecuencia.


macports no sobrescribe los paquetes OSX nativos; proporciona su propia versión. Esta es la razón principal por la que prefiero macports en lugar de home-brew, debe estar seguro de lo que está utilizando y el cambio de Apple en diferentes momentos a los puertos y haber sido conocido estar atrasado en actualizaciones en algunos proyectos

¿Puedes dar una referencia que muestre que macports sobrescribe los paquetes nativos de OS X? Por lo que puedo decir, toda la instalación de macports ocurre en /opt/local

Tal vez debería aclarar: no dije en ninguna parte de mi respuesta que Macports sobrescribe los paquetes nativos de OSX. Ambos instalan elementos por separado.

Homebrew te avisará cuando debas instalar cosas "nativamente" (usando el instalador preferido de la biblioteca / herramienta) para una mejor compatibilidad. Esto es lo que quise decir. También usará tantas bibliotecas locales que estén disponibles en OS X. De la wiki :

Realmente no nos gustan los engañados en Homebrew / homebrew

Sin embargo, ¡nos gustan los engañados en el grifo!

Las cosas que vienen con OS X o son bibliotecas proporcionadas por RubyGems, CPAN o PyPi no deben ser engañadas. Hay buenas razones para esto:

  • Las bibliotecas duplicadas rompen regularmente las compilaciones
  • Surgen errores sutiles con bibliotecas duplicadas y, en menor medida, herramientas duplicadas
  • Queremos que se esfuerce más para que su fórmula funcione con lo que viene con OS X

Opcionalmente, puede sobrescribir las versiones de utilidades proporcionadas por macosx con homebrew.

Burhan Khalid
fuente
78
macports no sobrescribe los paquetes OSX nativos; proporciona su propia versión. Este es el rason principal. Prefiero macports sobre home-brew, debe estar seguro de lo que está utilizando y el cambio de Apple en diferentes momentos a los puertos. estar detrás de las actualizaciones en algunos proyectos
mmmmmm
13
¿Puedes dar una referencia que muestre que macports sobrescribe los paquetes nativos de OS X? Por lo que puedo decir, toda la instalación de macports ocurre en/opt/local
27
Al menos implicaste muy fuertemente que MacPorts sobrescribe los paquetes nativos de OS X. En lugar de "aclarar" mientras sigue pretendiendo que no dijo que escribió lo que escribió, probablemente debería editar la oración en cuestión.
Relajado
13
Esta oración, "Una diferencia importante entre homebrew y macports; y la razón por la que prefiero homebrew es que no sobrescribirá las cosas que deberían instalarse" nativamente "en osx". debe cambiarse a "Una diferencia importante entre homebrew y macports; y la razón por la que prefiero homebrew es que homebrew no instalará automáticamente copias paralelas de herramientas y bibliotecas que ya proporciona Apple".
bgupta
77
MacPorts no sobrescribe las aplicaciones nativas, "limita el software portado a un" sandbox "privado que evita que se mezcle con su sistema operativo y su software suministrado por el proveedor para evitar que se corrompan". - Guía de MacPorts, Capítulo 1
jla
23

Actualmente, Macports tiene muchos más paquetes (~ 18.6 K) que las fórmulas Homebrew (~ 3.1K), debido a su madurez. Sin embargo, Homebrew se está recuperando lentamente.

Los paquetes Macport tienden a ser mantenidos por una sola persona.

Macports puede mantener múltiples versiones de paquetes, y puede habilitarlos o deshabilitarlos para probar cosas. A veces, esta lista puede corromperse y debe editarla manualmente para que las cosas vuelvan a estar en orden, aunque esto no es demasiado difícil.

Ambos gestores de paquetes solicitarán que se actualicen periódicamente. Esto puede llevar algo de tiempo.

Nota: ¡puede tener ambos gestores de paquetes en su sistema! No es uno ni el otro. Brew podría quejarse, pero Macports no lo hará.

Además, si se trata de paquetes python o ruby, use un entorno virtual siempre que sea posible.

usuario475443
fuente
1
{{{A veces esta lista puede corromperse y debes editarla manualmente para que todo vuelva a estar en orden, aunque esto no es demasiado difícil. }}} Nunca he visto que esto suceda, aunque eso no quiere decir que no sea posible. ¿Cuáles fueron las circunstancias? ¿ Archivó un error ( trac.macports.org )?
LSpice
{{{Ambos gestores de paquetes solicitarán que se actualicen periódicamente. Esto puede llevar algo de tiempo. }}} Esto parece una afirmación extraña. En varios años de uso, solo recuerdo haber actualizado MacPorts varias veces, y la actualización es bastante rápida. ¿Quiere decir que los puertos deben actualizarse con frecuencia? Bueno, pueden serlo, ¡pero eso es algo bueno, no un inconveniente, creo! Además, probablemente valga la pena señalar que MacPorts no pedirá hacer nada, es decir, no hay molestias; usted tiene que pedir que los paquetes fuera de la fecha.
LSpice
18

Por defecto, Homebrew instala paquetes en su / usr / local. Los comandos de Macport requieren sudo para instalarse y actualizarse (similar a apt-get en Ubuntu).

Para más detalles:

Este sitio sugiere usar Hombrew: http://deephill.com/macports-vs-homebrew/

mientras que este sitio enumera las ventajas de usar Macports: http://arstechnica.com/civis/viewtopic.php?f=19&t=1207907

También me cambié de Ubuntu recientemente, y disfruto usando homebrew (¡es simple y fácil de usar!), Pero si te apetece usar sudo, ¡Macports podría ser la mejor manera de hacerlo!

debstep
fuente
44
¿Estás diciendo que homebrew instala cosas /usr/localsin requerir sudo?
1
@NgocPham ¿Tiene una referencia para eso?
16
@Keith Ese sitio es incorrecto. O al menos, está dejando de lado una premisa importante. Dice "Apple nos ha dejado este directorio. Lo que significa que no hay un directorio / usr / local por defecto, por lo que no hay necesidad de preocuparse por estropear las herramientas existentes". Apple no se ha ido /usr/locala Homebrew. Apple se ha ido /usr/locala "ejecutables, bibliotecas, etc. no incluidos en el sistema operativo básico". Eso significa que es posible que las herramientas instaladas antes de usar Homebrew se hayan creado de /usr/localmanera que no se puedan modificar sin él sudo. No discuten eso en la wiki.
2
@NgocPham Mi punto es que no creo que Homebrew pueda usar /usr/localsin permisos de root. Los permisos predeterminados para /usruna nueva instalación de OS X son propietarios de root, sin permisos de escritura para nadie más. Para incluso crear /usr/local , Homebrew necesitaría acceso root. (No estoy tratando de defender nada)
55
@Articuno Creo que te tengo ahora. Es solo la declaración que homebrewpuede instalar cosas sin, sudoporque cuando se configura, solía sudo hacer que el permiso en el directorio sea más flexible para que pueda hacer cualquier cosa dentro /usr/localsin activar la contraseña. ¿Significa que la parte "instalar sin contraseña" está mal? ¡No lo creo! Sigue siendo cierto que homebrew va a ser capaz de conseguir cosas sin la contraseña.
Ngoc Pham