LinuxでAppImageを使用する方法

AppImageを使用すると、Linux開発者は、どのLinuxディストリビューションでもインストールされる単一のファイルにアプリケーションをラップできます。これにより、作業が大幅に簡素化されます。AppImageを使用し、デスクトップに統合する方法を説明します。

Linuxにソフトウェアをインストールする

ソフトウェアのインストールは、簡単で便利であるべきです。どれだけ簡単で便利になるかは、主にディストリビューションのパッケージマネージャーによって決まります。パッケージマネージャーは、他のLinuxプログラムをダウンロードしてインストールできるソフトウェアアプリケーションです。

派生Linuxディストリビューションは、親ディストリビューションのパッケージマネージャーを使用する傾向があります。たとえば、Debianの多くのバリエーションや派生製品では

<code>apt</code>

、RedHatおよびFedoraディストリビューションでは

<code>dnf</code>

、Archディストリビューションファミリーでは

<code>pacman</code>

を使用します。ありがたいことに、ディストリビューションの数ほどパッケージマネージャーはありません。

それでも、開発者の視点から見ると、さまざまなパッケージ形式をすべてサポートするということは、アプリケーションをDebianファミリー向けにはDEBファイルに、RedHatファミリー向けにはRPMにラップする必要があることを意味します。これは、追加のオーバーヘッドが多数あります。

また、開発者または他の誰かがディストリビューション用のインストールパッケージを作成していない場合、そのソフトウェアをインストールできないことを意味します。少なくとも、ネイティブにはインストールできません。

別のディストリビューションのパッケージを無理やりコンピューターに押し込むことはできるかもしれませんが、それはリスクのない方法ではなく、確実に機能する保証もありません。自分が何をしているのかわかっている場合は、ソースコードをダウンロードしてコンピューターにアプリケーションをビルドできますが、それは簡単で便利であるとはほど遠いでしょう。

SnapやFlatpakなどのプロジェクトは、各ディストリビューション用にアプリケーションをラップするという問題を克服するために設計されました。パッケージを単一のファイルにラップして、適切なライブラリやその他の依存関係がバンドルされて、ホストオペレーティングシステムに(事実上)要求がないようにすることができれば、どのディストリビューションでも実行できるはずです。

AppImageプロジェクトは、まさにそのような取り組みです。AppImageはプロジェクトの名前であり、AppImageはラップされたアプリケーションの名前です。

AppImageの仕組み

AppImageファイルは、従来の意味ではインストールされません。アプリケーションパッケージを構成するコンポーネントファイルはすべて、単一のファイルに格納されています。それらは、ファイルシステム内のさまざまなディレクトリに解凍されて格納されません。

パッケージマネージャーによってインストールされたアプリケーションの実行可能ファイルは適切な「/bin」ディレクトリにコピーされ、

<code>man</code>

ページは「/usr/share/man」ディレクトリに格納されます。AppImageでは、そのような解凍とコピーの手順は行われません。

通常はsquashFSファイルシステムである、AppImage内にファイルシステムがあります。アプリケーションの実行に必要なファイルは、このファイルシステム内に格納され、Linuxインストールのメインファイルシステムには格納されません。AppImageが実行されると、内部のヘルパープログラムの1つが起動され、squashFSファイルシステムが「/tmp/mount」にマウントされます。これにより、メインファイルシステムからアクセスできるようになります。その後、アプリケーション自体が起動されます。

これが、Snap、Flatpak、AppImageからアプリケーションを起動する方が、通常のアプリケーションを実行するよりもわずかに遅い理由です。これらすべてを機能させるには、ホストファイルシステムに「ユーザー空間のファイルシステム」と呼ばれるものがインストールされている必要があります。これが、AppImageがホストに課す唯一の依存関係です。FUSEは通常、最新のLinuxディストリビューションにプリインストールされています。

AppImageファイルを使用する

最初に必要なのは、目的のアプリケーションのAppImageをダウンロードすることです。これらは、ディストリビューションのリポジトリにはありません。通常、アプリケーション自体のWebサイトで見つけることができます。

オープンソースの3Dコンピューター支援設計パッケージであるFreeCADをダウンロードして使用します。FreeCADのダウンロードページに移動し、「64ビットAppImage」ボタンをクリックします。

ダウンロードが完了したら、ターミナルウィンドウでファイルを見つけます。Webブラウザーのデフォルトを変更していない限り、おそらく「ダウンロード」ディレクトリにあるでしょう。AppImageを実行可能にする必要があります。chmodコマンドを使用して、

<code>-x</code>

(実行可能)権限を追加します。

chmod +x FreeCAD-0.20.0-Linux-x86_64.AppImage

ファイルをダウンロードして実行可能にしました。それを実行するには、名前で呼び出すことができます。

./FreeCAD-0.20.0-Linux-x86_64.AppImage

FedoraとManjaroでは、これだけです。Ubuntu 22.04では、ライブラリファイルをインストールする必要がありました。FUSEはすでにUbuntu 22.04にインストールされていますが、これはAppImageの大多数で使用されているものよりも新しいバージョンです。ライブラリファイルをインストールしても、インストールされているバージョンのFUSEには影響しません。

sudo apt install libfuse2

これですぐに問題が解決し、Ubuntu Jammy Jellyfish 22.04で問題なくAppImageを起動することができました。

ここまでは順調です。でも、欲張って全部手に入れたい場合はどうでしょうか?ターミナルウィンドウから起動しなくてもAppImageを使用する方法があったらどうでしょうか。通常のネイティブアプリケーションのようにAppImageアプリケーションを起動できると、はるかに便利です。

ここには明らかな矛盾があります。AppImageの利点は、従来の意味ではインストールされず、デスクトップに統合されないことです。しかし、AppImageLauncherを使用すれば、それでも可能です。

AppImageLauncher

AppImageLauncherは、指定されたディレクトリを監視します。このディレクトリをスキャンして、AppImageファイルを探します。見つかったファイルごとに、アプリケーションアイコン(ある場合)を抽出し、通常のアプリケーションのようにAppImageをデスクトップに統合します。

ディレクトリに追加された新しいAppImageごとに、この操作が繰り返されます。AppImageが削除されたことを検出すると、統合が解除されます。つまり、ダウンロードしたAppImageファイルを監視対象のディレクトリにドロップするだけで、デスクトップ環境に統合されるのです。

UbuntuまたはFedoraを使用している場合は、AppImageLauncherのダウンロードページに移動し、「リリースビルド(最新)」セクションの「アセット」リンクをクリックします。

Fedoraの場合は「appimagelauncher-XXX.x86_64.rpm」リンクをクリックし、Ubuntuの場合は「appimagelauncher_XXX.bionic_arm64.deb」ファイルをクリックします。「XXX」はソフトウェアのバージョン番号を表します。

AppImageLauncherLiteとAppImageLauncherのリンクがあることに注意してください。AppImageLauncherのリンクを使用してください。

ダウンロードしたファイルに移動し、ダブルクリックしてインストールを開始します。GNOMEでは、これにより「ソフトウェア」アプリケーションが起動します。

Manjaroでは、次のコマンドでAppImageLauncherをインストールできます。

sudo pacman -S appimagelauncher

「Super」キーを押してAppImageLauncherを起動できます。ほとんどのキーボードでは、左の「Ctrl」キーと「Alt」キーの間にあります。検索バーに「appim」と入力します。

AppImageLauncherのアイコンが表示されます。クリックしてアプリケーションを起動します。

少しだけ設定が必要です。AppImageLauncherに監視対象のディレクトリを伝える必要があります。「フォルダー」アイコンをクリックして、通常AppImageを保存するディレクトリを参照します。私たちは「Downloads」ディレクトリを選択しました。必要に応じてサブディレクトリを選択することもできます(おそらく「/Downloads/apps」)。

AppImageLauncherに、他のディレクトリにあるAppImageを監視対象のディレクトリに移動するか尋ねさせる場合は、「AppImageファイルをアプリケーションディレクトリに移動するか尋ねる」チェックボックスが選択されていることを確認します。しかし、AppImageLauncherが1つのディレクトリのみを監視している場合、他の場所にあるAppImageをどのように見つけるのでしょうか?

その答えは「appimagelauncherd」タブにあります。「appimagelauncherd」タブをクリックすると、AppImageが複数のディレクトリを監視できることがわかります。

緑色の「プラス」アイコンをクリックして、ディレクトリを追加します。「自動統合デーモンの自動起動」チェックボックスが選択されていることを確認します。選択したら「OK」ボタンをクリックします。

数分待ってから、「Super」キーを押して、監視対象のディレクトリにあるAppImageの名前の最初の部分を入力します。私たちの例では、1つしかありません。

「free」と入力するとすぐに、FreeCADのアイコンが表示されます。クリックするとアプリケーションが起動します。AppImageファイルにアイコンが含まれていない場合は、汎用の歯車アイコンが使用されます。これはFreeCADの場合です。

さらにテストするために、SubsurfaceアプリケーションのAppImageファイルをダウンロードしました。発見されて統合されるまで約30秒待ってから、「Super」キーを押し、「sub」と入力すると、アプリケーションアイコンが表示されました。今回は、アプリケーションの実際のアイコンが見つかって使用されました。

アイコンをクリックするとアプリケーションが起動します。AppImageを実行可能にするためにchmodを使用する必要すらありません。

もう1つの便利な機能は、アイコンを右クリックすると、コンテキストメニューからAppImageを削除できることです。

アイコンをランチャーにピン留めするオプションもあり、AppImageの使用をネイティブアプリケーションと同じくらい便利にします。

AppImageが台頭

テストマシンでは、AppImageから起動されたアプリケーションはFlatpakアプリケーションよりもわずかに高速にロードされ、Snapアプリケーションよりもはるかに高速にロードされました。AppImageにはインストールする必要がある基盤となるフレームワークがないため、アプリケーション自体に必要なスペースを除けば、AppImageを使用することによるハードドライブのフットプリントはゼロです。

オプションのAppImageLauncherアプリケーションは、いくつかの洗練された機能を追加しますが、それを使用せずにAppImageを快適に使用できます。

AppImageを提供するアプリケーションは増えています。ディストリビューションのリポジトリにないものをインストールしようとしている場合は、アプリケーションのWebサイトを確認してください。AppImageがあるかもしれません。