我正在为我的PPA打包一些东西。上游源是一个基于Makefile的.tar.gz归档文件。
由于这个软件包有大量与体系结构无关的数据,最好有构建脚本生成两个软件包:
- 软件包名称
- 软件包名称-data
我该如何设置这个?我已经编辑了我的Debian control
文件以生成两个软件包,但我不知道如何将正确的文件放入正确的软件包。
由于数据文件目前都是通过Makefile安装的,所以我在这方面有点迷茫。
debian/package.install
文件。下面是我曾经参与开发的一个软件包imagination (bzr branch)的示例。debian/control
中创建软件包。现在有三个部分。一个用于源码软件包,每个二进制软件包都有一个。请注意,foo-data软件包应该是Architecture: all
。还要注意,imagination依赖于imagination-common (= ${source:Version})
。debian/imagination.install
文件。这个文件包含了我们想要放入imagination软件包中的特定文件或路径。对于这个软件包,我们希望包含所有与架构相关的文件。桌面文件也被包括在内,因为它的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,您可以想象其他一些获得相同结果的方法。