nix如何知道机器需要什么二进制文件?

jhe*_*dus 1 nix

他们在nix文档中写道:

但是,Nix可以自动从源代码跳过构建,而是使用二进制缓存,即提供预构建二进制文件的Web服务器.例如,当被要求从源代码构建/nix/store/b6gvzjyb2pg0...-firefox-33.1时,Nix将首先检查文件https://cache.nixos.org/b6gvzjyb2pg0 ... .narinfo是否存在,如果存在,则获取从那里引用的预构建二进制文件; 否则,它将从源头回归建设.

我想知道nix如何知道我的机器需要什么样的二进制文件?如果我在手臂或英特尔或amd上运行nix或者你命名它.如何为正确的体系结构选择此缓存中的二进制文件?

Dan*_*our 5

nix是一个纯功能的包管理器.因此,它将包所需的所有内容作为函数的输入,包括所谓的stdEnv,包含有关体系结构的信息.

使用这些输入,nix会生成一个哈希值.这是您在包名称前面看到的内容.

因此,所需的体系结构在该哈希中进行编码,这就是为什么当从二进制缓存下载时只需要检查哈希.