Я упаковываю сценарий узла с внешней зависимостью (GraphicsMagick), и при попытке переопределить производную, сгенерированную из node2nix
, я получаю сообщение об ошибке:
wrapProgram: команда не найдена
Следующий текст подробно описывает, что я пытался решить эту ошибку.
Воспроизведение проблемы с нуля
Я создал минимальный репозиторий git, который воспроизводит эту проблему, если вы просто хотите взглянуть там. В противном случае шаги по воспроизведению проблемы приведены ниже.
Начальная сессия оболочки:
В пустом каталоге запустите:
npm init -y
npm install --save gm
curl https://i.imgur.com/addSfQi.jpg > image.png
(npm version: 5.6.0
& node version v8.9.4
)
Создать index.js
#!/usr/bin/env node
const path = require("path"); // node.js builtin
const gm = require("gm"); // GraphicsMagick module
const imagePath = path.join(__dirname, "image.png");
// Flip image horizontally and write to disk
gm(imagePath)
.flop()
.write(imagePath, error => {
console.log("error:", error);
});
Добавьте раздел «bin» в package.json:
"bin": "index.js"
Создавать файлы * .nix с node2nix
node2nix -8 -l package-lock.json
Создать override.nix
{ pkgs ? import <nixpkgs> {}
, system ? builtins.currentSystem
}:
let
nodePackages = import ./default.nix {
inherit pkgs system;
};
in
nodePackages // {
package = nodePackages.package.override (oldAttrs: {
postInstall = ''
wrapProgram "$out/bin/test-nodejs-gm-nixpkg" --prefix PATH : "${pkgs.graphicsmagick}/bin"
'';
});
}
Сборка пакета nix
nix-build override.nix -A package
Вышеуказанное не работает с:
/ nix / store / * / setup: строка 95: wrapProgram: команда не найдена
Полезные ресурсы
- git-репозиторий node2nix - включает несколько основных примеров.
- - пример того, как nixpkgs использует
wrapProgram
вpostInstall
с файлами, сгенерированнымиnode2nix
.
nativeBuildInputs = oldAttrs.nativeBuildInputs or [] ++ [ pkgs.makeWrapper ]
в свое переопределение, чтобы сделатьwrapProgram
доступным. - person ppb   schedule 07.04.2018nativeBuildInputs = [ pkgs.makeWrapper ];
решило эту проблему. Если вы добавите свой комментарий в ответ, я его приму. Также: Если вы не возражаете, я спрошу, где я могу узнать об этом больше? Спасибо! - person Jay   schedule 07.04.2018makeWrapper
рассматривается в руководстве по nixpkgs и источник находится вbuild-support
каталоге репо. - person brocking   schedule 16.04.2018