Zypper 添加了并行下载(实验性)

2025-03-28 | Poplar at twilight | CC-BY-SA-4.0

Zypper 添加了并行下载(实验性)

libzypp 17.36.4 和 zypper 1.14.87 引入了一个新的实验性 zypper 媒体后端和对并行下载软件包的支持。

根据 factory 邮件列表中的一封电子邮件 ,这些增强功能通过减少获取包和元数据所需的时间来提高包管理器的性能。

此次更新提供了两个主要功能:使用并发连接获取包的功能,以及简化的媒体后端,可改善连接重用和元数据处理。这两个功能目前处于试验阶段,必须手动启用。

在该功能正式默认启用之前,用户可以通过在执行 zypper 操作前设置环境变量来启用并行软件包下载功能。这样可以同时下载多个软件包,从而提高整体速度。

启用并行下载:

env ZYPP_PCK_PRELOAD=1 zypper dup

用户可以使用以下指令在 zypp.conf 文件中配置并发下载的数量:

download.max_concurrent_connections = 5

默认值为 5。但是,根据系统资源和网络条件,更高的值可能会产生更好的性能。

用户可以使用单独的环境变量启用新的媒体后端。后端通过避免 metalink 抓取和多服务器文件分割来消除开销。它经过优化,可以在元数据抓取期间更好地重用连接。

启用新媒体后端:

env ZYPP_CURL2=1 zypper ref

虽然这两个功能是分开的,但同时使用时效果最佳。在 .repo 文件中使用 metalink= URL 可以进一步提高镜像性能。不过,baseurl= 仍然是生产系统的首选设置,因为它具有可信密钥行为。

要使用新功能,需要满足以下要求:

  • libzypp 17.36.4 或更新版本
  • zypper 1.14.87 或更新版本

这些功能在 TumbleweedSlowroll 中均可用。用户可以使用 DistroboxLeap 或不可变桌面版本 AeonKalpa 上测试这些新增强功能。

最新版本的 openSUSE-repos 已将 mediahandler=curl2 作为存储库 URL 的一部,并通过 /etc/profile.d/opensuse_repos.sh 预设了 ZYPP_PCK_PRELOAD=1 变量,用户将受益于此次变更。

Leap 15 和 16 用户目前可以从开发存储库中获取具有这些增强功能的 zypper 更新。

并行下载应允许慢速或高延迟连接上的系统更好地利用可用带宽。使用新后端,元数据刷新变得更加高效。这些改进还减少了 CI/CD 管道和自动化环境中的设置时间。

以下是 factory 邮件列表上的电子邮件中列出的一些基准测试结果:

Scenario                                           Time
--------------------------------------------  --------
Download 100MB / ~250 packages
Default (MultiCurl)                               68.7 sec
New Backend (ZYPP_CURL2=1)                        29.6 sec
Parallel Downloads (ZYPP_PCK_PRELOAD=1)           13.1 sec

Download 1.02GB / 407 packages into empty rootfs
Default (MultiCurl)                               281.1 sec
New Backend (ZYPP_CURL2=1)                        208.5 sec
Parallel Downloads (ZYPP_PCK_PRELOAD=1)           119.6 sec

这些结果显示,在实际场景中取得了显著的改善,在某些情况下,总执行时间减少了 50% 以上。

尽管仍处于实验阶段,但这些选项现在可供希望启用和测试它们的用户使用。

想要提供反馈的用户可以回复邮件列表主题或提交针对 libzypp bugzilla 组件的错误报告

反馈越多,该功能就能越快正式发布。

视频教程

请参阅 openSUSE YouTube 频道上的教程,了解其用法。


原文:Zypper Adds Experimental Parallel Downloads,作者:Douglas DeMaio

分享帖子: