恥ずかしながら最近初めて知ったのですが、最近の主要ディストリでは、RPMやDEB形式ではない新しいアプリケーションパッケージシステム(パッケージマネージャー)である”Snaps”(Snap、Snappyとも呼ばれる)が実装されているらしいです。
Linuxの新しいパッケージフォーマット、Ubuntu生まれのSnapsは、小アプリケーション群のためのコンテナのようだ – Tech Crunch
最初”なぜ今更あたらしいパッケージマネージャーなんて…”と思ったのですが、記事を読んでなるほど納得がいきました。
パッケージは端的に言ってしまうとWindowsでいう所謂”Windowsインストーラ”にあたります。本来、Linuxではアプリケーションをインストールするときに”ビルド”という手動の作業が必要だったのですが、従来のRPMやDEBなどどいったパッケージマネージャーは、パッケージを”インストール”することによって、初期設定も含めて全自動でアプリをインストールしてくれるという非常に便利なシステムです。
ただし、Windowsインストーラと異なるのはそのパッケージ単体をインストールするだけではアプリは動作しないという点。
Linuxの場合、一つのアプリを動作させるためには、そのアプリが動作するのに必要となるライブラリ群をあらかじめOSにインストールしておく必要があります。
アプリとアプリが必要とするライブラリの関係を”依存関係”とよび、パッケージにはアプリが必要とする依存関係も登録されています。
ところが、この依存関係というのが非常に厄介な存在です。
実はDEBやRPMといったパッケージマネージャーは飽くまで依存関係にあるアプリがインストールされているかのチェックのみで、足りない依存関係を自動で満たす機構はもっていません。
もっとも現在ではyumやaptなどといったコマンドを使えばこの依存関係の自動補完も行ってくれますが、あくまで外部のツールが補完しているのであり、DEBやRPM本体の機能でないことには注意が必要です。
さらに、インストールするアプリが要求するライブラリなどによっては、使用しているOSや、登録しているリポジトリで提供していないものがある場合が考えられます。
この場合、たとえaptやyumを用いたとしても、アプリをインストールすることができません。
さらに、DEBとRPMには互換性がなく、DEBパッケージマネージャーを採用しているOSでRPMパッケージはインストールできないし、逆にRPMパッケージマネージャーを採用しているOSでDEBパッケージはインストールできません。
一応、パッケージ形式を相互変換してくれる”alien”コマンドはあるのですが、自分が試した限りでは上手く動作しませんでした。
今回のSnapsパッケージは、そんな従来のパッケージマネージャーの欠点を解決してくれそうなシステムになっているようです。
Snapsは、最近はやりの仮想化技術である”コンテナ”のような仕組みになっており、Snapsパッケージ内にアプリとそのアプリが必要とするライブラリ群もすべて含まれているとのこと。
また、Snaps内のアプリはアップデートもロールバックも行えるようになっているようで、より柔軟な使い方ができるようになりそうです。
つまり、同じLinuxでありながら使用できるアプリが異なっていた各ディストリ上でも、Snapsをサポートしているバージョンであれば、debian系LinuxであろうとRedHat系Linuxであろうと、同じパッケージをインストールすることができるようになります。Linuxアプリ開発者は今までdeb形式とrpm形式のパッケージを準備する必要がありましたが、今後はSnapsパッケージ一つ作るだけで両方のLinuxユーザーから利用してもらえるようになります。とても画期的ですね。
現時点ですでにSnaps形式のパッケージが出回りつつあるようですが、まだ日本語化されていなかったりするパッケージも多いようで、快適に利用できるようになるまではもう少し時間がかかりそうです。