You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解读Nixpkgs依赖项平台对照表?箭头与偏移量解析

Nix依赖类型对照表解析

先明确三个核心平台定义

在理解对照表前,得先搞懂Nix中三个平台的含义:

  • Build平台:用来构建当前derivation(包)的机器/环境
  • Host平台:当前derivation最终要运行的机器/环境
  • Target平台:仅在交叉编译时存在,指当前derivation编译出的程序要运行的机器/环境(非交叉编译时和Host平台一致)

箭头X → Y的含义

表格第一列的X --> Y,表示该依赖的Host平台是X,Target平台是Y(这里的X、Y都是相对于当前derivation的三个平台而言)。举几个例子:

  • build --> build:这个依赖的Host是当前derivation的Build平台,Target也是当前derivation的Build平台——简单说就是“在Build平台上运行、用来构建其他Build平台依赖的工具”
  • build --> host:这个依赖的Host是Build平台,Target是当前derivation的Host平台——也就是“在Build平台上构建,最终在Host平台运行的构建工具”(比如编译用的编译器)
  • host --> target:这个依赖的Host是当前derivation的Host平台,Target是当前derivation的Target平台——交叉编译时,用来构建Target平台程序的Host端依赖

偏移量的计算规则

偏移量是用两个数字组成的元组,用来量化依赖的Host/Target平台相对于当前derivation的Host/Target平台的位置关系,规则很直接:

  • 用-1代表Build平台,0代表Host平台,1代表Target平台
  • 偏移元组的第一个数:依赖的Host平台对应的数字
  • 偏移元组的第二个数:依赖的Target平台对应的数字

比如:

  • depsBuildBuild对应build --> build,所以偏移是(-1, -1)(依赖Host是Build(-1),依赖Target是Build(-1))
  • buildInputs对应host --> target,偏移是(0, 1)(依赖Host是Host(0),依赖Target是Target(1))

对照表的阅读方法

每一行对应Nix derivation中一个具体的依赖属性,你可以把它看成“属性用途+平台关系+偏移标识”的映射:

  1. 第一列:明确该依赖的Host/Target平台关系
  2. 第二列:告诉你在写derivation时要把这类依赖放在哪个属性里(比如构建Host平台程序的Build端工具,要放在nativeBuildInputs)
  3. 第三列:用数字量化平台关系,方便依赖传播时自动转换类型

内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:18:24