没有明确的规范方式来引用特定的包版本。

主要观点:Nix 生态系统中多数包并非来自该系统,其项目使用不同组织哲学,用户期望 Nix 提供按版本号区分的多个包实例。
关键信息

  • Nix 中包在两个地方描述,推导部分在nixpkgs/pkgsdefault.nix中,全局属性路径在pkgs/top-level/all-packages.nix中。
  • 假设从最新可用源构建推导,更新包需编辑推导使用新源版本并提交 git PR 到nixpkgs/master
  • 同一项目的不同版本需有唯一推导文件和属性路径名,推荐创建额外包版本为单独推导并在文件名添加版本号。
  • 安装包时用户参考all-packages.nix中的属性路径名,更新系统时获取nixpkgs最新提交中的推导。
  • 用户常需使用不同包版本,有三种方式:找已有推导路径(nix search不一定可靠)、找哈希并固定、创建自己的推导(需检查nixpkgs/master并修改现有推导)。
    重要细节:许多 C/C++程序不使用最新 GCC,当前存在gcc6等多个与gcc不同的属性路径,这些讨论已持续约五年,相关问题在#9682中。
阅读 11
0 条评论