怎样在 CentOS 里下载 RPM 包及其所有依赖包

Sk 的头像

·

·

·

16,236 次阅读

前几天我尝试去创建一个仅包含我们经常在 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/ httpd

终端输出:

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.excellmedia.net
 * epel: epel.mirror.angkasa.id
 * extras: centos.excellmedia.net
 * updates: centos.excellmedia.net
Resolving Dependencies
--> Running transaction check
> Package apr.x86_64 0:1.4.8-3.el7 will be installed
> Package httpd-tools.x86_64 0:2.4.6-40.el7.centos.4 will be installed

Total 331 kB/s | 3.0 MB 00:00:09 
exiting because "Download Only" specified

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

让我们来查看一下内容。

ls /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

正如你在上面输出所看到的, httpd软件包已经被依据所有依赖性下载完成了 。

请注意,这个插件适用于 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

终端输出:


Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.excellmedia.net
 * epel: epel.mirror.angkasa.id
 * extras: centos.excellmedia.net
 * updates: centos.excellmedia.net
--> Running transaction check
> Package apr.x86_64 0:1.4.8-3.el7 will be installed
> Package httpd-tools.x86_64 0:2.4.6-40.el7.centos.4 will be installed

via: <https://www.ostechnix.com/download-rpm-package-dependencies-centos/>

作者:[SK](http://ostechnix.tradepub.com/free/w_make272/prgm.cgi?a=1) 译者:[LinuxBars](https://github.com/LinuxBars) 校对:[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

9 条回复

  1. 拿铁不加糖 [Chrome 54.0|Windows 10] 的头像
    拿铁不加糖 [Chrome 54.0|Windows 10]

    1024

    来自北京
  2. Wf_talk [Vivaldi 1.4|GNU/Linux] 的头像
    Wf_talk [Vivaldi 1.4|GNU/Linux]

    很不错的技巧

    来自广州
  3. 来自陕西西安的 Chrome 54.0|GNU/Linux 用户 的头像
    来自陕西西安的 Chrome 54.0|GNU/Linux 用户

    本地化最靠谱。所以自从开始使用Debian Gnu/Linux之后就没改过了。这个就是比其他版本好一点点!!!

    来自西安
  4. yiqihaha [Chrome 54.0|Windows 10] 的头像
    yiqihaha [Chrome 54.0|Windows 10]

    本地化是什么意思?

    来自青岛
  5. 来自北京的 Vivaldi 1.4|GNU/Linux 用户 的头像
    来自北京的 Vivaldi 1.4|GNU/Linux 用户

    Debian不是有光盤鏡像下載嗎?可以做成本地源~

    来自北京
  6. 来自江苏南京的 Vivaldi 1.4|GNU/Linux 用户 的头像
    来自江苏南京的 Vivaldi 1.4|GNU/Linux 用户

    很奇怪suse与redhat商业化源下载后给别人建立本地源怎么办?

    来自南京
  7. hello_linux [Chrome 51.0|Windows 7] 的头像
    hello_linux [Chrome 51.0|Windows 7]

    厉害了!

    来自深圳
  8. 来自上海的 Internet Explorer 11.0|Windows 7 用户 的头像
    来自上海的 Internet Explorer 11.0|Windows 7 用户

    最简单的方法是yum install PACKAGE, 系统给出提示的时候选择d,只下载不安装即可。

    来自上海
  9. 来自北京的 Chrome 58.0|Windows 10 用户 的头像
    来自北京的 Chrome 58.0|Windows 10 用户

    这个只是下载了依赖的rpm,但是rpm所以来的lib包,如glibc等等,就下载不下来了……比较无语

    来自北京

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注