3 votos

¿Es mejor usar MacPorts o simplemente usar una VM de Ubuntu para las herramientas/servicios locales cuando se desarrolla en un Mac?

Como desarrollador (principalmente de aplicaciones web basadas en JVM), necesito utilizar muchas herramientas y servicios diferentes, como Redis, RabbitMQ, MySQL, git, mercurial, etc. Habiendo trabajado en un entorno Linux donde estas herramientas son sólo un apt-get y un mundo Windows en el que sólo ejecuto lo que necesito en una VMWare Workstation VM (aka. también sólo un apt-get lejos + vm overhead), 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 me parece que todo es un poco confuso en cuanto a cuál se adaptará mejor a mis necesidades, aunque creo que MacPorts es la opción más flexible de las tres.

Sin embargo, como estoy acostumbrado a ejecutar lo que necesito en una VM, ¿hay algo en contra de hacer eso cuando se usa OS X? ¿Cuáles son las ventajas de ir con MacPorts para instalar cosas directamente frente a usar una VM de Ubuntu (a través de VMWare Fusion) para alojar las herramientas / servicios que necesito?

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

  1. Facilidad de uso - ¿Cómo de fácil es desarrollar en el Mac y utilizar las herramientas/servicios
  2. Uso del disco - Cuánto espacio de disco se ocupa. Los nuevos macbooks utilizan discos SSD y el espacio es escaso.
  3. Mantenibilidad - Qué trabajo supone mantener los paquetes actualizados, añadir nuevos paquetes y eliminar los antiguos
  4. Actualidad - ¿Cómo de actualizadas están las herramientas/servicios disponibles?
  5. Rendimiento - La velocidad de las cosas, los servicios en particular

Mi instinto me 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-cons 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 la cuestión 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 estas aguas específicas de OS X.

3voto

Ged Byrne Puntos 481

En última instancia, esta es una pregunta bastante personal, que dependerá mucho de tu flujo de trabajo y tus preferencias, pero añadiré lo que pueda.

Mi instinto coincide con el tuyo: instala las herramientas que necesitas para escribir tu código de forma nativa y utiliza una VM para tu entorno del lado del servidor. Mi razonamiento sobre esto es que (presumiblemente) compraste un Mac para usarlo, y hacer la mayor parte de tu trabajo de desarrollo en una VM de Linux parece un poco de desperdicio. Utiliza las herramientas nativas para poder usarlas con cualquier otro software de OS X que quieras.

Del mismo modo, aunque probablemente podría hacer un trabajo decente imitando su entorno de despliegue en OS X, el uso de una VM es la mejor manera de garantizar la compatibilidad exacta (también facilita la gestión de las 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 herramientas de OS X + VM de pruebas gana, ya que tener todas las herramientas de desarrollo accesibles sin necesidad de una VM es lo más fácil, y la VM de pruebas 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, en particular en las herramientas de tipo desarrollador como editores de texto.

Espacio en disco

Las máquinas virtuales, obviamente, ocupan más espacio que la instalación de las herramientas de forma nativa, pero Ubuntu parece ser capaz de funcionar en un espacio bastante pequeño (la instalación de sólo CLI en mi servidor doméstico corre alrededor de 3-4 GB, creo, y que probablemente podría ser reducido si lo intentara). Así que, a menos que tengas poco espacio, yo no me preocuparía demasiado, a menos que necesites muchas máquinas virtuales diferentes.

Mantenibilidad

Creo que definitivamente querrás ir con un gestor 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 en gran medida de cómo elijas instalar tu software, y del software que estés utilizando. Apple tiende a no actualizar las herramientas CLI que incluye muy a menudo (a menudo sólo con las principales versiones del sistema operativo), por lo que si usted depende de una versión particular de algo que está incorporado, es posible que desee instalar una versión más reciente (que debe hacer mediante la instalación en una nueva ubicación, no sobrescribir la versión del sistema). Mi mejor consejo es que busques en Google y averigües si los paquetes importantes para ti están actualizados en cada gestor de paquetes.

Rendimiento

El rendimiento de la máquina virtual en cualquier Mac reciente debería ser bastante bueno, pero obviamente depende de la intensidad de las tareas que se ejecuten en el sistema operativo invitado. A menos que el componente del lado del servidor sea muy pesado (y no veo por qué lo sería bajo una carga de pruebas de desarrollo), deberías ver un rendimiento bastante bueno, particularmente si tu VM no ejecuta una GUI.

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

1voto

JeremyWeir Puntos 9424

He utilizado ambos enfoques en diferentes circunstancias. Mientras que MacPorts es una buena manera de conseguir las últimas versiones de varias herramientas GNU (por ejemplo Bash 4.x, cuando Apple todavía proporciona 3.x) tiende a estropearse con el tiempo, yo no confiaría en él exclusivamente.

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 generalmente se ejecutan sin modificar - he desarrollado una aplicación web en Python + PostgreSQL en mi Macbook y simplemente la he ejecutado sin modificar en la máquina de producción Linux. Lo mismo para varios scripts en el trabajo que envuelven la gestión de credenciales ssh dentro de las clases de Python, etc. - Ssh es suficientemente uniforme.

Necesito ejecutar VMs de Ubuntu para algunos propósitos. La mayoría de las veces lo hago en servidores VMWare porque mi Macbook Air del trabajo es poco adecuado para grandes compilaciones y transferencias de datos. Sin embargo, he podido exportarlas desde VMWare como OVF e importarlas a VirtualBox en el Mac. Una VM de Ubuntu sin servidor X que se ejecuta en Mac puede ser muy ligera con menos de 10GB de espacio en disco y 1GB de RAM. Mi solución para las cargas de trabajo intensivas de E/S es crear una partición separada en el Mac (completamente libre de problemas, sin necesidad de reiniciar) y asignarla a la VM de Ubunbu como disco sin procesar, luego particionarla usando fdisk de Linux y montar las particiones según sea necesario.

Algunas recomendaciones de herramientas para Mac:

  • SourceTree como GUI de Git.
  • iTerm2 como emulador de terminal
  • Textwrangler como un pequeño y hábil editor de texto que es fácilmente invocado desde la línea de comandos.
  • Xquarz, el servidor X para Mac, ya no viene incluido en OS/X 10.8, simplemente hay que instalarlo por separado.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X