web-dev-qa-db-ja.com

ターゲットが空白の場合、ビルドエラー「***ターゲットを作成するルールがありません」

私たちはdebパッケージを作成し、いくつかの監視スクリプトをインストールして自動起動しようとしています。

ルールファイルは次のとおりです。

#!/usr/bin/make -f
%:
    dh $@ --with=systemd --with=python2

override_dh_installinit:
    dh_systemd_enable -pmonitor --name=monitor monitor.service
    dh_installinit -pmonitor--no-start --noscripts
    dh_systemd_start -pmonitor

このパッケージをビルドすると、ルールファイルから次のエラーが発生します。

dpkg-buildpackage -rfakeroot -us -uc -ui
dpkg-buildpackage: warning: using a gain-root-command while being root
dpkg-buildpackage: info: source package vm-perf-mon
dpkg-buildpackage: info: source version 2018.07.24.211328
dpkg-buildpackage: info: source distribution RELEASED
dpkg-buildpackage: info: source changed by root <root@034f0c4becfc>
 dpkg-source --before-build debbuild
dpkg-buildpackage: info: Host architecture AMD64
 fakeroot debian/rules clean
make: 
: No such file or directory
make: *** No rule to make target '
'.  Stop.
dpkg-buildpackage: error: fakeroot debian/rules clean subprocess returned exit status 2
debuild: fatal error at line 1152:
dpkg-buildpackage -rfakeroot -us -uc -ui failed

.................................................. ..............................問題:

  1. ターゲットを作成するルールはないと主張していますが、実際のターゲット名は空白です。
  2. ルールファイルには、noターゲットがあります。ただし、キャッチオールとしてのデフォルトの%と、オーバーライドされたdh_installinitターゲットは例外です。私の知る限り、%は未定義のターゲットをすべてキャッチし、それを処理することになっています。1

Makeターゲットは空白なので、どこから始めればよいかさえわかりません。誰もこれに直面したことがあるのか​​、これが何であるのか、なぜこれが起こっているのか考えているのだろうか。

this を読みましたが、OPの場合、ルールのないターゲットを指定しました。


  1. https://www.debian.org/doc/manuals/maint-guide/dreq.en.html#defaultrules
1
Sagar

出力を見ると、「そのようなファイルやディレクトリはありません」と「ターゲットを作成するルールがありません」の両方が改行文字のように見えます。最初の行の最後に改行を追加することで、同様のエラー出力を複製することができました。

Debian/rulesファイルに異常な文字がないことを確認する必要があります。

1
Jason Conti