我正在尝试在我的系统上创建一个本地yum repo,其中包含主要来自CentOS基本库的各种软件包 . 托管yum repo的服务器默认情况下不必安装与将使用yum repo的服务器相同的基本软件包 . 出于这个原因,我需要确保我的repos包含我想要的包以及它们的每个依赖项 .
我正在使用yum-utils包中提供的yumdownloader工具创建我的存储库,尝试使用标准CentOS镜像中的yum下载包的RPM文件 . 它提供了一个命令行选项--resolve,它也可以下载依赖项 . 但是,由于它是基于yum本身构建的,因此yumdownloader将仅下载系统上尚不存在的程序包的依赖项 .
例如,我希望下载程序包A,它取决于程序包B,C和D.如果程序包D已经安装在系统上, yumdownloader --resolve A
将只下载A,B和C,但不会下载D.
有没有办法从yum repo下载包中所有依赖项的RPM?
2 回答
有这个bash脚本,rpm的维护者和我分享了,我put on github . 希望你觉得它有用!
您还可以阅读原始SO question,其中讨论了问题 .
该脚本适用于Fedora 23,因为它使用dnf的下载插件 . 它可能很容易让它在Fedora 22上运行,因为yum肯定有类似的插件 .
另外,它很有 Value ,因为repotrack在fedora 23上不起作用(至少它对我不起作用) .
经过很多挫折寻找解决方案后,我编写了一个使用repotrace和wget的简单脚本 . 我发现yumdownloader(即使使用resolve标志)也无法解析所有依赖项 .
如果你有一个很长的软件包列表,你必然会遇到重复的问题,首先使用“repotrack -u flag”下载url,然后获取唯一的记录,必须多次下载相同的rpm .
快乐的rpming