Linux では、ネイティブ ディストリビューション パッケージ、Flatpak、Snap、AppImage、ソース ビルド、さらにはカール パイプ インストーラーなど、ソフトウェアをインストールするためのさまざまな方法が提供されます。問題は、それぞれが異なる問題を解決するにもかかわらず、すべてのディストリビューションにわたる「ここで動作し、そこで中断される」という現実を完全に排除できるものはないということです。
Package Forge (PkgForge) は、システム間で同じように動作する真にディストリビューションに依存しないポータブル アプリケーションを提供するという、より狭い使命を持った新しいプロジェクトです。言い換えると:
「依存関係やパッケージ化の違いと戦うことなく、同じアプリを異なるディストリビューションにインストールして実行できるようにしたいのです。」
基本的な前提
Package Forge のホームページ、pkgforge.dev
PkgForge の主な焦点は、ディストリビューションが提供する依存関係への依存を最小限に抑える、移植可能なソフトウェアおよび/または静的に構築されたソフトウェアです。私は言っています 最小化する (排除するわけではありません) 一部の要件は、特にポータブル イメージ フォーマットに関しては、実際には回避することが困難であり、FUSE や非特権ユーザー名前空間などの機能が影響する可能性があるためです。
真に「依存性のない」パッケージ形式を絶対的な意味で実現することは困難ですが、PkgForge は現実的に可能な限りそれに近づけることを目指しています。 PkgForge の機能について説明する前に、PkgForge が存在する理由と、このプロジェクトが非常に重要である理由を理解する必要があります。
ユニバーサル パッケージングはそれほど広くサポートされていない
ユニバーサル パッケージはプラグのようなものです。ソケットに適合する必要があります。そうしないと何も起こりません。 Pexels / カストリーストック
Linux 用のユニバーサル アプリ パッケージ化 らしい 解決しましたが、現実は想像以上に厄介です。たとえば、Flatpaks と Snap はどちらも、必要に応じて一連のヘルパー コンポーネントをシステムにインストールする必要があります。そのサポートが適切に整備されていないと、 。スナップ ファイルをダウンロードするのと同じくらい便利です 。EXE ワインなしで。
Flatpak は少し異なります。Snap と同じ種類の常時稼働デーモンには依存しませんが、ホスト上で Flatpak サポートを有効にする必要があります。さらに、Flatpak アプリは利用可能なランタイムに依存しています (確かに、Flatpak はランタイムをインストールできます)。いずれにせよ、どこの Linux システムでも実行できる単一の自己完結型実行可能ファイルを扱っているわけではありません。
ほとんどの汎用パッケージは持ち運びできるように作られていません
コンテナ化されたシステムはディストリビューション間の架け橋にはなりましたが、移植性の問題を真に解決したわけではありません。自由に持ち上げたり、移動させたりすることはできません。 Pexels / カイケ・ロシャ
ほとんどの人気のあるディストリビューションには Flatpak がインストールされた状態で出荷されます (または少なくともすぐに入手できます)。また、人気により独自のレーンにしっかりと残っている Ubuntu には、Snap がプリインストールされ、構成されています。しかし、同じ Flatpak または Snap アプリを別のシステムに持ち込んだり、お気に入りのアプリを起動可能な USB に保存してどこでも実行したい場合はどうなるでしょうか?
良い… 完全ではありません。 Flatpak を移動したり、オフラインでインストールしたりすることもできますが、使用しているシステムには依然として Flatpak のサポートが必要です。 Snaps を使用する場合でも、snapd をインストールする必要がありますが、ほとんどのディストリビューションには必要ありません。したがって、どちらのアプローチでも、アプリを単純にパッケージ化し、ホスト コンポーネントを配置せずにどこでも実行することはできません。
通常の AppImage を使用しないのはなぜでしょうか?
Pexels / リールー・ザ・ファースト
確かに、これには AppImages を使用できます。実際、これこそ AppImage が解決するために作成された問題です。多くの場合、これは Linux の真の「一度ダウンロードすればどこでも実行できる」モデルに最も近いものです。
ただし、「ポータブル」とは必ずしも「どこにでも持ち運べる」ことを意味するわけではありません。 AppImages は依然としてホスト システムについての仮定を行うことができますが、それらの仮定はすべてのディストリビューション、セキュリティ コンテキスト、コンテナー、または古い環境にわたって保証されているわけではありません。最新のデスクトップでも、構成を変更するだけで、「うまく機能する」が「なぜ起動しないの?」に変わることがあります。
たとえ移植性が完璧だったとしても、AppImage には依然として「周囲すべて」の問題が残されています。信頼できるビルドを見つけて最新の状態に保ち、デスクトップにきれいに統合するには、多くの場合、自分で作業する必要があります。
- 信頼できるビルドはどこで見つかりますか?
- どうやって最新情報を維持していますか?
- デスクトップをクリーンに統合するにはどうすればよいでしょうか?
- どうやって信頼を確保しますか?
PkgForge が解決する問題は次のとおりです
Pexels の周りにポータブルパッケージを放置する必要はもうありません / Ekaterina Belinskaya
PkgForge は、Linux 用のユニバーサルでポータブルなパッケージに関して私たちが特定したほぼすべての問題をカバーします。これ自体は新しいパッケージ形式ではなく、AppImage を置き換えようとするものでもありません。代わりに、ポータブル パッケージと静的バイナリを厳選されたリポジトリで公開し、それらをインストールおよび管理するように設計されたパッケージ マネージャーと組み合わせたエコシステムです。
PkgForge が Linux 上のいくつかのポータブル アプリの取り組みと比べて際立っている点の 1 つは、アクセス可能なドキュメントとセキュリティを重視した配布モデルに焦点を当てていることです。このプロジェクトは主に、事前にビルドされたバイナリ パッケージを提供し、透過的なビルド ログを保持し、チェックサム検証に依存しています。
これにより、アドホック インストール スクリプトの蔓延と、Linux ソフトウェアを直接ダウンロードする際の長年の一般的なパターンであるローカル コンパイルの必要性が軽減されます (現在も多くのプロジェクトで行われています)。エンドユーザーの作業を容易にするために、プロジェクトは Soar と呼ばれる独自のフロントエンドを維持しています。
ソアとは何ですか?
Soar は PkgForge のパッケージ マネージャーであり、一貫した方法でディストリビューション間でソフトウェアをインストールし、移植できるように構築されています。これは、ディストリビューション独自のパッケージ マネージャーに代わるものではなく、そのコンパニオンとして機能します。 PkgForge 独自のキャッシュやその他の互換性のあるソースから取得し、メニュー エントリやアイコンを含む freedesktop.org 仕様を通じてデスクトップ統合を管理します。
また、Soar は、インストールされているアプリケーションをシステム PATH に追加し、バイナリの名前だけで CLI または他のアプリケーションからアプリケーションを呼び出せるようにします。これは、セットアップをシステム間でより簡単に移動できるように、再配置可能に保つことを目的としています。また、一貫したインストール場所を使用することで環境をクリーンに保つことができるため、ダウンロード フォルダーが追跡できないランダムな実行可能ファイルでいっぱいになることもありません。
Soar の背後には、PkgForge エコシステムを機能させる他のコンポーネントが多数あります。
SoarPkgs: レシピベースのパッケージ化
SoarPkgs と呼ばれる PkgForge のメイン ユーザー リポジトリには、プロジェクト独自のパッケージング レシピ システムである .SBUILD 定義形式で記述されたビルド レシピが含まれています。これらの .SBUILD ファイルは、ソフトウェアが何であるか、どこで入手できるか、およびそれを Soar がインストールできるものに変える方法についてのポータブルな説明として機能します。
これらは通常、ビルド プロセスの実用的なメタデータと、関連するデスクトップ統合の詳細 (アプリ ID、アイコン、デスクトップ エントリ) です。 PkgForge は、SBuilder など、これらのレシピを lint してビルドするためのツールも提供するため、パッケージは厳選されたリポジトリで公開するために反復可能なプロセスを使用します。
BinCache: 静的にコンパイルされた CLI ツール
PkgForge は、ユーザーが Soar を通じてインストールできる、コンパイル済みの静的バイナリのコレクションである BinCache も管理します。プロジェクトのこの部分では特にコマンド ライン ツールに焦点を当てており、自分でコンパイルしたりディストリビューション リポジトリに依存したりすることなく、単一の自己完結型バイナリとして配布できるソフトウェアを簡単に入手できるようになります。
PkgCache: ポータブル デスクトップ アプリ (その他)
PkgCache は、ポータブル アプリケーション パッケージ、特にデスクトップ (GUI) ソフトウェア用の PkgForge のリポジトリです。 PkgForge は、単一の汎用形式に賭けるのではなく、AppImage を複数のペイロード タイプの中の 1 つにすぎず、手元のソフトウェアに最適なものをすべて配布します。
PkgForge はどのような種類のパッケージを使用しますか?
- アプリイメージ (+zsync): 標準の AppImage リリース。より効率的な更新のために zsync メタデータと組み合わせられる場合があります。
- アプリバンドル: アプリを自己完結型のディレクトリ構造として出荷する、ポータブルな「バンドル」スタイルのパッケージ。
- アーカイブ: 従来の tarball/zip アーカイブ。通常、アップストリームがポータブル バンドルをすでに出荷している場合、または最も単純なアプローチが最適な場合に使用されます。
- フラットイメージ: アプリのように設計され、システム間でより予測しやすいように設計されたポータブルな画像形式。
- ゲーム画像: 大規模で資産の多いソフトウェアを対象とした、ゲームに焦点を当てたポータブル形式。
- 実行イメージ: より制御された環境でアプリを実行することを目的とした、単一ファイルのコンテナのようなポータブル形式。
- 静的バイナリ: 外部ライブラリへの依存関係を最小限またはまったく持たずに実行するようにコンパイルされた単一ファイルのコマンド ライン ツール。
PkgForgeの使用方法
ペクセルズ / アン・H
PkgForge エコシステムのソフトウェアの使用に興味がある場合は、2 つの簡単なアプローチがあります。 Soar が推奨されるソリューションです。これは追加のパッケージ マネージャーのように使用でき、インストール、更新、システム統合を処理させます。また、オンラインのリポジトリを調べなくても、アプリやユーティリティを検索できます。
💡
PkgForge を通じて利用可能なすべてのパッケージを確認したいですか?アクセス: リポジトリごとに整理された完全なリストを取得します。
あるいは、PkgForge リポジトリを手動で検索し、個々のポータブル パッケージを自分でダウンロードして管理することもできます。これは、USB ドライブ上にポータブル ツールキットを構築している場合、単一のアプリを一時的にテストしている場合、または単にファイルの保存場所を完全に制御したい場合に推奨されます。必要に応じて、更新、クリーンアップ、デスクトップの統合を処理する責任も負うことに注意してください。
使用例: 急上昇
Soar は CLI ユーティリティであり、apt、dnf などとほぼ同じように機能します。ここではすべてを説明しません。 たくさん それはカバーできるでしょう。これを実現する方法の詳細については、Soar のドキュメントで説明されています。
パッケージの検索
Soar を使用してパッケージを検索するには、検索コマンドを使用します。
急上昇検索 検索クエリ
クエリのパッケージ名、パッケージ ID (pkg_id)、およびその他のメタデータを検索します。
アプリケーションのインストールと更新
アプリケーションをインストールするには、soar install package-name またはそのエイリアスのいずれかを使用できます。次に例を示します。
# “i” エイリアスを使用する soar i package-name # “add” エイリアスを使用する soar add package-name
パッケージ ID を使用したり、特定のリポジトリからアプリをインストールすることを選択したりするなど、より詳細な制御を通じてパッケージをインストールすることもできます。
最も一般的なツールと同様に、soar install package1 package2 package3 という使い慣れた構文を使用して、パッケージ名を連結して複数のパッケージを一度にインストールすることもできます。 Soar は –force フラグと –yes フラグの両方もサポートしていますが、後者を使用する場合は注意が必要です。
Soar には、任意の数のパッケージ名を引数として受け取り、追加のフラグやエイリアスを提供しない、単純な更新コマンド soar update があります。
アプリケーションの削除
Soar を使用してアプリケーションを削除するのは、ご想像のとおり簡単です。削除コマンドは機能しますが、エイリアスを使用することもできます。
# “remove” コマンドを使用する soar delete # “r” エイリアスを使用する soar r # “del” エイリアスを使用する soar del
アプリケーションを一時的に使用する
この便利な機能がなければ、Soar はポータブル アプリケーション パッケージ マネージャーではありません。 run コマンドを使用すると、システム統合を行わずに、アプリケーションを一時的にダウンロードして実行できます。 soar run package-name を使用するだけで、.desktop ファイルを設定したり PATH に追加したりせずに、必要なパッケージがダウンロードされ、コマンドが実行されます。
このため、Soar は、実際に必要なパッケージを管理したり、興味がある場合にシステムを試したりするための優れたツールになります。
使っている人はいますか?
プライマリ バイナリ ディストリビューションをホストするために PkgForge を使用しているプロジェクトはまだ多くないようです。ただし、AnyLinux AppImage コレクションなど、このプロジェクトに関しては非常に活発なコミュニティの取り組みがあるようです。これらのパッケージは、FUSE またはユーザー名前空間が利用可能かどうかを自動的に検出し、利用できない場合は実行前に抽出にフォールバックするように設計されており、AppImages に関する主な問題を解決します。
この取り組みを通じて多くの人気のあるアプリが利用可能になり、ほとんどの場合、Soar と一緒にインストールすることもできます。
AnyLinux AppImages として利用できる (Soar でインストールできる) 人気のあるアプリには次のようなものがあります。
- Ghostty (ソアインストール Ghostty)
- OBS Studio (soar インストール obs-studio)
- 送信-qt (soar インストール送信-qt)
- EasyTAG (soar インストール easytag)
- Android プラットフォーム ツール (soar install android-tools)
- Citron(ソアインストールシトロン)
- Cromite (ソアインストール クロマイト)
- すだち(ソアインストールすだち)
最終的な考え
ポータブル アプリはデスクトップ コンピューティングにおいて常に重要な役割を果たしてきましたが、Linux では長い間ストレス ポイントとなってきました。 PkgForge を使用することで、少なくとも実用的な面では、ようやくこの問題の解決に近づくことができるかもしれません。 Flatpak、Snap、または AppImage に代わるものではないとしても、ポータブル Linux アプリのより柔軟で真にディストリビューションに依存しない未来がどのようなものであるかを明確にするのに役立ちます。
#ディストリビューションロックインのない #Linux #アプリあまり知られていない #Snap #と #Flatpak #の代替品を探索してください