Nodejsで書かれたいくつかのソフトウェアをパッケージ化中にこの問題に遭遇しました。
すべての依存関係を個別にパッケージ化することはできないため、プログラムとともにnode_modules/
ディレクトリを出荷する必要があります。コードはusr/share/<project>/...
にインストールされ、これらは生成される警告(およびエラー)です。
W: <project>: extra-license-file usr/share/<project>/node_modules/express/node_modules/mkdirp/LICENSE
E: <project>: wrong-path-for-interpreter usr/share/<project>/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu (#!/opt/local/bin/gnuplot != /usr/bin/gnuplot)
これらは何百もあります。
これらのエラーはすべて関連性があり意味があることは理解していますが、不正行為や各依存関係を個別にパッケージ化せずにそれらを取り除く方法はわかりません。 FHSに、node_modules/
などのごみだらけのディレクトリでも問題ない別のディレクトリがありますか?
npm install
をインストール後のスクリプトの一部として実行することも検討しましたが、それを実行できないと判断しました(セキュリティおよびメンテナンス上の理由から)
警告/エラーは、実際にusr/share/<project>/node_modules
ディレクトリにインストールしているという事実とは関係がないようです。 AFAICT、どこにインストールしても生成されます。
ドキュメントの言及 のように、Lintianの警告/エラーはそれらを黙らせるためにオーバーライドできます。ソースパッケージのdebian
ディレクトリに<package>.lintian-overrides
というファイルを作成します。次のようになります。
<package> binary: wrong-path-for-interpreter *
<package> binary: extra-license-file *
余分なライセンスファイルはdebian/rules
の次のスニペットで簡単に解決できますが、
override_dh_auto_install:
find . -name "LICENSE" -delete
dh_auto_install
lintian-overrider
ツール があり、Lintianオーバーライドの書き込みを自動化します。次のように使用できます。
lintian -o <path/to/your/changes-file.changes> | \
lintian-overrider --there-are-no-issues --source-dir <path/to/unpacked/source-tree>
詳細は 著者のブログ投稿 にあります。