LinuxのFlatpakとは何ですか?インストール方法は?

Flatpakは、Linuxアプリケーションをインストールするための、ディストリビューションに依存しない便利な方法です。アプリケーションのサンドボックス化と依存関係のバンドル化により、依存関係の地獄を回避できます。ほとんどのディストリビューションはFlatpakをサポートしていますが、Ubuntuでは最初にFlatpakフレームワークをインストールする必要があります。

Flatpakは、Linuxコンピューターにアプリケーションをインストールするための、ディストリビューションに依存しない方法です。しかし、お使いのディストリビューションにすでにアプリケーションをインストールするネイティブな方法がある場合、なぜFlatpakを使用する必要があるのでしょうか?

Flatpakとは何ですか?

Flatpakは、どのLinuxディストリビューションでもアプリケーションを簡単かつ確実にインストールするために使用されるパッケージ形式の名前です。AppImageやSnapと同様に、Flatpakコンテナには必要な依存関係がすべて含まれており、Flatpakとしてインストールされたアプリは自動で更新することもできます。それらは次の場所にあります。

パッケージ管理の聖杯

すべてのLinuxディストリビューションには、アプリケーションをインストールする方法が必要です。そのため、Debianのapt、Fedoraのdnf、Archのpacmanなどのツールが存在します。必要に応じて、すべてがわずかに異なる方法で同じことを行います。

これらは、リポジトリから特別にラップされたパッケージをプルバックすることで、ユーザーがソフトウェアパッケージをインストールできるようにします。パッケージのラップには、パッケージを構成するファイル(実行ファイル、データファイル、マニュアルページなど)をLinuxファイルシステムのさまざまな場所にコピーする方法と、それらに適用する必要があるパーミッションに関する情報が含まれています。

開発者の観点からすると、アプリケーションのバージョンを各パッケージマネージャー形式でラップしてリリースすることは大きな作業です。上位3つまたは4つの形式のみをサポートすることにした場合でも、開発の負担とかなりのサポートのオーバーヘッドが残る可能性があります。

開発者は、一連のパッケージ形式の複雑さと格闘するよりも、自分のコードに取り組むことをはるかに好みます。ユニバーサルインストール形式があればどれだけ良いでしょうか。開発者はアプリケーションを一度パッケージ化すれば、どのディストリビューションのユーザーでも使用できます。

私たちがその聖杯に最も近づいたのは、ラップされたアプリケーションの正反対であるソースコードでした。ソースコードをダウンロードしてアプリケーションの他のコンポーネントをダウンロードし、独自のコンピューターでビルドすることを意味します。これは方法として機能しますが、高速でも特に便利でもなく、何をしているのかを知る必要があります。そのため、Linuxの世界に参入したばかりのほとんどの人にとっては手の届かないものになっています。

Flatpakは、ユニバーサルパッケージ形式を作成しようとする試みです。AppImageとSnapは、同じ目標を持つ競合プロジェクトです。Flatpakは、開発者が複数のパッケージ形式をサポートする負担を軽減する以上のことを行います。これらにはアプリケーションとそのすべての依存関係が含まれているため、たとえばライブラリが不足している、または一致していないためにアプリケーションが実行に失敗することはありません。Flatpakとしてインストールされたアプリケーションは、自動的に更新されます。

さらに、Flatpakアプリケーションは一種のミニコンテナで実行され、他のアプリケーション(同じアプリケーションの他のバージョンを含む)からサンドボックス化されています。依存関係が互いに干渉することなく、単一のアプリケーションの複数のリリースをインストールできます。これにより、開発者はより簡単に、ユーザーはよりスムーズに操作できます。

UbuntuにFlatpakサポートをインストールする

Canonical(Ubuntuの背後にある会社)は、ユーザーをユニバーサルインストーラーの独自のバージョンであるSnapに誘導することに熱心です。そのため、Ubuntu 23.04 Lunar LobsterではFlatpakの標準サポートが削除され、Kubuntu、Lubuntu、Ubuntu Studioなどの代替Ubuntuフレーバーと、Flatpakサポートも削除することに同意しました。

もちろん、Linuxは本質的に、FlatpakサポートをUbuntuに直接インストールできます。FlatpakはManjaroとFedoraで標準でサポートされているため、これらのディストリビューションのいずれかを使用している場合は、次のセクションにスキップできます。

UbuntuにFlatpakをインストールするには、次のように入力します。

sudo apt install flatpak

Ubuntu SoftwareアプリケーションでFlatpakをインストールできるGNOMEプラグインがあります。しかし、落とし穴があります。Ubuntu 20.04以降、Softwareアプリケーション自体がSnapであるため、Flatpakプラグインとうまく連携しません。プラグインをインストールすることはできますが、DEBベースの別のバージョンのSoftwareアプリケーションが取り込まれます。そのため、2つのバージョンのソフトウェアアプリケーションが最終的に存在することになります。

コマンドラインでFlatpakを操作する場合はプラグインは必要なく、Flatpakコマンドラインは非常にシンプルです。それでも、プラグインが必要な場合は、必要なコマンドは次のとおりです。

sudo apt install gnome-software-plugin-flatpak

FlatpakシステムにFlatpakパッケージの検索場所を伝える必要があります。このコマンドを使用してFlathubリポジトリを追加できます。

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

コンピューターを再起動すると、Flatpakが正しくインストールされ、バージョン番号を確認することで応答していることを確認できます。

flatpak --version

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

必要なパッケージのFlatpak名を知っていれば、アプリケーションのインストールは簡単です。これを知るには2つの方法があります。

1つは、FlathubのWebサイトでパッケージを検索することです。例としてDiscordを使用してみましょう。

見つけたら、ページの一番下までスクロールします。アプリケーションをインストールするために必要なコマンドが表示されます。

これは、アプリケーションの3つの部分からなるFlatpak名を使用しています。コマンドに「flathub」を含める必要はないことに注意してください(すでにFlathubリポジトリをシステムに追加しているため)。ただし、パッケージ名の3つの部分すべてを使用する必要があります。

コマンドラインで検索することもできます。Discordに関連するパッケージを検索するには、このコマンドを使用します。

flatpak search discord

検索語を含むすべてのパッケージのリストが表示されます。テーブルエントリが切り捨てられないように、ターミナルウィンドウを通常よりも幅広に広げて実行することをお勧めします。

これでパッケージ名がわかったため、インストールするコマンドを発行できます。

flatpak install com.discordapp.Discord

Flatpakと一緒に依存関係やその他の要件がすべてインストールされます。進行状況バーに、インストールの完了までの近さが表示されます。

インストールが完了すると、コマンドラインプロンプトに戻ります。これで、新しいアプリケーションを実行できるようになりました。

Flatpakアプリケーションの実行

アプリケーションを実行するコマンドは、インストールコマンドと同じで、「install」という単語が「run」に置き換えられています。

flatpak run com.discordapp.Discord

アプリケーションが起動し、Discordは通常のアップグレードチェックを実行します。

しばらくすると、デスクトップにDiscordアプリケーションが開きます。

GNOMEでは、アプリケーションを起動すると、そのアイコンがダッシュボードに表示されます。アイコンを右クリックすると、メニューが表示されます。ダッシュボードにランチャーを作成するには、「ダッシュにピン留め」を選択します。

今後、ここからアプリケーションを起動できるようになります。

インストールされたFlatpakアプリケーションをリストする

Flatpakでインストールしたアプリケーションを確認するには、listオプションを使用します。また、--appオプションを使用しているため、インストールしたアプリケーションのみがリストされます。

flatpak list --app

--appオプションを使用しないと、すべてのFlatpakフレームワークモジュールと依存関係もリストされます。

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

アプリケーションのアンインストールは、アプリケーションの実行と同じくらい簡単です。flatpakコマンドで「uninstall」という単語を使用するだけです。

flatpak uninstall com.discordapp.Discord

アプリケーションがシステムから削除され、確認メッセージが表示されます。

Flatpakを使用すべきか?

アプリケーションのサンドボックス化と、アプリケーションが確実に実行されるという実用的な保証は、Flatpakの魅力的な特徴です。ただし、Flatpakにはアプリケーションに必要なすべての依存関係が含まれているため、フットプリントが大きくなります。アプリケーションの起動時間もわずかに増加します。

Flatpakを使用するか、Linuxに付属のネイティブパッケージマネージャーを使用するかは、探しているアプリケーションがディストリビューションのリポジトリにあるかどうかによって決まる場合があります。

Flatpakのみを使用している人を見たことがありません。AppImageやSnapを使用している人も同様です。おそらく、デフォルトのパッケージマネージャー、Flatpak、Snap、またはAppimageなど、自分に合った組み合わせを選択するでしょう。

特定のアプリケーションがディストリビューションのリポジトリになく、ソースからビルドしたくない場合は、Flatpakが最良の選択肢です。AppImageやSnapよりもはるかに高速だと思います。