실체화
Nix가 derivation의 빌드 명령을 Nix 스토어의 빌드 출력으로 바꾸는 과정
먼저 Nix 빠른 시작부터 따라가고, 개념 문서는 주로 보충 설명이 필요할 때 참고하기를 권합니다. 오른쪽의x를 누르면 모든 개념 문서에서 이 안내를 숨길 수 있습니다.
실체화는 Nix derivation이 패키지로 변환되는 과정입니다. derivation이 본질적으로 패키지에 대한 계획이라면, 실체화는 그 계획을 내용으로 가득 찬 실제 출력 디렉터리로 바꾸는 빌드 과정입니다.
.drv 파일
패키지를 빌드하기 위해 nix build를 실행하면, Nix CLI는 먼저 해당 함수의 derivation 함수를 살펴보고 이를 중간 단계의 .drv 파일로 변환합니다. 이 파일은 본질적으로 derivation 함수를 형식적으로 표현한 것입니다. 모든 .drv 파일은 /nix/store/m2nb4d0pfydr8bq5ww1yqbrkvvf18zbl-perl-5.36.0.drv와 같이 해시가 포함된 경로로 Nix 스토어에 저장되며, 이를 통해 derivation 함수에 어떤 변경이라도 생기면 새 경로를 가진 새 .drv 파일이 만들어지도록 보장합니다. 그런 다음 CLI는 .drv 파일을 실제 빌드 과정의 청사진으로 사용하며, 이 빌드 과정에서는 항상 패키지의 전체 의존성 트리를 빌드합니다.
빌드 과정
Nix는 derivation에 대한 .drv 파일을 만든 뒤, 파일에 인코딩된 명령을 사용해 샌드박스 환경에서 실제로 패키지를 빌드합니다. 이는 본질적으로 실체화가 /etc의 설정 파일과 같은 머신의 전역 상태에 의존하지도, 영향을 주지도 않는다는 뜻입니다. 빌드 과정에 필요한 모든 것은 다음에서 가져옵니다.