主要观点:Nix 生态系统中多数包并非来自该系统,其项目使用不同组织哲学,用户期望 Nix 提供按版本号区分的多个包实例。
关键信息:
- Nix 中包在两个地方描述,推导部分在
nixpkgs/pkgs
的default.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中。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。