최근에 나는 스스로 평가를했다. 저는 실제로 Nix / NixOS 기고자이며 배포 기술에 관심이있는 전 연구원입니다.
나는 가능한 한 사실에 충실하려고 노력했지만 완전히 편견을 유지하는 것은 불가능할 것이다. 내 결과를 요약하면 다음과 같습니다.
두 방법 모두 패키지를 개별적으로 저장합니다 . Snappy는 다음 이름 규칙을 사용하여 폴더에 앱과 프레임 워크를 저장 /app/name/version.vendor
합니다 /nix/store/hash-name-version
. 반면 Nix는을 사용합니다 .
Nix의 명명 규칙은 모든 빌드 타임 종속성 에서 파생 된 해시 접두사를 사용하기 때문에 더욱 강력 합니다. Nix를 사용하면 패키지의 변형을 쉽게 구분하여 서로 옆에 저장할 수 있습니다. 변경 사항 (예 : 다른 빌드 절차, 라이브러리 업그레이드, 컴파일러 업그레이드)은 새로운 해시를 생성하여 가능한 변형을 서로 옆에 저장할 수 있습니다.
패키지가 종속성을 찾을 수 있도록하기 위해, 닉스 그들을 결합 정적 (예 수정하여 실행에 RPATH
엘프 바이너리를) 또는 적합한 환경 변수를 설정 스크립트 (예에 그들을 배치하여 CLASSPATH
, PYTHONPATH
, PERL5LIB
, 등).
뭐 이따위가 구성하는 용기 와 같은 실행 파일이 공통 FHS 위치에 종속성을 찾을 수있는, /lib
및/bin
그러나 Nix는 Snappy의 컨테이너 접근 방식도 지원하지만 매우 드문 경우에만 사용됩니다. 컨테이너화 된 접근 방식을 사용하는 가장 눈에 띄는 Nix 패키지는 NixOS의 Steam입니다. Steam은 속성이 충돌하는 배치 도구이기 때문입니다.
Snappy Ubuntu Core는 소위 "A / B"파티셔닝 구성표를 사용하여 기본 시스템을 업그레이드 (및 롤백)합니다. 한 번에 제한된 수의 버전 (일반적으로 2 개) 만 지원합니다.
반면 NixOS (Nix 기반 Linux 배포판) 는 Nix 저장소의 Nix 패키지에서 기본 시스템을 구성 하며 훨씬 강력합니다. 가비지 수집되지 않은 이전 구성으로 롤백 할 수 있습니다. 또한 세대간에 유사한 시스템 패키지를 공유 할 수 있습니다.
두 도구 모두 권한이없는 사용자 설치를 지원 합니다 . 그러나 Snappy는 모든 파일을 사용자의 홈 디렉토리에 저장합니다. 두 명의 사용자가 동일한 패키지를 설치하면 시스템에 두 번 설치됩니다.
반면 Nix 패키지를 사용하면 일반 사용자가 중앙 Nix 저장소에 패키지를 설치하여 동일한 패키지를 사용자간에 공유 할 수 있습니다 . 이름 지정 규칙 (해시 사용)으로 인해 이는 안전한 방법으로 수행 될 수 있습니다.
Snappy는 기본적 으로 패키지의 런타임 동작을 제한 하지만 Nix는 그렇지 않습니다.
Snappy는 사용자가 소스 코드에서 패키지 를 구성 하는 데 도움이되지 않는 것 같습니다 . 그러나 Nix는 사람들이 필요할 때 모든 빌드 타임 종속성 (컴파일러, 빌드 툴, 라이브러리 등)을 매우 쉽고 자동으로 설치할 수 있도록 DSL을 제공합니다.
Snappy는 모듈화 및 재사용을 거의 지원하지 않습니다 . 예제 패키지에서 모든 라이브러리 종속성은 정적으로 번들되어 훨씬 더 많은 디스크 공간과 RAM을 소비합니다. 또한 문서는 프레임 워크를 제외한 모든 기능을 제공하지 않는 것 같습니다. 그러나 프레임 워크는 설명서에 따라 재사용 할 수 없습니다
Nix 모듈화 패키지를 사용하고 종속성을 안전하게 관리하는 것이 핵심 기능입니다.
바라건대 당신이 읽는 것이 흥미롭고 아마도 그것에 가치가있는 것들이있을 것입니다.