SnappyはNixおよびGuixとどのように関係していますか?


22

私は比較のために検索しましたが、見つかりませんでしたし、今自分でそれをするのに十分な情報がありません。

それらはすべてトランザクションの更新を提供しますが、封じ込めのレベルは異なります。

  • Snappyはライブラリで静的にコンパイルして、バイナリ依存関係の複数のバージョンを提供します。提供された(そして必要な?)サービスをメタデータとして宣言します。パッケージは単一のイメージとして提供されますか?
  • ニックスは、バイナリの依存関係の複数のバージョンを提供するために動的リンクを扱いますか?提供および必要なサービスをメタデータとして宣言します。パッケージは、依存関係を扱うリポジトリを通じて提供されます。
  • GuixはNixに似ていますが、GNU統合が特徴です。

NixとGuixのより詳細な比較はSander van der Burgによって行われていますが、詳細については調査しませんでした。Canonicalの誰かが既存のソリューションの分析を行ったと思います。CoreOSなど、イメージに基づいた他の展開システムがあります。

では、Snappy UbuntuはNixとGuixとどのように関係していますか?大きな違いは何ですか?


1
だから、あなたは私たちにあなたが読みたくないものを読むように頼んでいますか?「NixとGuixの詳細な比較は、私が読んでいなかったSander van der Burgによって行われました。」...「Snappy UbuntuはNixとGuixにどのように関連していますか?大きな違いは何ですか?」
-don.joey

このコミュニティの誰かが既にそれについて考えているか、私が見つけられなかった記事を知っていると思うので、私はここで尋ねていました。今日、Snappyにつまずいたので、それについて読んでみましたが、Snappyについて十分な情報を得て、これらの成熟したパッケージマネージャー間でSnappyがどのように配置されるかを判断できるとは思いません。Snappyの記事ではこれらのシステムについては一切言及しておらず、同様の問題に対処する他のフリーソフトウェアについて黙っていることは悲しいと思います。また、リンクされたブログの記事は、snappyに名前を付けておらず、snappyに関係する人によっては付けられていません。
ペイロード

1
けっこうだ。ダウン票が元に戻りました。
-don.joey

Snappyはライブラリで静的にコンパイルしません。ライブラリをバイナリと同じフォルダに保存できるため、システムライブラリに依存する必要はありませんが、リリースに依存しないパッケージが必要ない場合は、システムライブラリに依存することもできます。そのため、Snappyは安定したLTSリリースの利点を削除しません。それはすべてを非常に単純にします。
ジョエルレンシンスタッド

回答:


29

最近、私は自分で評価を行いました。私は実際にはNix / NixOSの貢献者であり、展開技術に興味のある元研究者です。

私は可能な限り事実に専念しようとしましたが、完全に偏見を保つことはおそらく不可能です。私の調査結果を要約するには:

  • どちらのアプローチもパッケージを分離して保存します。Snappyは、次の名前規則を使用してフォルダーにアプリとフレームワークを保存します/app/name/version.vendor。Nixはを使用し/nix/store/hash-name-versionます。

    Nixの命名規則は、ビルド時のすべての依存関係から派生したハッシュプレフィックスを使用するため、より強力です。Nixを使用すると、パッケージのバリエーションを簡単に区別し、それらを隣り合わせに保存できます。変更(ビルド手順の違い、ライブラリのアップグレード、コンパイラのアップグレードなど)があると、新しいハッシュが生成され、可能なバリアントを互いに隣接して格納できるようになります。

  • パッケージには、その依存関係を見つけることができるようにするには、ニックスは、それらを結合し、静的に(例えば変更することで実行可能にRPATHELFバイナリのを)、または適切な環境変数を設定するスクリプト(例えば、それらをラップすることによってCLASSPATHPYTHONPATHPERL5LIB、など)。

    スナッピーは、構成コンテナのような実行可能ファイルは、それらの共通FHSの場所にそれらの依存関係を見つけることができている、/libとの/bin

    ただし、NixはSnappyのコンテナーアプローチもサポートしていますが、これは非常にまれな場合にのみ使用されます。SteamはNixOSのSteamであり、コンテナ化されたアプローチを使用する最も顕著なNixパッケージは、矛盾するプロパティを持つ展開ツールそのものです。

  • Snappy Ubuntu Coreは、いわゆる「A / B」パーティションスキームを使用して、ベースシステムをアップグレード(およびロールバック)します。一度にサポートされるバージョンの数は限られています(通常は2つ)。

    対照的に、NixOS(NixベースのLinuxディストリビューション)は、Nixストア内のNixパッケージからも基本システムを構成し、はるかに強力です。まだガベージコレクションされていない以前の構成にロールバックできます。さらに、世代間で同様のシステムパッケージを共有できます。

  • 両方のツールは、非特権ユーザーのインストールをサポートします。ただし、Snappyはすべてのファイルをユーザーのホームディレクトリに保存します。2人のユーザーがたまたま同じパッケージをインストールした場合、システムに2回インストールされます。

    対照的に、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
OK、答えを修正しました。これがお役に立てば幸いです!
サンダーファンデルブルク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.