打包 nodejs 代码,如何防止 lintian 抱怨 ./node_modules?

打包 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作为安装后脚本的一部分运行,但决定不能这样做(出于安全和维护原因)

答案1

警告/错误实际上似乎与您将它们安装到目录中无关usr/share/<project>/node_modules。据我所知,无论您将它们安装在哪里,都会生成它们。

作为文档中提到,可以覆盖 Lintian 警告/错误以使其静音。在源包目录<package>.lintian-overrides中创建一个名为的文件。它应该看起来像:debian

<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>

更多信息可以在这里找到作者的博客文章

相关内容