In my last article I have already shared the steps to sync (download) the online repositories from CentOS / RHEL 7 to your local machine, to use them offline when you do not have access to internet. In this article I will share the steps to download rpm package and all dependencies so that you don’t have to struggle downloading the rpm’s dependencies separately.

How to download rpm package and all dependencies (RHEL / CentOS 7)

These are some of the commands which you can use to perform this

  • yumdownloader
  • repotrack
NOTE:
To be able to use these tools you must have a working repository. For CentOS you need an active internet connection while for RHEL your node must be registered to Red Hat Network.

 

Pre-requisites

Both yumdownloader and repotrack are part of yum-utils rpm so install this rpm before starting to use these tools.

# yum install -y yum-utils

 

Using yumdownloader to download rpm package and all dependencies

Below is the command to download rpm package with all it’s dependencies

# yumdownloader  --downloadonly --downloaddir=. glibc --resolve
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.excellmedia.net
 * extras: centos.excellmedia.net
 * updates: centos.excellmedia.net
No Match for argument .
--> Running transaction check
---> Package glibc.i686 0:2.17-222.el7 will be installed
--> Processing Dependency: glibc-common = 2.17-222.el7 for package: glibc-2.17-222.el7.i686
--> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.17-222.el7.i686
--> Processing Dependency: libfreebl3.so for package: glibc-2.17-222.el7.i686
---> Package glibc.x86_64 0:2.17-222.el7 will be installed
--> Running transaction check
---> Package glibc-common.x86_64 0:2.17-196.el7 will be updated
--> Processing Dependency: glibc-common = 2.17-196.el7 for package: glibc-2.17-196.el7.x86_64
---> Package glibc-common.x86_64 0:2.17-222.el7 will be an update
---> Package nss-softokn-freebl.x86_64 0:3.28.3-6.el7 will be updated
---> Package nss-softokn-freebl.i686 0:3.36.0-5.el7_5 will be installed
--> Processing Dependency: nss-util >= 3.36.0-1 for package: nss-softokn-freebl-3.36.0-5.el7_5.i686
--> Processing Dependency: nspr >= 4.19.0 for package: nss-softokn-freebl-3.36.0-5.el7_5.i686
---> Package nss-softokn-freebl.x86_64 0:3.36.0-5.el7_5 will be an update
--> Running transaction check
---> Package glibc.x86_64 0:2.17-196.el7 will be updated
--> Processing Dependency: glibc = 2.17-196.el7 for package: glibc-headers-2.17-196.el7.x86_64
--> Processing Dependency: glibc = 2.17-196.el7 for package: glibc-devel-2.17-196.el7.x86_64
---> Package nspr.x86_64 0:4.13.1-1.0.el7_3 will be updated
---> Package nspr.x86_64 0:4.19.0-1.el7_5 will be an update
---> Package nss-util.x86_64 0:3.28.4-3.el7 will be updated
---> Package nss-util.x86_64 0:3.36.0-1.el7_5 will be an update
--> Running transaction check
---> Package glibc-devel.x86_64 0:2.17-196.el7 will be updated
---> Package glibc-devel.x86_64 0:2.17-222.el7 will be an update
---> Package glibc-headers.x86_64 0:2.17-196.el7 will be updated
---> Package glibc-headers.x86_64 0:2.17-222.el7 will be an update
--> Finished Dependency Resolution
(1/2): nss-softokn-freebl-3.36.0-5.el7_5.i686.rpm                                                                                                                             | 211 kB  00:00:00
(2/2): glibc-2.17-222.el7.i686.rpm                                                                                                                                            | 4.2 MB  00:00:01
exiting because "Download Only" specified

For example here I am downloading glibc and all it’s dependency rpms

# yumdownloader --downloadonly --downloaddir=/tmp/ glibc --resolve
NOTE:
This command is to download the package along with its dependencies does not always successfully recognize all dependencies. It is better to use repoquery to find the dependencies and then use yumdownloader to download them
# repoquery -R --resolve --recursive glibc |xargs -r yumdownloader
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.excellmedia.net
 * extras: centos.excellmedia.net
 * updates: centos.excellmedia.net
No Presto metadata available for base
(1/27): basesystem-10.0-7.el7.centos.noarch.rpm                                                                                                                               | 5.0 kB  00:00:00
(2/27): centos-release-7-5.1804.el7.centos.x86_64.rpm                                                                                                                         |  24 kB  00:00:00
(3/27): chkconfig-1.7.4-1.el7.x86_64.rpm                                                                                                                                      | 181 kB  00:00:00
(4/27): gmp-6.0.0-15.el7.i686.rpm                                                                                                                                             | 416 kB  00:00:00
(5/27): gawk-4.0.2-4.el7_3.1.x86_64.rpm                                                                                                                                       | 874 kB  00:00:00
(6/27): gmp-6.0.0-15.el7.x86_64.rpm                                                                                                                                           | 281 kB  00:00:00
(7/27): keyutils-libs-1.5.8-3.el7.i686.rpm                                                                                                                                    |  25 kB  00:00:00
(8/27): keyutils-libs-1.5.8-3.el7.x86_64.rpm                                                                                                                                  |  25 kB  00:00:00
(9/27): libcap-2.22-9.el7.x86_64.rpm                                                                                                                                          |  47 kB  00:00:00
(10/27): grep-2.20-3.el7.x86_64.rpm                                                                                                                                           | 344 kB  00:00:00
(11/27): libffi-3.0.13-18.el7.i686.rpm                                                                                                                                        |  27 kB  00:00:00
(12/27): libffi-3.0.13-18.el7.x86_64.rpm                                                                                                                                      |  30 kB  00:00:00
(13/27): libverto-0.2.5-4.el7.x86_64.rpm                                                                                                                                      |  16 kB  00:00:00
(14/27): libgcc-4.8.5-28.el7_5.1.i686.rpm                                                                                                                                     | 108 kB  00:00:00
(15/27): libtasn1-4.10-1.el7.x86_64.rpm                                                                                                                                       | 320 kB  00:00:00
(16/27): nss-softokn-freebl-3.34.0-2.el7.i686.rpm                                                                                                                             | 206 kB  00:00:00
(17/27): nspr-4.19.0-1.el7_5.i686.rpm                                                                                                                                         | 128 kB  00:00:00
(18/27): nss-softokn-freebl-3.34.0-2.el7.x86_64.rpm                                                                                                                           | 220 kB  00:00:00
(19/27): p11-kit-0.23.5-3.el7.i686.rpm                                                                                                                                        | 241 kB  00:00:00
(20/27): nss-util-3.36.0-1.el7_5.i686.rpm                                                                                                                                     |  76 kB  00:00:00
(21/27): p11-kit-trust-0.23.5-3.el7.x86_64.rpm                                                                                                                                | 129 kB  00:00:00
(22/27): p11-kit-0.23.5-3.el7.x86_64.rpm                                                                                                                                      | 252 kB  00:00:00
(23/27): pcre-8.32-17.el7.i686.rpm                                                                                                                                            | 420 kB  00:00:00
(24/27): popt-1.13-16.el7.x86_64.rpm                                                                                                                                          |  42 kB  00:00:00
(25/27): pcre-8.32-17.el7.x86_64.rpm                                                                                                                                          | 422 kB  00:00:00
(26/27): zlib-1.2.7-17.el7.x86_64.rpm                                                                                                                                         |  90 kB  00:00:00
(27/27): sed-4.2.2-5.el7.x86_64.rpm                                                                                                                                           | 231 kB  00:00:00

This command will download glibc rpm and all it’s dependencies in your current working directory. So as you see this command was successfully able to get larger list of dependencies which was skipped when we only used yumdownloader.

 

Using repotrack to download rpm package and all dependencies

repotrack is a program for keeping track of a particular package and its dependencies. It will download one or more packages and all dependencies.

Using the below command I am downloading glibc and all it’s dependencies using repotrack in it’s current directory

# repotrack glibc
Downloading basesystem-10.0-7.el7.centos.noarch.rpm
Downloading bash-4.2.46-30.el7.x86_64.rpm
Downloading ca-certificates-2018.2.22-70.0.el7_5.noarch.rpm
Downloading centos-release-7-5.1804.4.el7.centos.x86_64.rpm
Downloading chkconfig-1.7.4-1.el7.x86_64.rpm
Downloading coreutils-8.22-21.el7.x86_64.rpm
Downloading filesystem-3.2-25.el7.x86_64.rpm
Downloading gawk-4.0.2-4.el7_3.1.x86_64.rpm
Downloading glibc-2.17-222.el7.i686.rpm
Downloading glibc-2.17-222.el7.x86_64.rpm
Downloading glibc-common-2.17-222.el7.x86_64.rpm
Downloading gmp-6.0.0-15.el7.i686.rpm
Downloading gmp-6.0.0-15.el7.x86_64.rpm
Downloading grep-2.20-3.el7.x86_64.rpm
Downloading info-5.1-5.el7.x86_64.rpm
Downloading keyutils-libs-1.5.8-3.el7.i686.rpm
Downloading keyutils-libs-1.5.8-3.el7.x86_64.rpm
Downloading krb5-libs-1.15.1-19.el7.x86_64.rpm
Downloading libacl-2.2.51-14.el7.x86_64.rpm
Downloading libattr-2.4.46-13.el7.x86_64.rpm
Downloading libcap-2.22-9.el7.x86_64.rpm
Downloading libcom_err-1.42.9-12.el7_5.x86_64.rpm
Downloading libffi-3.0.13-18.el7.i686.rpm
Downloading libffi-3.0.13-18.el7.x86_64.rpm
Downloading libgcc-4.8.5-28.el7_5.1.i686.rpm
Downloading libgcc-4.8.5-28.el7_5.1.x86_64.rpm
Downloading libselinux-2.5-12.el7.x86_64.rpm
Downloading libsepol-2.5-8.1.el7.x86_64.rpm
Downloading libstdc++-4.8.5-28.el7_5.1.i686.rpm
Downloading libstdc++-4.8.5-28.el7_5.1.x86_64.rpm
Downloading libtasn1-4.10-1.el7.x86_64.rpm
Downloading libverto-0.2.5-4.el7.x86_64.rpm
Downloading ncurses-5.9-14.20130511.el7_4.x86_64.rpm
Downloading ncurses-base-5.9-14.20130511.el7_4.noarch.rpm
Downloading ncurses-libs-5.9-14.20130511.el7_4.x86_64.rpm
Downloading nspr-4.19.0-1.el7_5.i686.rpm
Downloading nspr-4.19.0-1.el7_5.x86_64.rpm
Downloading nss-softokn-freebl-3.36.0-5.el7_5.i686.rpm
Downloading nss-softokn-freebl-3.36.0-5.el7_5.x86_64.rpm
Downloading nss-util-3.36.0-1.el7_5.x86_64.rpm
Downloading nss-util-3.36.0-1.el7_5.i686.rpm
Downloading openssl-libs-1.0.2k-12.el7.x86_64.rpm
Downloading p11-kit-0.23.5-3.el7.i686.rpm
Downloading p11-kit-0.23.5-3.el7.x86_64.rpm
Downloading p11-kit-trust-0.23.5-3.el7.x86_64.rpm
Downloading pcre-8.32-17.el7.x86_64.rpm
Downloading pcre-8.32-17.el7.i686.rpm
Downloading popt-1.13-16.el7.x86_64.rpm
Downloading sed-4.2.2-5.el7.x86_64.rpm
Downloading setup-2.8.71-9.el7.noarch.rpm
Downloading tzdata-2018e-3.el7.noarch.rpm
Downloading zlib-1.2.7-17.el7.x86_64.rpm

This command also successfully download all the list of dependencies for glibc rpm.

 

Lastly I hope the steps from the article to download rpm package and all dependencies on (RHEL / CentOS 7) Linux node was helpful. So, let me know your suggestions and feedback using the comment section.

 

Leave a Reply

Your email address will not be published. Required fields are marked *