gpt4 book ai didi

nixos - nix-instantiate 的目的是什么?什么是商店派生?

转载 作者:行者123 更新时间:2023-12-03 23:02:58 25 4
gpt4 key购买 nike

manual这个已经写完了 :

The command nix-instantiate generates store derivations from (high-level) Nix expressions.



但是什么是商店派生?

手册上说到以下关于 store derivations :

A description of a build action. The result of a derivation is a store object. Derivations are typically specified in Nix expressions using the derivation primitive. These are translated into low-level store derivations (implicitly by nix-env and nix-build, or explicitly by nix-instantiate)



这对于 nix-newbee 来说有点难以理解,我发现没有什么比 nix-instantiate 更有启发性的了。并通过谷歌搜索存储派生。我也在#nixos 上问过,我还没有得到答复。

有人可以用一个简单的例子来解释什么是商店派生,它有什么用途?

为什么要使用 nix-instantiate 生成商店派生?你能举一个 super 简单易懂的例子吗?

最佳答案

What is nix-instantiate good for ?



命令 nix-instantiate唯一的目的是评估 Nix 表达式。
Nix 语言的主要目的是生成派生词。

What is a store-derivation?



派生 ( see example) 是用于构建(实现)包的构建配方的计算机友好表示。它们是扩展名为 .drv 的文件列在商店目录中,通常是 /nix/store .

这些构建配方被 Nix 守护进程理解,并用于确保所有依赖项在之前构建,并存储在预先计算的路径中。成功编译所有依赖项后,Nix 守护程序可以寻找替代品,或者在本地实现派生。所有详细解释都可以在 Eelco Dolstra PhD Thesis 中找到.

每次执行 nix-instantiate 时都会创建这些文件。命令计算 derivation Nix 语言的函数,除非 --eval提供命令行选项。

Why one would generate store derivations using nix-instantiate ?



如果您对构建输出感兴趣,您应该更喜欢 nix-build ,相当于:
$ nix-store -r $(nix-instantiate '<nixpkgs>' -A hello)

在某些情况下,您对构建结果不感兴趣,而对查看编译时间依赖性感兴趣。例如,如果您希望调查 hello 的构建时间依赖性。包裹。然后使用 nix-store命令如下,您可以请求构建配方的所有依赖项:
$ nix-store --tree -q $(nix-instantiate '<nixpkgs>' -A hello)

关于nixos - nix-instantiate 的目的是什么?什么是商店派生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31490262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com