Jump to content

ZYpp: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Added Template:Wikidata to repo, to display both ZYpp & Zypper.
 
(37 intermediate revisions by 30 users not shown)
Line 1: Line 1:
{{Short description|Linux package management library}}
{{advert|date=September 2012}}
{{Infobox software
{{Infobox software
| name = ZYpp
| name = ZYpp
| title = ZYpp
| title = ZYpp
| logo = <!-- Image name is enough -->
| logo = <!-- Image name is enough -->
| logo size =
| logo caption =
| logo caption =
| logo_size =
| logo alt =
| logo_alt =
| screenshot = Zypper info libzypp screenshot.png
| screenshot = <!-- Image name is enough -->
| caption = A {{code|zypper info}} command showing information of libzypp
| caption =
| screenshot size =
| screenshot_size =
| screenshot alt =
| screenshot_alt =
| collapsible =
| collapsible =
| author =
| author =
| developer =
| developer =
| released = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| released = {{Start date and age|2006|1|14}}<ref>[https://github.com/openSUSE/libzypp/blob/90acb93974a99bea7409516be55d6acdc35099f7/package/libzypp.changes Earliest known changelog]</ref>
| discontinued =
| discontinued =
| latest release version = 13.9.0
| latest release version = {{Wikidata|properties|references|edit|P348}} {{Wikidata|properties|references|edit|Q9393236|P348}}
| latest release date = {{Start date and age|2013|11|19}}
| latest release date = {{Start date and age|{{Wikidata|qualifier|single|P348|P577}}}} {{Start date and age|{{Wikidata|qualifier|single|Q9393236|P348|P577}}}}
| latest preview version = {{Wikidata|properties|references|edit|P348|P548=Q51930650}} {{Wikidata|properties|references|edit|Q9393236|P348|P548=Q51930650}}
| latest preview version =
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| latest preview date = {{Start date and age|{{Wikidata|qualifier|single|P348|P548=Q51930650|P577}}}} {{Start date and age|{{Wikidata|qualifier|single|Q9393236|P348|P548=Q51930650|P577}}}}
| repo = {{Wikidata|properties|references|edit|P1324}} {{Wikidata|properties|references|edit|Q9393236|P1324}}
| frequently updated = <!-- DO NOT include this parameter unless you know what it does -->
| programming language = * ZYpp: {{Wikidata|properties|references|edit|P277}}
| status =
* Zypper: {{Wikidata|properties|references|edit|Q9393236|P277}}
| programming language = [[C++]]
| operating system = [[Linux]]
| operating system = [[Linux]]
| platform =
| platform =
Line 29: Line 29:
| language count = <!-- DO NOT include this parameter unless you know what it does -->
| language count = <!-- DO NOT include this parameter unless you know what it does -->
| language footnote =
| language footnote =
| genre = [[Package management system]]
| genre = [[Package manager]]
| license = [[GNU General Public License]]
| license = [[GNU General Public License]]
| alexa =
| website = {{URL|https://en.opensuse.org/Portal:Libzypp}}
| website = {{URL|http://en.opensuse.org/Portal:Libzypp|The LibZYpp Portal}}
| standard =
| standard =
| AsOf =
| AsOf =
}}
}}


'''ZYpp''' (or '''libzypp''') is a [[package management]] engine that powers Linux applications like [[YaST]], Zypper and the [[openSUSE]]/[[SUSE Linux distributions|SUSE Linux Enterprise]] implementation of [[PackageKit]].<ref>{{cite web|url=http://doc.opensuse.org/projects/libzypp/HEAD/|title=Libzypp documentation}}</ref> Unlike other common package managers, it provides a powerful [[Boolean satisfiability problem|satisfiability solver]] to compute package dependencies and a convenient package management API.<ref>{{cite web|url=http://en.opensuse.org/Portal:Libzypp|title=Libzypp project homepage}}</ref> It is an [[open source]] and [[free software]] project sponsored by [[Novell]] and licensed under the terms of the [[GNU General Public License]] v2 or later. ZYpp is implemented in the [[C++ programming language]].
'''ZYpp''' (or '''libzypp'''; ''"Zen / YaST Packages Patches Patterns Products"''<ref>{{Cite web|url=https://en.opensuse.org/Acronyms#Z|title = Acronyms - openSUSE Wiki}}</ref>) is a [[package manager]] engine that powers Linux applications like [[YaST]], Zypper and the implementation of [[PackageKit]] for [[openSUSE]] and [[SUSE Linux Enterprise]].<ref>{{cite web |url=https://doc.opensuse.org/projects/libzypp/HEAD/|title=Libzypp documentation}}</ref> Unlike some more basic package managers, it provides a [[Boolean satisfiability problem|satisfiability solver]] to compute package dependencies.<ref>{{cite web |url=https://en.opensuse.org/Portal:Libzypp|title=Libzypp project homepage}}</ref> It is a [[free and open-source software]] project sponsored by [[SUSE S.A.|SUSE]] and licensed under the terms of the [[GNU General Public License]] v2 or later. ZYpp is implemented mostly in the programming language [[C++]].


'''Zypper''' is the native [[command-line interface]] of the ZYpp [[package manager]] for installing, removing, updating and querying software packages of local or remote (networked) media. Its graphical equivalent is the [[YaST]] package manager module. It has been used in [[openSUSE]] since version 10.2 beta1. In openSUSE 11.1, Zypper reached version 1.0. On June 2, 2009, [[Ark Linux]] announced that it has completed its review of dependency solvers and has chosen ZYpp and its tools to replace the aging apt-rpm,<ref>{{cite web|url=http://arklinux.wordpress.com/2009/06/02/another-look-at-linux-packaging-systems/|title=Another look at Linux packaging systems}}</ref> as the first distribution to do so. Zypper is also assimilated in the [[MeeGo]], [[Sailfish OS]] and [[Tizen]] mobile Linux distributions.
'''Zypper''' is the native [[command-line interface]] of the ZYpp [[package manager]] to install, remove, update and query software packages of local or remote (networked) media. Its graphical equivalent is the [[YaST]] package manager module. It has been used in [[openSUSE]] since version 10.2 beta1. In openSUSE 11.1, Zypper reached version 1.0. On June 2, 2009, Ark Linux announced that it has completed its review of dependency solvers and has chosen ZYpp and its tools to replace the aging [[APT-RPM]],<ref>{{cite web |url=https://arklinux.wordpress.com/2009/06/02/another-look-at-linux-packaging-systems/|title=Another look at Linux packaging systems|date=June 2009}}</ref> as the first distribution to do so. Zypper is also part of the mobile Linux distributions [[MeeGo]], [[Sailfish OS]], and [[Tizen]].


==History==
==History==


===Purpose===
===Purpose===
Following its consecutive acquisitions of [[Ximian]] and [[SUSE Linux distributions|SuSE GmbH]] in 2003, [[Novell]] decided to merge both package management systems [[YaST]] package manager and [[Red Carpet (software)|Red Carpet]] in a best of breed approach, as the two solutions so far were used at Novell. Looking at the existing open source tools and their maturity available back in 2005, none of those fulfilled the requirements and were able to work smoothly with the existing Linux management infrastructure software developed by Ximian and SUSE, so it was decided to get the best ideas from existing pieces and to work on a new implementation. Libzypp, the resulting library, was aimed to be the software management engine of the [[SUSE Linux distributions|SUSE distributions]] and the Linux Management component of the [[Novell ZENworks|ZENworks Management]] suite.
Following its consecutive acquisitions of [[Ximian]] and [[SUSE Linux|SuSE GmbH]] in 2003, [[Novell]] decided to merge both package management systems, [[YaST]] package manager and [[Red Carpet (software)|Red Carpet]], in a best of breed approach, as the two solutions so far were used at Novell. Looking at the extant open source tools and their maturity available back in 2005, none fulfilled the requirements, and were able to work smoothly with the extant Linux management infrastructure software developed by Ximian and SUSE, so it was decided to get the best ideas from extant pieces and to work on a new implementation. Libzypp, the resulting library, was planned to be the software management engine of the [[SUSE Linux|SUSE distributions]] and the Linux Management component of the [[Novell ZENworks]] Management suite.


===The early days===
===Early days===
The Libzypp's solver was a port from the red carpet solver, which was written to update packages in an already installed system. Using it for the complete installation process brought it to its limits, and adding extensions such as support for weak dependencies and patches made it fragile and unpredictable.<ref>{{cite web|url=http://git.opensuse.org/autodocs/satsolver/HEAD/historypage.html|title=Michael Schroeder, History of satsolver}}</ref> Although this first version of ZYpp's solver worked satisfactorily on the company enterprise products with the coupled ZMD daemon, it led to an openSUSE 10.1 release which came out in May 2006 with a system package not working as expected. In December 2006, the openSUSE 10.2 release corrected some defects of the previous release, using the revisited ZYpp v2. ZMD was subsequently removed from the 10.3 release and reserved only for the company Enterprise products. While ZYpp v3 provided openSUSE with a relatively good package manager, equivalent to other existing packages management systems, it suffered from some flaws in its implementation which greatly limited its speed performance.
The Libzypp's solver was a port from the Red Carpet solver, which was written to update packages in installed systems. Using it for the full installing process brought it to its limits, and adding extensions such as support for weak dependencies and patches made it fragile and unpredictable.<ref>{{cite web |url=https://github.com/openSUSE/libsolv/blob/master/doc/libsolv-history.txt|title=Michael Schroeder, History of satsolver|website=[[GitHub]]|date=26 November 2021}}</ref> Although this first version of ZYpp's solver worked satisfactorily, on the company enterprise products with the coupled ZMD daemon, it led to an openSUSE 10.1 release which came out in May 2006 with a system package not working as expected. In December 2006, the openSUSE 10.2 release corrected some defects of the prior release, using the revisited ZYpp v2. ZMD was subsequently removed from the 10.3 release and reserved for only the company Enterprise products. While ZYpp v3 provided openSUSE with a relatively good package manager, equivalent to other existing package managers, it suffered from some flaws in its implementation which greatly limited its speed performance.


===SAT solver integration===
===SAT solver integration===
An area where libzypp needed significant improvement was the speed of the dependency solver. libsolv is being written and distributed under the [[Revised BSD License]].<ref>{{cite web |url=https://github.com/openSUSE/libsolv |title=libsolv on github</ref>
An area where libzypp needed improvement was the speed of the dependency solver. libsolv is being written and released under the [[revised BSD license]].<ref>{{cite web |url=https://github.com/openSUSE/libsolv |title=libsolv on github|website=[[GitHub]]|date=26 November 2021}}</ref>

Projects like Optimal Package Install/Uninstall Manager (OPIUM)<ref>{{citation|last1=Tucker|first1=Chris|last2=Shuffelton|first2=David|last3=Jhala|first3=Ranjit|last4=Lerner|first4=Sorin|url=https://www.cs.ucsd.edu/~lerner/papers/opium.pdf|title=OPIUM: OPtimal Package Install/Uninstall Manager|work=29th International Conference on Software Engineering|publisher=ICSE'07|year=2007|postscript=.}}</ref><ref>{{citation|author=EDOS Project Workpackage 2 Team|url=http://www.edos-project.org/xwiki/bin/Main/Deliverables|title=Report on formal management of software dependencies|work=EDOS Project Deliverable Work Package 2|publisher=Deliverable 2|date=March 2006|postscript=.|access-date=2009-06-06|archive-date=2006-06-19|archive-url=https://archive.today/20060619200622/http://www.edos-project.org/xwiki/bin/Main/Deliverables|url-status=dead}}</ref> and [[MANCOOSI]]<ref>{{citation|last1=Le Berre|first1=Daniel|last2=Parrain|first2=Anne|title=On SAT Technologies for dependency management and beyond|work=ASPL 2008|publisher=Limerick|year=2008|url=http://www.mancoosi.org/papers/leberre-sat-beyond.pdf|at=Mancoosi.org|postscript=.}}</ref> were trying to fix dependency solving issues with a [[SAT solver]]. Traditional solvers like [[Advanced Packaging Tool]] (APT) sometimes show unacceptable deficiencies. It was decided to integrate SAT algorithms into the ZYpp stack; the solver algorithms used were based on the popular minisat solver.<ref>{{cite web |url=http://minisat.se/|title=Minisat.se}}</ref>


Projects like OPIUM (Optimal Package Install/Uninstall Manager)<ref>{{citation|last1=Tucker|first1=Chris|last2=Shuffelton|first2=David|last3=Jhala|first3=Ranjit|last4=Lerner|first4=Sorin|url=http://www.cs.ucsd.edu/~lerner/papers/opium.pdf|title=OPIUM: OPtimal Package Install/Uninstall Manager|work=29th International Conference on Software Engineering|publisher=ICSE'07|year=2007|separator=.|postscript=.}}</ref><ref>{{citation|author=EDOS Project Workpackage 2 Team|url=http://www.edos-project.org/xwiki/bin/Main/Deliverables|title=Report on formal management of software dependencies|work=EDOS Project Deliverable Work Package 2|publisher=Deliverable 2|date=March 2006|separator=.|postscript=.}}</ref> and [[MANCOOSI]]<ref>{{citation|last1=Le Berre|first1=Daniel|last2=Parrain|first2=Anne|title=On SAT Technologies for dependency management and beyond|work=ASPL 2008|publisher=Limerick|year=2008|url=http://www.mancoosi.org/papers/leberre-sat-beyond.pdf|at=Mancoosi.org|separator=.|postscript=.}}</ref> were trying to fix dependency solving issues with a [[Boolean satisfiability problem|SAT solver]]. Traditional solvers like Apt sometimes show unacceptable deficiencies. SAT solvers, based on [[computational complexity theory]], work differently from the usual tools such as Apt.<ref>{{citation|last=Burrows|first=Daniel|url=http://people.debian.org/~dburrows/model.pdf|title=Modelling and Resolving Software Dependencies|date=June 2005|separator=.|postscript=.}}</ref> It was decided to integrate SAT algorithms into the ZYpp stack; the solver algorithms used were based on the popular minisat solver.<ref>{{cite web|url=http://minisat.se/|title=Minisat.se}}</ref>
The SAT solver implementation as it appears in openSUSE 11.0 is based on two major, but independent, blocks:
The SAT solver implementation as it appears in openSUSE 11.0 is based on two major, but independent, blocks:
* Using a [[data dictionary]] approach to store and retrieve package and dependency information. A new solv format was created, which stores a repository as a string dictionary, a relation dictionary and then all package dependencies. Reading and merging multiple solv repositories takes just some milliseconds.
* Using a [[data dictionary]] approach to store and retrieve package and dependency information. A new solv format was created, which stores a repository as a string dictionary, a relation dictionary and then all package dependencies. Reading and merging multiple solv repositories takes only milliseconds.
* Using [[satisfiability]] for computing package dependencies. The [[Boolean satisfiability problem]] is a well-researched problem with many exemplar solvers available; it is very fast, as package solving complexity is very low compared to other areas where SAT solvers are used. In addition, it does not require complex algorithms and it can provide understandable suggestions by calculating proof of why a problem is unsolvable.
* Using [[satisfiability]] for computing package dependencies. The [[Boolean satisfiability problem]] is a well-researched problem with many exemplar solvers available. It is very fast, as package solving complexity is very low compared to other areas where SAT solvers are used. Also, it does not need complex algorithms and can provide understandable suggestions by calculating proof of why a problem is unsolvable.


After several months of work, the benchmark results of this fourth ZYpp version integrated with the SAT solver are more than encouraging, moving YaST and Zypper ahead of other rpm-based package managers in terms of speed and footprint.<ref>{{cite web| url=http://duncan.mac-vicar.com/2008/05/17/yum-and-zypp-speed-memory-usage/ | title=yum and ZYpp speed / memory usage | date=16 May 2008 | accessdate=23 October 2008}}</ref><ref>{{cite web| url=http://news.opensuse.org/2008/06/06/sneak-peeks-at-opensuse-110-package-management-with-duncan-mac-vicar/ | title=Sneak Peeks at openSUSE 11.0: Package Management, with Duncan Mac-Vicar | date=6 June 2008 | accessdate=23 October 2008}}</ref>
After several months of work, the benchmark results of this fourth ZYpp version integrated with the SAT solver are more than encouraging, moving YaST and Zypper ahead of other RPM-based package managers in speed and size.<ref>{{cite web |url=http://duncan.mac-vicar.com/2008/05/17/yum-and-zypp-speed-memory-usage.html |title=yum and ZYpp speed / memory usage |date=16 May 2008 |access-date=23 October 2008 }}{{Dead link|date=March 2023 |bot=InternetArchiveBot |fix-attempted=yes }}</ref><ref>{{cite web |url=https://news.opensuse.org/2008/06/06/sneak-peeks-at-opensuse-110-package-management-with-duncan-mac-vicar/ |title=Sneak Peeks at openSUSE 11.0: Package Management, with Duncan Mac-Vicar |date=6 June 2008 |access-date=15 October 2017}}</ref>


==See also==
==See also==
{{Portal|Free software}}
{{Portal|Free and open-source software}}
* [[openSUSE]]
* [[openSUSE]]
* [[YaST]]
* [[YaST]]
Line 68: Line 68:


==External links==
==External links==
* [http://en.opensuse.org/Portal:Libzypp ZYpp official website]
* {{Official website|https://en.opensuse.org/Portal:Libzypp}}
* [http://news.opensuse.org/2007/08/26/sneak-peeks-at-opensuse-103-new-package-management/ Sneak peeks at openSUSE new package management]
* [https://news.opensuse.org/2007/08/26/sneak-peeks-at-opensuse-103-new-package-management/ Sneak peeks at openSUSE new package management]
* [http://distrowatch.com/weekly.php?issue=20080602#feature Distrowatch.com]
* [https://distrowatch.com/weekly.php?issue=20080602#feature DistroWatch.com]


{{Linux package management systems}}
{{Linux package management systems}}
Line 79: Line 79:
[[Category:Linux package management-related software]]
[[Category:Linux package management-related software]]
[[Category:SUSE Linux]]
[[Category:SUSE Linux]]
[[Category:Software using the GPL license]]
[[Category:Free software programmed in C++]]

Latest revision as of 12:55, 2 May 2024

ZYpp
Initial releaseJanuary 14, 2006; 18 years ago (2006-01-14)[1]
Stable release
17.34.2[2] Edit this on Wikidata 1.14.74[3] Edit this on Wikidata / 26 June 2024; 1 day ago (26 June 2024) 26 June 2024; 1 day ago (26 June 2024)
Repositoryhttps://github.com/openSUSE/libzypp Edit this on Wikidata https://github.com/openSUSE/zypper Edit this on Wikidata
Written in
Operating systemLinux
TypePackage manager
LicenseGNU General Public License
Websiteen.opensuse.org/Portal:Libzypp

ZYpp (or libzypp; "Zen / YaST Packages Patches Patterns Products"[6]) is a package manager engine that powers Linux applications like YaST, Zypper and the implementation of PackageKit for openSUSE and SUSE Linux Enterprise.[7] Unlike some more basic package managers, it provides a satisfiability solver to compute package dependencies.[8] It is a free and open-source software project sponsored by SUSE and licensed under the terms of the GNU General Public License v2 or later. ZYpp is implemented mostly in the programming language C++.

Zypper is the native command-line interface of the ZYpp package manager to install, remove, update and query software packages of local or remote (networked) media. Its graphical equivalent is the YaST package manager module. It has been used in openSUSE since version 10.2 beta1. In openSUSE 11.1, Zypper reached version 1.0. On June 2, 2009, Ark Linux announced that it has completed its review of dependency solvers and has chosen ZYpp and its tools to replace the aging APT-RPM,[9] as the first distribution to do so. Zypper is also part of the mobile Linux distributions MeeGo, Sailfish OS, and Tizen.

History[edit]

Purpose[edit]

Following its consecutive acquisitions of Ximian and SuSE GmbH in 2003, Novell decided to merge both package management systems, YaST package manager and Red Carpet, in a best of breed approach, as the two solutions so far were used at Novell. Looking at the extant open source tools and their maturity available back in 2005, none fulfilled the requirements, and were able to work smoothly with the extant Linux management infrastructure software developed by Ximian and SUSE, so it was decided to get the best ideas from extant pieces and to work on a new implementation. Libzypp, the resulting library, was planned to be the software management engine of the SUSE distributions and the Linux Management component of the Novell ZENworks Management suite.

Early days[edit]

The Libzypp's solver was a port from the Red Carpet solver, which was written to update packages in installed systems. Using it for the full installing process brought it to its limits, and adding extensions such as support for weak dependencies and patches made it fragile and unpredictable.[10] Although this first version of ZYpp's solver worked satisfactorily, on the company enterprise products with the coupled ZMD daemon, it led to an openSUSE 10.1 release which came out in May 2006 with a system package not working as expected. In December 2006, the openSUSE 10.2 release corrected some defects of the prior release, using the revisited ZYpp v2. ZMD was subsequently removed from the 10.3 release and reserved for only the company Enterprise products. While ZYpp v3 provided openSUSE with a relatively good package manager, equivalent to other existing package managers, it suffered from some flaws in its implementation which greatly limited its speed performance.

SAT solver integration[edit]

An area where libzypp needed improvement was the speed of the dependency solver. libsolv is being written and released under the revised BSD license.[11]

Projects like Optimal Package Install/Uninstall Manager (OPIUM)[12][13] and MANCOOSI[14] were trying to fix dependency solving issues with a SAT solver. Traditional solvers like Advanced Packaging Tool (APT) sometimes show unacceptable deficiencies. It was decided to integrate SAT algorithms into the ZYpp stack; the solver algorithms used were based on the popular minisat solver.[15]

The SAT solver implementation as it appears in openSUSE 11.0 is based on two major, but independent, blocks:

  • Using a data dictionary approach to store and retrieve package and dependency information. A new solv format was created, which stores a repository as a string dictionary, a relation dictionary and then all package dependencies. Reading and merging multiple solv repositories takes only milliseconds.
  • Using satisfiability for computing package dependencies. The Boolean satisfiability problem is a well-researched problem with many exemplar solvers available. It is very fast, as package solving complexity is very low compared to other areas where SAT solvers are used. Also, it does not need complex algorithms and can provide understandable suggestions by calculating proof of why a problem is unsolvable.

After several months of work, the benchmark results of this fourth ZYpp version integrated with the SAT solver are more than encouraging, moving YaST and Zypper ahead of other RPM-based package managers in speed and size.[16][17]

See also[edit]

References[edit]

  1. ^ Earliest known changelog
  2. ^ "Release 17.34.2". 26 June 2024. Retrieved 27 June 2024.
  3. ^ "Release 1.14.74". 26 June 2024. Retrieved 27 June 2024.
  4. ^ a b c d e f g h i j "The zypp Open Source Project on Open Hub: Languages Page". Open Hub. Retrieved 2 May 2024.
  5. ^ a b c d e f g "GitHub - openSUSE/zypper: World's most powerful command line package manager". GitHub. Retrieved 2 May 2024.
  6. ^ "Acronyms - openSUSE Wiki".
  7. ^ "Libzypp documentation".
  8. ^ "Libzypp project homepage".
  9. ^ "Another look at Linux packaging systems". June 2009.
  10. ^ "Michael Schroeder, History of satsolver". GitHub. 26 November 2021.
  11. ^ "libsolv on github". GitHub. 26 November 2021.
  12. ^ Tucker, Chris; Shuffelton, David; Jhala, Ranjit; Lerner, Sorin (2007), "OPIUM: OPtimal Package Install/Uninstall Manager" (PDF), 29th International Conference on Software Engineering, ICSE'07.
  13. ^ EDOS Project Workpackage 2 Team (March 2006), "Report on formal management of software dependencies", EDOS Project Deliverable Work Package 2, Deliverable 2, archived from the original on 2006-06-19, retrieved 2009-06-06.{{citation}}: CS1 maint: numeric names: authors list (link)
  14. ^ Le Berre, Daniel; Parrain, Anne (2008), "On SAT Technologies for dependency management and beyond" (PDF), ASPL 2008, Limerick, Mancoosi.org.
  15. ^ "Minisat.se".
  16. ^ "yum and ZYpp speed / memory usage". 16 May 2008. Retrieved 23 October 2008.[permanent dead link]
  17. ^ "Sneak Peeks at openSUSE 11.0: Package Management, with Duncan Mac-Vicar". 6 June 2008. Retrieved 15 October 2017.

External links[edit]