web-dev-qa-db-ja.com

nodejsコードをパッケージ化する場合、lintianが./node_modulesについて文句を言うのを防ぐにはどうすればよいですか?

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をインストール後のスクリプトの一部として実行することも検討しましたが、それを実行できないと判断しました(セキュリティおよびメンテナンス上の理由から)

4
Stefano Palazzo

警告/エラーは、実際に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>

詳細は 著者のブログ投稿 にあります。

3
andrewsomething