在没有 .orig 文件的情况下构建 debian 包

Build debian package without .orig file

我之前使用Makefile创建包,命令"dh_make --createorig",然后调整生成的debian文件夹中的文件,最后使用debuild命令生成.deb。该工作流程很简单并且对我有用,但有人告诉我要稍微调整一下,这样您就可以从源代码构建项目而不需要原始文件,我不确定该怎么做,但是根据这个( https://askubuntu.com/questions/17508/how-to-have-debian-packaging-generate-two-packages-given-an-upstream-source-arch) and this structure (http://bazaar.launchpad.net/~andrewsomething/imagination/debian/files) 一定有办法的。在我的例子中,我会有一个包含源和所有这些的文件夹,然后是一个 debian 文件夹(用 dh_make 生成),但我不确定如何避免 debuild 命令请求 .orig 文件或者如果我应该为此使用其他命令。

抱歉超长的问题,我想我提供了所有相关信息,但如果有任何模糊之处,我可以澄清一下。

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

如果你使用 1.2.3-1,它意味着上游包 1.2.3 的 Debian 构建 1 --- 构建程序(dpkg-buildpackage 和顶部的包装器)--- 假设一个.orig.tar.gz 存在。

但是如果你使用 1.2.3 它会考虑包 'Debian native' 并且存档只是 .tar.gz 而不是 .orig.tar.gz.

现在,选择不应仅由您的方便来决定。如果这有一个上游源,使用第一个方案。如果没有,第二个可能没问题。在我维护的包中,我有两者,但 比前者多

如果您想直接在源代码包中创建一个 Debian 目录(即您打包自己的作品,而不是来自上游版本),您可以使用 --native 选项 dh_make

我认为问题的提出方式有所不同,很明显该项目是上游的,将其格式更改为 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)*.*,,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 就是构建包所需要的全部。 现在我认为问题仍然存在,如果有人有一些好主意如何在 debian/rules 中插入 tar 操作,这样我就可以调用 debuild -uc -us 并且它神奇地创建了 orig tarball我会很棒的:)