Zmd

移動先: 案内, 検索


zmd (ZENworks Management Daemon) は、rcd (Red Carpet Daemon)―― Ximian 社の買収により Novell が獲得し、提供してきた――の後継となるソフトウェアです。

Zmd は C# 言語で書かれており、libzypprug とともに SUSE Linux 10.1 以降の新しいパッケージ管理システムを構成します。

このページでは、Zmd システムの内部動作について少しご紹介できればと思っています。Zmd について学びたい方、Zmd に対して不満を言いたい方(これを読むことで正確に不満が言えます)、あるいはそれを助けたいと思っている方にとっても、このページは重要なものです。


以下は Zmd の動作を表すダイアグラムです(Nat Budin さん提供、IRC #opensuse チャンネルでの議論の中で作成されました)

Package-management-in-code10.png


上記の図のとおり、このシステムはいくつかのパートで構成されています:

Libzypp

libzypp はパッケージ/パッチ/パターン/プロダクトを管理する、C++ 言語で書かれた新しいライブラリです。現在では、"rpm" コマンドを実行すると、この libzypp がパッケージのインストール、アップグレード、削除といった作業を行うようになっています。また、libzypp は依存関係の解決機能も備えています。

Libzypp ZMD helpers

/usr/lib/zmdディレクトリ(x86_64システムでは/usr/lib64/zmd)には、小さな C++ の実行形式ファイルのセットがあります。これらは ZMD と libzypp の間のレイヤーで働き、ZMD とやり取りをするために ZMD SQLite データベースを使います。ヘルパーの中には以下のようなものがあります:

  • update-status
  • parse-metadata
  • transact

zmd ZenWorks management daemon

ZMD は C# で書かれたデーモンです。コマンドを受け付け、(正当な権限を持つユーザーがコマンドを実行したと仮定して)それらのコマンドを実行させるためにヘルパーに渡します。

また、ZMD は Novell ZENworks Linux Management 7 でも利用されます。この製品は、libzypp がサポートしていないプラットフォーム(SuSE 9 や Red Hat Enterprise Linuxなど)においては libzypp の代わりとして libredcarpet を使います。

rug

rug は zmd にアクセスするためのコマンドライン式のフロントエンドです。インストール・ソースの一覧を見たり、それに追加や削除を行ったり、そのほか非常に多くの操作をすることができます。"rug --help" コマンドを実行してみてください。

Zen Updater

zen-updater, zen-installer, そして zen-remover は、Mono フレームワークを使って作られた小さなアプレットのセットです。zmd にシンプルな GUI フロントエンドを提供する、まさにその名前が暗示するとおりのアプレットです。:)

Yast package manager

SUSE Linux 10.1 では、 YaSTのパッケージマネージャは ZMD ではなく libzypp を使用します。その代わり、libzypp に直接リンクしてコール(呼び出し)を行います。

Functionalities

  • YaST にインストール・ソースを追加したときに何が起こるのか?
  • zmd を追加すると何が起こるのか?
  • 通常の操作中にマシン・リソースを消費しているのは何か?
  • Zmd で何が起こっているのかを知るためのデバッグ情報はどうやったら見られるのか?

こちらもご覧ください