Jump to content

ZYpp

From Alfawiki
ZYpp
Company typeFree software
IndustrySoftware package management
Founded2005
FounderNovell
Headquarters
Worldwide
Area served
Linux distributions (openSUSE, SUSE Linux Enterprise, MeeGo, Sailfish OS, Tizen)
Key people
Sponsored by SUSE
ProductsPackage management engine (backend), SAT solver integration
OwnerSUSE

ZYpp (also known as libzypp; an acronym for "Zen / YaST Packages Patches Patterns Products") serves as the backend package management engine for Linux utilities such as YaST, Zypper, and the PackageKit implementation utilized by openSUSE and SUSE Linux Enterprise. Unlike more basic package managers, it incorporates a SAT solver to effectively handle package dependency resolution. Sponsored by SUSE, ZYpp is distributed as free, open-source software under the terms of the GNU General Public License version 2 or later, with its core primarily implemented in C++.

Zypper functions as ZYpp’s dedicated command-line interface, facilitating software package installation, removal, updating, and querying from both local and remote repositories. Its graphical equivalent is provided through the YaST package management module. Zypper has been a fundamental component of openSUSE starting with version 10.2 beta1 and reached its 1.0 release milestone in openSUSE 11.1. Additionally, it is employed in mobile Linux platforms including MeeGo, Sailfish OS, and Tizen.

Purpose

After acquiring both Ximian and SuSE GmbH in 2003, Novell consolidated their package management technologies—YaST and Red Carpet—by selecting the strongest elements from each system. By 2005, existing open-source solutions failed to meet the integration needs of Ximian and SUSE's Linux management frameworks, leading to the creation of a new library. This development resulted in Libzypp, engineered to serve as the software management backbone for SUSE distributions and as the Linux Management component within the Novell ZENworks suite.

Early days

The original dependency solver within Libzypp was adapted from Red Carpet’s technology, initially intended solely for updating installed packages. Expanding its role to support full package installation revealed significant shortcomings; incorporating features such as weak dependencies introduced instability. Although it operated effectively in enterprise environments through the ZMD daemon, it generated problems for users of openSUSE 10.1 (released May 2006). Stability enhancements arrived with ZYpp version 2 in openSUSE 10.2 (December 2006). Subsequently, ZMD was phased out of openSUSE 10.3 and reserved exclusively for enterprise deployments. While ZYpp version 3 presented a competitive package manager solution, certain implementation issues limited its overall performance speed.

SAT solver integration

Enhancing the speed of dependency resolution was a critical objective. To meet this challenge, Libsolv was created and released under the revised BSD license.

Research initiatives such as OPIUM and MANCOOSI investigated the application of SAT solvers to dependency management to address weaknesses found in traditional tools like the Advanced Packaging Tool (APT). Novell incorporated SAT-based algorithms leveraging the minisat solver into the ZYpp framework.

The SAT solver introduced in openSUSE 11.0 includes two principal innovations:

  • A data dictionary model that records package and dependency information using a novel solv file format, enabling rapid repository loading and merging.
  • Application of Boolean satisfiability problem-solving techniques to efficiently calculate dependencies, delivering swift performance alongside clear diagnostics for unsolvable conflicts.

Performance evaluations demonstrated that this fourth iteration of ZYpp integrated with the SAT solver surpassed other RPM-based package managers regarding speed and memory consumption, significantly advancing capabilities within YaST and Zypper.

Front ends

In SUSE, YaST has traditionally functioned as the graphical interface for ZYpp. Additionally, ZYpp is compatible with PackageKit. An emerging front end based on Qt, named Myrlyn, is under development to succeed YaST in openSUSE Leap 16.0.

External links