不使用.orig文件构建debian包

时间:2015-06-01 19:34:32

标签: linux debian software-packaging

我之前使用Makefile创建了包,命令为“dh_make --createorig”,然后调整生成的debian文件夹中的文件,最后使用debuild命令生成.deb。该工作流程很简单,对我有用,但有人告诉我稍微调整它,你可以从源代码构建项目而不需要orig文件,我不知道该怎么做,但根据这个( https://askubuntu.com/questions/17508/how-to-have-debian-packaging-generate-two-packages-given-an-upstream-source-arch)和这个结构(http://bazaar.launchpad.net/~andrewsomething/imagination/debian/files)必须有办法。在我的情况下,我将有一个文件夹与源和所有,然后一个debian文件夹(用dh_make生成)但我不确定如何避免debuild命令要求.orig文件或我是否应该使用其他一些命令。

对于这个超长问题我很抱歉,我认为我提供了所有相关信息,但我可以澄清是否有任何模糊。

3 个答案:

答案 0 :(得分:3)

区别在于文件debian/changelog中的版本号。

如果你使用1.2.3-1,它暗示Debian构建了一个上游软件包1.2.3 ---构建程序(dpkg-buildpackage和顶部的任何包装器)---假设一个{{ 1}}存在。

但是如果您使用.orig.tar.gz,它会考虑该软件包' Debian native'档案只是1.2.3,而不是.tar.gz

现在,选择不应仅仅由您的便利驱动。如果这有上游源,请使用第一个方案。如果没有,第二个可以没问题。在我维护的软件包中,我有两个,但更多的前者。

答案 1 :(得分:2)

如果您想直接在源包中创建Debian目录(即您正在打包自己的工作,而不是从上游版本打包),您可以使用--native选项{{1} }

答案 2 :(得分:1)

我认为这个问题的提出方式不同,有点清楚的是项目是上游的,并且可能不是将其格式更改为native的理由。

目前我打包了一些上游python项目,我想到了同样的问题。为什么没有任何dh_ *钩子来覆盖以便在运行中生成这个原始tarball,所以你不会受到以下困扰:

This package has a Debian revision number but there does not seem to be an appropriate original tar file or .orig directory in the parent directory;

首先,我在项目中添加了一个makefile:

# Makefile VERSION:=$(shell dpkg-parsechangelog -S Version | sed -rne 's,([^-\+]+)+(\+dfsg)*.*,\1,p'i) UPSTREAM_PACKAGE:=click_${VERSION}.orig.tar.gz dpkg: tar cafv ../${UPSTREAM_PACKAGE} . --exclude debian --exclude .git debuild -uc -us clean: rm -f ../${UPSTREAM_PACKAGE} debuild clean

所以构建软件包需要一个简单的make clean dpkg。 现在我认为问题仍然存在,如果有人明白如何在tar中插入debian/rules操作,那么我可以调用debuild -uc -us,它会神奇地创建orig tarball我会很棒的。)