回答:
GNUツールチェーンを使用するほとんどのアプリケーションは、次のようなソースから構築できます。
./configure --prefix=[directory which will contain your 'portable' application]
make
make install
互換性のあるライブラリを備えた別のコンピューターに移動しました。
Linuxにはレジストリがありません。通常、多くのアプリケーションは「インストール」する必要がなく、代わりにソースからビルドすることができます。
この質問の一番上の答えを見ると、ライセンス管理を備えたレジストリおよびプロプライエタリアプリケーションの世界で、アプリケーションを「ポータブル」「有用」にするという愚かな概念を理解できます。
この./configure
トリックは一部のアプリケーションで機能します。ただし、多くのアプリケーションはプレフィックスをそれ自体にエンコードし、実行時にそれを使用してサポートファイルを見つけます。また、共有ライブラリファイルを読み込む機能も必要です(ただし、LD_LIBRARY_PATH
環境変数を設定して、それを支援することもできます)。ただし、この結果、ポータブルアプリケーションはあまりポータブルではない可能性が高くなります。つまり、指定されたプレフィックスに依存することになります。これはおそらく多くの場所で動作します(ほとんどの最新のディストリビューションはにメディアをマウントします/media/DISKNAME
)が、アプリケーションが真にポータブルで場所に依存しないようにします。
したがって、最終的な答えは、移植可能なLinuxアプリケーションを作成することは不可能ではありませんが、微妙な点に満ちているということです。これは、Windowsの場合ほど近く行われない理由の主な要因であると思われます。さらに、パブリックコンピューティング施設(ポータブルアプリケーションの利点の大部分が発生する場所)では、通常Linuxは実行されません。注目すべき例外は大学の研究室ですが、通常はホームディレクトリに追加のソフトウェアをインストールできます。
Linux for Travellersはこのトピックを追跡しており、Linux向けの(まだ?)ポータブルアプリのインストールがないという事実を回避するためのいくつかのトリックがあります。ポータブルなものを使用する必要はありません。
HackToLive.org(UbuntuのスーパーOSバージョンの管理者)は、Linux用のポータブルアプリをいくつか管理しています。
Portable Linux Appsを確認できます。ポータブルバイナリをダウンロードして実行可能にするだけです。必要な依存関係はすべてバイナリに含まれています。
アプリを移植可能にするために、ログイン時にホームフォルダーに配置するシンボリックリンクを作成できる場合があります。アプリは、シンボリックリンクを介して、フラッシュドライブなどのどこにでも設定を保存します。これをポータブルMinecraftの保存に使用しました。
あなたの質問に対する別の見解は、クライアント側のコードを一度書いてから、フレームワークを活用してiOS、Android、およびWeb用のクライアントを合成する重労働を行う今日のスタートアップの概念です。ここでは、ビジネスロジックは移植可能ですが、そのツールによって自動的に移植されます。そのようなフレームワークは数多くありますが、Meteorはその1つです。
このように考えると、アプリストアで見つかったアプリのかなりの部分にこのポータブルな遺産があります。
この考えをさらに曖昧にするために、WebAssemblyを使用して、ブラウザコード(定義によりjavascript)を、静的にコンパイルされた従来のサーバー側言語で記述し、クライアントを対象とするJavaScriptを合成するために解析します。
Linuxアプリについて質問しているが、nodejsをラップしたGUIまたはコマンドラインであるElectronのようなツールを使用すると、ポータブルLinuxアプリの選択肢が爆発的に増加します。
フィールドにはAppImageという新しいプレーヤーがあります。アプリケーションは単一のファイルとしてパッケージ化され、すべての依存関係が含まれているため、基盤となるディストリビューションに関係なく実行できます。
AppImageHubにはアプリイメージのリポジトリがあります。