
We can download RPM packages using curl and wget commands on the server, but these commands will only download the given package or file. So instead of searching and installing the required dependencies for the particular package, you can do RPM package installation along with all dependencies via “Downloadonly” plugin. In this article, we will guide you how to download RPM packages with all their dependencies using the “Downloadonly” plugin.
Note:
- Before using the plugin, check file /etc/yum/pluginconf.d/downloadonly.conf to confirm that this plugin is “enabled=1”.
- You can download multiple RPM packages on the same command.
- You still need to re-download the repodata if the repodata expires before you re-use the cache. By default, it takes two hours to expire.
Let’s start with the installation of Downloadonly plugin on the server.
You can easily download any RPM packages with all it’s dependencies using the “Downloadonly” plugin for yum command.
To install Downloadonly plugin on the server, run the following command as root user.
# yum install yum-plugin-downloadonly
Now, run the following command to download an RPM package.
# yum install --downloadonly <package-name>
By default, this command will download and save the packages at /var/cache/yum/ in rhel-{arch}-channel/packages location. However, you can download and save the packages in any location you want using the “–downloaddir” option.
# yum install --downloadonly --downloaddir=<directory> <package-name>
Example:
# yum install --downloadonly --downloaddir=/root/mypackages/ httpd
Sample output:
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 httpd.x86_64 0:2.4.6-40.el7.centos.4 will be installed --> Processing Dependency: httpd-tools = 2.4.6-40.el7.centos.4 for package: httpd-2.4.6-40.el7.centos.4.x86_64 --> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-40.el7.centos.4.x86_64 --> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-40.el7.centos.4.x86_64 --> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-40.el7.centos.4.x86_64 --> Running transaction check ---> Package apr.x86_64 0:1.4.8-3.el7 will be installed ---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed ---> Package httpd-tools.x86_64 0:2.4.6-40.el7.centos.4 will be installed ---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================= Package Arch Version Repository Size ======================================================================================================================================= Installing: httpd x86_64 2.4.6-40.el7.centos.4 updates 2.7 M Installing for dependencies: apr x86_64 1.4.8-3.el7 base 103 k apr-util x86_64 1.5.2-6.el7 base 92 k httpd-tools x86_64 2.4.6-40.el7.centos.4 updates 83 k mailcap noarch 2.1.41-2.el7 base 31 k Transaction Summary ======================================================================================================================================= Install 1 Package (+4 Dependent packages) Total download size: 3.0 M Installed size: 10 M Background downloading packages, then exiting: (1/5): apr-1.4.8-3.el7.x86_64.rpm | 103 kB 00:00:01 (2/5): apr-util-1.5.2-6.el7.x86_64.rpm | 92 kB 00:00:01 (3/5): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:00:01 (4/5): httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm | 83 kB 00:00:01 (5/5): httpd-2.4.6-40.el7.centos.4.x86_64.rpm | 2.7 MB 00:00:09 --------------------------------------------------------------------------------------------------------------------------------------- Total 331 kB/s | 3.0 MB 00:00:09 exiting because "Download Only" specified
Now go to the location that you specified in the above command. You can see there the downloaded package with all it’s dependencies. In this example, I have downloaded the packages in /root/mypackages/ directory.
Let’s verify the contents.
# ls /root/mypackages/
Sample output:
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
As given in the above output, the package httpd has been downloaded with all dependencies.
NOTE: this plugin is applicable for “yum install/yum update” and not for “yum groupinstall”. By default, this plugin will download the latest version of the packages in the repository. You can, however, download a particular version by specifying the required version in the command.
Example:
# yum install –downloadonly –downloaddir=/root/mypackages/ httpd-2.2.6-40.el7
Also, you can download multiple packages at once by using the below command.
# yum install --downloadonly --downloaddir=/root/mypackages/ httpd vsftpd
That’s it !! You have learned how to download RPM packages along with their dependencies through the “Downloadonly” plugin.