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 一起使用

  • zypper,一个 高级功能丰富的命令行工具。以下是一些使用示例,以了解 zypper 的实际操作

显示您的仓库列表

`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,一个软件更新程序小程序,用于通知您软件更新。新的程序包含一个小对话框,用于通知您其进度

opensuse-updater

更新程序的应用程序界面也得到了改进,为您提供更多选项,并允许您直接从应用程序中选择要应用的补丁,而不是 YaST

openSUSE updater in 10.3

当然,您仍然可以使用 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 成为一个安装、分发和试用软件既有趣又轻而易举的发行版。

在哪里可以了解更多信息?

项目的通信渠道是

邮件列表

谢谢!

分类: 发行版

标签: yast

分享此帖子