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


14

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

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

  • 数据

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

由于数据文件当前都是通过Makefile安装的,因此我有点迷失了。

Answers:


14

这是我经常发现缺少文档的地方。我几乎只是通过查看其他软件包中的工作方式来了解其工作原理。与Debian打包中的大多数东西一样,有几种方法可以做到这一点。我发现最简单的方法是使用debian/package.install文件。这是我研究过的一个包的例子,想象力(bzr分支)

首先,我们需要在中创建包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,您可以开始想象一下获得相同结果的其他方法。


非常感谢!非常清晰的解释,完美地运行。
内森·奥斯曼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.