使用 nix-env -f 输入 Nix 表达式中的名称冲突

使用 nix-env -f 输入 Nix 表达式中的名称冲突

下列的之前的这个答案这是给我的,我开始使用此存储库的 git 克隆来关注 nixpkgs-unstable 频道:https://github.com/NixOS/nixpkgs-channels/

我的克隆在~/nixpkgs.我nix-shell用选项打电话-I ~,效果很好。因为nix-env-I选项不存在,但我知道应该使用该-f选项。到目前为止(在两台不同的机器上)我就是这样做的(nix-env使用 option调用-f ~)并且效果很好。

现在,我在第三台机器上,尝试重现相同的过程。我尝试使用命令安装 nixpkgs-unstable 中但不在我的系统通道 nixos-16.09 中的软件包nix-env -f ~ -iA nixpkgs.exercism,但失败并显示以下错误消息:

warning: name collision in input Nix expressions, skipping ‘/home/theo/nixpkgs’
error: attribute ‘exercism’ in selection path ‘nixpkgs.exercism’ not found

搜索此错误消息给了我这个http://lists.science.uu.nl/pipermail/nix-dev/2013-October/011898.html 但我不属于所描述的情况。我没有作为普通用户关注任何频道(nix-channel --list答案为空),我唯一的系统范围频道称为 nixos(进一步证实,.nix-defexpr/仅包含,而channels_root/又包含binary-caches,manifest.nixnixos)。

我做错了什么?

注意:我可以通过发出命令来解决我的问题nix-env -f ~/nixpkgs -iA exercism,但我仍然很想了解为什么我的第一个解决方案不起作用(即使它在另外两台机器上起作用)。

答案1

看着来源看来您很可能nixpkgs~.

nix-env搜索(递归)所有目录以default.nix将父目录添加为顶级属性。

使用nix-env -f ~似乎是一个坏主意 - 需要大量搜索和发生此类冲突的机会。除非我遗漏了一些东西,否则符号链接~/nixpkgs似乎~/.nix-defexpr是一个很好的解决方案。

简单地使用 并没有什么问题nix-env -f nixpkgs -iA exercism。在这种形式中,nixdefault.nix直接在-f参数中看到 a 并将其用作顶级属性集。

如果您找不到另一个 nixpkgs 目录,我会尝试使用该--show-trace选项。

相关内容