怎样在 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 插件。但是,两者都是十分简单易懂而且可以完成相同的工作。

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

干杯!






本文作者:佚名
来源:51CTO
目录
相关文章
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
116 3
|
2月前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
156 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
95 2
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
166 2
|
2月前
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
2172 4
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
5月前
|
Linux 虚拟化 数据安全/隐私保护
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
|
2月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
140 1
|
3月前
|
Unix Linux 开发工具
centos的官网下载和vm16虚拟机安装centos8【保姆级教程图解】
本文详细介绍了如何在官网下载CentOS 8以及在VMware Workstation Pro 16虚拟机上安装CentOS 8的步骤,包括可能出现的问题和解决方案,如vcpu-0错误的处理方法。
centos的官网下载和vm16虚拟机安装centos8【保姆级教程图解】
|
2月前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
73 0
|
4月前
|
应用服务中间件 Linux nginx
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
这篇文章介绍了在CentOS系统上使用Nginx源码包进行安装和配置的详细步骤,包括源码包的获取、解压、配置、编译、安装、启动验证以及注意事项。
439 0
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程