TOC
マルチディストリビューションアプリ配布プラットフォームAppImage
LinuxにおいてUbuntu/Debian/Fedoraといったディストリビューションを選ばないアプリケーションの配布方法としてAppImageという形式があります。依存するライブラリを含めたファイル一式をパッケージとして扱うことで、パッケージ一つでLinuxディストリビューションを選ばずにアプリケーションを配布するものの仕組みのうちの1つです。
Snapとの違い
同じようなアプローチとしてSnapが最近では広く使われるようになりました。SnapとAppImageの違いは以下の様になります。
Snapの特徴
- Canonicalが作成した。割と新しい。Ubuntu 16.04以降でデフォルトインストールされる。採用ディストリビューションは拡大中
- 公式でアプリストア( Install Linux apps using the Snap Store | Snapcraft )があり、デスクトップアプリもある。基本的にはアプリかコマンドでインストールする運用
- ホストリソースを使用する場合はAppArmorで制御する
AppImageの特徴
- 結構昔からあり、snapと違って動作にsnapdのようなdaemonを必要としない
- そのため、動作するディストリビューションを選ばない
- 公式でアプリストアのようなものは準備されておらず、ファイルを見つけてダウンロードする。カタログとしては辞書順にアプリが並んでいる公式ページはある apps – AppImageHub
1ファイルで1アプリを配布し、実行時に展開するという考え方はWindowsでのexeのポータブル版とほぼ同じであり、そういった意味ではAppImageアプリは簡単に実行が可能です。
(基本的に)デスクトップに統合されない
AppImageで配布されるアプリはファイルを直接実行し、終了すると元に戻るため、ディストリビューションネイティブのdeb/rpmパッケージやsnapパッケージと比較してインストール作業がないことから、MATE等のデスクトップ環境に統合されません。
これはメリットでもあるのですが、普段使う環境が同じ場合にメニューから選択するのではなく実行ファイルを置く場所を確保する必要があります。手動でメニュー登録をすることも可能ですが、ファイルの格納場所もユーザーが管理する必要があります。
初めて使うアプリの場合、ダウンロードディレクトリにダウンロードしたファイルをお試しで実行する場合がほとんどだと思うので、使い終わった後にファイルをどこかに退避して管理しないと、後からダウンロードしたファイルに埋もれて…ということも考えられます。
AppImageアプリのデスクトップ統合お助けソフト”AppImageLauncher”
そこで登場するのがAppImageLauncherで、これを使うことでAppImageアプリのデスクトップ統合を容易にします。
AppImageLauncherがやってくれること
AppImageアプリのファイルの実行を監視して、デスクトップ環境のメニューにショートカット追加、ファイルの移動、アンインストーラの追加をします。
ちょうどWindowsのScoopと似た動作1と考えていいと思います。
SyncthingとReadyNASで無理矢理構築したオレオレBucketでScoopを使ったWindowsの開発環境整備
ダウンロード・インストール
AppImageLauncherの配布方法はdebパッケージ・rpmパッケージ・ソースファイルとなっています。今回はUbuntu MATE 20.04でオフィシャルPPAを追加してapt経由のdebパッケージで動作確認を行いました。
PPAを追加
# add-apt-repository ppa:appimagelauncher-team/stable
# apt-get update
Ubuntuの場合、add-apt-repository
コマンドが正常終了すると最後にapt-get update
が実行されるので、2行目は省略可能です。
パッケージ確認
# apt-cache policy appimagelauncher
appimagelauncher:
インストールされているバージョン: (なし)
候補: 202004252016-stable-7408819~ubuntu20.04.1
バージョンテーブル:
202004252016-stable-7408819~ubuntu20.04.1 990
990 http://ppa.launchpad.net/appimagelauncher-team/stable/ubuntu focal/main amd64 Packages
インストール
# apt-get install appimagelauncher
設定を確認
AppImageLauncherはインストール完了時からバックグラウンドで動作します。メニューには設定アプリが登録されるので確認します。
設定メニューに「AppImageLauncher Settings」が登録されます。
「AppImageLauncher」タブではAppImageファイルを管理用ディレクトリに移動するか、管理用ディレクトリとしてどこを使うかを設定します。
「appimagelauncherd」タブでは、監視daemonをOS起動時に自動的に設定するかどうか、監視ディレクトリを追加するかどうかを設定します。
おもむろに実行
準備が終わったので、今回はStaitonという各種webサービスのショートカットブラウザとでも言うべきアプリを例にとります。
Linux用を~/Download
へダウンロードして以下のコマンドで実行します。
$ cd ~/Download
$ chmod +x Station-1.65.0-x86_64.AppImage
$ ./Station-1.65.0-x86_64.AppImage
すると、ポップアップメニューが表示されます。
これでそのままOKボタンを押すと、確認ダイアログが表示されるので、今回はIntegrate and runを押します。
ファイルの移動とメニューへの登録が終わった後にStationが起動します。
動作の確認
AppImageLauncherの動作を確認します。まずはAppImageファイルの管理ディレクトリへの移動。
$ ls ~/Applications/
Station-1.65.0-x86_64_3d3572ff64e5a80f83aa2b209e10e163.AppImage
移動されているのと、ファイル名にハッシュと思われる文字列が追加されています。
続いてメニュー。
インターネットの下にStationがバージョン番号付きで登録されているのがわかります。バージョン付きで登録されるのは手元で試した限りではStationのみです。
また、このメニューは右クリックでアンインストールも選べるメニューとして登録されていることもわかります。
まとめ
AppImageLauncherは元々AppImageが公式配布している同じ役割のappimagedが~/Downloadと~/binを監視しており、関係ないファイルの監視をすることで効率的ではなかったとサイトに記載がありました。
AppImageで配布されているアプリケーションはWindows、macOSと合わせてLinux版も配布されているものが多く、これまで使った中ではLosslessCutはLinux版がAppImageによる配布をしていました。また、有名どころとしてはLibreOfficeが環境を壊さない独立した別バージョンとしてAppImage版を提供しています。
今回LosslessCutを改めて確認してみたところ、Linux版は基本的にはsnapでの配布に変更されており、それ以外の手段としてAppImageで配布されています。そうした移り変わりも感じながらもsnapではない環境でシングルバイナリ配布としてAppImageが使われる場面もまだ多いので、AppImageLauncherを使ってみてはいかがでしょうか。
スポンサーリンク
- 特にポータブルアプリに対するScoopの動作 [return]
comments powered by Disqus