Nix mkDerivation无法将本地文件系统zip文件识别为src

克里斯·斯特里钦斯基

根据https://nixos.org/nixpkgs/manual/#ssec-unpack-phase,我可以将zip文件用作“源”。

with import <nixpkgs> {};

stdenv.mkDerivation {
  name = "test-environment";
  nativeBuildInputs = [ unzip ];
  buildInputs = [ unzip ];
  src = "./x.zip";
}
nix-build
these derivations will be built:
  /nix/store/431i1riasgh2hjs5rd9azfh0ssjlg7qj-test-environment.drv
building '/nix/store/431i1riasgh2hjs5rd9azfh0ssjlg7qj-test-environment.drv'...
unpacking sources
unpacking source archive ./x.zip
unzip:  cannot find or open ./x.zip, ./x.zip.zip or ./x.zip.ZIP.
unzip:  cannot find or open ./x.zip, ./x.zip.zip or ./x.zip.ZIP.
do not know how to unpack source archive ./x.zip
builder for '/nix/store/431i1riasgh2hjs5rd9azfh0ssjlg7qj-test-environment.drv' failed with exit code 1
error: build of '/nix/store/431i1riasgh2hjs5rd9azfh0ssjlg7qj-test-environment.drv' failed

x.zip我的工作目录中有一个文件。为什么会失败?


更新:

如果设置unpackCmd = "ls -altr";,则看到以下输出:

total 16
drwxr-x--- 9 nobody nixbld 4096 May 26 12:39 ..
drwx------ 2 nixbld nixbld 4096 May 26 12:39 .
-rw-r--r-- 1 nixbld nixbld 5806 May 26 12:39 env-vars

为什么我的zip文件没有出现在那种情况下?

查尔斯·达菲

您不希望您的Nix派生引用本地文件系统元素!如果尚未对任何内容进行哈希处理并将其放入存储中,则说明您的构建不纯,因此无法在沙盒模式下工作。

将其更改为src = ./x.zip,文件将被散列并添加到存储中,src并将被设置为/nix/store/.....-x.zip路径。

with import <nixpkgs> {};

stdenv.mkDerivation {
  name = "test-environment";
  nativeBuildInputs = [ unzip ];
  buildInputs = [ unzip ];
  src = ./x.zip;  ## NO QUOTES!
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章