Answers:
在回答这一问题之前,我想解释一下如何在Nix中使用软件包命名。
您所指的名称是派生名称,它不是唯一的(可以使用不同的方式编译多个包git-1.9.0
)。
如果要以唯一的方式引用程序包,则使用属性集名称。
在查询时打印出属性集名称(注意-P
:
nix-env -qaP | grep git
要通过唯一名称更新软件包:
nix-env -uA git
在您的情况下,这是由于两个软件包都被调用的结果git-version
。Nix决定优先选择哪一个。要降低一个当前的优先级,请设置:
nix-env --set-flag priority 10 git
nix-env -u
--set-flag priority
此处实际上无济于事,更改Nixpkgs中软件包变体的命名约定可能有意义:github.com/NixOS/nixpkgs/issues/1756