パッケージの依存関係
100%

パッケージ · レッスン 4

パッケージの依存関係

パッケージメタデータが必要な機能、バージョン、競合、共有ライブラリの関係を表す仕組みを学びます。

パッケージの依存関係は、あるパッケージのインストールまたは動作に、別のパッケージ、機能、互換バージョンが必要であることを示します。リポジトリを認識するパッケージマネージャーは、このメタデータを使い、各アーカイブを孤立して扱うのではなく、整合した変更の組を計算します。

依存関係の種類

パッケージメタデータは、単純な必須パッケージ名以上の関係を表せます。ディストリビューション形式によっては、次のものが含まれます。

  • 必須の依存関係
  • 最小、最大、または厳密なバージョン制約
  • 複数の提供元のどれか一つで要件を満たせる代替関係
  • より弱い意味を持つ推奨または提案
  • 競合、破壊、置換の関係
  • 複数パッケージが提供できる仮想機能

ソルバーはこれらの規則を使い、設定済みリポジトリ、アーキテクチャ、インストール済み状態と互換性のあるパッケージバージョン群を選びます。解決策としてアップグレード、削除、提供元の選択が必要になる場合があるため、承認前に提案されたトランザクションを確認してください。

リポジトリを認識する依存関係ソルバーが生成しようとするものは何ですか?

依存関係としての共有ライブラリ

共有ライブラリには、複数のプログラムが実行時にマッピングできるコンパイル済みコードが含まれます。共有によって実装の重複を減らし、ディストリビューションが共通ライブラリを独立して更新できますが、プログラムは互換性のあるアプリケーションバイナリインターフェース、つまり ABI に依存します。

ELF を使う Linux システムでは、実行ファイルが SONAME などの必要なライブラリ名を記録できます。プログラム起動時、動的リンカーが一致するインストール済みライブラリを探します。通常、パッケージメタデータは、この要件を互換ライブラリを提供するパッケージまたは機能への依存として表します。

共有ライブラリとは何ですか?

バージョンと ABI の互換性

似た名前のライブラリファイルがあるだけでは不十分です。必要な ABI、アーキテクチャ、シンボル、場合によっては最小バージョンが一致しなければなりません。ファイル名が正しく見えても、ディストリビューションのライブラリを手動で置き換えると、依存するすべてのプログラムを壊す可能性があります。

パッケージ保守者はライブラリの関係を符号化し、ABI が変わるときの移行を調整します。ネイティブライブラリはパッケージマネージャーの管理下に置き、競合するバージョンが必要なソフトウェアには、対応する並行インストール、コンテナ、環境、ビルドの仕組みを使ってください。

似た名前のライブラリファイルが存在しても、プログラムが失敗する場合があるのはなぜですか?

壊れた依存関係の状態

依存関係の問題は、リポジトリの混在、中断された操作、手動インストールしたアーカイブ、保留されたバージョン、削除されたファイル、互換性のない第三者ソフトウェアによって発生します。パッケージデータベースのファイルを削除したり、やみくもに強制インストールしたりして対処してはいけません。

まずパッケージマネージャーの診断を読み、信頼できるリポジトリのメタデータだけを更新し、保留または固定されたバージョンを調べ、提案された修復内容を確認します。低レベルのパッケージインストーラーは依存関係をすべて取得せずにアーカイブを展開できるため、通常のインストールでは完全なトランザクションを解決する高レベルのリポジトリーツールの方が一般に安全です。

低レベルのアーカイブツールで一つのローカルパッケージをインストールする際の一般的な制限は何ですか?

レッスン完了

パッケージの依存関係 を完了しました

パッケージの依存関係解決を説明できるようになりました。

  • 必須、代替、バージョン付き、競合する関係を認識する。

  • 共有ライブラリパッケージを実行時の ABI 要件へ関連付ける。

  • ファイル名より、アーキテクチャとインターフェースの互換性を強い証拠として扱う。

  • 修復を適用する前に、パッケージマネージャーの完全なトランザクションを確認する。

学習進捗を保存

無料アカウントを作成してこのレッスンを保存し、どのデバイスからでも学習を続けられます。

無料アカウントを作成
次のレッスン
パッケージ に戻る