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

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

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

我们可以通过 yum 命令的 “Downloadonly” 插件下载 RPM 软件包及其所有依赖包。

为了安装 Downloadonly 插件,以 root 身份运行以下命令。


  1. yum install yum-plugin-downloadonly

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


  1. yum install --downloadonly <package-name>

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


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

例子:


  1. yum install --downloadonly --downloaddir=/root/mypackages/ httpd

终端输出:


  1. Loaded plugins: fastestmirror
  2. Loading mirror speeds from cached hostfile
  3. * base: centos.excellmedia.net
  4. * epel: epel.mirror.angkasa.id
  5. * extras: centos.excellmedia.net
  6. * updates: centos.excellmedia.net
  7. Resolving Dependencies
  8. --> Running transaction check
  9. ---> Package httpd.x86_64 0:2.4.6-40.el7.centos.4 will be installed
  10. --> Processing Dependency: httpd-tools = 2.4.6-40.el7.centos.4 for package: httpd-2.4.6-40.el7.centos.4.x86_64
  11. --> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-40.el7.centos.4.x86_64
  12. --> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-40.el7.centos.4.x86_64
  13. --> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-40.el7.centos.4.x86_64
  14. --> Running transaction check
  15. ---> Package apr.x86_64 0:1.4.8-3.el7 will be installed
  16. ---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
  17. ---> Package httpd-tools.x86_64 0:2.4.6-40.el7.centos.4 will be installed
  18. ---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
  19. --> Finished Dependency Resolution
  20. Dependencies Resolved
  21. =======================================================================================================================================
  22. Package Arch Version Repository Size
  23. =======================================================================================================================================
  24. Installing:
  25. httpd x86_64 2.4.6-40.el7.centos.4 updates 2.7 M
  26. Installing for dependencies:
  27. apr x86_64 1.4.8-3.el7 base 103 k
  28. apr-util x86_64 1.5.2-6.el7 base 92 k
  29. httpd-tools x86_64 2.4.6-40.el7.centos.4 updates 83 k
  30. mailcap noarch 2.1.41-2.el7 base 31 k
  31. Transaction Summary
  32. =======================================================================================================================================
  33. Install 1 Package (+4 Dependent packages)
  34. Total download size: 3.0 M
  35. Installed size: 10 M
  36. Background downloading packages, then exiting:
  37. (1/5): apr-1.4.8-3.el7.x86_64.rpm | 103 kB 00:00:01
  38. (2/5): apr-util-1.5.2-6.el7.x86_64.rpm | 92 kB 00:00:01
  39. (3/5): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:00:01
  40. (4/5): httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm | 83 kB 00:00:01
  41. (5/5): httpd-2.4.6-40.el7.centos.4.x86_64.rpm | 2.7 MB 00:00:09
  42. ---------------------------------------------------------------------------------------------------------------------------------------
  43. Total 331 kB/s | 3.0 MB 00:00:09
  44. exiting because "Download Only" specified

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

让我们来查看一下内容。


  1. ls /root/mypackages/

样本输出:


  1. apr-1.4.8-3.el7.x86_64.rpm
  2. apr-util-1.5.2-6.el7.x86_64.rpm
  3. httpd-2.4.6-40.el7.centos.4.x86_64.rpm
  4. httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm
  5. mailcap-2.1.41-2.el7.noarch.rpm

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

请注意,这个插件适用于 yum install/yum update, 但是并不适用于 yum groupinstall。默认情况下,这个插件将会下载仓库中最新可用的软件包。然而你可以通过指定版本号来下载某个特定的软件版本。

例子:


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

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


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

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

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

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


  1. yum install yum-utils

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


  1. yumdownloader httpd

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


  1. yumdownloader --resolve httpd

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

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


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

或者,


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

终端输出:


  1. Loaded plugins: fastestmirror
  2. Loading mirror speeds from cached hostfile
  3. * base: centos.excellmedia.net
  4. * epel: epel.mirror.angkasa.id
  5. * extras: centos.excellmedia.net
  6. * updates: centos.excellmedia.net
  7. --> Running transaction check
  8. ---> Package httpd.x86_64 0:2.4.6-40.el7.centos.4 will be installed
  9. --> Processing Dependency: httpd-tools = 2.4.6-40.el7.centos.4 for package: httpd-2.4.6-40.el7.centos.4.x86_64
  10. --> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-40.el7.centos.4.x86_64
  11. --> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-40.el7.centos.4.x86_64
  12. --> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-40.el7.centos.4.x86_64
  13. --> Running transaction check
  14. ---> Package apr.x86_64 0:1.4.8-3.el7 will be installed
  15. ---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
  16. ---> Package httpd-tools.x86_64 0:2.4.6-40.el7.centos.4 will be installed
  17. ---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
  18. --> Finished Dependency Resolution
  19. (1/5): apr-util-1.5.2-6.el7.x86_64.rpm | 92 kB 00:00:01
  20. (2/5): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:00:02
  21. (3/5): apr-1.4.8-3.el7.x86_64.rpm | 103 kB 00:00:02
  22. (4/5): httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm | 83 kB 00:00:03
  23. (5/5): httpd-2.4.6-40.el7.centos.4.x86_64.rpm | 2.7 MB 00:00:19

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


  1. ls /root/mypackages/

终端输出:


  1. apr-1.4.8-3.el7.x86_64.rpm
  2. apr-util-1.5.2-6.el7.x86_64.rpm
  3. httpd-2.4.6-40.el7.centos.4.x86_64.rpm
  4. httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm
  5. mailcap-2.1.41-2.el7.noarch.rpm

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


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

在我看来,我喜欢 Yumdownloader 更胜于 Yum 的 Downloadonly 插件。但是,两者都是十分简单易懂而且可以完成相同的工作。

这就是今天所有的内容,如果你觉得这份引导教程有用,清在你的社交媒体上面分享一下去让更多的人知道。

原文发布时间为:2017-11-07

本文来自合作伙伴“Linux中国”

时间: 2024-10-21 09:55:56

怎样在 CentOS 里下载 RPM 包及其所有依赖包的相关文章

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

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

在CentOS中用yum命令下载RPM包但不进行安装的方法

  yum是基于Red Hat的系统(如CentOS.Fedora.RHEl)上的默认包管理器.使用yum,你可以安装或者更新一个RPM包,并且他会自动解决包依赖关系.但是如果你只想将一个RPM包下载到你的系统上该怎么办呢? 例如,你可能想要获取一些RPM包在以后使用,或者将他们安装在另外的机器上. 这里说明了如何从yum仓库上下载一个RPM包. 方法一:yum yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了--downloadonly(只下载)的选项来达到这个目的. 代码如下

CentOS系统中只下载RPM包而不进行安装的方法

  通常是使用yum来安装解决依赖包关系,如果有一台服务器没法连接外网或yum源没有设置,希望通过另一台服务器将这些RPM包下载下来,然后再去安装.那么怎么使用yum工具来下载RPM包呢? 使用yum 要使用--downloadonly选项,需要先安装yum-plugin-downloadonly,不安装该包的话,会报下面的错误信息:Command line error: no such option: --downloadonly 代码如下: # yum install yum-plugin-

Linux 有问必答:如何使用yum来下载RPM包而不进行安装

Linux 有问必答:如何使用yum来下载RPM包而不进行安装 问题:我想从Red Hat 的标准仓库中下载一个RPM包,我能使用yum命令来下载一个RPM包但是不进行安装吗? yum是基于Red Hat的系统(如CentOS.Fedora.RHEl)上的默认包管理器.使用yum,你可以安装或者更新一个RPM包,并且他会自动解决包依赖关系.但是如果你只想将一个RPM包下载到你的系统上该怎么办呢? 例如,你可能想要获取一些RPM包在以后使用,或者将他们安装在另外的机器上. 这里说明了如何从yum仓

keeplived-centos6.5 rpm 安装keepalived 依赖包问题

问题描述 centos6.5 rpm 安装keepalived 依赖包问题 [root@mysql_201 keepalived-1.2.18]# ln -s /usr/src/kernels/2.6.32-358.el6.x86_64/usr/src//linux [root@mysql_201 keepalived-1.2.18]# ./configure checking sys/time.h usability... yes checking sys/time.h presence...

centos中下载软件而不安装的方法

今天来说下在centos下下载软件,不安装的方法: 方法一:通过yum自带一个工具:yumdownloader [root@web1 ~]#  rpm -qa |grep yum-utils [root@web1 ~]# yum -y install yum-utils* [root@web1 ~]# rpm -ql yum-utils /usr/bin/debuginfo-install /usr/bin/package-cleanup /usr/bin/repo-graph /usr/bin

maven 项目中pom依赖到其他pom【A】,如何递归下载这个pom【A】中的依赖包?

问题描述 maven 项目中pom依赖到其他pom[A],如何递归下载这个pom[A]中的依赖包? 用maven管理的项目,其中引入了 org.apache.hadoop hadoop-yarn ${hadoop.version}pom 但是这个GAV定位到的是一个POM文件,此文件中包括了一堆modules 如下 hadoop-yarn-apihadoop-yarn-commonhadoop-yarn-serverhadoop-yarn-applicationshadoop-yarn-site

CentOS里alias命令讲解

  CentOS里alias命令讲解            Alias命令 功能描述:我们在进行系统的管理工作一定会有一些我们经常固定使用,但又很长的命令.那我们可以给这些这一长串的命令起一个别名.之后还需要这一长串命令时就可以直接以别名来替代了.系统中已经有一些默认的命令别名.可以alias来查看.也可以查看家目录下的~/.bash_profile来查看,这个是属于用户个人的别名.如果要定义全局的别名,可以将定义写入/etc/bashrc档案中.通过alias去的别名,在系统重新启动过后会自动

把所有的jar包打进一个包里的Ant脚本Merge All jars into One jar

http://yulimin.javaeye.com/blog/27419 http://iamin.blogdriver.com/iamin/1218247.html 今天有个变态的需求就是这样的...于是有了以下的脚本... 把所有的jar包打进一个包里的Ant脚本Merge All jars into One jar <target name="AllJarsInOne"> <jar jarfile="AllJarsInOne.jar" ma