下载已安装的RPM命令包

我有一个CentOS机器,我已经安装了openssl-devel

$ yum install openssl-devel 

它下载并安装了所有的依赖包。 现在我需要所有这些RPM包。 是否有可能只下载RPM软件包? 当我这样做:

  $ yum install openssl-devel -y --downloadonly 

它说

 Package 1:openssl-devel-1.0.1e-4.fc18.x86_64 already installed and latest version 

因为它已经安装。

有谁知道如何在同一个系统上下载这些RPM软件包?

yum-utils yumdownloader会下载你传递给它的任何包,或者可选地生成包可以从中下载的URL。

可以使用--downloadonly开关下载已经安装的RPM软件包。 我不知道为什么yum在检查包是否已经安装之前没有检查这个设置,但是我想这可能是由工具的底层架构引起的。

无论如何,你需要做的就是告诉yum 重新安装软件包:

 yum --downloadonly --downloaddir=/tmp/rpm_files/ reinstall package_name 

当然,yum不知道为这个软件包安装了哪些依赖项,所以如果你拿这些RPM并尝试在不同的系统上安装它们,可能会丢失一些依赖项。 有一些方法可以探索整个依赖图,我确定这已经在SE的其他地方描述过了。

从长远来看,一种可能是指定一台机器作为从互联网上下载的机器,然后在其上运行NFS(或networking服务器),以将/ var / cache / yum暴露给内部主机。

然后你需要更新你的yumconfiguration,添加:

 [main] keepcache = 1 

根据https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Working_with_Yum_Cache.html

启用caching后,每个yum操作都可以从configuration的存储库下载软件包数据。

更实际的说法是:

 $ sudo yum install -y nginx $ sudo find /var/cache/yum/ -type f -name '*.rpm' <...snip....> /var/cache/yum/x86_64/7/epel/packages/nginx-1.10.2-1.el7.x86_64.rpm 

其他答案将实际上解决您的直接问题,这只会帮助你运行yum reinstall你已有的软件包,并希望RPMs。