¿Cuáles son los pros y los contras de MacPorts, Fink y Homebrew?

Estoy migrando de Ubuntu Linux a Mac, y todo es nuevo y estoy volviendo a aprender muchas cosas.

En Linux tuve el excelente apt-get para administrar paquetes de software. Busqué en Google una alternativa en Mac y encontré MacPorts, Fink y Homebrew.

Usaré esta computadora principalmente para desarrollar aplicaciones Ruby on Rails.

Entonces, ¿cuáles son las diferencias entre ellos? ¿Cuáles son las ventajas y desventajas? ¿Cuál está mejor mantenido y tiene más paquetes?

Respuestas (6)

Definitivamente cerveza casera. Empecé con Fink, luego cambié a MacPorts (más feliz), luego a Homebrew (mucho, mucho más feliz). Estas son mis razones para usar cada uno (una lista profesional, por así decirlo):

Soplón

  • Basado en Apt: siéntete como en casa si vienes de un entorno basado en Debian.

MacPorts

  • A diferencia de homebrew, no depende de la biblioteca de MacOS que puede cambiar en el futuro.
  • Instalar todo en:/opt/local
  • Buen sistema de variantes que te permite personalizar la construcción.
  • Archivos de puertos fáciles e intuitivos, también le permite agregar los suyos propios.
  • Admite muchas versiones de macOS que se remontan a Mac OS X Tiger, incluidas las versiones de PowerPC. Consulte otra respuesta .

Cerveza casera

  • Aprovechamiento máximo de lo que viene con OS X. A diferencia de Fink o MacPorts, no requiere que construyas/instales Ruby y bibliotecas desde cero solo para instalar alguna pequeña herramienta basada en Ruby.
  • Se instala en /usr/local(Intel) o /opt/homebrew(Apple Silicon)
  • Instalar sin acceso de root.
  • Todos los paquetes instalados se guardan en un espacio aislado limpio en su propio sótano para que no tenga archivos perdidos en todo el sistema, solo enlaces simbólicos de bin, man, etc.
  • Tiene guías y automatización para crear sus propios archivos de fórmula (es decir, descriptores de paquetes).
  • Escrito en rubí y todas las fórmulas son scripts de rubí concisos.

paquete

  • Todo instalado en:/opt/pkg
  • Respaldado por la comunidad pkgsrc y Joyent
  • Conocido por trabajar en NetBSD, DragonFly BSD, Solaris, Debian, macOS, Minix

https://pkgsrc.joyent.com/install-on-osx/

http://pkgin.net/

Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat . Si es necesario descongelar la sala de chat, plantee ese problema en Ask Different Meta o con una bandera.

MacPorts

Es más independiente de Mac OS X, esto significa que MacPorts simplemente ignorará muchas de las bibliotecas del sistema y el software que ya está disponible en Mac OS X y , en su lugar, extraerá el suyo propio , lo que podría ser más lento cuando la utilidad que instale requiera un conjunto de grandes bibliotecas y software.

Pero este tipo de elección es más segura porque los paquetes que instaló están menos influenciados por el procedimiento de actualización/actualización del sistema de Apple.


Cerveza casera

Depende más de los paquetes instalados de Mac OS X existentes, por lo que acelerará la instalación de paquetes y minimizará las bibliotecas redundantes.

Pero el riesgo es que los paquetes instalados se rompan debido a la actualización/actualización del sistema de Apple.

Entonces, estos son los dos tipos diferentes de compensación.

Además, Homebrew se hace cargo de /usr/local de forma predeterminada, lo que a algunas personas no les gusta porque de alguna manera entra en conflicto con la tradición de Unix y puede causar problemas si ya ha instalado algo allí (MySQL, etc.)


Además de estas diferencias, teniendo en cuenta los paquetes que estos dos pueden ofrecer, puede verificar con estos dos comandos si ya tiene instalado MacPorts/Homebrew, que le muestran los paquetes que proporcionan actualmente:

port list | wc -l
brew search | wc -l

Y descubrirá que MacPorts tiene muchos más paquetes que Homebrew.

(19399 vs 3583 el 13 de mayo de 2016)

Como comentario sobre la diferencia en el número de paquetes: Homebrew decididamente no incluye paquetes para lenguajes de programación que tienen su propio sistema de empaquetado (rubygems/pip/cpan…) o para software para el que posiblemente esté disponible un instalador de OS X más apropiado (MacTeX) . Además, los duplicados y las versiones anteriores no están en el repositorio predeterminado, pero se incluyen en repositorios alternativos . Compare esto con macports, que, por ejemplo, contiene un puerto IPython para todas las versiones de Python incluidas. Es una especie de filosofía diferente que naturalmente aumenta la cantidad de paquetes en macports.
@YaOz, ¿seguramente podrías cambiar homebrew para usar otra cosa que no sea /usr/local?
@Pacerier Creo que en cualquier otro lugar que no /usr/local/sea "no compatible" o "desaconsejado".
Nadie señala uno de los principales problemas de Homebrew... es un sistema de un solo usuario. MacPorts no lo es.
Lo del usuario único no es realmente un problema, está diseñado para contener la carnicería y mantener a los usuarios fuera de raíz. Su cuasi-containerización, más o menos.
Además, los repositorios de código no duplicados son muy buenos . Una de las decisiones de diseño más terribles que he visto en un administrador de paquetes fue Debian rompiendo deliberadamente GEM en el pasado porque "se supone que debes usar apt". Hizo que el sistema fuera inutilizable para Ruby a menos que pirateara el sistema Ruby y compilara el suyo propio, lo que rompía cualquier paquete de Debian dependiendo de Ruby. Su empaque de Python tampoco era mucho mejor. Afortunadamente, más adelante en la pista arreglaron ese desastre. Mas o menos. Mindyou supera las configuraciones de python de Apple Nuking People cada vez que lanzan una revisión menor a OSX

Solo para agregar algunos de mis propios pensamientos que parecen verdaderos alrededor de finales de 2014 al menos.

Homebrew, desde hace un par de años, definitivamente tiene la ventaja en términos de participación mental. Encontrará muchos blogs con personas que hablan de lo mucho más felices que están con Homebrew, generalmente debido a todo el asunto de "MacPorts atrae a todo el mundo" frente a "Homebrew hace uso de lo que ya tiene".

Sin embargo, en mi opinión, MacPorts es una bestia diferente ahora que hace un par de años. Cuando me cambié por primera vez a OS X y estaba usando MacPorts, la filosofía MP era realmente frustrante porque casi todo estaba construido desde la fuente. Una nueva instalación fue particularmente dolorosa/lenta. Sin embargo, durante el último año más o menos, basándome únicamente en mis propias impresiones, parece que el 90 % de los paquetes de MP son binarios, por lo que la instalación es realmente rápida ahora. Por lo que deduzco, Homebrew también se está moviendo en esta dirección con "Botellas", pero tengo la impresión de que la mayoría de las cosas que instale a través de HB en este momento se compilarán desde la fuente.

Entonces, aunque solo sea para ofrecer una opinión compensatoria, MacPorts parece ser en realidad la opción "más rápida" en estos días. Sin embargo, las opiniones de la mayoría de las personas sobre MP parecen estar basadas en experiencias de alrededor de 2011-12 y realmente no toman esto en cuenta. Sin embargo, tómate esto con un grano de sal, ya que no soy un usuario habitual de HB (y es bastante doloroso usar ambos al mismo tiempo).

Sin embargo, creo que HB tiene ventajas que significan que probablemente "ganará la guerra" a largo plazo.

  • HB es todo Ruby, mientras que MacPorts y sus fórmulas de paquetes están escritos en TCL, que no es... exactamente un lenguaje de programación popular. Dicho esto, es bastante simple crear tu propio archivo de carpetas.
  • HB se basa en GitHub y, por lo tanto, parece mucho más acogedor para los nuevos colaboradores, mientras que MacPorts alberga su propio repositorio SVN en algún lugar, creo, lo que básicamente refleja las diferentes edades de ambos proyectos, supongo.
  • HB y Macports ahora usan Github para administrar sus fórmulas, archivos de portfiles y código fuente para proporcionar su funcionalidad.
  • Como se mencionó, el consenso general es que MacPorts ha sido reemplazado por HB y, para bien o para mal, atrae a más personas hacia él.

De lo contrario, YaOZl & kLy cubrieron bastante bien la principal diferencia en términos de sudo, dependencias, etc. Personalmente, encuentro que MacPorts a veces genera algunos dolores de cabeza en términos de que otros programas no esperan que haya nada /opt/local, las cosas se instalan con permisos de raíz, etc. y hay algunas cosas que generalmente es mejor no instalar con MacPorts (por ejemplo, puede instalar Rails a través MacPorts, pero sería una locura no instalarlo a través de la administración normal de gemas de Ruby). Aparte de eso, aunque soy un gran admirador de la filosofía de MacPorts de construir su propio pequeño mundo y no depender de una biblioteca OS X preempaquetada, cuando funciona, y en su mayoría lo hace, todo es muy simple. Que es lo que realmente quieres de un administrador de paquetes. Y como mencioné, en este momento es bastante rápido configurar la mayoría de las cosas.

Espero que algo de eso haya sido útil.

"Como se mencionó, el consenso general es que MacPorts ha sido reemplazado por HB y, para bien o para mal, eso atrae a más personas". ... esto se siente como una declaración muy superficial... ser popular versus brindar calidad no es lo mismo y de ninguna manera implica que el segundo sea "reemplazado" por el primero.
MacPorts ahora usa Github. Consulte guide.macports.org/#project.github : "El proyecto MacPorts utiliza el sistema de control de versiones distribuidas de Git para administrar el código de todo el proyecto. Nuestros repositorios maestros están alojados en GitHub. Mantenemos repositorios públicos para casi todo el código de nuestro proyecto y documentación, incluido un repositorio de GitHub para el propio sistema MacPorts, para los puertos MacPorts e incluso para la guía que está leyendo en este momento".
La estrategia de MacPorts tiene más sentido ya que Apple no es confiable acerca de la librería que distribuirán en su "próxima versión".

Algo que otras respuestas (hasta ahora) no parecen haber mencionado es que MacPorts tiene un excelente soporte para versiones heredadas de macOS. Homebrew solo es compatible con los sistemas operativos actualmente compatibles con Apple, lo que generalmente significa las últimas tres versiones. Por ejemplo, a partir de febrero de 2022, solo Monterrey, Big Sur y Catalina son compatibles con Homebrew.

Por el contrario, MacPorts se puede instalar en Tiger (!), y el proyecto mantiene parches especiales para mantener el software funcionando siempre que sea posible. Esto incluye una biblioteca de "Soporte heredado" que respalda las funciones de las versiones más nuevas de macOS a las más antiguas; enlazar con esta biblioteca mientras se compila puede hacer que una variedad de software nuevo funcione repentinamente en sistemas más antiguos.

Entonces, si está ejecutando una versión anterior de macOS, o si cree que puede necesitar permanecer en un sistema operativo actual más allá de la fecha de vencimiento de Apple, probablemente debería optar por MacPorts.

Estoy en China y visitar github a menudo falla, lo que hace que la instalación de brew sea bastante complicada. Conozco algunos brew mirror en China, así que planteé un problema contra brew Proporcionar una manera fácil de cambiar los orígenes de homebrew . Lo arreglaron en 2.3 . Pero incluso con eso, la instalación de brew todavía no se suaviza, por ejemplo, presioné varias veces que después de la instalación, brew no puede encontrar ninguna fórmula.

qiulang@qiulangdeMacBook-Air redis % brew info wget
Error: No available formula with the name "wget".
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
qiulang@qiulangdeMacBook-Air redis % brew info redis
Error: No available formula with the name "redis".
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.

Ahora sé que necesito "volver a tocar", pero durante esos momentos simplemente no sabía la razón exacta, excepto que la instalación de brew no fue exitosa.

Por desesperación, cambié macports y funciona bastante bien hasta ahora.

Brew fue completamente fácil de usar para mí, por lo que no puedo hablar sobre sus contras. Algunas desventajas de MacPorts:

Hay varias preguntas muy populares sobre los dos primeros puntos.

Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .
Es falso que tengas que tener un CC para poder establecer un ID de Apple y descargar Xcode desde el sitio del desarrollador. Acabo de construir uno para probar.
@MarcWilson gracias por la actualización. Me pidieron una tarjeta de crédito en 2015 y no encontré la forma de prescindir de ella. No puedo probar las nuevas condiciones ahora. (También pueden ser específicos del país; estoy en la UE).