Redox OS プロジェクトでは、Rust で書かれた pkgar パッケージ マネージャーを導入しました。

オペレーティング システム開発者 レドックス, 書かれた Rust言語とマイクロカーネルの概念を使用し、 提出済み 新しいパッケージマネージャー パッケージ。このプロジェクトは、新しいパッケージ形式、パッケージ管理ライブラリ、および暗号化が検証されたファイルのコレクションを作成および取得するためのコマンド ライン ツールキットを開発しています。 pkgar コードは Rust で書かれており、 によって配布 MITライセンスの下で。

pkgar 形式は汎用であるかのように見せかけているわけではなく、Redox OS オペレーティング システムの仕様を考慮して最適化されています。パッケージ マネージャーは、デジタル署名と整合性制御を使用したソース検証をサポートします。チェックサムはハッシュ関数を使用して計算されます blake3。 pkgar の検証関連機能には、実際にパッケージ アーカイブを保存せずに、ヘッダー部分のみを操作することでアクセスできます。特に、パッケージはヘッダー ファイル (.pkgar_head) とデータ ファイル (.pkgar_data) で構成されます。ヘッダー ファイルをデータ ファイルに追加するだけで、正しく署名された完全なサマリー パッケージ (.pkgar) を取得できます (「cat example.pkgar_head example.pkgar_data > example.pkgar」)。

ヘッダー ファイルには、ヘッダーとデータ ファイルのパラメーターを含む構造の個別のチェックサムと、パッケージを検証するためのデジタル署名が含まれています。データ ファイルには、パッケージで提供されるすべてのファイルとディレクトリの順次リストが含まれています。各データ要素の前には、データ自体のチェックサム、サイズ、アクセス権、インストールされるファイルの相対パス、次のデータ要素のパラメータのオフセットを含むメタデータを含む構造が続きます。更新プロセス中に個々のファイルが変更されておらず、チェックサムが一致する場合、それらのファイルはスキップされ、ロードされません。

ヘッダー ファイルのみを受信することでソースの整合性をチェックできます。また、このファイルのパラメーターを持つ構造体のみをロードし、ヘッダー ファイルで認証されたチェックサムに準拠していることを確認することで、選択したデータ ファイルの正確性をチェックできます。データ自体は、データの前にパラメータを含む構造体のチェックサムを使用して、ロード後にチェックできます。

パッケージは本質的に反復可能です。つまり、特定のディレクトリにパッケージを作成すると、常に同一のパッケージが作成されます。インストール後は、メタデータのみがシステムに保存されます。これは、インストールされたデータからパッケージを再構築するのに十分です (パッケージの構成、チェックサム、パス、およびアクセス権がメタデータに含まれます)。

pkgar の主な目的:

  • 原子性 - 更新は可能な限り自動的に適用されます。
  • トラフィックの節約 - ハッシュが変更された場合にのみ、データがネットワーク経由で転送されます (更新中は、変更されたファイルのみがダウンロードされます)。
  • 高性能で高速な暗号化アルゴリズムが使用されています (blake3 は、ハッシュを計算する際の並列データ処理をサポートしています)。リポジトリのデータが以前にキャッシュされていない場合は、ダウンロードされたデータのハッシュをダウンロード時に計算できます。
  • 最小限 - 他の形式とは異なり、pkgar にはパッケージを抽出するために必要なメタデータのみが含まれます。
  • インストール ディレクトリの独立性 - パッケージは、任意のユーザーが任意のディレクトリにインストールできます (ユーザーは、選択したディレクトリへの書き込み権限を持っている必要があります)。
  • セキュリティ - パケットは常に暗号的に検証され、パッケージに対して実際の操作が実行される前に検証が実行されます (最初にヘッダーがロードされ、デジタル署名が正しければ、データが一時ディレクトリにロードされ、その後ターゲット ディレクトリに移動されます)検証)。

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

コメントを追加します