web-dev-qa-db-ja.com

スナップパッケージが存在する理由-本当に必要ですか?

仮定

正直なところ、スナップパッケージについてはあまり知りませんが、これはこの質問には関係ありません。以下を参照してください。システムは既存のものとは大きく異なると思います。

変更は意味がありますか?

実際に必要なものはありますか?つまり、新しいユースケースはありますか。それは、新しいフォーマットを開発するのに十分重要です-そして関連するインフラストラクチャですか?

新しいユースケースもカバーするように現在の方法を変更することは不可能でしたか?

それとも私はポイントを逃していますか?

私が見ているものはほとんどがマーケティングである可能性があります-技術的な変更を最小限に抑えるための新しい名前とプレゼンテーションです。また、新しいパッケージは既存の形式に非常に基づいているため、ほとんどの場合、ユーザーへの表示が変更されている可能性があります。もちろん、それは良い解決策かもしれません。この場合、この質問にはあまり関連性がありません。

それから、私はそれが側面に答えるのにまだ十分に役立つことを望みます質問が新しいユーザーにとって役に立たない、または混乱しない場合はお知らせください。削除させていただきます。

では、なぜ存在するのでしょうか?


バックグラウンド

私の最初の反応は「それは意味がありません!」でした。

これは、物理学のサイトで、誰かが彼の輝かしい新しいアイデアを答えで議論しない理由を不幸に尋ねた状況に似ています。それはクラックポットのアイデアのように強く見えました。実際の物理的知識からは程遠いため、開始点を見つけることさえ困難でした。私は単一のWordで彼のアイデアに触れない答えを書きましたが、クラックポットのアイデアを仮定することを議論しない理由を説明しました-その最初のケースではありません。答えは実際にポイントに達していたと思います。

私の仮定が正しければ、このケースは似ています。

しかし、そうではないかもしれません-見てみましょう。

11
Volker Siegel

はい、本当に必要です。

あるソフトウェアが別のソフトウェアに初めて依存するようになってから、このようなものが本当に必要になりました。

これを明確にしましょう。

依存関係の管理はhardです。

dependency hell と呼ばれる理由があります。 RPMやDebianのようなパッケージングシステムは、依存関係の地獄を回避する目的で作成されました。ただし、誰かが費用を支払う必要があります。

  1. Windowsでは、プログラムが依存関係をバンドルしているため、ユーザーはアップグレード(およびその欠如によるセキュリティ上の問題)に注意する必要があります。開発者が自分のアプリ用にバージョンXが必要な場合は、簡単です。アプリで提供します。今、どのようにアップデートを処理しますか?
  2. プログラムがリポジトリのソフトウェアに依存できるほとんどのLinuxディストリビューション(DebianまたはRed Hatに続く)では、リポジトリのプログラムmustはリポジトリのソフトウェアに依存します。アプリ用にバージョンXが必要で、ディストリビューションがXを提供している場合、単純です:依存しています。そして、ディストリビューションがそうでない場合は?次に:???
    • ディストリビューションに複数のバージョンを追加すると、メンテナーの負荷が増加します
    • 選択した依存関係のバージョンを使用する機能を失うと、開発者の負荷が増加します
    • 選択したバージョンのアプリケーションを使用する機能を失うと、ユーザーがイライラする

どちらの方法でもかなりの自由が失われます。

そして、これがスナップの出番です。開発者にバージョンXを含め、パッケージングシステムに更新を管理させます。誰が費用を負担しますか?ユーザー:

  • より多くのスペースが必要です。
  • 不注意な開発者が依存関係にパッチを適用したときにスナップを再構築しないため、それらを危険にさらすことによって。

引き換えに、どのような特典がありますか?

  • 更新によるセキュリティ(率直に言って、気にする人が足りない)は別として、ユーザーはスナップとの依存関係について心配する必要はありません。言葉はほとんど意味を失います。
  • セキュリティの更新は別として、ソフトウェア開発者はユーザーに正しい依存関係をインストールさせることを心配する必要はありません。
17
muru

役に立つかもしれないスナップの特定の機能の1つは、releasecandidatemasterなど.

たとえば、 nextcloudChannelボタンをクリックすると、下のスクリーンショットにダイアログが表示されます。

他の強力なセールスポイントは、分離、不変性、サンドボックス化であり、これらは セキュリティポリシーコンテキスト によって制御されます。これにより、アプリごとのアクセス許可を定義できます。

  • 読み取り/書き込み場所
  • リムーバブルストレージへのアクセス
  • スナップがホワイトリスト/ブラックリストに登録されている国
  • ネットワークアクセス
  • カメラ、プリンター、ジョイスティック、GPSロケーション
  • システム設定
  • ...スナップインターフェイスの完全なリスト

このアプローチは、許可とコンテンツプロバイダー/レシーバーを備えたMacOSアプリバンドルとAndroidのアプリサンドボックスをある程度模倣します。

ubuntu snap packages select channel

ここで、それぞれ独自のバージョンの特定のライブラリ、独自のバージョンのPython/Ruby/NodeJSランタイムを使用して多数のアプリを実行する必要があり、依存関係の地獄に陥ってシステムライブラリを台無しにしたり汚染したりしたくないと想像してください。システムPython/Node/Perl/Rubyモジュールなど。

3
ccpizza