Nathan Osman Asked: 2010-12-15 19:20:23 +0800 CST2010-12-15 19:20:23 +0800 CST 2010-12-15 19:20:23 +0800 CST 给定上游源存档,如何让 Debian 打包生成两个包? 772 我正在为我的 PPA 打包一些东西。上游源是.tar.gz基于 Makefile 的存档。 由于这个包有大量独立于架构的数据,让构建脚本生成两个包是明智的: 包裹 包数据 我该如何设置?我已经编辑了我的 Debiancontrol文件以生成两个包,但我不知道如何将正确的文件放入正确的包中。 由于数据文件目前都是通过 Makefile 安装的,所以我有点迷失在这里。 debian ppa packaging makefile 1 个回答 Voted Best Answer andrewsomething 2010-12-15T20:13:22+08:002010-12-15T20:13:22+08:00 这是我一直发现缺乏文档的地方。我几乎只是通过查看它在其他包中的完成方式来了解它是如何工作的。与 Debian 打包中的大多数东西一样,有几种方法可以做到这一点。我发现最简单的方法是使用debian/package.install文件。这是我研究过的一个包的例子,imagine (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,您可以开始想象获得相同结果的其他方法。
这是我一直发现缺乏文档的地方。我几乎只是通过查看它在其他包中的完成方式来了解它是如何工作的。与 Debian 打包中的大多数东西一样,有几种方法可以做到这一点。我发现最简单的方法是使用
debian/package.install
文件。这是我研究过的一个包的例子,imagine (bzr branch)。首先,我们需要在
debian/control
. 现在有三段。一个用于源包,一个用于每个二进制包。请注意, foo-data 包应该是Architecture: all
. 另请注意,想象力取决于imagination-common (= ${source:Version})
.接下来,我们创建一个
debian/imagination.install
文件。这包含我们希望最终在想象包中的特定文件或路径。对于这个包,我们需要所有架构相关的文件。桌面文件包含在内,因为它需要说明它在其Exec:
行中调用的二进制文件。我们需要创建一个
debian/imagination-common.install
文件。这将包含所有与架构无关的文件、图像、翻译、文档等。man dh_install
描述了这里实际发生的事情:“正确的包构建目录”的意思是,在构建过程结束时,结果中的所有内容都将
foo.deb
在src/debian/foo
. 最终foo-data.deb
会出现的文件将在src/debian/foo-data
. 由于debian/rules
本质上只是一个 Makefile,您可以开始想象获得相同结果的其他方法。