apt と snap
概要 | 23.10 時点でのパッケージマネージャー関連のまとめ. |
---|---|
検証環境 | ubuntu 23.10 |
apt と snap のどちらかを使う
-
基本的に apt コマンドを使う.
- 過去には apt-get とか aptitude とか いろいろあったが現在は apt に集約されているため忘れてよい(2014年 Debian 8 (Jessie), ubuntu 14.04 以降).
- ローカルにもってる *.deb ファイルを直接インストールする場合も apt を使う(apt が dpkg の機能を包含している).
-
自己完結型のコンテナー化された新しいパッケージ形式として snap が追加されている.
- snap にしかないパッケージ(例 pinta)や snap にしかない最新バージョンの方を使ってみたい場合には snap を使う.
1 | $ sudo apt install vim |
2 | $ sudo snap install pinta |
3 | $ sudo apt install -y code_1.86.1-1707298119_amd64.deb |
パッケージ管理システム
パッケージ管理システムには OS が提供する共有ライブラリーを共用する従来型のもの(apt,yum など)と パッケージ内に必要なライブラリー等を同梱することで依存関係をなくした自己完結型のもの(snap,flatpack など)がある. 後者のパッケージ間の依存関係をもたないものをユニバーサル パッケージと呼んでいる.
従来 | apt |
Debian ubuntu |
|
yum | Red Hat 系 | ||
pacman | Arch Linux | ||
新 | snap | 汎用 | Canonical提唱の新しいパッケージマネージャー. ubuntu 16.04 から導入. |
flatpack | 汎用 | ||
AppImage | 汎用 |
snap
自己完結型のコンテナー化されたパッケージ形式.
簡単にいえば必要なライブラリーなどをパッケージ内にとりこんでパッケージ間の依存関係をなくしたもの. 依存関係がなくなったことにより下記のような利点がある.
-
アプリの新しいバージョンを任意のタイミングで利用できるようになった.
-
従来型のパッケージ管理システムでは依存関係のせいでソフトウェアの配布が遅れがちだった.
- アプリの新しいバージョンがリリースされても OS が必要なライブラリーを提供してくれないため,次の OS リリースを待ったりしないといけなかった.
- 特に Web ブラウザーなど GUI の巨大アプリは依存するパッケージが多いため,必要なライブラリーが足並みをそろえるのはたいへんだった.
-
従来型のパッケージ管理システムでは依存関係のせいでソフトウェアの配布が遅れがちだった.
- ディストリビューションごとにパッケージを作りなおす必要がなくなった.
- 複数のバージョンを同一の環境に混載することができるようになった.
- 管理者(sudoers)でなくても自分専用にアプリをインストールできるようになった.
なんだけど,いつでも snap がいいのかというとそうでもない.
-
パッケージサイズがとにかくデカイ.
- 必要なライブラリーをすべて取りこんでいるためムダに肥大化する.
-
OS 側の GUI との統合がうまくいっていなかったりする.
- 例えば ubuntu 23.10 と Visual Studio Code の snap 版の組みあわせだと IM 経由での日本語入力ができない(別のテキストエディターに書いた日本語テキストをコピー&ペーストすることはできる).
そのため通常はディストリビューターによる検証が行われている apt 版を使うのがよく(特に ubuntu の場合はたいてい十分に新しい版が利用できる) snap にしかないアプリ(例 pinta)や snap にしかない最新版を使いたい(例 GIMP 3 のプレビュー版 2.99)という場合に限り snap を使うのがよい.
Links
- Debian 管理者ハンドブック - 6.2. aptitude, apt-get, apt コマンド
- もうひとつのパッケージシステム「Snap」を使いこなす (2023-12-23)
- Snap vs APT: What's the Difference? (2021-01-21)
- スナップとAPTの違いは何ですか?
- Snap Store