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. 패키지 이름
스토어 경로를 구성 요소별로 나누어 살펴봅시다:
- 루트 경로는 기본적으로
/nix/store입니다. - 입력 해시는 패키지를 빌드하는 데 사용된 derivation의 입력으로부터 도출됩니다
- 패키지 이름은 패키지 작성자가 지정합니다
Nix의 스토어 경로에 대해 알아 두어야 할 몇 가지 중요한 사항은 다음과 같습니다:
/nix/store에 있는 루트 경로는/usr/bin같은 다른 표준 시스템 경로와 충돌하지 않습니다.- 해시 덕분에 이름이 같은 두 패키지라도 패키지의 입력이 조금이라도 다르면 완전히 다른 경로를 갖게 됩니다. 예를 들어
my-package-1.0의 입력에 있는 파일 하나에서 글자 하나만 바꾸더라도/nix/store/1aq3wchnvv7yn0d6y1r3j129hjqmv2k3-my-package-1.0같은 스토어 경로가 만들어질 수 있습니다. - 패키지 이름은 근본적으로 임의적입니다. 원하는 명명 규칙을 자유롭게 사용할 수 있습니다. 패키지에 버전 개념을 두고 싶지 않다면 이름을
my-package로 지정하고 입력 해시로 구분할 수 있습니다.