snapはCanonicalとUbuntuコミュニティが開発・
snapはいろいろなディストリビューションで利用可能
snapはCanonicalとUbuntuコミュニティが推進する
まずはsnapを説明する上で出てくる用語を整理しておきましょう。ごたくはいいからインストール方法を知りたい人は
- 「snap」
はパッケージフォーマットであり, またコマンド名です。 - snapパッケージをインストールする上でシステムに必要になるのがデーモンサービスである
「snapd」 です。 - snapパッケージを構築するツールが
「snapcraft」 です。 - snapパッケージを配布するリポジトリサービスを
「Snap Store」 と呼びます。
開発者はsnapcraftで構築したsnapパッケージをSnap Storeにアップロードします。Snap StoreへのアップロードはUbuntu Oneアカウント
利用者はsanpdをシステムにインストールした上で,
- 1つ前のバージョンへのロールバック
- 複数のリリースブランチの配信機能
(channel) - AppAprmor/
seccomp等を利用したホストに対する隔離機能 - 細かい権限管理
(interface) - 複数のバージョンの並行利用
一部は他のユニバーサルパッケージでもできたり,
ちなみに複数バージョンの並行利用は比較的最近に実験的に実装された機能になります。同じシステム上で同じソフトウェアの異なるバージョンを使い分けたいときに便利です。
最近はいろいろなソフトウェアがsnapで配信されるようになってきたので,
なお,
- ※1
- インストールするものが限定的なIoT向けには,
snapオンリーの環境を提供しています。
更新頻度の高い,
なぜユニバーサルパッケージなのか
Linuxディストリビューションを使用している人の大半は,
ただし一般的に異なるパッケージ管理システム同士に互換性はありません。そもそもパッケージ名の命名ルール自体が異なります。さらにバイナリ配布がメインとなっているパッケージ管理システムのほとんどは特定のパッケージに対しては特定のバージョンのみインストールできる仕組みです。結果として,
- 特定のディストリビューション・
パッケージ管理システム向けにしか提供されないソフトウェアがある - 同じソフトウェアでもディストリビューションごとて提供されるバージョンが異なる
- あるソフトウェアを構築する際に必要なライブラリなどのバージョンがとても古い
いずれも利用者が自分自身で解決できる問題ではあるものの,
- ※2
- 見方を変えると,
各ディストリビューションのパッケージメンテナがこの 「大変な部分」 を肩代わりしていると言えます。
UbuntuであればPPAが活用できます。それなりに体力があるところは,
どの方法もどうしても開発側にsnapcraft.
という名前のファイルに必要な情報を埋めるだけです。ビルド自身はDockerやLXDのコンテナの中で実行可能です。
といっても考え方自体はそこまでものでもありません。たとえばユニバーサルパッケージ的な機能を備えたAppImage
今だとsnapと双璧をなすFlatpak