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?
risposta
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 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. –
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.
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.
- 1. GAE Maven come distribuire
- 2. Come distribuire un'applicazione dropwizard
- 3. Come distribuire Subversion esterni?
- 4. È possibile utilizzare il compilatore Go per distribuire un file eseguibile per altri sistemi operativi?
- 5. Libreria Go Matrix
- 6. git + go - come gestire i sottoprogetti con go get
- 7. Come distribuire un'applicazione JAX-RS?
- 8. Come distribuire le applicazioni VB6?
- 9. Come distribuire Django con spawning
- 10. come distribuire Django su AWS?
- 11. Come distribuire DevExpress sul server?
- 12. Come distribuire automaticamente l'app Web
- 13. Come distribuire web2py su PythonAnywhere?
- 14. Come distribuire Kibana4 in tomcat?
- 15. Clion come distribuire il progetto?
- 16. Distribuire Ionic come sito Web
- 17. go e parsing token con jwt-go
- 18. Go: "tail -f" generatore -come
- 19. come usare java con go
- 20. Come usare LevelDB in go?
- 21. Come gestire i18n in Go?
- 22. Come implementare BitSet con Go?
- 23. Come utilizzare fmt.Scanf in Go
- 24. qual è la differenza principale tra .net Async e go go go thread leggero
- 25. Non è possibile distribuire l'applicazione GOLang di esempio per Heroku
- 26. Come distribuire su nexus (ospitato da secureci)?
- 27. SharePoint: Come distribuire a livello globale
- 28. Come distribuire WAR con Maven su Tomcat?
- 29. Come distribuire vecchi commit su Heroku
- 30. come distribuire MVC3 WebApp in Windows Azure
Quali sono le dipendenze esterne? E ti aspetti che l'utente compili o stai parlando di distribuire un binario? –
Voglio distribuire un binario – Carson
@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