다음과 같은이 이전 답변이것은 나에게 주어졌고 나는 이 저장소의 git clone을 사용하여 nixpkgs-unstable 채널을 따르기 시작했습니다.https://github.com/NixOS/nixpkgs-channels/
내 클론이 에 있습니다 ~/nixpkgs
. nix-shell
옵션을 사용하여 호출했는데 -I ~
훌륭하게 작동합니다. nix-env
옵션 -I
이 존재하지 않지만 이를 사용해야 한다는 것을 알고 있기 때문 입니다 -f
. 이것이 내가 지금까지 (두 대의 다른 컴퓨터에서) ( nix-env
옵션 호출을 사용하여 -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/
, 및 nixos 만 포함하는 추가 확인 ).channels_root/
binary-caches
manifest.nix
nixos
내가 뭘 잘못했나요?
참고: 명령을 실행하여 문제를 해결할 수 있었지만 nix-env -f ~/nixpkgs -iA exercism
첫 번째 솔루션이 작동하지 않은 이유를 여전히 알고 싶습니다(다른 두 시스템에서는 작동했음에도 불구하고).
답변1
보고 있다원천nixpkgs
에 속할 가능성이 높습니다 ~
.
nix-env
모든 디렉터리를 (반복적으로) 검색하여 default.nix
상위 디렉터리를 최상위 속성으로 추가합니다.
사용하는 것은 좋지 않은 생각인 것 같습니다 nix-env -f ~
. 많은 검색이 필요하고 그러한 충돌이 발생할 가능성이 있습니다. 내가 놓친 것이 없다면 심볼릭 링크가 좋은 해결책 ~/nixpkgs
인 것 같습니다 .~/.nix-defexpr
그냥 사용해도 아무런 문제가 없습니다 nix-env -f nixpkgs -iA exercism
. 이 형식에서 nix는 인수 default.nix
에서 직접 a를 확인 -f
하고 이를 최상위 속성 세트로 사용합니다.
--show-trace
다른 nixpkgs 디렉토리를 찾을 수 없으면 이 옵션을 시도해 보겠습니다 .