È meglio usare MacPorts o semplicemente utilizzare una macchina virtuale Ubuntu per strumenti / servizi locali durante lo sviluppo su un Mac?

3

Come sviluppatore (principalmente applicazioni web basate su JVM), ho bisogno di utilizzare molti strumenti e servizi diversi, come Redis, RabbitMQ, MySQL, git, mercurial, ecc. Avendo lavorato in un ambiente Linux in cui tali strumenti sono solo un apt-get di distanza, e un mondo Windows in cui ho appena eseguito quello che mi serve in una macchina virtuale VMWare Workstation (anche solo un apt-get di distanza + overhead vm), sono un po 'perso ora che sono sperando di passare da Windows e nell'ecosistema Mac per la mia vita informatica.

Ho letto di MacPorts contro Fink vs. Homebrew e ho trovato tutto confuso su quale si adatta meglio alle mie esigenze, anche se penso che MacPorts sia l'opzione più flessibile delle tre.

Dato che sono abituato a gestire ciò di cui ho bisogno in una VM, tuttavia, c'è qualcosa contro il farlo quando si utilizza OS X? Quali sono i compromessi tra andare con MacPorts per installare le cose direttamente contro l'utilizzo di una macchina virtuale Ubuntu (tramite VMWare Fusion) per ospitare gli strumenti / servizi di cui ho bisogno?

In particolare, mi preoccupo dell'uso del disco, della manutenibilità e della facilità d'uso più di quanto mi interessi con le prestazioni. In altre parole, questo è ciò a cui tengo (in ordine di preferenza):

  1. Facilità d'uso - Quanto è facile svilupparsi su Mac e utilizzare gli strumenti / i servizi
  2. Utilizzo del disco - Quanto spazio su disco è occupato. I macbook più recenti utilizzano SSD e lo spazio è prezioso.
  3. Manutenibilità : quale lavoro è necessario per mantenere aggiornati i pacchetti, aggiungere nuovi pacchetti e rimuovere quelli vecchi
  4. Correntezza - Quanto aggiornati sono gli strumenti / servizi disponibili
  5. Prestazioni : velocità di esecuzione, servizi in particolare

Il mio istinto dice che l'installazione degli strumenti di sviluppo reali, come Mercurial, git, ecc. direttamente tramite il metodo consigliato dai progetti, e poi l'installazione dei componenti lato server come MySQL, Redis, RabbitMQ, ecc. in una VM è percorso migliore, ma quali sono i pro-contro nel fare questo contro qualcosa come MacPorts?

Nota: mi rendo conto che questa è una domanda piuttosto incentrata sulla programmazione, ma il problema centrale è che OS X è diverso da Windows e * nix quando si tratta di creare un ambiente di sviluppo e non sono sicuro come navigare in queste acque specifiche per OS X.

    
posta cdeszaq 03.10.2012 - 19:49
fonte

2 risposte

3

In definitiva questa è una domanda abbastanza personale, che dipenderà molto dal tuo flusso di lavoro e dalle tue preferenze, ma aggiungerò quello che posso.

Il mio istinto è in linea con il tuo: installa gli strumenti necessari per scrivere il codice in modo nativo e utilizza una VM per il tuo ambiente server-side. Il mio ragionamento su questo è che tu (presumibilmente) hai comprato un Mac per usarlo, e fare la maggior parte del tuo lavoro di sviluppo in una VM Linux sembra un po 'uno spreco. Usa gli strumenti nativi per poterli utilizzare con qualsiasi altro software OS X che desideri.

Allo stesso modo, mentre probabilmente si può fare un lavoro decente di imitare il proprio ambiente di distribuzione in OS X, l'utilizzo di una VM è il modo migliore per garantire la compatibilità esatta (semplifica anche la gestione di versioni diverse dei vari programmi, se si necessità di lavorare con un ambiente di produzione e un futuro aggiornamento del server, ecc.).

Facilità d'uso

Penso che gli strumenti OS X + testing dell'approccio VM vadano, poiché avere tutti gli strumenti di sviluppo accessibili senza la necessità di una VM è il più privo di attrito e la VM di test può agire in modo indipendente. OS X è BSD al centro, e come tale c'è una grande integrazione con la riga di comando, in particolare negli strumenti di tipo sviluppatore come gli editor di testo.

Spazio su disco

Le macchine virtuali occuperanno ovviamente più spazio rispetto all'installazione degli strumenti in modo nativo, ma Ubuntu sembra essere in grado di funzionare in un ingombro piuttosto ridotto (l'installazione solo CLI sul mio server di casa ha circa 3-4 GB, penso, e che probabilmente potrebbe essere ridotto se ho provato). Quindi, a meno che tu non sia molto angusto per lo spazio, non mi preoccuperei troppo se non hai bisogno di molte VM diverse.

Maintainability

Penso che vorrete sicuramente andare con un gestore di pacchetti, che si tratti di MacPort o di una delle altre opzioni. Non ho esperienza con nessuno di questi, ma so che MacPorts (e probabilmente Homebrew e gli altri) hanno un comando di aggiornamento di riga, simile a apt .

attualità

Dipende molto da come scegli di installare il tuo software e da quale software stai usando. Apple tende a non aggiornare gli strumenti CLI che impacchetta molto spesso (spesso solo con le principali versioni del sistema operativo), quindi se ti affidi a una particolare versione di qualcosa che è altrimenti integrato, potresti voler installare una versione più recente (che dovresti fare con installazione in una nuova posizione, senza sovrascrivere la versione del sistema). Il mio miglior consiglio qui è di fare qualche ricerca su Google e capire quanto sono attuali i pacchetti che sono importanti per te in ogni gestore di pacchetti.

Prestazioni

Le prestazioni della VM su qualsiasi Mac recente dovrebbero essere piuttosto buone, ma ovviamente dipende dall'intensità delle attività in esecuzione sul sistema operativo guest. A meno che il tuo componente lato server non sia abbastanza pesante (e non vedo perché dovrebbe essere sottoposto a un carico di test di sviluppo), dovresti vedere prestazioni piuttosto buone, in particolare se la VM non esegue una GUI.

Ad ogni modo, questa è la mia opinione, forse gli altri possono formulare opinioni più specifiche su Macport rispetto ad altre opzioni, o altro su VM vs nativo.

    
risposta data 03.10.2012 - 21:13
fonte
1

Ho usato entrambi gli approcci in circostanze diverse. Mentre MacPorts è un buon modo per ottenere le ultime versioni di vari strumenti GNU (ad esempio Bash 4.x, quando Apple fornisce ancora 3.x) tende a diventare pasticciato con il tempo, non mi fare affidamento esclusivamente su di esso.

Tuttavia, la maggior parte degli stack open source fornisce programmi di installazione binari facili da usare per Mac. Ho una buona esperienza con le distribuzioni di Git, PostgreSQL e Apache. Ho una buona esperienza nell'usarli per lo sviluppo web-based. Gli script Python generalmente non vengono modificati: ho sviluppato un'applicazione Web in Python + PostgreSQL sul mio Macbook e l'ho semplicemente eseguita senza modifiche sul computer di produzione Linux. Lo stesso per vari script al lavoro che racchiudono la gestione delle credenziali ssh all'interno delle classi Python ecc. - Ssh è sufficientemente uniforme.

Ho bisogno di eseguire Ubuntu VM per alcuni scopi. Lo faccio principalmente sui server VMWare perché il mio lavoro Macbook Air è scarsamente adatto per grandi raccolte e trasferimenti di dati. Tuttavia sono stato in grado di esportarli da VMWare come OVF e importarli su VirtualBox su Mac. Una VM di Ubuntu senza un server X in esecuzione su Mac può essere molto leggera con meno di 10 GB di spazio su disco e 1 GB di RAM. La mia soluzione per i carichi di lavoro intensivi I / O è quella di creare una partizione separata sul Mac (completamente senza problemi, nessun riavvio richiesto) e assegnarla alla VM Ubunbu come disco raw, quindi partizionarla usando Linux fdisk e montare le partizioni come necessario .

Alcuni consigli sugli strumenti per Mac:

  • SourceTree come Git GUI.
  • iTerm2 come emulatore di terminale
  • TextWrangler come un editor di testo piccolo e scorrevole che è facilmente invocato dal riga di comando.
  • Xquarz, il server X per Mac, non è più in bundle con OS / X 10.8, è sufficiente installarlo separatamente.
risposta data 22.03.2013 - 11:00
fonte

Leggi altre domande sui tag