Ubuntu下Nix构建提示空间不足但/nix和/tmp空间充足的解决
解决Ubuntu下Nix构建
No space left on device问题(/nix和/tmp空间充足时) 问题场景
在Ubuntu(非NixOS)系统中构建Nix项目或其依赖时,触发No space left on device错误,但/nix和/tmp目录均有10GB以上可用空间。经排查,Nix实际在使用容量仅约1.6GB的$XDG_RUNTIME_DIR(路径为/run/user/1000,属于tmpfs文件系统)作为临时构建目录。
解决方案
临时生效(单次会话)
先设置临时目录环境变量,再执行Nix构建命令:
export TMPDIR=/tmp nix-shell --impure … # 将…替换为实际的构建参数
永久生效(所有会话)
将TMPDIR配置加入shell的初始化文件:
- 若使用Bash,编辑
~/.bashrc,添加一行:export TMPDIR=/tmp - 若使用Zsh,编辑
~/.zshrc,添加同样的行。
修改后重启shell或执行source ~/.bashrc(对应shell的配置文件)即可生效。
原理说明
Nix默认会优先使用$XDG_RUNTIME_DIR作为临时构建目录,但该目录是基于内存的tmpfs,默认容量限制较低(通常为用户内存的1/2或固定值)。通过设置TMPDIR指向空间充足的/tmp目录,可强制Nix切换临时构建目录,避开容量限制。
内容的提问来源于stack exchange,提问作者unhammer
相关产品推荐
相关产品推荐

