我之前使用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文件或我是否应该使用其他一些命令。
对于这个超长问题我很抱歉,我认为我提供了所有相关信息,但我可以澄清是否有任何模糊。
答案 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我会很棒的。)