我正在为我的PPA包装一些东西。上游源是.tar.gz
基于Makefile 的存档。
由于此程序包具有大量与体系结构无关的数据,因此使构建脚本生成两个程序包是明智的:
- 包
- 包数据
我该如何设置?我已经编辑了Debian control
文件以生成两个软件包,但是我不知道如何将正确的文件保存到正确的软件包中。
由于数据文件当前都是通过Makefile安装的,因此我有点迷失了。
我正在为我的PPA包装一些东西。上游源是.tar.gz
基于Makefile 的存档。
由于此程序包具有大量与体系结构无关的数据,因此使构建脚本生成两个程序包是明智的:
我该如何设置?我已经编辑了Debian control
文件以生成两个软件包,但是我不知道如何将正确的文件保存到正确的软件包中。
由于数据文件当前都是通过Makefile安装的,因此我有点迷失了。
Answers:
这是我经常发现缺少文档的地方。我几乎只是通过查看其他软件包中的工作方式来了解其工作原理。与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,您可以开始想象一下获得相同结果的其他方法。