按照之前给我的答案,我开始关注 nixpkgs-unstable 频道,并使用此存储库的 git 克隆: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
Run Code Online (Sandbox Code Playgroud)
搜索此错误消息给了我这个http://lists.science.uu.nl/pipermail/nix-dev/2013-October/011898.html
但我不是在描述的情况。我没有以普通用户的身份关注任何频道(nix-channel --list
答案为空),我唯一的系统范围频道称为 nixos(进一步证实了.nix-defexpr/
仅包含channels_root/
又包含binary-caches
,manifest.nix
和的事实nixos
)。
我做错了什么?
注意:我可以通过发出命令来解决我的问题,nix-env -f ~/nixpkgs -iA exercism
但我仍然很想了解为什么我的第一个解决方案不起作用(即使它在另外两台机器上起作用)。
查看源代码,您很可能nixpkgs
在~
.
nix-env
搜索(递归)所有目录以将default.nix
父目录添加为顶级属性。
使用nix-env -f ~
似乎是一个坏主意 - 需要大量搜索和发生此类冲突的机会。除非我遗漏了一些东西,否则符号~/nixpkgs
链接~/.nix-defexpr
似乎是一个很好的解决方案。
简单地使用 并没有什么问题nix-env -f nixpkgs -iA exercism
。default.nix
在这种形式中,nix直接在参数中看到 a-f
并将其用作顶级属性集。
如果您找不到另一个 nixpkgs 目录,我会尝试使用该--show-trace
选项。
归档时间: |
|
查看次数: |
2075 次 |
最近记录: |