Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debian 已弃用的选项--直到?_Debian_Packaging_Buildbot - Fatal编程技术网

Debian 已弃用的选项--直到?

Debian 已弃用的选项--直到?,debian,packaging,buildbot,Debian,Packaging,Buildbot,在buildbot上构建包时,我目前有一个单独的buildstep,它可以 dpkg-buildpackage ... 这非常有效,但所有输出都集中在瀑布中的一个步骤中,因此很难一目了然地看出故障是在配置、构建还是打包期间发生的。所以我想要一种更细粒度的方法来构建东西 碰巧我知道我想要使用dh构建的所有包。这意味着我可以配置、构建、测试和打包构建步骤,每个步骤都运行以下命令之一: dh build --until dh_auto_configure dh build --until dh_au

在buildbot上构建包时,我目前有一个单独的buildstep,它可以

dpkg-buildpackage ...
这非常有效,但所有输出都集中在瀑布中的一个步骤中,因此很难一目了然地看出故障是在配置、构建还是打包期间发生的。所以我想要一种更细粒度的方法来构建东西

碰巧我知道我想要使用dh构建的所有包。这意味着我可以配置、构建、测试和打包构建步骤,每个步骤都运行以下命令之一:

dh build --until dh_auto_configure
dh build --until dh_auto_build
dh build --until dh_auto_test
dpkg-buildpackage -nc ...
我使用dh来调用这些函数,这样它就可以在包使用任何函数时进行重写。我不希望buildbot必须知道所讨论的包是否使用覆盖

到目前为止,一切顺利。问题是,dh不希望我使用-until选项。上面说

dh:不推荐使用-until选项。改用覆盖目标

这让我很难过。。。听起来dh没有预料到这个用例

那么,现在的问题是:

这些事情应该在哪里讨论


dh是否真的以其他方式处理我的用例,而我只是错过了备忘录?

这对dh来说可能不是一份好工作。通常,它实际上只是从debian/rules makefile中使用。-until方法可能会给您带来很大的问题,即使它没有被弃用

但是,您可以通过在自己的脚本中执行dpkg buildpackage所采取的所有步骤来分割构建过程。手册页顶部的摘要应该告诉您所需的一切

但即使这样,也不一定能让您拆分流程的配置和构建部分。debian/rules文件并不是为了将这些步骤分开,也不是为了方便用户这样做。很多人喜欢,有些人不喜欢

我的建议是让dpkg buildpackage在每个阶段都尽可能多地工作,但仍然要避免在构建环境、依赖项检查、树准备、fakeroot调用等方面弄乱一些微妙的东西。只需在第一个阶段之后传递-nc,以避免清理树和重新开始。dh非常聪明,当构建*和二进制*等阶段重叠时,可以跳过已经完成的部分

对于大多数软件包,您可以通过以下方式获得正确的配置/构建分离:

set -e
# check build deps, clean tree, make source debs
dpkg-buildpackage -S -us -uc

if grep '^configure:' debian/rules; then
    debian/rules configure
elif grep '^override_dh_auto_configure:' debian/rules; then
    debian/rules override_dh_auto_configure
elif grep '^%:' debian/rules; then
    dh_auto_configure
else
    : # oh well, it'll get done during the build phase if necessary
fi

# prepare environment, perform build
dpkg-buildpackage -nc -T build

# install stuff into temp dir, tar it up, make the deb file
dpkg-buildpackage -nc -b -us -uc

# remake the changes file, if you care, since right now it only
# includes the binaries
dpkg-genchanges > ../$whatever.changes

至少,这应该是正确的包。

值得一提的是,我可以控制所有有问题的包,并将它们转换为dh。stackoverflow的UI:-值得一提的是,我可以控制所有有问题的包,并将它们转换为dh。此外,由于我使用它来执行诸如运行覆盖率之类的操作,如果我使用dpkg buildpackage,我必须传递一个或多个环境变量。但我同意使用dpkg buildpackage或更好的Debild是构建的方式,我一起破解的任何东西都必须做他们所做的事情。