¿Es mejor usar MacPorts o simplemente usar una VM de Ubuntu para herramientas/servicios locales al desarrollar en una Mac?

Como desarrollador (principalmente aplicaciones web basadas en JVM), necesito usar muchas herramientas y servicios diferentes, como Redis, RabbitMQ, MySQL, git, mercurial, etc. Habiendo trabajado en un entorno Linux donde tales herramientas son solo un apt-getde distancia, y un mundo de Windows donde solo ejecuto lo que necesito en una VM de VMWare Workstation (también conocida como una apt-getsobrecarga de distancia + vm), estoy un poco perdido ahora que espero alejarme de Windows y entrar en el Ecosistema Mac para mi vida informática.

He leído sobre MacPorts vs. Fink vs. Homebrew y encontré que todo es un poco confuso en cuanto a cuál se adapta mejor a mis necesidades, aunque creo que MacPorts es la opción más flexible de las tres.

Sin embargo, dado que estoy acostumbrado a ejecutar lo que necesito en una VM, ¿hay algo en contra de hacerlo cuando uso OS X? ¿Cuáles son las ventajas y desventajas de usar MacPorts para instalar cosas directamente y usar una VM de Ubuntu (a través de VMWare Fusion) para alojar las herramientas/servicios que necesito?

En particular, me preocupa más el uso del disco, la capacidad de mantenimiento y la facilidad de uso que el rendimiento. En otras palabras, esto es lo que me importa (en orden de preferencia):

  1. Facilidad de uso : qué tan fácil es desarrollar en Mac y usar las herramientas/servicios
  2. Uso del disco : cuánto espacio en disco se ocupa. Los macbooks más nuevos usan SSD y el espacio es escaso.
  3. Mantenibilidad : qué trabajo implica mantener los paquetes actualizados, agregar nuevos paquetes y eliminar los antiguos
  4. Actualidad : qué tan actualizadas están las herramientas/servicios que están disponibles
  5. Rendimiento : qué tan rápido funcionan las cosas, los servicios en particular

Mi instinto dice que instalar las herramientas de desarrollo reales, como Mercurial, git, etc. directamente a través del método recomendado por los proyectos, y luego instalar los componentes del lado del servidor como MySQL, Redis, RabbitMQ, etc. en una VM es la mejor ruta. pero ¿cuáles son los pros y los contras de hacer esto frente a ir con algo como MacPorts?

Nota: Me doy cuenta de que esta es una pregunta bastante centrada en la programación, pero el problema central es que OS X es diferente de Windows y * nix cuando se trata de configurar un entorno de desarrollo y no estoy seguro de cómo navegar en estos sistemas operativos. aguas específicas de X.

Respuestas (2)

En última instancia, esta es una pregunta bastante personal, que dependerá mucho de su flujo de trabajo y preferencias, pero agregaré lo que pueda.

Mi instinto está en línea con el suyo: instale las herramientas que necesita para escribir su código de forma nativa y use una máquina virtual para su entorno del lado del servidor. Mi razonamiento sobre esto es que (presumiblemente) compró una Mac para usarla, y hacer la mayor parte de su trabajo de desarrollo en una máquina virtual Linux parece un desperdicio. Use las herramientas nativas para que pueda usarlas con cualquier otro software OS X que desee.

De manera similar, aunque probablemente podría hacer un trabajo decente al imitar su entorno de implementación en OS X, usar una VM es la mejor manera de garantizar la compatibilidad exacta (también facilita la administración de diferentes versiones de sus diversos programas, si necesita trabajar con un entorno de producción y una futura actualización del servidor, etc.).

Facilidad de uso

Creo que el enfoque de OS X tools + testing VM gana, ya que tener todas las herramientas de desarrollo accesibles sin necesidad de una VM es lo más sencillo, y la VM de prueba puede actuar de forma independiente. OS X es BSD en el núcleo y, como tal, hay una gran integración con la línea de comandos, particularmente en herramientas de tipo desarrollador como los editores de texto.

Espacio del disco

Obviamente, las máquinas virtuales ocuparán más espacio que simplemente instalar las herramientas de forma nativa, pero Ubuntu parece poder ejecutarse en un espacio bastante pequeño (creo que la instalación solo de CLI en mi servidor doméstico funciona alrededor de 3-4 GB, y eso probablemente podría ser reducido si lo intentara). Entonces, a menos que tenga poco espacio, no me preocuparía demasiado a menos que necesite muchas máquinas virtuales diferentes.

mantenibilidad

Creo que definitivamente querrá optar por un administrador de paquetes, ya sea MacPorts o alguna de las otras opciones. No tengo experiencia con ninguno de ellos, pero sé que MacPorts (y probablemente Homebrew y los demás) tienen comandos de actualización de una línea, similares a apt.

actualidad

Esto depende mucho de cómo elija instalar su software y qué software está utilizando. Apple tiende a no actualizar las herramientas CLI que incluye con mucha frecuencia (a menudo solo con las principales versiones del sistema operativo), por lo que si confía en una versión particular de algo que de otro modo está integrado, es posible que desee instalar una versión más nueva (que debe hacer por instalar en una nueva ubicación, sin sobrescribir la versión del sistema). Mi mejor consejo aquí es buscar en Google y averiguar qué tan actualizados están los paquetes que son importantes para usted en cada administrador de paquetes.

Actuación

El rendimiento de la máquina virtual en cualquier Mac reciente debería ser bastante bueno, pero obviamente depende de cuán intensas sean las tareas que se ejecutan en el sistema operativo invitado. A menos que su componente del lado del servidor sea bastante pesado (y no veo por qué estaría bajo una carga de prueba de desarrollo), debería ver un rendimiento bastante bueno, especialmente si su VM no ejecuta una GUI.

De todos modos, esa es mi opinión, tal vez otros puedan contribuir con opiniones más específicas sobre Macports frente a otras opciones, u otras opiniones sobre VM frente a nativo.

He usado ambos enfoques en diferentes circunstancias. Si bien MacPorts es una buena manera de obtener las últimas versiones de varias herramientas GNU (por ejemplo, Bash 4.x, cuando Apple todavía ofrece 3.x), tiende a complicarse con el tiempo, no confiaría exclusivamente en él.

Sin embargo, la mayoría de las pilas de código abierto proporcionan instaladores binarios fáciles de usar para Mac. Tengo buena experiencia con distribuciones de Git, PostgreSQL y Apache. Tengo buena experiencia usándolos para el desarrollo basado en la web. Los scripts de Python generalmente se ejecutan sin modificaciones. Desarrollé una aplicación web en Python + PostgreSQL en mi Macbook y simplemente la ejecuté sin modificaciones en la máquina de producción de Linux. Lo mismo para varios scripts en el trabajo que envuelven la administración de credenciales ssh dentro de las clases de Python, etc. - Ssh es lo suficientemente uniforme.

Necesito ejecutar máquinas virtuales Ubuntu para algunos propósitos. Principalmente lo hago en servidores VMWare porque mi trabajo Macbook Air no es adecuado para grandes compilaciones y transferencias de datos. Sin embargo, pude exportarlos desde VMWare como OVF e importarlos a VirtualBox en la Mac. Una VM de Ubuntu sin un servidor X ejecutándose en Mac puede ser muy liviana con menos de 10 GB de espacio en disco y 1 GB de RAM. Mi solución para las cargas de trabajo intensivas de E/S es crear una partición separada en la Mac (totalmente sin problemas, sin necesidad de reiniciar) y asignarla a la VM de Ubunbu como disco sin formato, luego dividirla usando Linux fdisk y montar las particiones según sea necesario .

Algunas recomendaciones de herramientas para Mac:

  • SourceTree como una GUI de Git.
  • iTerm2 como emulador de terminal
  • Textwrangler como un editor de texto pequeño y elegante que se invoca fácilmente desde la línea de comandos.
  • Xquarz, el servidor X para Mac, ya no se incluye con OS/X 10.8, simplemente instálelo por separado.