SnapとFlatpakでUbuntuアプリ管理を最適化:ITFromZeroの実践経験

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

Ubuntuでのアプリケーション管理:aptはもはや「王者」ではないのか?

IT関係者、特にUbuntuサーバーに頻繁に触れる方々にとって、ソフトウェアのインストールと管理は日常茶飯事です。長い間、apt(またはapt-getはデフォルトのツールとして非常に馴染み深く、信頼されてきました。しかし、近年、SnapとFlatpakという2つの新興勢力が台頭し、それぞれ異なるアプローチを提示しながらその地位を確立しつつあります。

従来のapt方式の長所と短所

長所:

  • システムへの深い統合: .debパッケージは最適化されており、Ubuntuと緊密に統合され、利用可能なライブラリとリソースを最大限に活用します。
  • 安定性と信頼性: Ubuntuの公式リポジトリには、通常、厳密にテストされたバージョンが含まれており、高い安定性を保証します。
  • 優れた依存関係管理: aptは依存関係のパッケージをきちんと処理し、システムが「混乱する」のを防ぎます。

短所:

  • 古いソフトウェアバージョン: 公式リポジトリのパッケージは、安定性を確保するために通常、最新バージョンではありません。より「新しい」バージョン(Node.jsDockerなど)を使用したい場合、PPA(Personal Package Archive)を追加するか、ソースコードからコンパイルする必要があることが多く、これはかなり不便です。
  • 依存関係の問題: aptは依存関係を適切に管理しますが、その依存関係自体が、異なるソースからソフトウェアをインストールする際に競合を引き起こす可能性があります。
  • 独立したパッケージ化ではない: アプリケーションは多くのシステムライブラリに依存するため、アプリケーションの移動や分離が困難になります。

SnapとFlatpak:Linuxアプリケーションの未来を担う二大巨頭

SnapとFlatpakはどちらも、特に依存関係とバージョンに関して、従来のパッケージングシステムの制限を克服するために登場しました。どちらもアプリケーションに「独立したパッケージ化」(コンテナ化された)アプローチをもたらします。

Snap: Canonicalによる「多機能」アプリケーションパッケージ

Snapは、Canonical(Ubuntuを開発している企業)によって開発されたアプリケーションパッケージング技術です。主なアイデアは、「スナップ」がアプリケーションとその必要なすべてのライブラリ、依存関係を含み、分離された環境で実行されるというものです。

長所:

  • 使いやすく一貫性がある: snapコマンドの構文は非常にシンプルで覚えやすく、SnapをサポートするすべてのLinuxディストリビューションで同様に機能します。
  • 自動更新: Snapアプリケーションは通常バックグラウンドで自動的に更新されるため、常に最新バージョンを手間なく利用できます。
  • セキュリティ (Sandboxing): 各Snapアプリケーションは独自の「サンドボックス」内で実行され、システムへのアクセス権を制限し、セキュリティを強化します
  • 多くのディストリビューションで動作: Canonicalによって開発されましたが、SnapはUbuntu専用ではなく、他の多くのLinuxディストリビューションでもうまく機能します。
  • 実践経験: Ubuntu 22.04のステージング環境では、プロダクションにデプロイする前にSnapを介して多くのソフトウェア構成をテストしていました。これにより、同じサーバー上の他のアプリケーションとのライブラリの競合を心配することなく、ツールを迅速に稼働させることができました。

短所:

  • パッケージサイズが大きい: 依存関係を完全にパッケージ化するため、Snapパッケージは従来の.debパッケージよりも大きくなる傾向があります。たとえば、FirefoxのようなアプリケーションはSnap版だと200MB以上を占めることがありますが、.deb版はより軽量です。
  • 初期起動速度: 一部のSnapアプリケーションは、初回起動時に少し時間がかかる場合があります。
  • UIの統合が不完全な場合がある: 場合によっては、Snapアプリケーションのフォントやテーマが、システムの他の部分とわずかに異なることがあります。

Flatpak: Linuxコミュニティに支持される「ユニバーサル」ソリューション

Flatpakは、コミュニティによって開発され、GNOMEとRed Hatから幅広い支持を得ている、もう一つのユニバーサルなアプリケーションパッケージング技術です。

長所:

  • ディストリビューションに依存しない: Flatpakは、Flatpakランタイムがインストールされていれば、あらゆるLinuxディストリビューションでうまく動作するように設計されています。
  • 強力なサンドボックス機能: Snapと同様に、Flatpakは強力なサンドボックスメカニズムを提供し、アプリケーションをメインシステムから分離します。
  • 大規模なコミュニティサポート: 巨大なFlathubアプリケーションストアがあり、ほとんどの人気アプリケーションを見つけることができます。
  • 最新バージョン: Flatpakは通常、非常に新しいバージョンのアプリケーションを頻繁に更新して提供します。

短所:

  • Flatpakランタイムのインストールが必要: Flatpakを実行するには、システムに基本的な「ランタイム」(GNOME Platformなど)が必要であり、これらのランタイムもかなりのディスク容量を占有します。
  • パッケージサイズが大きい: Snapと同様に、Flatpakパッケージもかなり重いです。
  • UIが最適化されていない場合がある: Flatpakアプリケーションがシステムテーマと完全に一致しない場合もあります。

適材適所:Snap、Flatpak、aptの使い分け

これは多くの仲間にとって最も「頭の痛い」質問です。何度も試行錯誤し、実際に作業する中で、いくつかの経験をまとめました。

  • aptを使用する場合:

    • 基本的なシステムツール、開発ライブラリ、またはUbuntuの公式リポジトリで最適化されているサーバーアプリケーションが必要な場合。
    • 絶対的な安定性とシステムとの最も深い統合を優先する場合。
    • アプリケーションが非常に新しいバージョンを必要とせず、または更新がそれほど緊急ではない場合。
  • Snapを使用する場合:

    • シンプルさを求め、「一発で起動」でき、自動更新を気にせずに使いたい場合。
    • 必要なアプリケーションがSnap Storeで入手可能で、開発者自身によって維持されている場合(例: Spotify, VS Code, Slack…)。
    • Ubuntuサーバーで作業しており、アプリケーションの分離と簡単なデプロイが最優先事項である場合。
  • Flatpakを使用する場合:

    • 常に最新の「ホットな」アプリケーションバージョンを使用したい場合。
    • セキュリティと強力なアプリケーション分離に特に関心がある場合。
    • 必要なアプリケーションがSnapやaptにはないが、Flathubにはある場合。
    • Ubuntu以外のLinuxディストリビューションで作業しており、一貫したエクスペリエンスを望む場合。

実際には、絶対的に「最良の」ツールというものはありません。私は通常、これら3つを組み合わせて使用しています。つまり、基盤となるパッケージにはaptを、デスクトップアプリケーションや特定の開発ツールにはSnap/Flatpakを使用します。重要なのは、自分のニーズに合わせて適切な選択をするために、長所と短所を理解することです。

実践的なデプロイメント: アプリケーションのインストール、アンインストール、更新

Snapの場合

Ubuntuでは、通常Snapはプリインストールされています。以下のコマンドで確認できます。


snap version

まだインストールされていない場合は、非常に簡単にインストールできます。


sudo apt update
sudo apt install snapd

アプリケーションの検索:


snap find <アプリケーション名>
# 例: snap find spotify

アプリケーションのインストール:


sudo snap install <アプリケーション名>
# 例: sudo snap install spotify

アプリケーションの更新: Snapは自動的に更新されますが、手動でトリガーすることもできます。


sudo snap refresh
# 特定のアプリケーションを更新するには:
sudo snap refresh <アプリケーション名>

アプリケーションのアンインストール:


sudo snap remove <アプリケーション名>
# 例: sudo snap remove spotify

バージョン (リビジョン) 管理: Snapはアプリケーションの古いバージョンを保持します。必要に応じてリスト表示し、古いバージョンに戻すことができます。


snap list --all
sudo snap revert <アプリケーション名> --revision <リビジョン番号>

Flatpakの場合

FlatpakはUbuntuにはデフォルトでインストールされていませんが、追加するのは簡単です。


sudo apt update
sudo apt install flatpak

Flathubリポジトリの追加: これは最大かつ最も重要なFlatpakアプリケーションリポジトリです。Flatpakをインストールしたらすぐにこれ追加すべきです。


sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

システムの再起動: Flatpakをインストールし、Flathubを追加した後、すべてが正しく認識されるように、私は通常マシンを再起動します。


sudo reboot

アプリケーションの検索:


flatpak search <アプリケーション名>
# 例: flatpak search kdenlive

アプリケーションのインストール: アプリケーションIDが必要です。これは通常、searchコマンドまたはFlathubのウェブサイトから取得できます。


sudo flatpak install flathub <アプリID>
# 例: sudo flatpak install flathub org.kde.kdenlive

アプリケーションの更新:


sudo flatpak update

アプリケーションのアンインストール:


sudo flatpak uninstall <アプリID>
# 例: sudo flatpak uninstall org.kde.kdenlive

不要なランタイムとデータの削除: ディスク容量を解放するのに役立ちます。


sudo flatpak uninstall --unused

まとめ

今日のUbuntuでのアプリケーション管理は、従来のaptの枠を超えています。SnapとFlatpakは多くの新しい選択肢を提供し、最新のソフトウェアに簡単にアクセスし、セキュリティを強化し、競合を減らすのに役立ちます。この長所と短所、および実践経験に関する共有が、あなたのシステムでアプリケーションを選択し管理する際に、より自信を持つのに役立つことを願っています。恐れずに試してみてください。それがあなたにとって最適な「レシピ」を見つける最良の方法です!

Share: