nixpkgs-unstable은 명령적으로 표시되지만 선언적으로 표시되지는 않습니다.

nixpkgs-unstable은 명령적으로 표시되지만 선언적으로 표시되지는 않습니다.

이 Python 라이브러리를 설치하려고 합니다 python3.6-geopandas-0.3.0. 성공적으로 설치했어요

$ nix-env -iA nixpkgs.python3Packages.geopandas

하지만 내 Python 환경에 포함되도록 표현식을 만들어야 합니다.

with import <nixpkgs> {};

python36.withPackages (ps: with ps; [
  geopandas
])

결과적으로 나는 얻었습니다.

installing ‘python3-3.6.4-env’
error: undefined variable ‘geopandas’

둘 다 내 시스템에 구성되어 있습니다 nixos. nixpkgs-unstable그러나 그것이 맞는지는 확실하지 않습니다. nixos루트와 nixpkgs사용자 채널이 있습니다 .

$ echo $NIX_PATH 
nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels

nixpkgs-unstable위 표현식을 성공적으로 실행할 수 있도록 사용자를 위한 기본 채널을 설정하거나 최소한 패키지를 오버레이로 표시하고 싶습니다 .

답변1

귀하의 표현은 이제 nixpkgs 전문가인 저에게 잘 맞습니다. 17.09 안정 브랜치에 존재하지 않는 버전 과 같이 예상하지 못한 NIX_PATH일부 이전 버전을 사용하고 있지 않은지 조사하겠습니다 .<nixpkgs>geopandas

답변2

NixOS에서 이것을 재현할 수 있었습니다.

당신이 그것을 찾으면 당신의 NIX_PATH컬렉션은 단지 nixpkgs심볼릭 링크일 뿐입니다. 작동할 유효한 채널 경로를 가리킬 것으로 예상되는 모든 표현식을 얻는 것은 약간의 트릭일 수 있습니다. (비록 이것이 nix 시스템의 요구 사항은 아니라고 생각하고 다음에서 유래한 것 같습니다./nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/nix/var/nix/profiles/per-user/root/channels/nixos/<nixpkgs>nix 데몬).

이 문제를 해결하려면 실제 nixpkgs 채널을 가리키도록 재정의하거나 표현식에서 채널을 사용하는 NIX_PATH대신 채널에 대한 경로를 명시적으로 선언해야 합니다 .<nixpkgs>

다음에서 사용 가능한 채널을 찾을 수 있습니다 ~/.nix-defexpr.

$tree -l -L 2 ~/.nix-defexpr/
/home/user1/.nix-defexpr/
├── channels -> /nix/var/nix/profiles/per-user/user1/channels
│   ├── ...
│   └── nixpkgs -> /nix/store/qz1.../nixpkgs
└── channels_root -> /nix/var/nix/profiles/per-user/root/channels
    ├── ...
    └── nixos -> /nix/store/53b.../nixos

( channels사용자별 채널과 channels_root루트로 구독하고 모든 사용자가 사용할 수 있는 채널 포함)

따라서 user1의 구독을 사용하기로 결정한 경우 nixpkgs다음을 실행합니다.

NIX_PATH="nixpkgs=/home/user1/.nix-defexpr/channels/nixpkgs" nix-env -f default.nix -i

관련 정보