我的目标是建立一个存储库,这样我就可以在没有互联网连接的机器上安装软件包。我使用 yumdownloader 下载软件包及其依赖项,它似乎可以工作,但在完成时会显示错误消息。我想知道我可以安全地忽略错误消息,或者最好避免收到错误消息,即:
软件包与预期下载不匹配
我采取的步骤
为我自己构建的软件包创建一个本地存储库。例如,在目录 rpmbuild/RPMS/noarch 中,我有这样的 rpm(为清晰起见,删除了版本号)
软件包.rpm 依赖项1.rpm 依赖项2.rpm
在该目录中创建 repo,并使用 /etc/yum.repos.d 中的文件配置本地存储库
创建一个目标下载目录,以及一个空的虚拟安装目录,以便 yumdownloader 可以获取所有内容。
指定命令(releasever=/ 似乎是解决 yum 漏洞的已知解决方法)
yumdownloader --releasever=/ --installroot=/dummy --resolve --destdir=/target 软件包
一切按预期运行,ThePackage、其来自本地存储库的直接依赖项以及来自标准存储库的所有依赖项均已下载。然而最后我收到一条错误消息:
file:///home/me/rpmbuild/RPMS/noarch/ThePackage-5.0.0-4.el7.noarch.rpm: [Errno -1] 软件包与预期下载不匹配。建议:运行 yum --enablerepo=Unity5-build clean metadata
现在我当然已经尝试了建议的 yum clean 命令,以及 clean all 等变体。我清除了 yum 缓存。仍然是同样的错误。
似乎可以解决问题的一件事是先安装 ThePackage,然后下载就可以顺利进行。这肯定意味着需要清除某个地方的某些状态,我该怎么做?
yum install ThePackage
但是我肯定不需要这样做(并且我不想这样做,因为我在 CI 工作流中完成所有这些工作并且不想要完整的安装开销。)