防止Nix将git升级到git-full


8

我在Ubuntu上使用Nix来拥有某些软件包的更现代版本,其中之一就是git。当我跑步时nix-env -u,会发生以下情况:

% nix-env -u --dry-run '*'
(dry run; not doing anything)
upgrading `git-1.8.5.4' to `git-1.9.0-full'

这不是我想要的-与普通版本相比git-1.9.0,我更喜欢普通-full版本。我知道我可以使用手动升级到普通版本nix-env -i git-1.9.0,但是有什么方法nix-env -u可以做我想要的?

Answers:


4

在回答这一问题之前,我想解释一下如何在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

1
基于IRC的讨论:--set-flag priority此处实际上无济于事,更改Nixpkgs中软件包变体的命名约定可能有意义:github.com/NixOS/nixpkgs/issues/1756
Miikka

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.