Understanding zmd

From openSUSE


This page will contain a little about the internal working of Zmd system. This is important for people who wants to learn about it, for those who want to complain about (so you complain about the right thing) and for people willing to help too.


Contents


Here is a diagram of its work (provided by Nat Budin at #opensuse channel, while we were discussing it)
Enlarge
Here is a diagram of its work (provided by Nat Budin at #opensuse channel, while we were discussing it)

Libzypp

libzypp is the new package/patch/pattern/product management library written in C++. Currently, it installs, upgrades and removes packages by running "rpm" on the command-line. libzypp also contains a dependency resolver.

Libzypp ZMD helpers

These are a set of small C++ executables in /usr/lib/zmd (or /usr/lib64/zmd on x86_64 systems). They act as a layer between ZMD and libzypp, and they use the ZMD SQLite database to communicate with ZMD. Some of these helpers are:

  • update-status
  • parse-metadata
  • transact

zmd ZENworks management daemon

ZMD is a daemon written in C#. It listens for commands and (assuming the user who executed them has the correct privileges) passes those commands off to the helpers to be run.

ZMD is also used in Novell ZENworks Linux Management 7. In that product, it uses libredcarpet instead of libzypp on platforms where libzypp is not supported (such as SuSE 9 or Red Hat Enterprise Linux).

rug

rug is the command line front end to access zmd. You can list the sources of installation, add or delete them, and do many other operations. Try a "rug --help"

Zen Updater

zen-updater, zen-installer, and zen-remover are a set of small applets written in Mono. These applets provide a set of simple GUI frontends for zmd, and they are pretty much for exactly what their names would imply. :)

Yast package manager

In SUSE Linux 10.1, YaST's package manager uses libzypp but not ZMD. Instead, it links directly against libzypp and makes calls to it.

Functionalities

  • What happens when I add an yast source?
  • What happens when I add a zmd?
  • What are the resource eaters during normal operation?
  • How to see debug information to know whats happening in my Zmd?


See also