将Go 1.5应用程序打包为类Debian系统的软件包

14

原始问题 "Packaging Go application for Debian" 是三年前提出的,当时 Go 还是使用静态链接可执行文件的。

现在,随着 Go 1.5 的发布,其发行说明中写道:

链接器的变化可以将 Go 包作为共享库分发以链接到 Go 程序中,并且将 Go 包构建为档案或共享库,这些库可以被 C 程序链接或加载

我访问了 Debian GoPackaging wiki,但发现它还没有更新到 Go 1.5。也许这个维基没有被维护,也可能不是,但是,

我只想知道,如果我想打包一个仅依赖官方 Go 包的工具,我应该如何利用共享库,而不是构建一个庞大的静态链接可执行文件?

我知道官方答案可能需要一些时间,但我可以等待。

多亏了 Braiam 的回答,我又有了一点进展。

  • 我按照博客的步骤运行了head -100 debian/**/*,但我的输出与博客完全不同。有人知道原因和如何解决吗?

$ head -100 debian/**/*
3.0 (quilt)
  • 我试图运行gbp buildpackage --git-pbuilder,但遇到了错误:

  • gbp:info: Building with (cowbuilder) for sid
    Base directory /var/cache/pbuilder/base.cow does not exist
    gbp:error: 'git-pbuilder' failed: it exited with 1
    
  • 我检查并验证了我已经安装了cowbuilderpbuilder

  • ii cowbuilder  amd64 pbuilder running on cowdancer
    ii pbuilder  all personal package builder for Debian packages
    

    怎么了?这个pbuilder对我来说是新的,因为我使用Docker构建Debian/Ubuntu包


    4
    我认为Debian需要解决这个问题:假设他们切换到动态链接,我想他们会添加一个Go标准库包,并且你将针对该版本的stdlib进行构建,并使其成为.deb的依赖项。如果你需要1.5版本来构建(或者出于任何原因真的很想要它),而Debian尚未采用它或编写规则,则我不确定你该怎么做。 - twotwotwo
    2
    现在还不清楚你能否依赖它: 看起来Debian不稳定版仍然是1.4.2。Ubuntu在wily中已更新为1.5rc1,但不安装标准库的共享库版本,因此您可能需要继续依赖静态链接。 - James Henstridge
    1
    它增加了一个额外的层次,但godeb对我来说运行得相当好。至少它让你掌控局面。 - zoliton
    截至今天,Debian go 的版本为 1.5.1 - umläute
    很好知道,“Debian GoPackaging wiki”已经提到了“示例二进制文件+库打包”。但这只是一部分,还需要加入更多详细信息。 - xpt
    1个回答

    1

    @xpt 你以前创建过Debian软件包吗?dh-golang助手只是整个打包过程中的一部分。我建议使用debuild代替(将dh-golang软件包添加到构建依赖项中)。如果你告诉我你要创建哪个软件包,我可以给你更精确的建议。 - Braiam
    太好了,非常感谢@Braiam。是的,我自己维护了几个Debian软件包,其中两个在官方的Debian仓库中。我们从https://github.com/suntong/ffcvt/开始吧,它不需要任何第三方库或自己的库(像https://github.com/suntong/easygen一样)。谢谢! - xpt
    @xpt 我真是个傻瓜。在打包两者之后,我发现了这个链接 https://people.debian.org/~stapelberg/2015/07/27/dh-make-golang.html... - Braiam
    @xpt 哎呀...那可能会让事情变得复杂。 - Braiam
    我近期没有Debian主机来进行构建,但我成功创建了一个Ubuntu 15.10(wily)环境。然而,在Ubuntu Wily本身中使用dh-make-golanggbp buildpackage --git-pbuilder时,出现了与上述完全相同的问题,而不是在docker中。你能否获取一个全新的Ubuntu Wily环境并尝试一下?(我敢打赌,当系统是全新的时,无论是Debian还是Ubuntu,问题都是相同的。你可能已经采取了一些步骤,但我没有在我的全新系统上执行)。谢谢。 - xpt
    显示剩余2条评论

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接