2013-10-09 12 views
15

Ho scritto un'applicazione in Go. Ha due dipendenze esterne che dovrebbero essere soddisfatte prima della compilazione. Nell'ecosistema Go, qual è il modo migliore per confezionare questa app per un semplice processo di installazione che include l'installazione di tali depl remoti? Come può un utente installare la mia app?Come distribuire un'app Go?

+0

Quali sono le dipendenze esterne? E ti aspetti che l'utente compili o stai parlando di distribuire un binario? –

+0

Voglio distribuire un binario – Carson

+1

@Carson Solo il binario? Quando dici "dipendenze esterne" ** solo ** significa pacchetti di terze parti (ad esempio "vai a url.to/package/name") o ci sono altri file di cui ha bisogno accanto al binario? Sii esplicito. – elithrar

risposta

10
  • Se vi aspettate un utente per compilare la vostra applicazione, e che applicazione si basa su pacchetti di terze parti o beni, allora io suggerirei appena cross-compilazione per le piattaforme e fornendo i binari.

  • Se si dispone di risorse che si desidera fornire al fianco l'applicazione (un file di configurazione, per esempio), allora: a) confezionare il binario con le attività e tar/zip in su; b) base64 codificare il patrimonio e compilarli in binario see here for a good example oppure c) creare una build/script di installazione che fa questo per l'utente.

Se è possibile chiarire i requisiti specifici, sarà più semplice rispondere più direttamente.

+1

+1 per lo script di compilazione/installazione in particolare. Se è possibile includere uno script ragionevolmente intelligente (o Makefile) nella distribuzione di origine, sarebbe molto più semplice creare un pacchetto per i gestori di pacchetti. –

5

Go binari non hanno dipendenze runtime diversi da qualunque si potrebbe imporre nel codice. (Le librerie di runtime sono incluse nell'eseguibile compilato.)

Così distribuiresti la tua app come faresti qualsiasi altro binario compilato da C, C++ o altro codice.

Su Linux è possibile creare un file .rpm o .deb usando l'attrezzatura adeguata per questo. Su Windows è possibile creare un programma di installazione utilizzando uno strumento come InnoSetup.

4

Go produce un singolo binario. Se i vostri dipendenze esterne sono dipendenze in fase di compilazione, quindi gli utenti non hanno bisogno di preoccuparsi di loro - sono già compilati in

Se stanno corrono dipendenze temporali, allora è una questione di distribuire un exe e relativo. risorse, che qualsiasi programma di installazione può fare per voi - se l'exe è stato scritto in Go o no è irrilevante. EDIT: Se deve assolutamente essere un singolo binario, anche con le dipendenze di runtime, allora avete bisogno di convertire le dipendenze fase di esecuzione per compilare quelle temporali. Un metodo è quello suggerito da elithrar.

L'unica cosa di cui devi preoccuparti dal punto di vista di Go è che hai compilato il codice per la piattaforma dell'utente.