Flatpak 1.14.0 自己完結型パッケージ システムのリリース

Flatpak 1.14 ツールキットの新しい安定したブランチが公開されました。これは、特定の Linux ディストリビューションに関連付けられず、アプリケーションをシステムの残りの部分から分離する特別なコンテナーで実行される自己完結型パッケージを構築するためのシステムを提供します。 Flatpak パッケージの実行のサポートは、Arch Linux、CentOS、Debian、Fedora、Gentoo、Mageia、Linux Mint、Alt Linux、および Ubuntu に対して提供されます。 Flatpak パッケージは Fedora リポジトリに含まれており、ネイティブ GNOME アプリケーション マネージャーによってサポートされています。

Flatpak 1.14 ブランチの主な革新:

  • 状態 (.local/state) にファイル用のディレクトリを作成し、このディレクトリを指す XDG_STATE_HOME 環境変数を設定することができます。
  • カーネル モジュールの存在を判断するために、「have-kernel-module-name」形式の条件付きチェックを追加しました (以前に提案された have-intel-gpu チェックの汎用的な類似物で、代わりに「have-kernel-module-i915」という式が使用されます) 」が使えるようになりました)。
  • コマンド「 flatpak document-unexport —doc-id=…」が実装されました。
  • メイン環境で使用するための Appstream メタデータのエクスポートが提供されます。
  • Fish Shell 用の flatpak コマンド補完ルールを追加しました
  • X11 および PulseAudio サービスへのネットワーク アクセスが許可されます (適切な設定が追加されている場合)。
  • 最近、「マスター」という言葉が政治的に正しくないと考えられているため、Git リポジトリのメイン ブランチの名前が「マスター」から「メイン」に変更されました。
  • アプリケーションの名前が変更された場合、起動スクリプトが書き換えられるようになりました。
  • SDK および debuginfo ファイルをインストールするためのインストール コマンドに「--include-sdk」および「--include-debug」オプションが追加されました。
  • 「DeploySideloadCollectionID」パラメータのサポートを flatpakref および flatpakrepo ファイルに追加しました。設定すると、コレクション ID はメタデータのロード後ではなく、リモート リポジトリの追加時に設定されます。
  • 別の MPRIS (Media Player Remote Interfacing 仕様) 名を使用して、セッション内のハンドラーに対してネストされたサンドボックス環境を作成できるようになりました。
  • コマンド ライン ユーティリティは、古いランタイム拡張機能の使用に関する情報を提供するようになりました。
  • アンインストール コマンドは、まだ使用されているランタイムまたはランタイム拡張機能を削除する前に確認リクエストを実装します。
  • 「 flatpak run」などのコマンドに「--socket=gpg-agent」オプションのサポートが追加されました。
  • libostree の脆弱性が修正されました。この脆弱性により、ユーザーは flatpak-system-helper ハンドラーの操作 (特別にフォーマットされたブランチ名を使用して削除リクエストを送信) を通じてシステム上の任意のファイルを削除できる可能性があります。 この問題は、2018 年より前にリリースされた古いバージョンの Flatpak および libostree (< 0.10.2) でのみ発生し、現在のリリースには影響しません。

Flatpak を使用すると、アプリケーション開発者はディストリビューションごとに個別のアセンブリを作成せずに 0 つのユニバーサル コンテナを準備することで、標準のディストリビューション リポジトリに含まれていないプログラムのディストリビューションを簡素化できることを思い出してください。 セキュリティを重視するユーザー向けに、Flatpak を使用すると、コンテナ内で疑わしいアプリケーションを実行し、アプリケーションに関連付けられたネットワーク機能とユーザー ファイルへのアクセスのみを提供できます。 新製品に興味のあるユーザーは、Flatpak を使用すると、システムに変更を加えることなく、アプリケーションの最新のテスト リリースと安定リリースをインストールできます。 たとえば、Flatpak パッケージは、LibreOffice、Middle、GIMP、Inkscape、Kdenlive、Steam、XNUMX AD、Visual Studio Code、VLC、Slack、Skype、Telegram Desktop、Android Studio など用に構築されています。

パッケージ サイズを削減するために、アプリケーション固有の依存関係のみが含まれており、基本システムおよびグラフィック ライブラリ (GTK、Qt、GNOME、KDE ​​ライブラリなど) はプラグイン標準ランタイム環境として設計されています。 Flatpak と Snap の主な違いは、Snap はメイン システム環境のコンポーネントを使用し、フィルタリング システム コールに基づいて分離するのに対し、Flatpak はシステムとは別のコンテナを作成し、大規模なランタイム セットで動作し、パッケージを依存関係として提供するのではなく、標準で提供することです。システム環境 (たとえば、GNOME または KDE プログラムの動作に必要なすべてのライブラリ)。

特別なリポジトリを通じてインストールされる標準システム環境 (ランタイム) に加えて、アプリケーションの動作に必要な追加の依存関係 (バンドル) が提供されます。 ランタイムは個別にインストールされ、一度に複数のコンテナーに関連付けられますが、合計すると、ランタイムとバンドルによってコンテナーが満たされます。これにより、コンテナーに共通するシステム ファイルの重複を回避できます。 3.40 つのシステムに複数の異なるランタイム (GNOME、KDE) または同じランタイムの複数のバージョン (GNOME 3.42、GNOME XNUMX) をインストールすることができます。 依存関係としてアプリケーションを持つコンテナーは、ランタイムを構成する個々のパッケージを考慮せずに、特定のランタイムへのバインディングのみを使用します。 不足している要素はすべてアプリケーションに直接パッケージ化されます。 コンテナーが形成されると、ランタイム コンテンツは /usr パーティションとしてマウントされ、バンドルは /app ディレクトリにマウントされます。

ランタイム コンテナとアプリケーション コンテナは、OSTree テクノロジを使用して構築されます。OSTree テクノロジでは、イメージが Git のようなリポジトリからアトミックに更新されます。これにより、バージョン管理メソッドをディストリビューション コンポーネントに適用できます (たとえば、システムをすぐにロールバックできます)。以前の状態)。 RPM パッケージは、特別な rpm-ostree レイヤーを使用して OSTree リポジトリに変換されます。 作業環境内でのパッケージの個別のインストールと更新はサポートされていません。システムは個々のコンポーネントのレベルではなく、全体として更新され、その状態がアトミックに変更されます。 更新を段階的に適用するためのツールを提供し、更新のたびにイメージを完全に置き換える必要がなくなります。

生成された分離環境は、使用されるディストリビューションから完全に独立しており、パッケージが適切に設定されていれば、DRI 経由の出力を除き、ユーザーまたはメイン システムのファイルやプロセスにアクセスできず、機器に直接アクセスすることもできません。そしてネットワークサブシステムを呼び出します。 グラフィック出力と入力の構成は、Wayland プロトコルまたは X11 ソケット転送を使用して実装されます。 外部環境との対話は、DBus メッセージング システムと特別なポータル API に基づいています。

分離には、cgroup、名前空間、Seccomp、SELinux の使用に基づいて、Bubblewrap レイヤーと従来の Linux コンテナ仮想化テクノロジが使用されます。 音の出力にはPulseAudioを使用します。 この場合、分離を無効にすることができます。これは、多くの一般的なパッケージの開発者がファイル システムおよびシステム内のすべてのデバイスへの完全なアクセスを取得するために使用します。 たとえば、GIMP、VSCodium、PyCharm、Octave、Inkscape、Audacity、および VLC には、ホーム ディレクトリへのフル アクセスを残す制限付き分離モードが付属しています。 ホーム ディレクトリにアクセスできるパッケージが侵害された場合、パッケージの説明に「サンドボックス」ラベルが存在するにもかかわらず、攻撃者は ~/.bashrc ファイルを変更するだけでコードを実行できます。 別の問題は、パッケージへの変更の制御と、メインのプロジェクトやディストリビューションに関連付けられていないパッケージ ビルダーへの信頼です。

出所: オープンネット.ru

コメントを追加します