본 가이드는 pkg nix 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.
– apt나 Homebrew 등 일반적인 패키지 관리 시스템에서는 시스템 전역에 특정 패키지 이름으로는 딱 한가지 버전만 설치할 수 있음. 이 때문에 패키지 이름에 버전을 명시하기도 함. (예를 들면 python3.9와 python3.10을 별개의 패키지로 배포하는 등)
– 여러 패키지가 하나의 공통 패키지에 의존하는 경우 특히 문제. OpenSSL 같은 라이브러리를 업그레이드하면 OpenSSL에 직간접적으로 의존하는 모든 패키지가 영향을 받음.
– 패키지마다 호환되는 의존성의 버전을 느슨하게 정의해두고 있기는 하지만, 경우에 따라서는 이전과 동일하지 않은 동작발생 가능성이 있음. 그리고 업그레이드하려는 버전이 어떤 패키지에서 요구하는 버전과 충돌하는 경우 아예 업그레이드 불가한 경우도 발생함.
– Nix에서는 의존성을 yc41q33h5xrw1zbyw5hp1y1ga0jk9hwd-openssl-1.1.1k과 같이 정확한 버전과 특정 빌드로 정의함. 따라서 패키지마다 각자 독립적으로 의존성 버전을 선택 가능. 패키지끼리 서로 영향을 주지 않기 때문에 안전하게 패키지를 설치 & 업그레이드 가능. 또한 의존성 고정으로 패키지가 저자의 의도대로 작동할 가능성이 높음.
Setup
Mac
sh <(curl -L https://nixos.org/nix/install)
Linux
- Single-User Installation
sh <(curl -L https://nixos.org/nix/install) --no-daemon
- Multi-user installation (recommended)
sh <(curl -L https://nixos.org/nix/install) --daemon
Exec
Leave a Reply