ZYpp

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

ZYpp
ZYpp
当前版本
  • 17.32.0 (2024年3月22日;稳定版本)[1]
源代码库
编程语言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[4],并且是第一个这么做的Linux发行版。Zypper也被MeeGoSailfish OSTizen等行动操作系统采用。

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

历史

目的

在2003年连续收购了Ximian公司[5]SUSE公司[6]后,Novell决定要合并YaSTRed Carpet两个软件包管理器。在2005年,观察了其他的开源工具在当时的成熟度后,Novell公司觉得都不足以符合他们想要可以与已有的由Ximian公司及SUSE公司开发的Linux管理系统一起运作的要求,所以他们决定开发一个新的软件包管理器。Libzypp就是最后开发出来的函数库,目标是成为SUSE发行版的软件管理引擎,以及Novell ZENworks套装的Linux管理组件。

早期

Libzypp的求解器是Red Carpet求解器的移植,其被编写用来在安装好的系统中升级软件包[7]。虽然第一版ZYpp的求解器与ZMD守护行程在企业产品上运行的很好,但它导致了2006年5月发布的openSUSE 10.1有系统软件包无法运作。2006年12月发布的openSUSE 10.2修正了先前版本的一些问题,并将ZYpp升级至第二版。ZMD则于10.3版中移除,只在企业版产品中保留。虽然在openSUSE中的ZYpp第三版是相对比较好的软件包管理器,但与其他软件包管理系统而言,它存在一些缺陷,从而限制了它的速度表现。

SAT求解器集成

libzypp其中一个需要改进的地方是相依性求解器的速度。

像OPIUM项目[8][9]MANCOOSI[10]这些尝试修复SAT求解器的一个相依性求解问题的项目。像是APT有时可能会出现一些无法接受的缺陷。基于计算复杂性理论的SAT求解器,与传统求解器,如APT的运作方式不同[11]。它决定将SAT算法集成到ZYpp堆栈中;其求解器是基于minisat求解器[12]。 在openSUSE 11.0中的SAT求解器是基于两个主要且独立的区块:

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

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

参考数据

  1. . 2024年3月22日 [2024年3月26日].
  2. . [2014-01-29]. (原始内容存档于2021-10-11).
  3. . [2014-01-29]. (原始内容存档于2022-03-30).
  4. . [2014-01-29]. (原始内容存档于2011-10-07).
  5. . 2003-08-14 [2014-01-30]. (原始内容存档于2016-03-03).
  6. . 2003-11-04 [2014-01-30]. (原始内容存档于2016-03-04).
  7. .
  8. Tucker, Chris; Shuffelton, David; Jhala, Ranjit; Lerner, Sorin, (PDF), 29th International Conference on Software Engineering (ICSE'07), 2007 [2014-01-29], (原始内容存档 (PDF)于2009-02-19). 已忽略未知参数|separator=(建议使用|mode=) (帮助)
  9. EDOS Project Workpackage 2 Team, , EDOS Project Deliverable Work Package 2 (Deliverable 2), March 2006 [2014-01-29], (原始内容存档于2006-06-19). 已忽略未知参数|separator=(建议使用|mode=) (帮助)
  10. Le Berre, Daniel; Parrain, Anne, (PDF), ASPL 2008 (Limerick), 2008, Mancoosi.org [2014-01-29], (原始内容存档 (PDF)于2021-04-01). 已忽略未知参数|separator=(建议使用|mode=) (帮助)
  11. Burrows, Daniel, (PDF), June 2005 [2014-01-29], (原始内容存档 (PDF)于2016-04-16). 已忽略未知参数|separator=(建议使用|mode=) (帮助)
  12. . [2014-01-29]. (原始内容存档于2012-04-20).
  13. . 16 May 2008 [23 October 2008]. (原始内容存档于2011年8月15日).
  14. . 6 June 2008 [23 October 2008]. (原始内容存档于2022-03-21).

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.