一尘不染

Debian的Packaging Go应用程序

go

如何将Go二进制文件放入Debian软件包中?由于Go是静态链接的,所以我只有一个可执行文件-
我不需要很多复杂的项目元数据信息。有没有一种简单的方法就可以打包可执行文件和资源文件,而又不会遭受创伤debuild

我到处寻找现有的问题;但是,我所有的研究都对包含golang开发环境的.deb文件提出了疑问/答案(即,如果这样做会得到什么sudo apt-get install golang-go)。


阅读 204

收藏
2020-07-02

共1个答案

一尘不染

好。我认为唯一的“创伤” debuild是它lintian在构建软件包后运行,并且是lintian谁试图找出您的软件包存在的问题。

因此,有两种方法可以应对这种情况:

  • 不要使用debuild:此工具仅调用dpkg-buildpackage真正执行必要的举重动作的工具。构建二进制软件包的通常调用是dpkg-buildpackage -us -uc -b。您仍然可能debuild出于其他目的而打电话,debuild clean例如。
  • 添加所谓的“ lintian Override”,它可以使您对包装中 选定的 问题lintian视而不见,您坚持认为这不是问题。 __

两种方法都暗示您 不尝试 使用打包工具 来构建
应用程序,而是将其视为仅打包到包中的Blob。这将需要正常debian/rules工作的一些限制(不要尝试构建任何东西)。

可能的 另一种解决方案(实际上更像Debian)是尝试使用gcc- go(加上gold链接):由于它是GCC前端,因此该工具会生成动态链接的应用程序(链接到libgo或类似这个)。我个人还没有使用过它,只有在您打算尝试将软件包推入Debian中时才考虑使用它。

关于为Debian打包Go程序的一般问题,您可能会发现以下有用的资源:

  • 该线程由Go for Debian打包程序之一在g​​o-nuts上启动。
  • 特别是,该线程中的第一篇文章链接到有关debian-devel的讨论
  • 关于相同问题,debian-devel上的第二个线程(这是前一个线程的逻辑延续)。

2015 年10月15日 更新

(由于该帖子似乎仍被人们搜索和发现,因此我决定对其进行更新,以更好地反映当前的状况。)

从那时起,打包Go应用程序和程序包的情况得到了显着改善,并且可以使用“经典” Go(gc源自Google
的所谓套件)而不是来构建Debian程序包gcc-go。并且也存在用于打包的良好基础结构。

现在dh- golang介绍对Go程序进行Debian化时要使用的关键工具。

2020-07-02