NixOS下用mkDerivation+PNPM安装依赖prebuild-install的包失败
我需要在NixOS系统上安装一款依赖better-sqlite3的JavaScript应用,使用pnpm作为包管理器。better-sqlite3借助prebuild-install下载预编译二进制文件,无需在安装阶段编译C/C++代码。以下是最小可复现示例(MRE),使用仅包含package.json和pnpm-lock.yaml文件的Git仓库:
pkgs.stdenv.mkDerivation { pname = "test"; version = "1.0.0"; # 允许构建时访问网络 __noChroot = true; src = builtins.fetchGit { url = "https://github.com/MartinRamm/pnpm-better-sqlite3.git"; rev = "245f49b424b15d396d7a7fba44fcba5cbd751dd5"; shallow = true; }; buildInputs = with pkgs; [ pnpm_10 nodejs_23 cacert ]; buildPhase = "pnpm install --frozen-lockfile"; installPhase = "cp -r . $out"; };
然而,在执行better-sqlite3的install生命周期脚本时构建失败,且pnpm未输出详细错误信息,错误内容如下:
node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3: Running install script...
node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3: Running install script, failed in 223ms
.../node_modules/better-sqlite3 install$
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
└─ Failed in 223ms at /tmp/nix-build-test-1.0.0.drv-0/source/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3
ELIFECYCLE Command failed with exit code 1.
内容的提问来源于stack exchange,提问作者PStigerID

