如何为 Qt 程序创建 .deb 包?

Luí*_*usa 5 package-management packaging deb

过去几天我一直在尝试为一个带有 Qt 接口的程序创建一个 deb 包,但没有成功。到目前为止我所做的前面的步骤:

  1. 创建了一个 gpg 密钥并在 Launchpad 上注册;
  2. 用 中的DEBEMAILDEBFULLNAME变量标识自己~/.bashrc
  3. 从 GitHub 上查看源代码;
  4. 成功构建程序(它用于qmake生成一个Makefile),识别其所有依赖项;
  5. 创建了一个包含Makefile, 以及一个.desktop文件和一个.xpm图标的源文件夹。
  6. 从此文件夹创建了一个名为packagename-version.tar.gz的 tarball 。

通过这项准备工作,我尝试遵循两个不同的指南:

  • 官方 Ubuntu 打包指南- 它成功结束,但最终.deb文件仅包含doc文件夹。

  • 来自 xpressrazor 的更详细指南- 在运行时失败debuild,并带有以下神秘消息:

    make: *** [build] Error 2 dpkg-buildpackage: error: debian/rules build gave error exit status 2 debuild: fatal error at line 1364: dpkg-buildpackage -rfakeroot -D -us -uc failed

这些和其他指南总是提供简单的示例,其中要打包的程序由单个源文件组成(有时它只是一个 bash 脚本)。我怀疑它们对于具有精心设计的 GUI 的适当程序来说太简单了。在这种情况下,以后的确切步骤是dh_make什么?

更新 I:我向 PasteBin 发布了完整debuild输出的匿名版本。

更新二debuild 输出,现在使用DH_VERBOSE=1.

Luí*_*usa 3

碰巧的是dh它不可能用于以大多数指南和教程中介绍的传统方式打包 Qt 程序。更具体地说,rules必须告知文件必须使用哪些片段包含在最终的Makefile.

实现此目的的一种方法是使用该cdbs包:

sudo apt-get install cdbs

然后rules必须编辑该文件以包含此包中的片段:

#!/usr/bin/make -f

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/qmake.mk
Run Code Online (Sandbox Code Playgroud)

这些应该是文件中的唯一内容rules,任何直接引用都dh必须删除或注释掉。

这时候,debuild应该可以运行了,可以这样运行:

debuild -S