4

我之前使用 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)和这个结构( http://bazaar.launchpad。网络/~andrewsomething/imagination/debian/files) 一定有办法。在我的情况下,我将有一个包含源代码和所有内容的文件夹,然后是一个 debian 文件夹(使用 dh_make 生成),但我不确定如何避免 debuild 命令询问 .orig 文件,或者我是否应该使用为此的一些其他命令。

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

4

3 回答 3

4

不同之处在于文件中的版本号debian/changelog

如果您使用1.2.3-1它,则意味着上游软件包 1.2.3 的 Debian build 1 --- 构建程序(dpkg-buildpackage以及顶部的任何包装器)--- 假设.orig.tar.gz存在。

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

现在,选择不应该仅仅取决于您的便利。如果它有上游源,请使用第一个方案。如果没有,第二个就可以了。在我维护的包中,我两者都有,但前者更多

于 2015-06-01T19:41:32.453 回答
2

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

于 2015-06-01T20:03:31.763 回答
2

我认为这个问题的问法不同,很明显该项目是上游的,将其格式更改为native.

目前我打包了一些上游python项目,这个完全相同的问题出现在我的脑海中。为什么没有任何 dh_* 挂钩可以覆盖以动态生成此原始压缩包,这样您就不会被以下问题困扰:

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 :)

于 2017-03-31T16:55:17.493 回答