2015-09-11 29 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

相關問題