堆栈构建而不将输出存储在 nix 存储中?

Stack build without storing output in nix store?

我已经 运行 stack build 多次处理一个项目 - 每次似乎都将结果保存在 /nix/store 中,随着时间的推移需要大量存储空间。

有什么方法可以不将结果保存到商店?

不,你不能"not save the result to the store"。 (你可以指定一个 different 存储,但这会使你的问题变得更糟——你将在这个存储中存储你的依赖链的额外副本,而且,你会无法下载由 Nix 的自动上游构建系统 Hydra 构建的部分依赖链的预构建二进制文件。

应该做的是对你的商店进行垃圾收集,这将删除不再使用的项目(根据活动 "gc root" 的可达性衡量 - - 例如由构建过程创建的 result link,主动 运行 的程序,或安装在用户配置文件中 nix-env 的软件集)。

这可以很简单:

nix-store --gc

...或者,如果你有一个特定的项目吃掉了 space 你想删除:

# delete all instances of whatever, if-and-only-if they aren't reachable from a gc root
nix-store --delete /nix/store/*-whatever