openSUSE:Libzypp 介绍
Libzypp
提供了以下程序用于软件包管理
- YOU - YaST 在线更新(仅更新)
- yast 软件包管理器(“yast sw_single”)用于安装和删除(但不更新)
- apt-rpm 作为 yast 和 YOU 的替代方案
随着 ,SUSE 集成了一个新的软件包管理器解析器库,名为 "libzypp"。
libzypp 是 SUSE 的 yast2 软件包管理器和 Ximian 的 libredcarpet 的集成。在 Novell,迄今为止使用了两种解决方案 - Red Carpet 和 YaST 软件包管理器 - 并决定以最佳实践的方式将两者合并。
SUSE Linux 的优势是
- 比以前更好的解析器
- 更多关于为什么安装软件包或找不到解决方案的信息
- 更好地集成多年来添加到我们软件包管理器中的所有功能。
- 命令行界面(“rug”)
- 统一处理软件包 *和* 补丁
- 更新软件包的依赖项处理
- 更好地处理选择(我们现在称之为“模式”)
- 远程管理(尚未在 SUSE Linux 10.1 中)
- 安装期间的附加仓库
- 更灵活地处理不同的仓库,例如,可以为每个仓库拥有额外的模式。
- 基于语言(字体、翻译等)或硬件(驱动程序)的附加依赖项
Libzypp 的历史
- 因此,在连续收购 和 之后, 决定将 RedCarpet 和 YaST 软件包管理器合并到其 Zen 管理网络中,该网络旨在管理大型异构环境。虽然生成的管理器 ZYpp 在具有 ZMD 守护进程的公司产品上运行良好,但它不太适合公共分发,导致 openSUSE 10.1 版本发布了一个软件包系统无法按预期工作。
- openSUSE 版本修复了先前版本的一些缺陷,使用了修订后的 libzypp v2。然后,ZMD 最终从 版本中永久删除,并仅保留给公司企业产品。虽然 zypp v3 为 openSUSE 提供了一个相对良好的软件包管理器,等同于其他现有的软件包管理系统,但它受到其实现中一些缺陷的限制,从而限制了其性能。
- 像 OPIUM(最佳软件包安装/卸载管理器)[1a] 和 Mancoosi[1c] 这样的项目试图使用 SAT 求解器(布尔可满足性问题)来修复依赖项解决问题。传统的求解器,如 Apt[1a][1b],有时会显示不可接受的缺陷,SAT 求解器,从复杂性理论[2]来看,基本上与它们的工作方式不同(有关 Apt 和 Aptitude 算法的运行方式,请参见 [3])。决定将 SAT 算法集成到 zypp 堆栈中,使用的求解器算法基于流行的 minisat 求解器。
- 经过几个月的努力,结果更令人鼓舞:zypp v4 与 YUM 和 Smart 在同一台机器上的基准测试结果不言而喻(参见 [5] 查看一些图表),并且 Smart “用例” [6] 得到妥善处理。这个新 zypp 的另一个令人惊讶的功能是它能够调用推荐的物理软件包。需要安装新的摄像头吗?只需连接硬件并使用“zypper update”命令行(或通过 YaST),zypp 将尝试从在线仓库获取好的驱动程序。
- Zypp 将成为 openSUSE 发行版的独立项目:因此,它具有一定程度的互操作性 [7] 与事实上的标准 yum,并且可以用于其他发行版:图形用户界面实现了一个完整的 zypp 后端。利用 openSUSE 构建服务的灵活性,ZYpp 软件包管理器中的软件包将可用于其他发行版,如 Fedora 和 Mandriva Linux [8]。
常见问题解答
1 - 为什么您要从头开始编写一个新库,而不是使用任何现有的解决方案?为什么不引用 Apt,它是最受欢迎的解决方案?
在发布 SUSE Linux 10.0 之后,我们希望将现有的软件包管理基础设施(基于 RPM)提升到一个新的水平,并添加或显著改进对以下的支持:
- 多个软件仓库,共享 YOU 和标准仓库
- 附加产品处理
- 丰富的本地客户端(zypper、updater applet)
- 集中管理界面
- 模式、补丁
- C++ API
- 仓库签名
回顾 2005 年可用的开源工具及其成熟度,很明显,没有一个能够满足上述要求并与 Ximian 和 SUSE 开发的 Linux 管理软件无缝协作,两者现在都是 Novell。
因此,我们决定从现有片段中获取最佳想法,但致力于新的实现以满足要求。
2 - libzypp 在功能方面与其他工具相比如何?
这里是 libzypp 特性的列表。另请参见 ,了解基于 RPM 的不同软件管理解决方案中可用的功能。
3 - libzypp 的性能与其他类似工具相比如何?
libzypp 的第一个版本确实相当慢,因为它是一个从头开始编写的新库。我们不断改进性能,基于从发布的发行版和用户反馈中获得的经验。今天,随着 satsolver 库的包含,libzypp 是可用的最快的软件包管理器之一。
另请参见 。
4 - 关于 libzypp 和相关技术的标准化和上游使用情况如何?
我们正在积极努力推动技术,例如 rpm 对附加依赖类型的支持,或我们对 rpm-md 仓库的增强上游。推动 SUSE 特定的功能上游没有意义。我们还在积极参与 LSB 包装和 rpm5 项目,以确保 SUSE 特定的功能将在未来变得更加普遍。
参考资料
- [1a] C. Tukker, D. Shuffelton, R. Jhala, S. Lerner, OPIUM: OPtimal Package Install/Uninstall Manager, 第 29 届国际软件工程会议 (ICSE'07), 2007:http://www.cs.ucsd.edu/~lerner/papers/opium.pdf
- [1b] EDOS 项目工作包 2 团队。关于软件依赖项的正式管理报告。EDOS 项目可交付成果工作包 2,可交付成果 2,2006 年 3 月:http://www.edos-project.org/xwiki/bin/Main/Deliverables
- [1c] D. Le Berre, A. Parrain, 关于 SAT 技术用于依赖项管理及更高版本,ASPL 2008,利默里克,2008:http://www.mancoosi.org/papers/leberre-sat-beyond.pdf
- [2] http://en.wikipedia.org/wiki/Computational_complexity_theory
- [3] D. Burrows, 建模和解决软件依赖项,2005 年 6 月:http://people.debian.org/~dburrows/model.pdf
- [4] F. Mancinelli, J. Boender, R. di Cosmo, J. Vouillon, 管理大型自由和开源基于软件包的软件分发的复杂性,第 21 届 IEEE 国际自动化软件工程会议 (ASE'06), 2006
- [5] Yum、Smart 和 ZYpp 速度/内存使用情况:http://duncan.mac-vicar.com/blog/archives/309
- [6] http://svn.labix.org/smart/trunk/README, http://duncan.mac-vicar.com/blog/archives/310, http://duncan.mac-vicar.com/blog/archives/311
- [7] openSUSE 11.0 软件包管理最未知的特性 - 互操作性:http://duncan.mac-vicar.com/blog/archives/314
- [8] http://download.opensuse.org/repositories/zypp:/Backport/