Lobsters | 📄 原文链接 | 2026-08-06 收录

Nix 沙箱是一个隐藏输入:可复现性的边界

来源:fzakaria.com — 2026-07-30

📋 概述

Farid Zakaria 指出 Nix 的 sandbox-paths 是 derivation 的一个隐藏输入:它不出现在 .drv 里,却能微妙地改变构建的可复现性。他用一个「如果存在 /truth 就信它,否则算 4」的示例展示,往沙箱里额外挂入一个含 5 的 /truth 文件后,同一个 derivation 的输出哈希不变(仍为 qba6…),但实际输出却从 2+2=4 变成 2+2=5。这与 __noChroot 这类记在 derivation 里的属性不同,sandbox-paths 是 Nix 二进制编译期的属性,两个 nix --version 相同的人可能拥有不同的沙箱基线。若把沙箱路径折进哈希,又会因大家 busybox 版本不同而破坏二进制缓存共享,所以问题棘手。

🔑 核心要点

💡 金句

沙箱本应强化密闭性,在这里却主动破坏了它。
← 返回 Lobsters 首页