gpt4 book ai didi

nix - Nix 派生中的隔离临时文件

转载 作者:行者123 更新时间:2023-12-05 03:41:47 25 4
gpt4 key购买 nike

我没有在 Nix 派生中找到任何关于处理临时文件的信息。

我找到了 $TMP$TMPDIR 环境变量,但它们都指向 /tmp,这是系统全局的。

{
pkgs ? import <nixpkgs> {}
}:
pkgs.stdenv.mkDerivation {
pname = "show-tmp"
version = "0.1.0";
src = ./.;
configurePhase = ''
echo "tmp = $tmp; TMP = $TMP; TMPDIR = $TMPDIR"
'';
buildPhase = '':'';
installPhase = '':'';
}

变量 $tmp 没有在 mkDerivation 中定义。我期待这样的事情,因为其他派生范围变量遵循小写风格,例如 $out

/tmp 的问题很明显——它是全局目录。我需要担心碰撞和清洁。

我的派生 Hook 归档了一个大文件夹树。

最佳答案

如果您使用的是 Linux,请不要担心。 Nix 沙箱将为您的构建提供自己的空 /tmp。推导完成后,它会被删除。

在 macOS 上,$TMP$TMPDIR 得到处理,但 /tmp 是一个潜在的问题。

How Nix creates a private /tmp on Linux


2020 年初安装 Nix 的 macOS Darwin:

nix-build --expr 'with import <nixpkgs> {}; runCommand "hi" {} "echo a > /tmp/a; ls -al /tmp; sleep 1;"'
ls -al /private/tmp/
...
-rw-r--r-- 1 nixbld1 wheel 2 May 19 12:49 a
...

关于nix - Nix 派生中的隔离临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67606282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com