dh_usrlocal: ...ディレクトリではありません

dh_usrlocal: ...ディレクトリではありません

私はDebianパッケージを生成するためにMakefile設定を使用しています:

.PHONY: package
package: $(PACKAGE_TARGETS)

build/%.changes: ../%.changes
        mkdir -p build
        for f in `<$< awk 'BEGIN { files = 0; } { if (files) print $$5; } /^Files:/ { files = 1; }'`; do \
            test -f build/$$f || mv ../$$f build/; \
        done
        mv $< $@

../%.changes:
        dpkg-buildpackage -rfakeroot -b -uc

非常に小さなコミットをするまでは、ビルド中にすべてがうまく戻っていました。実行可能ファイルが追加されました/src/bin/app-cli。次に、Debian インストールファイルの実行ファイルを参照してくださいdebian/app.install

src/bin/app-cli usr/local/bin

何らかの理由で変更すると、ビルドシステムでエラーが発生します。

dh_usrlocal: debian/app/usr/local/bin/app-cli is not a directory
rmdir: failed to remove 'debian/app/usr/local/bin': Directory not empty
dh_usrlocal: rmdir debian/app/usr/local/bin returned exit code 1
make[1]: *** [binary] Error 1
make[1]: Leaving directory `/var/lib/jenkins/data/workspace/app-VBJPWWOTACEEMDGNNWMFS4QU6K4EPG5PJRESMEIZPZL4GAUCKWVQ'
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
make: *** [../app_0.0.1-13-master_amd64.changes] Error 2

この新しいファイルがDebian Helperによってディレクトリと見なされるかどうかを知っていますか?

ベストアンサー1

これdh_usrlocalマンページ何が起こっているのか理解するのに役立ちます。

Debian パッケージはディレクトリにインストールできますが、/usr/local最善の方法は管理者スクリプトを使用することです。dh_usrlocalディレクトリを管理者スクリプトに変換して/usr/localそれを自動化します。 Debianパッケージのインストールは許可されていないため、このディレクトリは空であると仮定します。文書以下に/usr/local

パッケージのdh_install指示に従って(パッケージ内)app-cliにコピーしてください。次に、実行してディレクトリを見て、適切なメンテナンススクリプトを作成してからディレクトリを削除してみてください(パッケージにはこのようには提供されません)。ファイルが含まれているため失敗します。/usr/local/bindh_usrlocal

おすすめ記事