给定上游源存档,如何让 Debian 打包生成两个包?

Nat*_*man 15 packaging ppa debian makefile

我正在为我的 PPA 打包一些东西。上游源是一个.tar.gz基于 Makefile的存档。

由于此包具有大量与体系结构无关的数据,因此让构建脚本生成两个包是明智的:

  • 包裹
  • 包-数据

我该如何设置?我已经编辑了我的 Debiancontrol文件以生成两个包,但我不知道如何将正确的文件放到正确的包中。

由于数据文件目前都是通过 Makefile 安装的,我在这里有点迷茫。

and*_*ing 15

这是我一直发现缺少文档的地方。我几乎只是通过查看它在其他包中的完成方式来了解它是如何工作的。与 Debian 打包中的大多数内容一样,有几种方法可以做到这一点。我发现最简单的方法是使用debian/package.install文件。这是我使用过的一个包的例子,imaginary (bzr branch)

首先,我们需要在debian/control. 现在有三段。一个用于源包,一个用于每个二进制包。请注意, foo-data 包应该是Architecture: all. 另请注意,想象力取决于imagination-common (= ${source:Version})

接下来,我们创建一个debian/imagination.install文件。这包含我们想要在想象包中结束的特定文件或路径。对于这个包,我们需要所有架构相关文件。桌面文件被包含在内,因为它需要用它在其Exec:行中调用的二进制文件来说明。

usr/bin/
usr/lib/
/usr/share/applications/imagination.desktop
Run Code Online (Sandbox Code Playgroud)

我们需要创建一个debian/imagination-common.install文件。这将包含所有与架构无关的文件、图像、翻译、文档等。

/usr/share/doc/
/usr/share/icons/
/usr/share/imagination/
/usr/share/locale/
Run Code Online (Sandbox Code Playgroud)

man dh_install 描述了这里实际发生的事情:

也许你有一个构建多个二进制包的大包。您可以使用上游 Makefile 将其全部安装到 debian/tmp,然后使用 dh_install 将目录和文件从那里复制到正确的包构建目录中。

“正确的包构建目录”意味着在构建过程结束时,结果中的所有内容都将foo.debsrc/debian/foo. 最终foo-data.deb会出现的文件将在src/debian/foo-data. 由于debian/rules本质上只是一个 Makefile,您可以开始想象获得相同结果的其他方法。