4.2. Anaconda のアーキテクチャー

Anaconda は Python モジュールおよびスクリプトのセットです。また、外部パッケージおよびライブラリーも使用します。このツールセットの主要コンポーネントには、以下のパッケージが含まれます。

  • pykickstart: キックスタートファイルを解析し、検証します。また、インストールを動作させる値を保存するデータ構造も提供します。
  • yum: パッケージをインストールして依存関係を解決するパッケージマネージャー
  • blivet: ストレージ管理に関連するすべてのアクティビティーを処理します。
  • pyanaconda: キーボードおよびタイムゾーンの選択、ネットワーク設定、ユーザー作成など、Anaconda のユーザーインターフェースおよびモジュールが含まれます。システム指向の機能を実行するためのさまざまなユーティリティーも提供します。
  • python-meh: クラッシュ発生時に追加のシステム情報を収集して保存する例外ハンドラーを含みます。また、この情報を libreport ライブラリーに渡します。それ自体は ABRT プロジェクト に含まれます。
  • dasbus: D-Bus ライブラリーと、anaconda のモジュールと外部コンポーネントとの通信を有効にします。
  • python-simpleline: Aaconda テキストモードでユーザーの対話を管理するテキスト UI フレームワークライブラリー
  • gtk: GUI を作成および管理する Gnome ツールキットライブラリー

前述したパッケージへの分割以外に、Anaconda は内部的にユーザーインターフェースと、別個のプロセスとして実行され、D-Bus ライブラリーを使用して通信するモジュールセットに分けられています。これらのモジュールは以下のとおりです。

  • Boss: 内部モジュール検出、ライフサイクル、およびコーディネーションを管理します。
  • Localization: ロケールを管理します。
  • Network: ネットワークを処理します。
  • Payloads: rpmostreetar などの異なる形式でインストール用のデータを処理します。ペイロードはインストール用のデータのソースを管理します。ソースは CD-ROM、HDD、NFS、URL などの形式によって異なる可能性があります。
  • Security: セキュリティー関連機能を管理します。
  • Service: サービスを処理します。
  • Storage: blivetを使用してストレージを管理します。
  • Subscription: subscription-manager ツールと Insights を処理します。
  • Timezone: 時間、日付、ゾーン、および時刻の同期を処理します。
  • Users: ユーザーおよびグループを作成します。

各モジュールは、処理するキックスタート部分を宣言し、キックスタートから設定を適用してインストール環境とインストール済みシステムに適用します。

Anaconda の Python コード部分 (pyanaconda) は、ユーザーインターフェースを所有する「メイン」プロセスとして起動します。指定のキックスタートデータはすべて pykickstart モジュールと Boss モジュールを使用して解析され、その他のすべてのモジュールを検出し、起動します。その後、メインプロセスは宣言された機能に応じてキックスタートデータをモジュールに送信します。モジュールはデータを処理し、インストール環境に設定を適用し、必要な選択がすべて行われているかどうかを UI が検証します。インストールされていない場合は、対話式インストールモードでデータを指定する必要があります。必要な選択がすべて行われると、インストールを開始できます。モジュールは、インストール済みシステムにデータを書き込むことができます。