ZYpp (或称libzypp) 是一个软件包管理引擎,通常在openSUSE/SUSE Linux EnterpriseYaST、Zypper或PackageKit为前端使用[1]。它提供一个强力的可满足性求解器来计算软件包相依性,也提供了一组方便的软件包管理API[2]。它是一个由Novell所赞助的开放原始码且为自由软件的项目,采用GNU通用公共许可证第二版或更新许可。

ZYpp
ZYpp
当前版本17.25.8(2021年2月24日,​3年前​(2021-02-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也被MeeGoSailfish OSTizen等移动操作系统采用。

openSUSE的开放构建服务亦提供一些openSUSE官方所没有的软件。

历史

编辑

目的

编辑

在2003年连续收购了Ximian公司[4]SUSE公司[5]后,Novell决定要合并YaSTRed Carpet英语Red Carpet (software)两个软件包管理器。在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英语MANCOOSI[9]这些尝试修复SAT求解器的一个相依性求解问题的项目。像是APT有时可能会出现一些无法接受的缺陷。基于计算复杂性理论的SAT求解器,与传统求解器,如APT的运作方式不同[10]。它决定将SAT算法集成到ZYpp堆栈中;其求解器是基于minisat求解器[11]。 在openSUSE 11.0中的SAT求解器是基于两个主要且独立的区块:

  • 使用数据字典来存储及检查软件包的相依性资讯。新的求解格式被建立,用来存储包库作为字符串字典,关系字典以及所有软件包的相依性。读取及合并多个求解库只需要很短的时间。
  • 使用可满足性英语satisfiability来计算软件包相依性。布尔可满足性问题提供许多示例求解器,并已经过长久研究;它相当快,因为相较其他使用SAT求解器的领域来说,软件包相依性的复杂度较低。此外,它不需要复杂的算法,且在计算无法解决的问题时可以提供可理解的建议。

经过几个月的工作,集成了SAT求解器的第四版ZYpp在基准测试上获取了不错的成绩,让YaST及Zypper比其他基于RPM的软件包管理器相比起来有较佳的速度及占用空间[12][13]

参见

编辑

参考资料

编辑
  1. ^ Libzypp documentation. [2014-01-29]. (原始内容存档于2021-10-11). 
  2. ^ Libzypp project homepage. [2014-01-29]. (原始内容存档于2022-03-30). 
  3. ^ Another look at Linux packaging systems. [2014-01-29]. (原始内容存档于2011-10-07). 
  4. ^ Novell Acquires Ximian to Expand Linux Solutions and Open Source Commitment. 2003-08-14 [2014-01-30]. (原始内容存档于2016-03-03). 
  5. ^ Novell Announces Agreement to Acquire Leading Enterprise Linux Technology Company SUSE LINUX. 2003-11-04 [2014-01-30]. (原始内容存档于2016-03-04). 
  6. ^ Michael Schroeder, History of satsolver. 
  7. ^ 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). 
  8. ^ 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). 
  9. ^ 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). 
  10. ^ Burrows, Daniel, Modelling and Resolving Software Dependencies (PDF), June 2005 [2014-01-29], (原始内容存档 (PDF)于2016-04-16). 
  11. ^ Minisat.se. [2014-01-29]. (原始内容存档于2012-04-20). 
  12. ^ yum and ZYpp speed / memory usage. 16 May 2008 [23 October 2008]. (原始内容存档于2011年8月15日). 
  13. ^ Sneak Peeks at openSUSE 11.0: Package Management, with Duncan Mac-Vicar. 6 June 2008 [23 October 2008]. (原始内容存档于2022-03-21). 

外部链接

编辑