AppImage

AppImageはLinuxにおいてポータブルアプリケーションを配布するためのフォーマットである。どのLinuxディストリビューションでも実行ファイルをインストールできることを目的としており、そのコンセプトはしばしばアップストリーム パッケージングと称される。同じ一つのAppImageをUbuntu、Arch Linux、Red Hat Enterprise Linuxでインストールし、実行することが可能である。自己充足的で、root権限を要せず、ディストリビューションから独立したフォーマットである。 kilkとして2004年にリリースされて以来、継続的に開発が進められ、2011年にPortableLinuxAppsに改称、2013年にAppImageに改称された。バージョン2は2016年にリリースされている。 AppImageの前身であるklikは、2004年にSimon Peterによって開発された。 クライエントサイドのソフトウェアのラインセスはGNU GPLである。 klikはユーザー側のウェブブラウザと統合して機能する。ユーザーはklik://から始まるURLを使ってソフトウェアをダウンロード、インストールする。これによってkilkの「レシピ」ファイルをダウンロードする。このレシピファイルは拡張子が.cmgのファイルを作成するのに使われる。主な材料としては、安定版Debianのレポジトリ内にあるビルド済みの.debパッケージがレシピの生成プロセスに用いられる。これにより、一つのレシピを使って異なるプラットフォームにパッケージを配布することができる。klikでは、FUSEを用いない場合、同時に8個のプログラムまでしか実行することができなかった。これはLinuxカーネルのマウントできる圧縮イメージ数の制限によるものである。ファイルはプログラムが実行されるたびに再マウントされるため、ユーザーはファイルを削除するだけでプログラムを完全に削除することができる。次のバージョンであるklik2はFUSEを取り込む予定であったが、ベータバージョンは完成していない。 2011年頃、klikプロジェクトは休止状態となり、ウェブサイトは非公開となった。 この時期、Simon Peterは後継となるPortableLinuxAppsのプロジェクトを開始した。これは数百のオープンソースのコンピュータゲームを配布する「portablelinuxgames.org」などのサイトで採用された。 2013年頃、portableLinuxAppsはAppImageに改称され、ライセンスはMIT licenseに変更された。 AppImageはフォーマットで、 AppImageKitはそのオープンソース実装である。GitHub上のレポジトリで開発されている。 2016年、AppImageのバージョン2の仕様書が起草された。バージョン2はファイルシステムの制限が無い (草案の実装ではSquashFSを用いている)。ファイルシステムの開始地点を示す固定オフセットを廃止したため、 デジタル署名をAppImage内に直接埋め込むことが可能になっている。 AppImageはアプリケーション配布システムとして、次の目標を掲げている。シンプルさ、バイナリ互換性、ポータビリティ、ディストリビューションを考慮せずに実行できること、インストール不要、root権限不要、実行される オペレーティングシステムに干渉しないこと。 このため、AppImageは実行ファイルを様々な場所に配置する必要はない。そうではなく、AppImageのファイルはそれ自体が一つのファイルシステムである。実行時、ファイルはFUSEによってマウントされる。AppImageは、従来からあるDebやRPMよりも簡単に使えるようにデザインされているため、オペレーティングシステムや環境の設定を変更する必要がない。 それぞれのファイルは自己充足的であり、実行されるシステム上にない依存ライブラリはすべて含まれている。バージョン1.0のAppImageはISO 9660 Rock Ridge のファイルであり(zisofsで圧縮することも可能) 、小さいAppDirと ランタイムライブラリを含んでいる。 AppImageはデジタル署名を埋め込むことが可能であり、これは外部で認証する必要がある。 実行するために署名を認証しなければならない訳ではなく、署名を含むことができるだけである。 AppImageはサンドボックス化はしないが、 他のアプリケーションを用いてサンドボックス化することはできる。 2007年に開始されたAlexander Larssonのglickプロジェクト(Flatpakの前身)は、Kilkから着想を得た。 2015年、 Linux kernelの開発者であるリーナス・トーバルズは「これはとても素晴らしい。ようやくAppImageバージョンのSubsurfaceに取り組み始めたが、これは本当に「ちゃんと動く」ようだ。」と述べた。 マーク・シャトルワース は「AppImageはとても見事だ。開発者の努力に敬意を表したい」と述べた。 Autopackage（英語版） – Linuxのパッケージ管理システム List of software package management systems（英語版） List of portable application creators（英語版） ROX Desktop（英語版）– X Window System上で動作するデスクトップ環境 Snap (ソフトウェア) Zero Install ^ Mobily (2006年4月7日). “Free Software Magazine interview with Simon Peter”. Free Software Magazine. 2007年3月30日時点のオリジナルよりアーカイブ。2007年5月5日閲覧。 ^ “Slashdot - Point-and-klik Linux Software Installation?”. slashdot.com (15 January 2005). Template:Cite webの呼び出しエラー：引数 accessdate は必須です。 ^ “klik - Linux Software Download”. 2007年6月26日時点のオリジナルよりアーカイブ。 Template:Cite webの呼び出しエラー：引数 accessdate は必須です。 ^ Peter (2010年). “AppImageKit Documentation 1.0”. PortableLinuxApps.org. pp. 2–3. 2010年11月29日時点のオリジナルよりアーカイブ。2011年7月29日閲覧。 ^ “Portable Games for Linux”. Template:Cite webの呼び出しエラー：引数 accessdate は必須です。 ^ “AppImageKit”. github.com (19 November 2021). Template:Cite webの呼び出しエラー：引数 accessdate は必須です。 ^ “AppImage/AppImageSpec”. GitHub (18 November 2021). Template:Cite webの呼び出しエラー：引数 accessdate は必須です。 ^ “The future of AppImage: Type 2 and new tools”. AppImage (September 15, 2016). Template:Cite webの呼び出しエラー：引数 accessdate は必須です。 ^ Peter. “AppImageKit Documentation”. 2010年11月29日時点のオリジナルよりアーカイブ。2011年8月3日閲覧。 ^ “Signing AppImages — AppImage documentation”. docs.appimage.org. 2019年10月29日時点のオリジナルよりアーカイブ。2019年10月29日閲覧。 ^ Peter (2020年9月20日). “AppImage Mythbusting” (PDF). GitHub. p. 17. 2024年1月18日閲覧。 ^ “Experiments with runtime-less app-bundles – Alexander Larsson” (英語) (2007年8月7日). 2024年1月18日閲覧。 ^ Torvalds (2016年2月5日). “This is just very cool. I finally got around to play with the "AppImage"…”. Google Plus. 2016年2月5日時点のオリジナルよりアーカイブ。2024年1月18日閲覧。 ^ Shuttleworth (2017年4月9日). “I would like to thank all of you for your spirit and intellect and energy in ...”. Google Plus. 2017年4月9日時点のオリジナルよりアーカイブ。2024年1月18日閲覧。 公式ウェブサイト AppImages for various applications by the AppImage developer Easily Run And Integrate AppImage Files With AppImageLauncher