【问题标题】:Packaging Go 1.5 applications for Debian-like systems为类 Debian 系统打包 Go 1.5 应用程序
【发布时间】:2015-08-23 21:45:45
【问题描述】:

最初的问题 Packaging Go application for Debian 是三年多前提出的,当时 Go 正在静态链接可执行文件。

现在,有了新的 Go 1.5 版本,release note 说,

对链接器的更改允许将 Go 包作为共享库分发以链接到 Go 程序,并将 Go 包构建到可以链接到 C 程序或由 C 程序加载的存档或共享库中

我去了Debian GoPackaging wiki,却发现它还没有更新到Go 1.5,可能wiki没有维护,也可能没有,但是,

我只想知道,如果我想打包一个只依赖于官方 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
    
  • 我检查并确认我已经安装了cowbuilder & pbuilder

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

怎么了? pbuilder 这个 pbuilder 对我来说是新事物 I build Debian/Ubuntu Package with Docker

【问题讨论】:

  • 我认为 Debian 本身需要解决这个问题:假设他们切换到动态链接,我想他们会添加一个 Go stdlib 包,然后您针对该版本的 stdlib 构建并使其成为依赖项你的.deb。如果您需要 1.5 来构建(或出于某种原因真的想要它)并且 Debian 尚未采用它或为其编写规则,但我不确定您会做什么。
  • 尚不清楚您是否可以依赖它:看起来 Debian 不稳定版仍在 1.4.2 上。 Ubuntu 已在 wily 中更新到 1.5rc1,但没有安装标准库的共享库版本,因此您可能需要依赖静态链接一段时间。
  • 它增加了一个额外的级别,但godeb 对我来说工作得很好。至少它让你可以控制。
  • 好吧,截至今天,Debian go1.5.1
  • 很高兴知道,Debian GoPackaging wiki 已经提到了“示例二进制 + 库打包”。但仅此而已,需要输入更多细节。

标签: go debian-packaging


【解决方案1】:

最简单的方法是使用dh-make-golang 并验证/更正自动生成的文件。否则你必须按照Debian Packaging Guide创建debian/*目录并将控制和规则文件编辑到match the examples

【讨论】:

  • @xpt 你以前创建过debian包吗? dh-golang helper 只是整个打包过程的一部分。我建议改用 debuild(将 dh-golang 包添加到构建依赖项)。如果您告诉我您要创建包的内容,我可以给您更准确的建议。
  • 那太好了,非常感谢@Braiam。是的,我自己维护了几个 Debian 软件包,其中两个在官方 Debian 存储库中。让我们从github.com/suntong/ffcvt 开始,它不需要任何第三方库或它自己的库(如github.com/suntong/easygen)。谢谢!
  • @xpt 我在github.com/braiam/ffcvt/tree/debian 的 debian 目录中做了一个非常基本的分支,现在将检查 easygen。
  • @xpt 我是个白痴。打包后我发现了这个people.debian.org/~stapelberg/2015/07/27/dh-make-golang.html...
  • OP 更新了新信息(但忘了提到构建是在 docker 中完成的,我没有 Debian 主机可以尝试在其中构建)。谢谢
猜你喜欢
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-13
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多