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

我正在为PPA打包。 上游源是.tar.gz存档,它是基于Makefile的。

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

  • 包 –数据

我怎么设置它? 我编辑了我的Debian control文件以生成两个包,但我不知道如何将正确的文件放到正确的包中。

由于数据文件当前都是通过Makefile安装的,所以我在这里迷失了方向。

这是一个我总是发现文档缺乏的地方。 我几乎只是通过查看在其他包中如何完成它来了解它是如何工作的。 与Debian包装中的大多数内容一样,有几种方法可以做到这一点。 我发现最简单的方法是使用debian/package.install文件。 这是我所做过的一个包的例子, 想象力(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 

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

 /usr/share/doc/ /usr/share/icons/ /usr/share/imagination/ /usr/share/locale/ 

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

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

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