Yum自动下载RPM包及其所有依赖的包

前几天我尝试去创建一个仅包含我们经常在 CentOS 7 下使用的软件的本地仓库。当然,我们可以使用 curl 或者 wget 下载任何软件包,然而这些命令并不能下载要求的依赖软件包。你必须去花一些时间而且手动的去寻找和下载被安装的软件所依赖的软件包。然而,我们并不是必须这样。在这个简短的教程中,我将会带领你以两种方式下载软件包及其所有依赖包。我已经在 CentOS 7 下进行了测试,不过这些相同的步骤或许在其他基于 RPM 管理系统的发行版上也可以工作,例如 RHEL,Fedora 和 Scientific Linux。

方法1利用"Downloadonly"插件下载 RPM 软件包及其所有依赖包

我们可以通过 yum 命令的 “Downloadonly” 插件下载 RPM 软件包及其所有依赖包, 为了安装 Downloadonly 插件,以 root 身份运行以下命令:

yum install yum-plugin-downloadonly  

现在,运行以下命令去下载一个 RPM 软件包

yum install --downloadonly <package-name>

默认情况下,这个命令将会下载并把软件包保存到 /var/cache/yum/ 的 rhel-{arch}-channel/packageslocation 目录,不过,你也可以下载和保存软件包到任何位置,你可以通过 –downloaddir 选项来指定。

yum install --downloadonly --downloaddir=<directory> <package-name>

例子:

yum install --downloadonly --downloaddir=/root/mypackages/  nginx

终端输出:

View Code

现在去你指定的目录位置下,你将会看到那里有下载好的软件包和依赖的软件。在我这种情况下,我已经把软件包下载到 /root/mypackages/ 目录下。
 
让我们来查看一下内容:

[root@node76 ~]# ls mypackages/
fontconfig-2.10.95-11.el7.x86_64.rpm           libpng-1.5.13-7.el7_2.x86_64.rpm      libXpm-3.5.12-1.el7.x86_64.rpm             nginx-mod-http-geoip-1.12.2-1.el7.x86_64.rpm         openssl-1.0.2k-8.el7.x86_64.rpm
fontpackages-filesystem-1.44-8.el7.noarch.rpm  libunwind-1.2-2.el7.x86_64.rpm        libxslt-1.1.28-5.el7.x86_64.rpm            nginx-mod-http-image-filter-1.12.2-1.el7.x86_64.rpm  openssl-libs-1.0.2k-8.el7.x86_64.rpm
gd-2.0.35-26.el7.x86_64.rpm                    libX11-1.6.5-1.el7.x86_64.rpm         lyx-fonts-2.2.3-1.el7.noarch.rpm           nginx-mod-http-perl-1.12.2-1.el7.x86_64.rpm
GeoIP-1.5.0-11.el7.x86_64.rpm                  libX11-common-1.6.5-1.el7.noarch.rpm  nginx-1.12.2-1.el7.x86_64.rpm              nginx-mod-http-xslt-filter-1.12.2-1.el7.x86_64.rpm
gperftools-libs-2.4-8.el7.x86_64.rpm           libXau-1.0.8-2.1.el7.x86_64.rpm       nginx-all-modules-1.12.2-1.el7.noarch.rpm  nginx-mod-mail-1.12.2-1.el7.x86_64.rpm
libjpeg-turbo-1.2.90-5.el7.x86_64.rpm          libxcb-1.12-1.el7.x86_64.rpm          nginx-filesystem-1.12.2-1.el7.noarch.rpm   nginx-mod-stream-1.12.2-1.el7.x86_64.rpm

正如你在上面输出所看到的, nginx软件包已经被依据所有依赖性下载完成了 。
 
请注意,这个插件适用于 yum install/yum update, 但是并不适用于 yum groupinstall。默认情况下,这个插件将会下载仓库中最新可用的软件包。然而你可以通过指定版本号来下载某个特定的软件版本。

例子:

yum install --downloadonly --downloaddir=/root/mypackages/ httpd-2.2.6-40.el7

此外,你也可以如下一次性下载多个包:

yum install --downloadonly --downloaddir=/root/mypackages/ httpd vsftpd

方法 2 使用 "Yumdownloader"工具来下载 RPM 软件包及其所有依赖包

“Yumdownloader” 是一款简单,但是却十分有用的命令行工具,它可以一次性下载任何 RPM 软件包及其所有依赖包。

以 root 身份运行如下命令安装 “Yumdownloader” 工具。

yum install yum-utils

一旦安装完成,运行如下命令去下载一个软件包,例如 httpd:

yumdownloader httpd

为了根据所有依赖性下载软件包,我们使用 --resolve 参数:

yumdownloader --resolve httpd

默认情况下,Yumdownloader 将会下载软件包到当前工作目录下。

为了将软件下载到一个特定的目录下,我们使用 --destdir 参数:

yumdownloader --resolve --destdir=/root/mypackages/ httpd

或者:

yumdownloader --resolve --destdir /root/mypackages/ httpd

终端输出:

View Code

让我们确认一下软件包是否被下载到我们指定的目录下:

ll /root/mypackages/
apr-1.4.8-3.el7.x86_64.rpm
apr-util-1.5.2-6.el7.x86_64.rpm
httpd-2.4.6-40.el7.centos.4.x86_64.rpm
httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm
mailcap-2.1.41-2.el7.noarch.rpm

不像 Downloadonly 插件,Yumdownload 可以下载一组相关的软件包。

yumdownloader "@Development Tools" --resolve --destdir /root/mypackages/

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值