7.3. PackageKit アーキテクチャ

Red Hat は、システムと互換性があるパッケージおよびパッケージグループの表示、更新、インストール、アンインストールを行うための PackageKit アプリケーションスイートを提供します。PackageKit のアーキテクチャ は、バックエンドの packagekitd デーモンと通信する数種のグラフィカルフロンドエンドで構成されています。バックエンドの packagekitd デーモンは、Yum を利用してパッケージのインストールや削除など実際のトランザクションを実行するパッケージマネージャ固有のバックエンドと通信します。
表7.1「PackageKit の GUI ウィンドウ、メニューの場所、シェルプロンプトのコマンド」 では、GUI ウィンドウ名、GNOME デスクトップまたは ソフトウェアの追加/削除 ウィンドウから GUI ウィンドウを起動する方法、 GUI ウィンドウを開くコマンドラインのアプリケーション名を示しています。

表7.1 PackageKit の GUI ウィンドウ、メニューの場所、シェルプロンプトのコマンド

ウィンドウのタイトル 機能 開き方 シェルコマンド
ソフトウェアの追加/削除 パッケージ情報のインストール、削除、表示
GNOME パネルより、システム管理ソフトウェアの追加/削除 を選択
gpk-application
ソフトウェア更新 パッケージの更新を実行
GNOME パネルより、システム管理ソフトウェア更新 を選択
gpk-update-viewer
ソフトウェアソース Yum リポジトリーの有効/無効化
ソフトウェアの追加/削除 より、システムソフトウェアソース を選択
gpk-repo
ソフトウェアログビューア トランザクションログの表示
ソフトウェアの追加/削除 より、システムソフトウェアログ を選択
gpk-log
ソフトウェア更新の詳細設定 PackageKit の詳細設定 gpk-prefs
(通知スペースでの警告) 更新が利用可能時に通知
GNOME パネルより、システム詳細設定Startup Applications (自動起動するアプリ), Startup Programs (自動起動するプログラム) タブを選択
gpk-update-icon
packagekitd デーモンは、ユーザーセッションの外で実行し、様々なグラフィカルなフロントエンドと通信します。packagekitd デーモンは、[3] DBus システムメッセージバスを経由して、別のバックエンドと通信します。これは、Yum の Python API を利用してクエリを実行し、システムに変更を加えます。Red Hat と Fedora 以外の Linux システムでは、packagekitd はそのシステムのネイティブのパッケージマネージャーの利用が可能な他のバックエンドと通信することができます。このモジュラーアーキテクチャは、グラフィカルインターフェースが多くの異なるパッケージマネージャーと共に動作して本質的に同じ種類のパッケージ管理タスクを実行するために必要な抽象化を提供します。PackageKit のフロンドエンドの使用方法を学ぶと、Yum 以外のネイティブのパッケージマネージャを利用している時でも、多くの様々な Linux ディストリビューションにわたって、なじみのある同じグラフィカルインターフェースを使用することができます。
さらに、PackageKit の関与事項の分離により、GUI ウィンドウの 1 つに クラッシュが生じても (またはユーザーの X Window セッションでも) 、ユーザーセッションの外で実行する packagekitd デーモンが監視しているパッケージ管理タスクに影響を与えない、という信頼性を提供します。
本章で説明されているフロントエンドのグラフィカルアプリケーションはすべて、PackageKit とその依存関係ではなく、gnome-packagekit パッケージが提供します。
最後に、PackageKit には pkcon と呼ばれるコンソールベースのフロンドエンドも付いてきます。


[3] システムデーモンは通常、ユーザーや他のプログラムにサービスを提供する、長いプロセスです。多くの場合、システムデーモンは特別な初期化スクリプト ( initscripts と短縮される場合が多い) によりブート時に起動します。デーモンは service コマンドに応答し、chkconfig on または chkconfig off コマンドを使用することで永久にオン/オフにすることができます。それらは、通常 packagekitd デーモンのように名前に d を付けることによって認識できます。システムのサービスに関する情報は 10章サービスとデーモン を参照してください。