openSUSE 10.3 的抢先预览:新的软件包管理
2007 年 8 月 26 日 | 新闻团队 | 无许可
openSUSE 10.3 将默认包含一个全新的、显著改进且更加成熟的软件包管理堆栈。在 SUSE Linux 10.1 以及在一定程度上在 openSUSE 10.2 中导致问题的软件包管理组件 ZMD 已被完全移除,并被新的 libzypp 及其工具所取代。今天我们将了解新的软件包管理,并与 Duncan Mac-Vicar Prett,libzypp 的主要开发者之一进行交流。
ZMD 和软件包管理问题
ZENworks 管理守护进程 (ZMD) 是 SUSE Linux 10.1 中导入的企业软件包管理选择的一部分,它使用额外的辅助程序来与 libzypp 交互和同步。ZMD 提供了许多高级功能,并提供了功能强大的命令行工具 rug 用于软件包管理。然而,ZMD 在 openSUSE 中的集成变得有问题,最终确定了给定的功能对于 openSUSE 来说不是那么必要,但它将保留在 SUSE Linux Enterprise 产品中。
展望未来
因此,ZYpp 团队一直在努力改进 libzypp,到目前为止,已经取得了很大的进展。它可靠、成熟,并且 快得多。启动时不再需要刷新和解析,与 yum 和 smart 等工具的兼容性更高,并且在最常见的用例(安装软件包)中速度更快。
在 其他更改中,最重要的改进之一是新的二进制缓存,它显著提高了启动时间和软件包安装速度。最初缓存元数据速度较慢,但仅执行一次,然后将数据存储在预解析的缓存中,这意味着您可以几秒钟内读取所有仓库。
仓库处理也已更改。系统中的所有仓库都有一个唯一的别名,添加仓库只需将 repo 文件(就像 openSUSE 构建服务中使用的文件一样)复制到 /etc/zypp/repos.d 目录即可。
新工具
除此之外,还创建了两个新工具来与新的 libzypp 一起使用
显示您的仓库列表
`opensuse:~ # zypper repos
| 已启用 | 刷新 | 类型 | 名称 | URI
–+———+———+——–+—————+——————————————————————————– 1 | 是 | 是 | yast2 | 10.3 - 主仓库 (非 OSS) | //download.opensuse.org/distribution/SL-Factory-non-oss/inst-source-extra/ 2 | 是 | 是 | rpm-md | KDE:Community | //download.opensuse.org/repositories/KDE:/Community/openSUSE_Factory 3 | 是 | 是 | yast2 | 10.3 - 主仓库 (OSS) | //download.opensuse.org/distribution/SL-OSS-factory/inst-source/`
安装软件包
`opensuse:/home/francis #** zypper install filelight**
- 正在读取仓库“10.3 - 主仓库 (非 OSS)”缓存
- 正在读取仓库“KDE:Community”缓存
- 正在读取仓库“10.3 - 主仓库 (OSS)”缓存
- 正在读取已安装的软件包 [100%] 以下 NEW 软件包将被安装:filelight 总体下载大小:619.3 K。操作后,将使用额外的 1.0 M。继续? [y/n]: y 下载软件包 filelight-1.0-6.1.i586,619.3 K (1.0 M 解包)
-
正在安装:filelight-1.0-6.1 [100%]`
- openSUSE Updater,一个软件更新程序小程序,用于通知您软件更新。新的程序包含一个小对话框,用于通知您其进度

更新程序的应用程序界面也得到了改进,为您提供更多选项,并允许您直接从应用程序中选择要应用的补丁,而不是 YaST
当然,您仍然可以使用 YaST 来满足所有软件包管理需求,并且此版本中的界面本身没有发生任何重大更改。您可以通过安装最近发布的 openSUSE 10.3 Beta 2 来帮助测试和试用所有这些工具。
与 Duncan Mac-Vicar Prett 交谈
我赶上了他本人,想了解更多信息。
openSUSE 10.3 中新的软件包管理堆栈的主要任务是什么?
我们可以这样总结这个项目
对于 10.1,我们让 YaST 和 Zenworks Linux Management 协同工作,但有一些粗糙的地方。由此产生的 libZYpp 库在 YaST 和 ZLM 之间共享,并结合了两者的优点。ZLM 获得了 YaST 关于仓库类型(YaST、rpm 元数据)和交付格式(CD、DVD、nfs、smb 等)的灵活性,而 YaST 则利用了 redcarpet 依赖关系解析器。然而,YaST 主要是一个 GUI 应用程序,而 ZLM 采用守护程序(ZMD)和许多小型辅助程序的方法并不真正匹配。
对于 10.2,我们专注于修复主要问题,我认为我们交付了一个更加可用的版本,但仍然存在相同概念问题。
对于 10.3,我们坐下来讨论了如何在合理的时间范围内改进情况。我们所做的是主要集中在导致 80% 的不满的 20% 上,无论是对于用户还是开发人员。这项任务涉及大量的分析(在其他团队的大量帮助下)、设计和尝试原型和概念验证。然后我们分支并创建了一个 zypp2 库,我们开始从头开始重新创建所有解析器、缓存引擎、下载器等,并为它们创建单元测试。后来一切都与主库集成,zypp2 被删除。然后下一步是将 zypper 和 YaST 粘合剂移植过来。
还有谁参与了这项工作?
很多人都参与了这个项目。Testsuite 和求解器开发由 Stefan Schubert 和 Stefan Haas 领导,最近还有 Arvin Schnell。Jan Kupec 和 Martin Vidner 在 zypper 上进行黑客攻击。Thomas Göttlicher 和 Jörg Kress 在通知小程序上玩得开心。Ladislav Slezak 维护 YaST 粘合剂。Katarina Machalkova、Stefan Hundhammer 和 Michael Meeks 调整了 YaST 用户界面。
Michael Andres 和我负责 ZYpp 库的开发。Dirk Müller 帮助我们进行分析并贡献了一些代码。Benjamin Weber 贡献了一键安装功能。Jiri Srain、Edith Parzefall、Klaus Kämpf 和 Stanislav Visnovsky 协调了人类和技术方面,以便我们能够交付。
这种软件包管理与 SUSE Linux 10.1 之前的旧软件包管理相比有什么优势?
虽然之前的堆栈已经成熟,但它正在显示其局限性。有了基于 ZYpp 的堆栈,我们得到了
-
比以前更好的解析器
-
可预测的行为,受升级和安装场景测试套件的支持
-
更多关于为什么安装软件包或找不到解决方案的信息
-
-
更好地集成多年来添加到我们的软件包管理器中的所有功能。
-
统一处理软件包和补丁
-
依赖项处理更新包
-
更好地处理选择(我们现在称之为“模式”)
-
更灵活地处理不同的仓库,例如,可以为每个仓库拥有额外的模式。
-
基于语言(字体、翻译等)或硬件(驱动程序)的附加依赖项
现在在 10.3 中,您将获得
-
更清晰地分离不同的任务,例如仓库管理、仓库刷新、依赖关系解析、软件包下载和软件包安装。启动时不再需要刷新和解析。
-
与 yum 和 smart 等工具的兼容性更高,我们使用标准的 .repo 文件来列出已知的仓库。smart 和 yum 使用的相同格式,以及您可以在 openSUSE 构建服务仓库中找到的相同文件。
-
安装软件包、从命令行搜索或升级系统等常见用例的速度更快。
-
更用户友好的通知小程序。
-
对第三方软件包的更合理的策略。它们默认情况下未被锁定。
升级候选者被认为是来自同一供应商的,因此您不会在新版本可用时自动在功能集和供应商之间跳转。
未来有什么计划?
是的。
-
继续提高速度。消除瓶颈,例如在搜索时 rpm 数据库。
-
让 zypper 对系统管理员和高级用户更有用。
-
围绕我们的工具聚集更多的社区。
-
在已经拥有的资产周围进行更多创新:构建服务。社区开发,例如一键安装,使 openSUSE 成为一个安装、分发和试用软件既有趣又轻而易举的发行版。
在哪里可以了解更多信息?
项目的通信渠道是
- //en.opensuse.net.cn/Libzypp
- #yast 在 Freenode 上
邮件列表
- zypp-devel@opensuse.org (订阅) 用于核心软件包管理堆栈开发
- software-mgmt@opensuse.org (订阅) 用于 openSUSE 软件管理讨论、标准和想法
- yast-devel@opensuse.org (订阅) 用于通用的 YaST 开发,这与 ZYpp 有很大关系。
