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

증분 빌드

불필요한 단계(그리고 그에 따른 불필요한 빌드 리소스와 시간)를 줄이는 패키지 빌드

개념/증분 빌드

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

증분 빌드는 지능적인 캐싱과 같은 메커니즘을 사용하여 이미 사용할 수 있는 산출물을 다시 빌드하지 않으므로, 소프트웨어 산출물의 전체 의존성 트리를 매번 빌드할 필요가 없는 빌드 과정입니다. Nix는 증분 빌드를 제공하는 여러 빌드 시스템 가운데 하나입니다.

Nix가 증분 빌드를 제공하는 방식

Nix는 모든 빌드 결과를 Nix 스토어에 저장함으로써 Nix 패키지에 대한 증분 빌드를 제공하는 여러 빌드 시스템 가운데 하나입니다.

Nix는 패키지를 빌드할 때마다 해당 패키지의 전체 클로저, 즉 의존성 트리를 빌드합니다.

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

해시 부분 덕분에 Nix는 무엇을 빌드할 필요가 없는지 “알” 수 있습니다. final-production-artifact 패키지를 빌드하는 데 super-important-dependency 패키지가 필요하다면, Nix는 super-important-dependency의 derivation을 검사하여 해당 의존성의 해시를 계산하고, 이를 통해 다음과 같은 Nix 스토어 경로를 계산할 수 있습니다.

        
/nix/store/
m7hsk1m4jkwy6pnns5gpn1kss22raan4
-
super-important-dependency

이 정보를 바탕으로 Nix는 다음 위치 중 한 곳에 해당 산출물이 이미 있는지 확인할 수 있습니다.

Nix는 이 위치들 중 어디에서도 실체화된 산출물을 찾지 못한 경우에만 해당 derivation을 빌드합니다. 이는 큰 클로저를 빌드할 때 엄청난 차이를 만들 수 있습니다.

Nix에서 증분 빌드가 가져오는 효과

패키지는 여러 면에서 Nix의 핵심 구성 산출물입니다. Nix 개발 환경은 패키지를 밀폐된 방식으로 제공하고, NixOS는 Nix 패키지를 기반으로 구축되는 식입니다. 이는 Nix의 증분 빌드 덕분에 Nix와 관련된 거의 모든 것이 훨씬 빨라지고 리소스도 덜 사용하게 된다는 뜻입니다.