Mii*_*kka 8 upgrade package-management nixpkgs nix
我在 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'
Run Code Online (Sandbox Code Playgroud)
这不是我想要的 - 我更喜欢普通版本git-1.9.0
而不是-full
版本。我知道我可以使用 手动升级到普通版本nix-env -i git-1.9.0
,但是有没有办法nix-env -u
做我想做的事?
在回答这个问题之前,我想解释一下 Nix 中包的命名是如何工作的。
您所指的名称是派生名称,它不是唯一的(以不同方式编译的多个包也可以git-1.9.0
)。
如果你想以唯一的方式引用一个包,属性集名称就是这样的方式。
查询时打印属性集名称(注意-P
:
nix-env -qaP | grep git
Run Code Online (Sandbox Code Playgroud)
要通过唯一名称更新包:
nix-env -uA git
Run Code Online (Sandbox Code Playgroud)
就您而言,这是由于两个包都被称为git-version
. Nix 决定按优先级选择哪一个。要降低当前一项的优先级,请设置:
nix-env --set-flag priority 10 git
nix-env -u
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
455 次 |
最近记录: |