2015-09-11 31 views
2

我在构建debian包的时候遇到了一个问题。debian包装:dh build和dh二进制文件有什么区别

至于规则的文档文件:https://www.debian.org/doc/manuals/maint-guide/dreq.en.html#rules

  • 的debian /规则建立运行DH构建;这反过来运行以下:

    dh_testdir 
    dh_auto_configure 
    dh_auto_build 
    dh_auto_test 
    
  • fakeroot的Debian的/规则fakeroot的DH二进制二进制运行;这反过来运行以下:

    dh_testroot 
    dh_prep 
    dh_installdirs 
    dh_auto_install 
    dh_install 
    dh_installdocs 
    ... 
    dh_builddeb 
    

但是当我运行dh binary --no-act命令时,输出包括dh build --no-act。这意味着在构建debian包期间,./configuremake命令会运行两次。有点奇怪。

我用dpkg-buildpackage -us -uc来构建debian包。

更新:我看到它实际上没有运行两次,但为什么 - 无行为显示dh build输出运行两次?

回答

2

首先,回答第一个问题,在Debian Policy §4.9中概述了debian/rulesbuildbinary规则之间的差异。简而言之,build目标只应执行“构建”步骤,而不执行任何需要root(或fakeroot)权限的任何操作,例如将文件chowning设置为uid 0或“安装”事物。另一方面,binary应该采取所有必要的步骤来构建适当的二进制代码。 binary如果尚未完成,应包含build的所有步骤。

以下是关于dh一对夫妇的事实,你可能会丢失:

  1. dh跟踪是那些获得运行作为构建序列的一部分dh_*命令(例如,作为dh build部分或dh binary),甚至在调用之间。通过查看debian/$package.debhelper.log的内容,您可以查看它认为已经运行的命令。如果在那里列出命令,则dh将认为它已经运行用于命令排序的目的。

  2. dh $sequence --no-act也将debian/$package.debhelper.log文件考虑在内。因此,当您在新的干净构建目录上运行dh binary --no-act时,您会看到一长串命令,包括那些需要为目标执行的命令。但如果你真的运行dh build第一个和然后尝试dh binary --no-act,它不会再显示构建步骤。它只会显示准备和创建实际.deb包的步骤。

+0

谢谢你的回答,我认为文件应该指出这一点,以免混淆新用户。 – chenzhiwei

相关问题