nix-env -f를 사용하는 입력 Nix 표현식의 이름 충돌

nix-env -f를 사용하는 입력 Nix 표현식의 이름 충돌

다음과 같은이 이전 답변이것은 나에게 주어졌고 나는 이 저장소의 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-cachesmanifest.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. 이 형식에서 nix는 인수 default.nix에서 직접 a를 확인 -f하고 이를 최상위 속성 세트로 사용합니다.

--show-trace다른 nixpkgs 디렉토리를 찾을 수 없으면 이 옵션을 시도해 보겠습니다 .

관련 정보