我已经在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