Nix 存储路径中有什么

主要观点:

  • 介绍了 Nix 中商店路径(/nix/store)的哈希计算方式,包括输入派生(pessimistic)哈希,即哈希由派生文件内容构建,而非输出字节。
  • 讲解了固定输出派生(FOD),其具有固定内容地址,即使派生文件有微小变化,输出内容也不变,但派生路径会改变。
  • 详细说明了计算/nix/store路径的过程,并非简单地对drv文件哈希,而是在计算哈希时替换inputDrv路径,以确保固定输出派生路径改变时计算路径不变。

关键信息:

  • 一个简单的示例,在 bash 脚本中添加注释会导致不同的哈希和派生路径,如wxrsdk4fnvr8n5yid94g7pm3g2cr6dihr4c710xzfqrqw2wd6cinxwgmh44l4cy2
  • 固定输出派生的示例,添加注释后派生路径改变,但最终输出不变,如/nix/store/3lx7snlm14n3a6sm39x05m85hic3f9xy-simple-fod
  • 计算/nix/store路径的步骤,包括构建指纹、替换inputDrv、哈希和压缩等,如通过 Go 程序实现。

重要细节:

  • 引用了相关文档和资源,如\[ref\]指向的 Nix 相关文档和PhD 论文
  • 展示了 Nix 中的各种代码片段和命令行操作,如nix-repl中的代码、nix-hash命令等。
  • 提到了除 CppNix 外的其他 Nix 实现,如 go-nix 对理解 Nix 工作原理的帮助。
阅读 8
0 条评论