在没有 .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我会很棒的:)
我之前使用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我会很棒的:)