Snappy는 Nix 및 Guix와 어떤 관련이 있습니까?


22

나는 비교를 검색했지만 비 발견을 발견했으며 지금 당장 그것을 할만 큼 충분한 정보가 없습니다.

그들 모두는 거래 업데이트를 제공하지만 다른 수준의 봉쇄를 제공합니다.

  • Snappy는 라이브러리에서 정적으로 컴파일되어 여러 버전의 이진 종속성을 제공합니다. 제공된 (및 필요한) 서비스를 메타 데이터로 선언합니다. 패키지는 단일 이미지로 제공됩니까?
  • Nix는 동적 링크를 처리하여 여러 버전의 이진 종속성을 제공합니까? 제공 및 필요한 서비스를 메타 데이터로 선언합니다. 패키지는 종속성을 다루는 저장소를 통해 제공됩니다.
  • Guix는 Nix와 비슷하지만 GNU 통합 기능이 있습니다.

Nix와 Guix 사이의 더 자세한 비교는 Sander van der Burg에 의해 주어졌으며 , 나는 자세히 연구하지 않았습니다. Canonical의 누군가가 기존 솔루션을 분석했다고 생각합니다. CoreOS I과 같은 이미지 기반의 다른 배포 시스템이 있습니다.

그렇다면 Snappy Ubuntu는 Nix 및 Guix와 어떤 관련이 있습니까? 주요 차이점은 무엇입니까?


1
그래서 당신은 우리가 당신이 읽고 싶지 않은 것을 읽도록 요구하고 있습니까 ??? "Nix와 Guix를 더 깊이 비교하는 것은 Sander van der Burg에 의해 제공됩니다."... "Snappy Ubuntu는 Nix와 Guix와 어떤 관련이 있습니까? 주요 차이점은 무엇입니까?"
don.joey

나는이 커뮤니티 중 하나가 이미 그것에 대해 생각했거나 내가 찾지 못한 기사를 알고 있다고 생각하기 때문에 여기에 묻고있었습니다. 나는 오늘 Snappy를 우연히 발견했고 그것에 대해 읽었지만 Snappy가 성숙한 패키지 관리자 사이에 어떻게 배치되는지 결정할 충분한 정보가 있다고 생각하지 않습니다. Snappy 기사는 이러한 시스템을 전혀 언급하지 않으며 비슷한 문제를 다루는 다른 자유 소프트웨어에 대해서는 침묵하는 것이 슬프다 고 생각합니다. 또한 링크 된 블로그 기사의 이름은 불쾌하고 관련성이있는 사람이 아닙니다.
페이로드

1
충분합니다. 공감 비가 되돌려졌습니다.
don.joey

Snappy는 라이브러리에서 정적으로 컴파일되지 않습니다. 바이너리와 동일한 폴더에 라이브러리를 저장할 수 있으므로 시스템 라이브러리에 의존 할 필요가 없으며 릴리즈 독립적 인 패키지가 필요하지 않은 경우 시스템 라이브러리에 의존 할 수도 있습니다. 따라서 Snappy는 안정적인 LTS 릴리스의 이점을 제거하지 않습니다. 모든 것을 훨씬 간단하게 만듭니다.
Jo-Erlend Schinstad가

답변:


29

최근에 나는 스스로 평가를했다. 저는 실제로 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 모듈화 패키지를 사용하고 종속성을 안전하게 관리하는 것이 핵심 기능입니다.

전체 블로그 게시물은 여기에서 찾을 수 있습니다 : http://sandervanderburg.blogspot.com/2015/04/an-evaluation-and-comparison-of-snappy.html

바라건대 당신이 읽는 것이 흥미롭고 아마도 그것에 가치가있는 것들이있을 것입니다.


3
귀하의 답변은 100 % 정확하지만 링크가 이동, 변경, 다른 링크로 병합되거나 기본 사이트가 사라지면 100 % 쓸모가 없게 될 수도 있습니다 ... :-( 따라서 답변을 편집 하고 관련 내용을 복사하십시오 링크에서 답변으로 이동하여이 사이트 수명의 100 %에 대한 답변을 보장합니다! ;-) 귀하는 항상 답변의 맨 아래에 링크를 귀하의 자료의 출처로 남겨 둘 수 있습니다 ...
Fabby

3
좋아, 방금 답변을 수정했습니다. 잘만되면 이것이 도움이된다!
샌더 반 데르 버크
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.