다음을 사용하여 설치할 패키지를 검색한다고 가정해 보겠습니다.nix-env
~의--query
작업:
$ nix-env -qa 'aspell.*en'
aspell-dict-en-7.1-0
/etc/nixos/configuration.nix
NixOS 메인 에 이 패키지 이름을 썼어요구성 파일:
environment.systemPackages = with pkgs; [
aspell-dict-en
];
그러나 sudo nixos-rebuild switch
NixOS 명령을 실행하면구성 업데이트다음으로 지정된 모든 시스템 전체 패키지를 설치합니다.선언적으로, 오류와 함께 중단됩니다.
error: undefined variable ‘aspell-dict-en’ at /etc/nixos/configuration.nix:44:5
많은 패키지(전부는 아니지만)에서 반환된 이름 nix-env
과 구성 옵션에 지정해야 하는 이름이 environment.systemPackages
다르다는 것을 알고 있지만 논리를 이해하지 못합니다. 를 통해 찾은 패키지를 설치하는 방법은 무엇입니까 nix-env
?
답변1
NixOS 커뮤니티에는 세 가지 매뉴얼이 있습니다. 문제가 있는 경우 먼저 확인하세요.
- 닉스 매뉴얼, 패키지 관리자용
- NixOS 매뉴얼, 운영 체제의 경우
- Nixpkgs 매뉴얼, Nix 패키지 인프라용
Nix의 모든 패키지는 Nix 표현식으로 지정됩니다. Nix 표현식은 Nix 언어로 작성된 텍스트로, 일반적으로 확장자가 .nix
.
모든 표현식에는 "기호 이름"이라는 것이 있으며 nix-env
.see 를 사용할 때Nix 표현식 예. Nix 자체는 내부적으로 이 기호 이름을 사용하지 않으므로 패키지 이름이 지정되었는지 여부는 중요하지 않으며 aspell-dict-en
단지 사용자의 편의를 위한 것입니다.
정말 중요한 것은 "속성 경로"입니다. 따라서 기호 이름과 속성 경로 사이에 혼동이 있습니다. 각 패키지에는 environment.systemPackages
구성 옵션에서 시스템 전체 설치에 사용할 수 있는 속성 경로가 있습니다 .선언적 패키지 관리.
패키지의 속성 경로를 찾으려면 다른 플래그를 추가하세요.-P
귀하의 질문:
$ nix-env -qaP 'aspell.*en'
nixos.aspellDicts.en aspell-dict-en-7.1-0
nix-env
매일 쉽게 사용할 수 있어야 하므로 nix-env
사용법 --query
과 --install
통화 옵션을 연습해 보세요. 그러나 온라인으로 패키지를 찾아보고 해당 속성 경로를 찾을 수도 있습니다.Nix 패키지 검색. 를 입력 aspell
하고 를 클릭하면 aspell-dict-en
설치 명령의 일부로 속성 경로를 포함하여 다양한 패키지에 대한 속성이 표시됩니다.
$ nix-env -iA nixos.pkgs.aspellDicts.en
이제 이 속성 경로를 다음 위치에 넣을 수 있습니다 /etc/nixos/configuration.nix
.
environment.systemPackages = with pkgs; [
aspellDicts.en
];
그런 다음 를 실행하여 시스템을 업데이트합니다 sudo nixos-rebuild switch
.
답변2
다음 웹사이트를 사용하여 패키지를 검색할 수 있습니다.
데이터 과학을 위해 NixOS를 사용하는 경우:
파이썬기준 치수:
nix-env -qaP .\*pylint.\*
또는
py_pkgs="nix_packages_py35.txt"
nix-env -qaP | grep -i python36 > ${py_pkgs}
grep pandas ${py_pkgs}
아니면 특별히 찾고 계시다면오른쪽패키지/라이브러리
nix-env -f "<nixpkgs>" -qaP -A rPackages .\*tidyverse.\*
또는 예를 들어 npm 패키지를 얻을 수 있습니다.
nix-env -qaPA 'nixos.nodePackages'
답변3
nix-env -v -qaP '*' | grep "nvim"
nix-env -v -qaP '*'
결과를 파일에 저장하겠습니다 (보통 돌아오는 데 시간이 걸리기 때문).
haskellPackages
nix-env는 다음 사항 (및 다른 사항도 가능)을 무시하는 것 같습니다 . 다음을 통해 haskellPackages와 같은 하위 카테고리의 패키지를 검색할 수 있습니다.
nix-env -f '<nixpkgs>' -qaPA haskellPackages
nix-env 검색은 현재 5초 이상 걸리다가 다시 반환되기 때문에 매우 실망스럽습니다 error: regex error
.
답변4
nix-search () {
local cache_file=~/.cache/nix/nix-env-qaP
if [[ "$1" =~ ^--?c(ache)?$ ]]; then
mkdir -p $(dirname $cache_file)
echo -n "Caching packages.."
nix-env -qaP '*' >$cache_file
echo "