Мы столкнулись с этой проблемой при упаковке программного обеспечения, написанного на 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 могут быть отменены, чтобы заставить их замолчать. Создайте файл с именем <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
Существует [ 117] инструмент , который автоматизирует запись переопределений Lintian. Его можно использовать так:
lintian -o <path/to/your/changes-file.changes> | \
lintian-overrider --there-are-no-issues --source-dir <path/to/unpacked/source-tree>
Дополнительную информацию можно найти в в блоге автора .