我在Go中编写了一个应用程序.它有两个在编译之前需要满足的外部依赖项.在Go生态系统中,为简单的安装过程打包此应用程序的最佳方法是什么,包括安装这些远程deps?用户如何安装我的应用程序?
eli*_*rar 10
如果您希望用户编译您的应用程序,并且该应用程序依赖于第三方软件包或资产,那么我建议只为交叉编译支持的平台并提供二进制文件.
如果您想要在应用程序旁边提供资产(例如配置文件),则可以:a)将二进制文件与资产打包并进行tar/zip压缩; b)base64对资产进行编码并将它们编译成二进制文件,请参阅此处以获取一个好的示例或c)创建一个为用户执行此操作的构建/安装脚本.
如果您能够澄清您的确切要求,那么更容易直接回答.
除了您可能在代码中强加的任何内容之外,Go二进制文件没有运行时依赖性.(它的运行时库包含在已编译的可执行文件中.)
因此,您将按照从C,C++或其他代码编译的任何其他二进制文件的方式分发您的应用程序.
在Linux上,您可以使用适当的工具创建.rpm或.deb文件.在Windows上,您可以使用InnoSetup等工具创建安装程序.
Go 生成一个二进制文件。如果您的外部依赖项是编译时依赖项,那么您的用户无需担心它们 - 它们已经被编译了。
如果它们是运行时依赖项,那么就需要分发 exe 和相关资源,任何安装程序都可以为您执行此操作 - 无论 exe 是否是用 Go 编写的,都无关紧要。编辑:如果即使具有运行时依赖项,它也绝对必须是单个二进制文件,那么您需要将运行时依赖项转换为编译时依赖项。一种方法是 elithrar 建议的一种方法。
从 Go 的角度来看,您唯一需要担心的是您已经为用户平台编译了代码。