首页 文章

使用yum下载包的所有依赖项的RPM

提问于
浏览
4

我正在尝试在我的系统上创建一个本地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 回答

  • 0

    有这个bash脚本,rpm的维护者和我分享了,我put on github . 希望你觉得它有用!

    您还可以阅读原始SO question,其中讨论了问题 .

    该脚本适用于Fedora 23,因为它使用dnf的下载插件 . 它可能很容易让它在Fedora 22上运行,因为yum肯定有类似的插件 .

    另外,它很有 Value ,因为repotrack在fedora 23上不起作用(至少它对我不起作用) .

  • 0

    经过很多挫折寻找解决方案后,我编写了一个使用repotrace和wget的简单脚本 . 我发现yumdownloader(即使使用resolve标志)也无法解析所有依赖项 .

    如果你有一个很长的软件包列表,你必然会遇到重复的问题,首先使用“repotrack -u flag”下载url,然后获取唯一的记录,必须多次下载相同的rpm .

    #!/bin/bash
    
    while read i; do
        repotrack -u $i >> dep_rpm_urls_02.txt
    done < list_of_packages_01.txt
    
    
    awk '!seen[$0]++' dep_rpm_urls_02.txt > dep_rpm_urls_clean_03.txt
    
    while read j; do
        wget $j
        echo dowloaded $j
    done < dep_rpm_urls_clean_03.txt
    

    快乐的rpming

相关问题