이 사이트는 의 를 yeokja로 기계 번역한 비공식 한국어판입니다. 정확한 내용은 원문을 확인하세요.

Nix 스토어

Nix가 패키지와 기타 산출물을 빌드하고, 저장하고, 캐시하는 데 사용하는 디스크 기반 저장 시스템입니다

개념/Nix 스토어

먼저 Nix 빠른 시작부터 따라가고, 개념 문서는 주로 보충 설명이 필요할 때 참고하기를 권합니다. 오른쪽의x를 누르면 모든 개념 문서에서 이 안내를 숨길 수 있습니다.

Nix 스토어는 파일 시스템 안에 있는 저장 시스템으로, 기본적으로 /nix/store를 루트로 합니다. Nix 데몬은 Nix 스토어에 여러 가지를 저장합니다:

  • Derivation: /nix/store/<hash>-my-package.drv처럼 .drv 접미사가 붙은 독립 파일입니다
  • derivation의 결과물: /nix/store/<hash>-my-package/처럼 빌드 출력을 담고 있는 폴더입니다
  • 패치: /nix/store/<hash>-my-package.patch처럼 .patch 접미사가 붙은 독립 파일입니다

스토어 경로

Nix 스토어의 경로는 다음과 같은 구조를 가집니다:

        
/nix/store/ 1. Nix 스토어 접두사
sglc12hc6pc68w5ppn2k56n6jcpaci16 2. 해시 부분
-
my-package-1.0 3. 패키지 이름

스토어 경로를 구성 요소별로 나누어 살펴봅시다:

  1. 루트 경로는 기본적으로 /nix/store입니다.
  2. 입력 해시는 패키지를 빌드하는 데 사용된 derivation의 입력으로부터 도출됩니다
  3. 패키지 이름은 패키지 작성자가 지정합니다

Nix의 스토어 경로에 대해 알아 두어야 할 몇 가지 중요한 사항은 다음과 같습니다:

  • /nix/store에 있는 루트 경로는 /usr/bin 같은 다른 표준 시스템 경로와 충돌하지 않습니다.
  • 해시 덕분에 이름이 같은 두 패키지라도 패키지의 입력이 조금이라도 다르면 완전히 다른 경로를 갖게 됩니다. 예를 들어 my-package-1.0의 입력에 있는 파일 하나에서 글자 하나만 바꾸더라도 /nix/store/1aq3wchnvv7yn0d6y1r3j129hjqmv2k3-my-package-1.0 같은 스토어 경로가 만들어질 수 있습니다.
  • 패키지 이름은 근본적으로 임의적입니다. 원하는 명명 규칙을 자유롭게 사용할 수 있습니다. 패키지에 버전 개념을 두고 싶지 않다면 이름을 my-package로 지정하고 입력 해시로 구분할 수 있습니다.