5.2. Anaconda のアーキテクチャー
Anaconda は Python モジュールとスクリプトのセットで設定されています。外部パッケージとライブラリーも使用し、このインストーラー専用のものもあります。このツールセットの主要コンポーネントは以下のパッケージになります。
pykickstart
- Kickstart ファイルを解析、検証するとともに、インストールを実行する値を保存するデータ構造も提供します。yum
- パッケージのインストールと依存関係の解決を処理するパッケージマネージャーです。blivet
- もともと anaconda パッケージから pyanaconda.storage として分割されました。ストレージ管理に関連するすべてのアクティビティーを処理するために使用されますpyanaconda
- キーボードとタイムゾーンの選択、ネットワーク設定、ユーザー作成、さらには多数のユーティリティーやシステム指向の機能など、Anaconda 固有の機能向けのユーザーインターフェイスやモジュールを含むパッケージです。python-meh
- クラッシュ時に追加のシステム情報を収集、保存し、この情報をlibreport
ライブラリーに渡す例外ハンドラーを含みます。このライブラリー自体は ABRT プロジェクト に含まれます。
インストールプロセス中のデータのライフサイクルはシンプルです。Kickstart ファイルが提供されていれば、
pykickstart
モジュールがこれを処理してツリー構造としてメモリーにインポートします。Kickstart ファイルが提供されない場合は、代わりに空のツリー構造が作成されます。インストールが対話式の場合 (必須の Kickstart コマンドの一部しか使用されなかった場合)、この構造は対話式インターフェイスでユーザーが選択したもので更新されます。
必須の選択がすべて決定されるとインストールプロセスが開始され、ツリー構造に保存されている値を使用してインストールのパラメーターが決定します。これらの値は Kickstart ファイルとしても書き込まれ、インストールされるシステムの
/root/
ディレクトリーに保存されます。このため、この自動生成の Kickstart ファイルを再使用することで、このインストールを自動複製することが可能になります。
ツリーのような構造の要素は pykickstart パッケージによって定義されますが、それらの一部は
pyanaconda.kickstart
モジュールの修正版によってオーバーライドできます。この動作を決定する重要なルールは、選択データの保存場所がなく、インストールプロセスはデータ駆動型であり、最大限この処理に依存しているということです。このため、以下の点が確保されます。
- インストーラーの全機能が Kickstart でサポートされる 必要がある
- インストールプロセスで、変更がターゲットシステムに書き込まれる単一の明確な時点がある。この時点の前では、永続的な変更 (例: ストレージのフォーマット) はなされません
- ユーザーインターフェイスでなされた手動での変更は作成される Kickstart ファイルに反映され、複製が可能
インストールが データ駆動型 であることで、インストールおよび設定論理はツリー構造内のアイテムのメソッド内に位置することになります。必要に応じてインストールのランタイム環境を修正するためにアイテムはすべてセットアップされ (
setup
メソッド)、それを実行することで (execute
メソッド) ターゲットシステム上で変更がなされます。これらの方法については、「Anaconda アドオンの作成」 .