ZYpp
ZYpp (或称libzypp) 是一个软件包管理引擎,通常在openSUSE/SUSE Linux Enterprise以YaST、Zypper或PackageKit为前端使用[1]。它提供一个强力的可满足性求解器来计算软件包相依性,也提供了一组方便的软件包管理API[2]。它是一个由Novell所赞助的开放原始码且为自由软件的项目,采用GNU通用公共许可证第二版或更新许可。
当前版本 | 17.25.8(2021年2月24日 | )
---|---|
原始码库 | |
编程语言 | C++ |
操作系统 | Linux |
类型 | 软件包管理系统 |
许可协议 | GNU通用公共许可证 |
网站 | The LibZYpp Portal |
Zypper为ZYpp软件包管理器原生的命令行界面前端,可用以安装、移除、升级及查询本机或远程(通常为网络)媒体的软件包。它的图形等价接口为YaST软件包管理器模块。它在openSUSE上于版本10.2 beta1开始使用。在openSUSE 11.1上,Zypper发布了1.0版。2009年6月2日,Ark Linux宣布其已经完成对其相依性求解器的审阅,并选择ZYpp及其前端接口来取代老化的apt-rpm[3],并且是第一个这么做的Linux发行版。Zypper也被MeeGo,Sailfish OS及Tizen等移动操作系统采用。
openSUSE的开放构建服务亦提供一些openSUSE官方所没有的软件。
历史
目的
在2003年连续收购了Ximian公司[4]及SUSE公司[5]后,Novell决定要合并YaST及Red Carpet两个软件包管理器。在2005年,观察了其他的开源工具在当时的成熟度后,Novell公司觉得都不足以符合他们想要可以与已有的由Ximian公司及SUSE公司开发的Linux管理系统一起运作的要求,所以他们决定开发一个新的软件包管理器。Libzypp就是最后开发出来的函数库,目标是成为SUSE发行版的软件管理引擎,以及Novell ZENworks套装的Linux管理组件。
早期
Libzypp的求解器是Red Carpet求解器的移植,其被编写用来在安装好的系统中升级软件包[6]。虽然第一版ZYpp的求解器与ZMD守护进程在企业产品上运行的很好,但它导致了2006年5月发布的openSUSE 10.1有系统软件包无法运作。2006年12月发布的openSUSE 10.2修正了先前版本的一些问题,并将ZYpp升级至第二版。ZMD则于10.3版中移除,只在企业版产品中保留。虽然在openSUSE中的ZYpp第三版是相对比较好的软件包管理器,但与其他软件包管理系统而言,它存在一些缺陷,从而限制了它的速度表现。
SAT求解器集成
libzypp其中一个需要改进的地方是相依性求解器的速度。
像OPIUM项目[7][8]及MANCOOSI[9]这些尝试修复SAT求解器的一个相依性求解问题的项目。像是APT有时可能会出现一些无法接受的缺陷。基于计算复杂性理论的SAT求解器,与传统求解器,如APT的运作方式不同[10]。它决定将SAT算法集成到ZYpp堆栈中;其求解器是基于minisat求解器[11]。 在openSUSE 11.0中的SAT求解器是基于两个主要且独立的区块:
- 使用数据字典来存储及检查软件包的相依性资讯。新的求解格式被建立,用来存储包库作为字符串字典,关系字典以及所有软件包的相依性。读取及合并多个求解库只需要很短的时间。
- 使用可满足性来计算软件包相依性。布尔可满足性问题提供许多示例求解器,并已经过长久研究;它相当快,因为相较其他使用SAT求解器的领域来说,软件包相依性的复杂度较低。此外,它不需要复杂的算法,且在计算无法解决的问题时可以提供可理解的建议。
经过几个月的工作,集成了SAT求解器的第四版ZYpp在基准测试上获取了不错的成绩,让YaST及Zypper比其他基于RPM的软件包管理器相比起来有较佳的速度及占用空间[12][13]。
参见
参考资料
- ^ Libzypp documentation. [2014-01-29]. (原始内容存档于2021-10-11).
- ^ Libzypp project homepage. [2014-01-29]. (原始内容存档于2022-03-30).
- ^ Another look at Linux packaging systems. [2014-01-29]. (原始内容存档于2011-10-07).
- ^ Novell Acquires Ximian to Expand Linux Solutions and Open Source Commitment. 2003-08-14 [2014-01-30]. (原始内容存档于2016-03-03).
- ^ Novell Announces Agreement to Acquire Leading Enterprise Linux Technology Company SUSE LINUX. 2003-11-04 [2014-01-30]. (原始内容存档于2016-03-04).
- ^ Michael Schroeder, History of satsolver.
- ^ Tucker, Chris; Shuffelton, David; Jhala, Ranjit; Lerner, Sorin, OPIUM: OPtimal Package Install/Uninstall Manager (PDF), 29th International Conference on Software Engineering (ICSE'07), 2007 [2014-01-29], (原始内容存档 (PDF)于2009-02-19).
- ^ EDOS Project Workpackage 2 Team, Report on formal management of software dependencies, EDOS Project Deliverable Work Package 2 (Deliverable 2), March 2006 [2014-01-29], (原始内容存档于2006-06-19).
- ^ Le Berre, Daniel; Parrain, Anne, On SAT Technologies for dependency management and beyond (PDF), ASPL 2008 (Limerick), 2008, Mancoosi.org [2014-01-29], (原始内容存档 (PDF)于2021-04-01).
- ^ Burrows, Daniel, Modelling and Resolving Software Dependencies (PDF), June 2005 [2014-01-29], (原始内容存档 (PDF)于2016-04-16).
- ^ Minisat.se. [2014-01-29]. (原始内容存档于2012-04-20).
- ^ yum and ZYpp speed / memory usage. 16 May 2008 [23 October 2008]. (原始内容存档于2011年8月15日).
- ^ Sneak Peeks at openSUSE 11.0: Package Management, with Duncan Mac-Vicar. 6 June 2008 [23 October 2008]. (原始内容存档于2022-03-21).