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

终端输出:

  1. Loaded plugins: fastestmirror
  2. base | 3.6 kB ::
  3. epel/x86_64/metalink | 5.7 kB ::
  4. epel | 4.7 kB ::
  5. extras | 3.4 kB ::
  6. updates | 3.4 kB ::
  7. (/): updates//x86_64/primary_db | 3.6 MB ::
  8. (/): epel/x86_64/updateinfo | kB ::
  9. (/): epel/x86_64/primary_db | 6.1 MB ::
  10. Loading mirror speeds from cached hostfile
  11. * base: mirrors.cn99.com
  12. * epel: mirrors.ustc.edu.cn
  13. * extras: mirrors.cn99.com
  14. * updates: mirrors.cn99.com
  15. Resolving Dependencies
  16. --> Running transaction check
  17. ---> Package nginx.x86_64 :1.12.-.el7 will be installed
  18. --> Processing Dependency: nginx-all-modules = :1.12.-.el7 for package: :nginx-1.12.-.el7.x86_64
  19. --> Processing Dependency: nginx-filesystem = :1.12.-.el7 for package: :nginx-1.12.-.el7.x86_64
  20. --> Processing Dependency: libcrypto.so.(OPENSSL_1.0.2)(64bit) for package: :nginx-1.12.-.el7.x86_64
  21. --> Processing Dependency: nginx-filesystem for package: :nginx-1.12.-.el7.x86_64
  22. --> Processing Dependency: libprofiler.so.()(64bit) for package: :nginx-1.12.-.el7.x86_64
  23. --> Running transaction check
  24. ---> Package gperftools-libs.x86_64 :2.4-.el7 will be installed
  25. --> Processing Dependency: libunwind.so.()(64bit) for package: gperftools-libs-2.4-.el7.x86_64
  26. ---> Package nginx-all-modules.noarch :1.12.-.el7 will be installed
  27. --> Processing Dependency: nginx-mod-http-geoip = :1.12.-.el7 for package: :nginx-all-modules-1.12.-.el7.noarch
  28. --> Processing Dependency: nginx-mod-http-image-filter = :1.12.-.el7 for package: :nginx-all-modules-1.12.-.el7.noarch
  29. --> Processing Dependency: nginx-mod-http-perl = :1.12.-.el7 for package: :nginx-all-modules-1.12.-.el7.noarch
  30. --> Processing Dependency: nginx-mod-http-xslt-filter = :1.12.-.el7 for package: :nginx-all-modules-1.12.-.el7.noarch
  31. --> Processing Dependency: nginx-mod-mail = :1.12.-.el7 for package: :nginx-all-modules-1.12.-.el7.noarch
  32. --> Processing Dependency: nginx-mod-stream = :1.12.-.el7 for package: :nginx-all-modules-1.12.-.el7.noarch
  33. ---> Package nginx-filesystem.noarch :1.12.-.el7 will be installed
  34. ---> Package openssl-libs.x86_64 :1.0.1e-.el7. will be updated
  35. --> Processing Dependency: openssl-libs(x86-) = :1.0.1e-.el7. for package: :openssl-1.0.1e-.el7..x86_64
  36. ---> Package openssl-libs.x86_64 :1.0.2k-.el7 will be an update
  37. --> Running transaction check
  38. ---> Package libunwind.x86_64 :1.2-.el7 will be installed
  39. ---> Package nginx-mod-http-geoip.x86_64 :1.12.-.el7 will be installed
  40. --> Processing Dependency: GeoIP for package: :nginx-mod-http-geoip-1.12.-.el7.x86_64
  41. --> Processing Dependency: libGeoIP.so.()(64bit) for package: :nginx-mod-http-geoip-1.12.-.el7.x86_64
  42. ---> Package nginx-mod-http-image-filter.x86_64 :1.12.-.el7 will be installed
  43. --> Processing Dependency: gd for package: :nginx-mod-http-image-filter-1.12.-.el7.x86_64
  44. --> Processing Dependency: libgd.so.()(64bit) for package: :nginx-mod-http-image-filter-1.12.-.el7.x86_64
  45. ---> Package nginx-mod-http-perl.x86_64 :1.12.-.el7 will be installed
  46. ---> Package nginx-mod-http-xslt-filter.x86_64 :1.12.-.el7 will be installed
  47. --> Processing Dependency: libxslt.so.(LIBXML2_1.0.11)(64bit) for package: :nginx-mod-http-xslt-filter-1.12.-.el7.x86_64
  48. --> Processing Dependency: libxslt.so.(LIBXML2_1.0.18)(64bit) for package: :nginx-mod-http-xslt-filter-1.12.-.el7.x86_64
  49. --> Processing Dependency: libexslt.so.()(64bit) for package: :nginx-mod-http-xslt-filter-1.12.-.el7.x86_64
  50. --> Processing Dependency: libxslt.so.()(64bit) for package: :nginx-mod-http-xslt-filter-1.12.-.el7.x86_64
  51. ---> Package nginx-mod-mail.x86_64 :1.12.-.el7 will be installed
  52. ---> Package nginx-mod-stream.x86_64 :1.12.-.el7 will be installed
  53. ---> Package openssl.x86_64 :1.0.1e-.el7. will be updated
  54. ---> Package openssl.x86_64 :1.0.2k-.el7 will be an update
  55. --> Running transaction check
  56. ---> Package GeoIP.x86_64 :1.5.-.el7 will be installed
  57. ---> Package gd.x86_64 :2.0.-.el7 will be installed
  58. --> Processing Dependency: libpng15.so.(PNG15_0)(64bit) for package: gd-2.0.-.el7.x86_64
  59. --> Processing Dependency: libjpeg.so.(LIBJPEG_6.)(64bit) for package: gd-2.0.-.el7.x86_64
  60. --> Processing Dependency: libpng15.so.()(64bit) for package: gd-2.0.-.el7.x86_64
  61. --> Processing Dependency: libjpeg.so.()(64bit) for package: gd-2.0.-.el7.x86_64
  62. --> Processing Dependency: libfontconfig.so.()(64bit) for package: gd-2.0.-.el7.x86_64
  63. --> Processing Dependency: libXpm.so.()(64bit) for package: gd-2.0.-.el7.x86_64
  64. --> Processing Dependency: libX11.so.()(64bit) for package: gd-2.0.-.el7.x86_64
  65. ---> Package libxslt.x86_64 :1.1.-.el7 will be installed
  66. --> Running transaction check
  67. ---> Package fontconfig.x86_64 :2.10.-.el7 will be installed
  68. --> Processing Dependency: fontpackages-filesystem for package: fontconfig-2.10.-.el7.x86_64
  69. --> Processing Dependency: font(:lang=en) for package: fontconfig-2.10.-.el7.x86_64
  70. ---> Package libX11.x86_64 :1.6.-.el7 will be installed
  71. --> Processing Dependency: libX11-common >= 1.6.-.el7 for package: libX11-1.6.-.el7.x86_64
  72. --> Processing Dependency: libxcb.so.()(64bit) for package: libX11-1.6.-.el7.x86_64
  73. ---> Package libXpm.x86_64 :3.5.-.el7 will be installed
  74. ---> Package libjpeg-turbo.x86_64 :1.2.-.el7 will be installed
  75. ---> Package libpng.x86_64 :1.5.-.el7_2 will be installed
  76. --> Running transaction check
  77. ---> Package fontpackages-filesystem.noarch :1.44-.el7 will be installed
  78. ---> Package libX11-common.noarch :1.6.-.el7 will be installed
  79. ---> Package libxcb.x86_64 :1.12-.el7 will be installed
  80. --> Processing Dependency: libXau.so.()(64bit) for package: libxcb-1.12-.el7.x86_64
  81. ---> Package lyx-fonts.noarch :2.2.-.el7 will be installed
  82. --> Running transaction check
  83. ---> Package libXau.x86_64 :1.0.-2.1.el7 will be installed
  84. --> Finished Dependency Resolution
  85.  
  86. Dependencies Resolved
  87.  
  88. ====================================================================================================================================================================================================================================
  89. Package Arch Version Repository Size
  90. ====================================================================================================================================================================================================================================
  91. Installing:
  92. nginx x86_64 :1.12.-.el7 epel k
  93. Installing for dependencies:
  94. GeoIP x86_64 1.5.-.el7 base 1.1 M
  95. fontconfig x86_64 2.10.-.el7 base k
  96. fontpackages-filesystem noarch 1.44-.el7 base 9.9 k
  97. gd x86_64 2.0.-.el7 base k
  98. gperftools-libs x86_64 2.4-.el7 base k
  99. libX11 x86_64 1.6.-.el7 base k
  100. libX11-common noarch 1.6.-.el7 base k
  101. libXau x86_64 1.0.-2.1.el7 base k
  102. libXpm x86_64 3.5.-.el7 base k
  103. libjpeg-turbo x86_64 1.2.-.el7 base k
  104. libpng x86_64 :1.5.-.el7_2 base k
  105. libunwind x86_64 :1.2-.el7 base k
  106. libxcb x86_64 1.12-.el7 base k
  107. libxslt x86_64 1.1.-.el7 base k
  108. lyx-fonts noarch 2.2.-.el7 epel k
  109. nginx-all-modules noarch :1.12.-.el7 epel k
  110. nginx-filesystem noarch :1.12.-.el7 epel k
  111. nginx-mod-http-geoip x86_64 :1.12.-.el7 epel k
  112. nginx-mod-http-image-filter x86_64 :1.12.-.el7 epel k
  113. nginx-mod-http-perl x86_64 :1.12.-.el7 epel k
  114. nginx-mod-http-xslt-filter x86_64 :1.12.-.el7 epel k
  115. nginx-mod-mail x86_64 :1.12.-.el7 epel k
  116. nginx-mod-stream x86_64 :1.12.-.el7 epel k
  117. Updating for dependencies:
  118. openssl x86_64 :1.0.2k-.el7 base k
  119. openssl-libs x86_64 :1.0.2k-.el7 base 1.2 M
  120.  
  121. Transaction Summary
  122. ====================================================================================================================================================================================================================================
  123. Install Package (+ Dependent packages)
  124. Upgrade ( Dependent packages)
  125.  
  126. Total download size: 6.0 M
  127. Background downloading packages, then exiting:
  128. Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
  129. (/): fontpackages-filesystem-1.44-.el7.noarch.rpm | 9.9 kB ::
  130. (/): fontconfig-2.10.-.el7.x86_64.rpm | kB ::
  131. (/): gd-2.0.-.el7.x86_64.rpm | kB ::
  132. (/): libX11-1.6.-.el7.x86_64.rpm | kB ::
  133. (/): libX11-common-1.6.-.el7.noarch.rpm | kB ::
  134. (/): libXau-1.0.-2.1.el7.x86_64.rpm | kB ::
  135. (/): libXpm-3.5.-.el7.x86_64.rpm | kB ::
  136. (/): libjpeg-turbo-1.2.-.el7.x86_64.rpm | kB ::
  137. (/): libpng-1.5.-.el7_2.x86_64.rpm | kB ::
  138. (/): libunwind-1.2-.el7.x86_64.rpm | kB ::
  139. (/): libxcb-1.12-.el7.x86_64.rpm | kB ::
  140. (/): libxslt-1.1.-.el7.x86_64.rpm | kB ::
  141. warning: /root/mypackages/lyx-fonts-2.2.-.el7.noarch.rpm..tmp: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
  142. Public key for lyx-fonts-2.2.-.el7.noarch.rpm..tmp is not installed
  143. (/): lyx-fonts-2.2.-.el7.noarch.rpm | kB ::
  144. (/): GeoIP-1.5.-.el7.x86_64.rpm | 1.1 MB ::
  145. (/): nginx-filesystem-1.12.-.el7.noarch.rpm | kB ::
  146. (/): nginx-mod-http-image-filter-1.12.-.el7.x86_64.rpm | kB ::
  147. (/): nginx-all-modules-1.12.-.el7.noarch.rpm | kB ::
  148. (/): nginx-mod-http-perl-1.12.-.el7.x86_64.rpm | kB ::
  149. (/): nginx-mod-http-xslt-filter-1.12.-.el7.x86_64.rpm | kB ::
  150. (/): nginx-mod-stream-1.12.-.el7.x86_64.rpm | kB ::
  151. (/): nginx-mod-mail-1.12.-.el7.x86_64.rpm | kB ::
  152. (/): nginx-1.12.-.el7.x86_64.rpm | kB ::
  153. (/): openssl-1.0.2k-.el7.x86_64.rpm | kB ::
  154. (/): openssl-libs-1.0.2k-.el7.x86_64.rpm | 1.2 MB ::
  155. (/): nginx-mod-http-geoip-1.12.-.el7.x86_64.rpm | kB ::
  156. (/): gperftools-libs-2.4-.el7.x86_64.rpm | kB ::
  157. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  158. Total kB/s | 6.0 MB ::
  159. exiting because "Download Only" specified

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

  1. [root@node76 ~]# ls mypackages/
  2. fontconfig-2.10.-.el7.x86_64.rpm libpng-1.5.-.el7_2.x86_64.rpm libXpm-3.5.-.el7.x86_64.rpm nginx-mod-http-geoip-1.12.-.el7.x86_64.rpm openssl-1.0.2k-.el7.x86_64.rpm
  3. fontpackages-filesystem-1.44-.el7.noarch.rpm libunwind-1.2-.el7.x86_64.rpm libxslt-1.1.-.el7.x86_64.rpm nginx-mod-http-image-filter-1.12.-.el7.x86_64.rpm openssl-libs-1.0.2k-.el7.x86_64.rpm
  4. gd-2.0.-.el7.x86_64.rpm libX11-1.6.-.el7.x86_64.rpm lyx-fonts-2.2.-.el7.noarch.rpm nginx-mod-http-perl-1.12.-.el7.x86_64.rpm
  5. GeoIP-1.5.-.el7.x86_64.rpm libX11-common-1.6.-.el7.noarch.rpm nginx-1.12.-.el7.x86_64.rpm nginx-mod-http-xslt-filter-1.12.-.el7.x86_64.rpm
  6. gperftools-libs-2.4-.el7.x86_64.rpm libXau-1.0.-2.1.el7.x86_64.rpm nginx-all-modules-1.12.-.el7.noarch.rpm nginx-mod-mail-1.12.-.el7.x86_64.rpm
  7. libjpeg-turbo-1.2.-.el7.x86_64.rpm libxcb-1.12-.el7.x86_64.rpm nginx-filesystem-1.12.-.el7.noarch.rpm nginx-mod-stream-1.12.-.el7.x86_64.rpm

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

例子:

  1. yum install --downloadonly --downloaddir=/root/mypackages/ httpd-2.2.-.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 :2.4.-.el7.centos. will be installed
  9. --> Processing Dependency: httpd-tools = 2.4.-.el7.centos. for package: httpd-2.4.-.el7.centos..x86_64
  10. --> Processing Dependency: /etc/mime.types for package: httpd-2.4.-.el7.centos..x86_64
  11. --> Processing Dependency: libaprutil-.so.()(64bit) for package: httpd-2.4.-.el7.centos..x86_64
  12. --> Processing Dependency: libapr-.so.()(64bit) for package: httpd-2.4.-.el7.centos..x86_64
  13. --> Running transaction check
  14. ---> Package apr.x86_64 :1.4.-.el7 will be installed
  15. ---> Package apr-util.x86_64 :1.5.-.el7 will be installed
  16. ---> Package httpd-tools.x86_64 :2.4.-.el7.centos. will be installed
  17. ---> Package mailcap.noarch :2.1.-.el7 will be installed
  18. --> Finished Dependency Resolution
  19. (/): apr-util-1.5.-.el7.x86_64.rpm | kB ::
  20. (/): mailcap-2.1.-.el7.noarch.rpm | kB ::
  21. (/): apr-1.4.-.el7.x86_64.rpm | kB ::
  22. (/): httpd-tools-2.4.-.el7.centos..x86_64.rpm | kB ::
  23. (/): httpd-2.4.-.el7.centos..x86_64.rpm | 2.7 MB ::

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

  1. ll /root/mypackages/
  2. apr-1.4.-.el7.x86_64.rpm
  3. apr-util-1.5.-.el7.x86_64.rpm
  4. httpd-2.4.-.el7.centos..x86_64.rpm
  5. httpd-tools-2.4.-.el7.centos..x86_64.rpm
  6. mailcap-2.1.-.el7.noarch.rpm

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

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

Yum自动下载RPM包及其所有依赖的包的更多相关文章

  1. CentOS yum安装软件时保留安装包及依赖包或者自动下载安装包及相关依赖包

    CentOS上安装某个软件一般都有很多相关的依赖包,当然,这也与我们安装时software selection步骤中选择的版本有关系,我们服务器在安装CentOS时一般选择Basic Web Serv ...

  2. 如何使用yum来下载RPM包而不进行安装

    如何使用yum来下载RPM包而不进行安装 2015-03-23 13:15 theo-l译 linux.cn 字号:T | T yum是基于Red Hat的系统(如CentOS.Fedora.RHEl ...

  3. 【转】用yum只下载rpm包而不安装

    转自:http://liucheng.name/1950/ CentOS用yum安装软件是非常方便的,有时,我们只需要下载其中的rpm包,而不直接安装时咋办呢? 一般情况下,yum是不提供只下载的功能 ...

  4. CentOS7中下载RPM及其所有的依赖包

    CentOS7中下载RPM及其所有的依赖包 转载beeworkshop 最后发布于2019-09-28 07:43:40 阅读数 1096  收藏 展开 利用 Downloadonly 插件下载 RP ...

  5. 配置Jar包及相关依赖Jar包的本地存放路径

    配置Jar包及相关依赖Jar包的本地存放路径 用 maven2 ,pom.xml中设置了依赖,会帮你下载所有依赖的.jar到 M2_REPO 指向的目录. M2_REPO是一个用来定义 maven 2 ...

  6. Linux yum如何下载rpm包到本地

    下载前先安装一个小插件 [root@wang yum.repos.d]# yum install -y yum-plugin-downloadonly 安装一个包的同时 加上 yum install ...

  7. 使用yum来下载RPM包而不进行安装

    1. 安装yum-downloadonly. yum-utils 或 yum-plugin-downloadonly 软件包 (RHEL5) # yum install yum-downloadonl ...

  8. CentOS 7设置yum仅仅下载rpm不安装总结

    前言 参考文章:https://linux.cn/article-7937-1.html 在参考文章的基础上进行总结. 使用download-only插件实现 首先我们可以使用downloadonly ...

  9. 【Linux】用yum来下载rpm,而不安装

    方法一:yum yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了--downloadonly(只下载)的选项来达到这个目的. $ sudo yum install --download ...

随机推荐

  1. Nginx加载ngx_pagespeed模块,加快网站打开的速度

    [页面加速]配置Nginx加载ngx_pagespeed模块,加快网站打开的速度   ngx_pagespeed 是一个 Nginx 的扩展模块,可以加速你的网站,减少页面加载时间,它会自动将一些提升 ...

  2. 在caffe-ssd的环境搭建中遇到报错信息:Makefile:588: recipe for target '.build_release/cuda/src/caffe/layers/softmax_loss_layer.o' failed

    错误原因: 1.计算机没有安装GPU 2.有GPU但是NVCCFLAGS设置错误 解决方法: 1.对没有GPU的计算机,需要将Makefile中的CPU之前的#注释去掉,是的caffe运行的处理器进行 ...

  3. 加快cin读取速度

    cin在读取大量数据时会比C里的scanf慢很多,但这并不是cin"无能",而是C++为了兼容C,对cin做了scanf的同步,只要关闭这个同步,cin就会有不弱于scanf的速度 ...

  4. jquer文字闪烁简单实现

    arguments.callee <script type="text/javascript"> (function () { $(".usesend&quo ...

  5. 转:安装PHP出现make: *** [sapi/cli/php] Error 1 解决办法

    ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor':/home/king/PHP-5.2.13/ext/iconv/ ...

  6. tomcat 、NIO、netty 本质

    tomcat 基于 Socket,面向 web 浏览器的通信容器 nio 同步非阻塞的I/O模型 netty 通信框架,对 nio 的封装

  7. python 某个目录下的所有文件列表

    使用os.listdir() 函数来获取某个目录中的文件列表 import os names = os.listdir('somedir') 结果会返回目录中所有文件列表,包括所有文件,子目录,符号链 ...

  8. 360浏览器有个 谷歌访问助手(插件管理里搜谷歌即可) 可以免费访问:谷歌搜索,Google+ gmail

    360浏览器有个 谷歌访问助手(插件管理里搜谷歌即可) 可以免费访问:谷歌搜索,Google+ gmail

  9. python docopt模块详解

    python docopt模块详解 docopt 本质上是在 Python 中引入了一种针对命令行参数的形式语言,在代码的最开头使用 """ ""&q ...

  10. Django框架----ORM数据库操作注意事项

    1.多对多的正向查询 class Class(models.Model): name = models.CharField(max_length=32,verbose_name="班级名&q ...