Snap StoreEdit
Snapストアを使用すると、開発者はアプリケーションをユーザーに直接公開できます。 APTやYUMのような従来のLinuxパッケージ管理手法では、アプリケーションはオペレーティングシステムの一部としてパッケージ化され、配布されます。 これにより、アプリケーションの開発とエンドユーザーのデプロイメントの間に遅延が生じます。 対照的に、アプリケーション開発者は、Snapストアでアプリケーションを公開し、配布メンテナの介入なしにユーザーに直接取得できます。
Snap Storeにアップロードされたすべてのアプリは、マルウェアスキャンを含む自動テストを受けます。 ただし、Snapアプリは、通常のUbuntuアーカイブのソフトウェアと同じレベルの検証を受信しません。 2018年5月の1つのケースでは、同じ開発者による2つのアプリケーションに、アプリケーションの実行中にバックグラウンドで実行される暗号化マイナーが含まれていることが判明しました。 この問題が発見されたとき、CanonicalはSnapストアからアプリケーションを削除し、snapの所有権を信頼できるサードパーティに譲渡し、マイナーが存在せずにSnapを再 Snap sandboxは悪意のあるアプリの影響を軽減しますが、Canonicalでは、ユーザーが信頼する発行者からのスナップのみをインストールすることを推奨しています。
Snapストア内のパッケージは開発者自身が保守しているため、配布メンテナはパッケージが品質基準を満たしており、タイムリーに更新されることを確 あるケースでは、Microsoftは一年以上のためのSnapcraftストアでSkypeの古いバージョンを残しました。
CanonicalによるSnap Storeは現在、snapの既存のストアのみですが、Snap自体はストアなしで使用できます。 Snapパッケージは、開発者のwebサイトを含む任意のソースから入手できます。 Red Hatの従業員であるAdam WilliamsonとLinux MintプロジェクトのリーダーであるClement Lefebreは、Snap Storeの一部のサーバー側の部分をクローズドソースにしているとCanonicalを批判しています。 Clement氏は、CanonicalがUbuntuを開発していることを考えると、これが利益相反を引き起こし、Snapの中立性に害を及ぼすと述べています。
Universal Linux packagesEdit
スナップは、linuxディストリビューションの範囲で動作する自己完結型のパッケージです。 これは、従来のLinuxパッケージ管理アプローチとは異なり、各Linuxディストリビューションに特化したパッケージを必要とします。snapファイル形式は、拡張子.snap
のSquashFS形式を使用した単一の圧縮ファイルシステムです。 このファイルシステムには、アプリケーション、依存するライブラリ、および宣言メタデータが含まれています。 このメタデータは、snapdによって解釈され、そのアプリケーション用に適切な形の安全なサンドボックスを設定します。 インストール後、snapはホストオペレーティングシステムによってマウントされ、ファイルが使用されるときにその場で解凍されます。 これには、snapsの使用するディスク領域が少ないという利点がありますが、一部の大規模なアプリケーションの起動が遅くなることも意味します。
SnapとFlatpakなどの他の汎用Linuxパッケージ形式との大きな違いは、Snapがデスクトップアプリケーション、サーバーツール、IoTアプリ、さらにはプリンタドライバスタッ これを確実にするために、Snapは、Snapでソケット起動システムサービスを実行するなどの機能についてsystemdに依存しています。 これにより、Snapはこのinitシステムを使用するディストリビューションでのみ動作します。
設定可能なsandboxEdit
Snap内のアプリケーションは、ホストシステムへのアクセスが制限されたコンテナで実行されます。 インターフェイスを使用して、ユーザーは、オーディオの記録、USBデバイスへのアクセス、ビデオの記録など、ホストの追加機能へのアクセ これらのインターフェイスは通常のLinux Apiを仲介するので、アプリケーションは書き換えなくてもサンドボックス内で機能できます。 デスクトップアプリケーションは、Flatpakプロジェクトによって最初に作成された標準化されたAPIであるXDGデスクトップポータルを使用して、サンドボック これらのポータルは、アプリケーションが使用するときにwebカメラなどのリソースへのアクセス許可をユーザーに求めるため、ネイティブLinux Apiと比較して、ユー 欠点は、これらの新しいApiを使用するためにアプリケーションとツールキットを書き直す必要があることです。
Snap sandboxは、Snap間でのデータとUnixソケットの共有もサポートしています。 これは、重複を避けてスナップのサイズを小さくするために、スナップ間で共通のライブラリとアプリケーションフレームワークを共有するためによく使用されます。
Snap sandboxは、上流のLinuxカーネルのAppArmor Linuxセキュリティモジュールに大きく依存しています。 同時にアクティブにできるのは1つの「メジャー」Linuxセキュリティモジュール(LSM)のみであるため、別のメジャー LSMが有効になっている場合、Snap sandboxの安全性は非常に低くなります。 その結果、デフォルトでSELinuxを有効にするFedoraなどのディストリビューションでは、Snap sandboxは大きく劣化します。 Canonicalは、複数のLsmを同時に実行できるようにするために、他の多くの開発者や企業と協力していますが、このソリューションはまだ長い時間がかかります。
Snap sandboxは、スナップされたデスクトップアプリケーションがホストオペレーティングシステムのテーマにアクセスするのを防ぎ、互換性の問題を防 スナップでテーマを使用するには、別のスナップにパッケージ化する必要があります。 多くの人気のあるテーマはSnap開発者によってパッケージ化されていますが、一部のテーマはまだサポートされておらず、珍しいテーマは手動でイ テーマがSnapパッケージとして利用できない場合、ユーザーは利用可能な最良のマッチングテーマを選択する必要があります。 サードパーティが簡単にテーマをパッケージ化し、珍しいシステムテーマを自動的にインストールできるようにするための作業が進行中です。
自動およびアトミックupdatesEdit
一日に複数回、snapdはすべてのスナップの利用可能な更新をチェックし、アトミック操作を使用してバックグラウンド 更新を元に戻し、デルタエンコーディングを使用してダウンロードサイズを縮小できます。
パブリッシャーは、チャネルを使用して、ソフトウェアの複数のバージョンを並行してリリースおよび更新できます。 各チャネルには、そのチャネルでリリースされたソフトウェアのバージョンと安定性を示す特定のトラックとリスクがあります。 アプリケーションをインストールするとき、Snapはデフォルトでlatest/stable
2.0/stable
チャンネルを使用すると、ユーザーはソフトウェアの2.0バージョンに固執し、下位互換性のない変更のリスクなしにマイナーな更新 パブリッシャーが新しいチャネルで新しいメジャーバージョンをリリースすると、ユーザーは選択したときに次のバージョンに手動で更新できます。
自動更新をオフにすることはできませんが、特定のニーズに合わせて更新を設定するには多くの方法があります。 ユーザーは、チャネルを指定することにより、ソフトウェアの特定のメジャーバージョンに残ることを選択することができ、彼らは手動で更新を確認する時間を持つように更新間隔を設定することができ、彼らは最大60日間の更新を保持することができます。 さらに、従量制課金接続でも更新は自動的に無効になります。 これらのコントロールを使用しても、多くのユーザーが自動更新を完全にオフにするオプションがないことについて苦情を表明しています。
SnapcraftEdit
Canonical Ltd.
29 October 2015; 5 years ago
https://github.com/snapcore/snapcraft
Python
Python
Python
Python
オペレーティングシステム
Python
th>
linux、macosの、microsoft windows
gplv3
snapcraft.io Snapcraftは、開発者がプログラムをSnap形式でパッケージ化するためのツールです。
Snapcraftは、開発者がプログラムをSnap形式でパッケージ化するためのツールで これは、スナップ、macOSのとMicrosoft Windowsでサポートされている任意のLinuxディストリビューション上で実行されます。 Snapcraftは、ビルドの結果がビルドされているディストリビューションやオペレーティングシステムに関係なく同じであることを確認するために、Multipassを使用して仮想マシンにパッケージをビルドします。 Snapcraftは、Go、Java、JavaScript、Python、C/C++、Rustなどの多数のビルドツールとプログラミング言語をサポートしています。 また、AppStream、git、シェルスクリプト、setup.py
ファイルなどの複数のソースからアプリケーションメタデータをインポートすることもできます。