{{{#!wiki style="margin: -10px -10px;" | <tablebordercolor=#ffdf33> | Linux 배포판 |
<colbgcolor=#7EBAE4><colcolor=#fff> NixOS | |
홈페이지 |
[clearfix]
1. 개요
NixOS는 순수 함수형 패키지 매니저 Nix를 사용한 리눅스 배포판이다.
2. Nix
Nix는 선언적 패키지 관리를 위한 소프트웨어 도구 및 프로그래밍 언어로, 높은 재현성과 신뢰성을 보장한다. 리눅스와 macOS 시스템에서 사용할 수 있다.
* 재현성(Reproducible): 소프트웨어 패키지들을 격리된 환경에서 빌드하고, 의존성을 통제해서 높은 재현성을 확보한다. 즉 한 컴퓨터에서 패키지 빌드에 성공했다면, 다른 컴퓨터에서도 똑같은 빌드를 재현할 수 있다.
* 선언적(Declarative): 소프트웨어 패키징에 특화된 선언적 프로그래밍 언어 nix를 사용한다.
* 신뢰성(Reliable): 한 패키지를 업데이트 하는 일이 다른 패키지를 망가뜨리지 않도록 보장한다.
* 재현성(Reproducible): 소프트웨어 패키지들을 격리된 환경에서 빌드하고, 의존성을 통제해서 높은 재현성을 확보한다. 즉 한 컴퓨터에서 패키지 빌드에 성공했다면, 다른 컴퓨터에서도 똑같은 빌드를 재현할 수 있다.
* 선언적(Declarative): 소프트웨어 패키징에 특화된 선언적 프로그래밍 언어 nix를 사용한다.
* 신뢰성(Reliable): 한 패키지를 업데이트 하는 일이 다른 패키지를 망가뜨리지 않도록 보장한다.
Nix를 통해 설치된 패키지는 업데이트 될 때 항상 새로운 위치에 설치되며, 이전 버전의 패키지도 지워지지 않고 남아있게 된다. 때문에 이전 버전의 패키지에 의존하는 다른 패키지가 깨지는 일이 발생하지 않는다. 의존하는 패키지가 없어 더 이상 필요가 없어진 패키지는 가비지 컬렉터를 통해 제거된다. 같은 프로그램이더라도 버전에 따라 다른 소프트웨어가 공존할 수 있어야 하므로, Nix는 소프트웨어를
/usr
등의 위치에 설치하는 대신 특수한 암호화 해시값을 디렉토리 이름에 넣은 고유의 위치에 저장한다. 이 해시값은 소프트웨어 이름, 버전, 설정 등 빌드에 필요한 모든 입력에 의해 결정된다. 루트 권한 없이 소프트웨어 전역 설치가 가능한 것도 장점이다. 여러 유저가 같은 패키지의 다른 버전을 동시에 설치할 수 있으면서도 같은 버전의 소프트웨어는 전역적으로 한 개만 설치된다. 또 유저가 소프트웨어 빌드 및 다운로드 과정에 직접 간섭할 경우 패키지 고유의 해시값이 달라지기 때문에 다른 유저가 임의로 변경한 소프트웨어를 사용하게 될 걱정이 없다.3. 기타
2024년 9월 9일에 Nix 버전 2.24에서 권한 상승 취약점이 발견되었다.[1][1] hacker with puckpuckpedia