【发布时间】:2021-08-08 21:00:46
【问题描述】:
我没有找到任何关于在 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 的问题很明显 - 它是全局目录。 我需要担心碰撞和清洁。
我的派生挂钩存档了一个大文件夹树。
【问题讨论】:
-
通常情况下,写入
/tmp的任何内容都将使用mktemp之类的内容,它将为您创建唯一的文件名。您不只是创建$TMP/foo并希望获得最好的结果。