nix-shell 错误 - mkdir:无法创建目录 '/nix/store/...':只读文件系统

nix-shell error - mkdir: cannot create directory '/nix/store/...': Read-only file system

我正在使用 nix-shell 来调试我的包。 配置脚本如下所示:

configurePhase = ''
  mkdir -p $out
  ...
'';

当运行通过nix-build时,这段代码是可以的,但是当运行 nix-shell我无法创建$out目录当运行 configurePhase

mkdir: cannot create directory '/nix/store/...': Read-only file system

我明白为什么会这样,但如何解决这个问题?

发生这种情况是因为 $out 指向 /nix/store/... 以只读方式挂载。

作为Eelco Dolstra pointed,至少有两种方法可以解决这个问题:

  • 不要在 configurePhase 中创建 $out,而是在 installPhase 中创建。

  • $out 设置为一些不同的值。

您可以使用

设置 $out 变量
nix-shell --command "export out=/tmp/foo; return"