根据https://nixos.org/nixpkgs/manual/#ssec-unpack-phase我可以使用 zip 文件作为“源”。
with import <nixpkgs> {};
stdenv.mkDerivation {
name = "test-environment";
nativeBuildInputs = [ unzip ];
buildInputs = [ unzip ];
src = "./x.zip";
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
为什么我的 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!
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3081 次 |
| 最近记录: |