我已經在Go中編寫了一個應用程序。它有兩個外部依賴關係,在編譯之前需要滿足。在Go生態系統中,將此應用程序打包爲簡單安裝過程的最佳方式是什麼?包括安裝這些遠程代碼?用戶將如何安裝我的應用程序?如何分發Go應用程序?
回答
如果你期待用戶編譯應用程序,而應用程序依賴於第三方軟件包或資產,那麼我建議只是交叉編譯的支持平臺,並提供二進制文件。
如果你要提供旁邊的應用資產(配置文件,例如),然後是:a)封裝,資產和焦油/ ZIP它的二進制; b)base64對資產進行編碼並將它們編譯成二進制文件see here for a good example或者c)爲用戶創建一個構建/安裝腳本。
如果你能澄清你的具體要求,它會更容易直接回答。
特別針對構建/安裝腳本+1。如果您可以在源代碼發行版中包含合理智能的腳本(或Makefile),那麼打包管理器將會更容易。 –
去除二進制文件之外沒有任何運行時依賴關係,而不是您可能在代碼中施加的任何依賴關係。 (它的運行時庫包含在已編譯的可執行文件中。)
因此,您將按照從C,C++或其他代碼編譯的任何其他二進制文件的方式分發應用程序。
在Linux上,您可以使用相應的工具創建.rpm或.deb文件。在Windows上,您可以使用像InnoSetup這樣的工具創建安裝程序。
Go產生一個二進制。如果你的外部依賴是編譯時依賴,那麼你的用戶不需要擔心它們 - 它們已經被編譯進去了。
如果它們是運行時依賴關係,那麼它是一個分發exe和相關的問題資源,任何安裝程序都可以爲你做 - 無論是否使用Go編寫的exe都無關緊要。 編輯:如果絕對必須是一個單一的二進制文件,即使運行時依賴關係,那麼你需要轉換你的運行時依賴關係編譯時間依賴關係。一種方法是elithrar建議的方法。
從Go的角度來看,您唯一需要擔心的是您已經爲您的用戶平臺編譯了代碼。
- 1. 如何連接分佈式Go應用程序?
- 2. 如何分發SQL Server應用程序?
- 3. 如何分發Windows應用程序?
- 4. 如何分發.NET應用程序?
- 5. 如何分發應用程序
- 6. 如何分發UWP Enterprise應用程序
- 7. 部署Go應用程序
- 8. 分發應用程序WebWorks
- 9. 分發VFP應用程序
- 10. 分發ASP.NET應用程序
- 11. 分發IronPython應用程序
- 12. 分發應用程序的
- 13. iPhone應用程序分發
- 14. 分發TideSDK應用程序
- 15. 分發Python應用程序
- 16. 分發Perl應用程序
- 17. 如何在不使用go的情況下安裝Go應用程序?
- 18. 如何使用GoClipse調試Go程序?
- 19. 如何在Go程序中使用pprof
- 20. 如何使用Apache部署Go應用程序和MediaWiki?
- 21. 如何分發自行開發的mac應用程序?
- 22. 如何在組織內部進行應用程序分發(內部應用程序分發)?
- 23. Heroku找不到Go應用程序
- 24. 如何使用resclientemozilla發送應用程序的應用程序?
- 25. Go,AppEngine:如何爲應用程序構造模板
- 26. 如何在Go中獲得應用程序版本?
- 27. 如何在Java/jtds應用程序中支持SQL GO語句?
- 28. 如何GO解析HTML模板,谷歌應用程序引擎
- 29. 如何更新亞馬遜Linux中的Go應用程序
- 30. 付費應用程序免費應用程序分發
什麼是外部依賴?你是否期望用戶編譯或者正在討論分發二進制文件? –
我想分發一個二進制文件 – Carson
@Carson只是二進制文件?當你說「外部依賴」時,你是否僅僅意味着第三方軟件包(即'go get url.to/package/name')或者是否還有其他文件需要與二進制文件一起使用?明確。 – elithrar