背景 链接到标题 公司产品最终交付形态是 ISO,在涉及一个产品的多个 OEM 场景时,会选择在标准版本的基础上,删除某些软件包,新增某些软件包的形式来减少构建时间。产品的 BaseOS 是 CentOS,包管理器是 RPM 系,也就需要使用 rpm / yum 等命令来实现。 其中新增某些软件包是使用 yumdownloader 来完成的。在 Yum Repository 中会包含同一软件包的多个版本,预期 yumdownloader 会下载 Yum Repository 中某个软件最新版本的包,比如 yumdownloader zbs-5.1.2* ,则会下载 zbs-5.1.2 大版本的最新 release 版本。
但是最近发现,从某个版本开始 yumdownloader 没有下载最新的软件包,反而停在了一个两个月之前构建的版本,于是开始调查原因。
Yumdownloader 链接到标题 yumdownloader 工具集是由 yum-utils 提供,同时还提供了 repotrack,repoquery, reposync 等有用的工具。yumdownloader 使用方式是 yumdownloader $pkg 即可。在 yum-utils 中会大量引用 yum module,因此需要同时查找两个 Git repo。
yum-utils 代码仓库地址: https://github.com/rpm-software-management/yum-utils/blob/master/yumdownloader.py
yum 代码仓库地址:https://github.com/rpm-software-management/yum
下载逻辑 链接到标题 def main(self): # Add command line option specific to yumdownloader self.