Software Management/Code11

From openSUSE

Software management is an important part of system management, covering the lifecycle (install, patch, upgrade, remove) of software on the system.

Contents

Motivation

Software management on (open)SUSE systems was usually bound to SUSE-specific tools, namely YaST and YOU (yast-online-update). Using 3rd party tools to install and maintain a system was unsupported and mostly not working properly.

With Code11, free choice of tools is a key requirement. Use of (open)SUSE specific tools must not be mandatory. Instead, (open)SUSE tools should encourage its use by providing superior functionality and ease of use.


Requirements

  1. Free choice of package management tool (without loss of functionality)
  2. Speed
  3. Reliability
  4. Upstream integration, i.e. support of PackageKit
  5. Automatic driver installation and update

Most important changes

RPM-only

Rule 1 dictates that all information must be contained within (resp. derived from) the package database (rpmdb) or packages. The RPM packaging tool is the only common denominator among all software management tools. Using the rpm database as the only source of information about the state of the system allows to move freely from openSUSE tools to 3rd party tools and back again.

While Code10 still kept a database of installed patches, patterns and products, the installation status of these software elements is now entirely derived from the system.

This has a couple of implications, see here

Updates vs. Patches

Plain RPM updates are insufficient for maintaining a system, they must be accompanied by

  • severity (i.e. security, bugfix, enhancement)
  • documentation (why is an update needed ?, what is changed ?, Is my system affected ?)
  • grouping (A single fix can affect multiple packages, but its still a single fix)
  • link to delta RPMs (for faster download and update)
  • post-update actions (Updating a kernel requires a reboot. Without it, the update has no effect)

This additional information is traditionally contained within a Patch and was only accessible to openSUSE tools.

Code11 provides this information now in an upstream-supported format, namely updateinfo.xml.

The link to delta RPMs was moved into the package metadata since its packaging information.

See here for more information on patch management.

Handling of scripts and messages

Scripts

RPM provides the ability to run (shell) scripts along with installation of packaged files. Such scripts are run by rpm and as such have some limitations.

Running scripts outside of RPM after package installation is possible through libzypp.

See here for more information on scripts.

Messages

Some updates need explicit admin notification, i.e. one must reboot after a kernel update.

Messages can also be displayed before a package update is applied.

See here for more information on messages.

Patterns

Patterns are no longer installed thereby making it easier to remove single packages listed in the pattern.

Code10 installed patterns, resulting in a dependency breakage when packages were removed. This could only be solved by removing the pattern and this action was not clearly defined.

Removing a pattern could either mean to remove all packages listed in the pattern or just to lift the dependency preventing removal of a single package.

Pattern removal is still under discussion.

Products

The concept of products is important for statistical reasons and to support registration of enterprise products.

See here for more information on product management.