4

debian パッケージのビルド中に問題が発生しました。

rules ファイルのドキュメントについては: https://www.debian.org/doc/manuals/maint-guide/dreq.en.html#rules

  • debian/rules build は dh build を実行します。次に、以下を実行します。

    dh_testdir
    dh_auto_configure
    dh_auto_build
    dh_auto_test
    
  • fakeroot debian/rules バイナリは、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 パッケージのビルド中に./configureおよびmakeコマンドが 2 回実行されることを意味します。それは奇妙だ。

以前dpkg-buildpackage -us -ucはdebianパッケージをビルドしていました。

更新: 実際には 2 回実行されていないことがわかりましたが、なぜ --no-act でdh build出力が 2 回実行されたと表示されるのですか?

4

1 に答える 1

5

debian/rules buildまず、最初の質問に答えるために、とbinaryルールの違いがDebian ポリシー §4.9で概説されています。簡単に言えば、buildターゲットは「ビルド」手順のみを実行し、ファイルを uid 0 に chown したり、「インストール」したりするなど、root (または fakeroot) 権限を必要とすることは一切実行しないでください。binary一方、適切なバイナリdebを構築するために必要なすべての手順を実行する必要があります. まだ行っていない場合binaryは、すべての手順を含める必要があります。build

dhあなたが見逃している可能性があることについて、いくつかの事実を次に示します。

  1. dhdh_*ビルド シーケンスの一部として (たとえば、dh buildまたはの一部としてdh binary) 実行されるコマンドを、呼び出し間であっても追跡します。の内容を見ると、既に実行されていると考えられるコマンドを確認できますdebian/$package.debhelper.log。そこにコマンドがリストされている場合、dhコマンド シーケンスの目的で既に実行されていると見なされます。

  2. dh $sequence --no-actそのdebian/$package.debhelper.logファイルも考慮されます。そのdh binary --no-actため、新しくクリーンなビルド ディレクトリで実行すると、ターゲットに対して実行する必要があるコマンドを含む、コマンドの長いリストが表示されますbuild。しかし、実際に最初に実行してから 試すと、ビルド手順が表示されなくなります。実際の .deb パッケージを準備して作成する手順のみを示します。dh builddh binary --no-act

于 2015-09-14T19:31:56.377 に答える