Softpanorama

May the source be with you, but remember the KISS principle ;-)
Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and  bastardization of classic Unix

Download Dependencies for a RPM with Yum

News YUM Recommended Links Reference Yum's repository system How to add a new yum repository Registering a server using Red Hat Subscription Manager (RHSM)
EPEL repository How to Enable EPEL Repository Yum Plugins How to download RPMs with yum Download Dependencies for a RPM Red Hat RPM hell
Smart Pirut Yast Horror Stories Unix History Humor Etc

The other day I was trying to create a local repository with packages only we use often in CentOS 7. Of course we can download any package using curl or wget commands. These commands however won’t download the required dependencies. You have to spend some time and manually search and download the dependencies required by the package to install. Well, not anymore. In this brief tutorial, I will walk you through how to download a RPM package with all dependencies in two methods. I tested this guide on CentOS 7, although the same steps may work on other RPM based systems such as RHEL, Fedora and Scientific Linux.

How To Download A RPM Package With All Dependencies In CentOS

Method 1 – Download A RPM Package With All Dependencies Using “Downloadonly” plugin

We can easily download any RPM package with all dependencies using “Downloadonly” plugin for yum command.

To install Downloadonly plugin, run the following command as root user.

yum install yum-plugin-downloadonly

Now, run the following command to download a RPM package.

yum install --downloadonly <package-name>

By default, this command will download and save the packages in /var/cache/yum/ in rhel-{arch}-channel/packages location. However, you can download and save the packages in any location of your choice using “–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 the location that you specified in the above command. You will see there the downloaded package with all dependencies. In my case, I have downloaded the packages in /root/mypackages/ directory.

Let us 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 you see in the above output, the package httpd has been downloaded with all dependencies.

Please note that this plugin is applicable for “yum install/yum update” and not for “yum groupinstall”. By default this plugin will download the latest available packages in the repository. You can however download a particular version by specifying the version.

Example:

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

Also, you can download multiple packages at once as shown below.

yum install --downloadonly --downloaddir=/root/mypackages/ httpd vsftpd
DownloadFree Guide: “10 Easy Ways to Restore Your Linux System”

Method 2 – Download A RPM Package With All Dependencies Using “Yumdownloader” utility

Yumdownloader is a simple, yet useful command-line utility that downloads any RPM package along with all required dependencies in one go.

Install Yumdownloader using the following command as root user.

yum install yum-utils

Once installed, run the following command to download a package, for example httpd.

yumdownloader httpd

To download packages with all dependencies, use –resolve option:

yumdownloader --resolve httpd

By default, Yumdownloader will download the packages in the current working directory.

To download packages along with all dependencies to a specific location, use –destdir option:

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

Or

yumdownloader --resolve --destdir /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
--> 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
(1/5): apr-util-1.5.2-6.el7.x86_64.rpm | 92 kB 00:00:01 
(2/5): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:00:02 
(3/5): apr-1.4.8-3.el7.x86_64.rpm | 103 kB 00:00:02 
(4/5): httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm | 83 kB 00:00:03 
(5/5): httpd-2.4.6-40.el7.centos.4.x86_64.rpm | 2.7 MB 00:00:19

 

Let us verify whether packages have been downloaded in the specified location.

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

 

Unlike “Downloadonly” plugin, Yumdownload can download the packages related to a particular group.

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

Personally, I prefer Yumdownloader over “Downloadonly” plugin for yum. But, both are extremely easy and handy and does the same job.

 


Top Visited
Switchboard
Latest
Past week
Past month

NEWS CONTENTS

Old News ;-)

How To Download A RPM Package With All Dependencies In CentOS

Method 1 – Download A RPM Package With All Dependencies Using "Downloadonly" plugin

We can easily download any RPM package with all dependencies using "Downloadonly" plugin for yum command.

To install Downloadonly plugin, run the following command as root user.

yum install yum-plugin-downloadonly

Now, run the following command to download a RPM package.

yum install --downloadonly <package-name>

By default, this command will download and save the packages in /var/cache/yum/ in rhel-{arch}-channel/packages location. However, you can download and save the packages in any location of your choice using "–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 the location that you specified in the above command. You will see there the downloaded package with all dependencies. In my case, I have downloaded the packages in /root/mypackages/ directory.

Let us 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 you see in the above output, the package httpd has been downloaded with all dependencies.

Please note that this plugin is applicable for "yum install/yum update" and not for "yum groupinstall". By default this plugin will download the latest available packages in the repository. You can however download a particular version by specifying the version.

Example:

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

Also, you can download multiple packages at once as shown below.

yum install --downloadonly --downloaddir=/root/mypackages/ httpd vsftpd
DownloadFree Guide: "10 Easy Ways to Restore Your Linux System"

Method 2 – Download A RPM Package With All Dependencies Using "Yumdownloader" utility

Yumdownloader is a simple, yet useful command-line utility that downloads any RPM package along with all required dependencies in one go.

Install Yumdownloader using the following command as root user.

yum install yum-utils

Once installed, run the following command to download a package, for example httpd.

yumdownloader httpd

To download packages with all dependencies, use –resolve option:

yumdownloader --resolve httpd

By default, Yumdownloader will download the packages in the current working directory.

To download packages along with all dependencies to a specific location, use –destdir option:

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

Or

yumdownloader --resolve --destdir /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
--> 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
(1/5): apr-util-1.5.2-6.el7.x86_64.rpm | 92 kB 00:00:01 
(2/5): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:00:02 
(3/5): apr-1.4.8-3.el7.x86_64.rpm | 103 kB 00:00:02 
(4/5): httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm | 83 kB 00:00:03 
(5/5): httpd-2.4.6-40.el7.centos.4.x86_64.rpm | 2.7 MB 00:00:19

Let us verify whether packages have been downloaded in the specified location.

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

Unlike "Downloadonly" plugin, Yumdownload can download the packages related to a particular group.

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

Personally, I prefer Yumdownloader over "Downloadonly" plugin for yum. But, both are extremely easy and handy and does the same job.

How do I use yum to download a RPM packages without installing them Helidon

In this example we will download all RPMs and dependencies for OCS INVENTORY Agent in current directory so we can use them on all other machines later.

[root@localhost]# yum --downloadonly --downloaddir=. -y install ocsinventory-agent
Loaded plugins: downloadonly, fastestmirror, priorities
Loading mirror speeds from cached hostfile
* epel: mirror.umoss.org
* base: mirrors.gigenet.com
* updates: mirror.icpl.org
* addons: mirror.sanctuaryhost.com
* extras: mirror.cisp.com
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package ocsinventory-agent.noarch 0:1.1.2-1.el5 set to be updated
--> Processing Dependency: perl(Crypt::SSLeay) for package: ocsinventory-agent
--> Processing Dependency: perl(XML::Simple) for package: ocsinventory-agent
--> Processing Dependency: perl(Proc::Daemon) for package: ocsinventory-agent
--> Processing Dependency: perl(Compress::Zlib) for package: ocsinventory-agent
--> Processing Dependency: monitor-edid for package: ocsinventory-agent
--> Processing Dependency: perl(HTTP::Request) for package: ocsinventory-agent
--> Processing Dependency: perl(Net::IP) for package: ocsinventory-agent
--> Processing Dependency: perl(LWP::UserAgent) for package: ocsinventory-agent
--> Processing Dependency: nmap for package: ocsinventory-agent
--> Processing Dependency: perl(XML::SAX) for package: ocsinventory-agent
--> Processing Dependency: perl(Net::SSLeay) for package: ocsinventory-agent
--> Running transaction check
---> Package perl-XML-Simple.noarch 0:2.14-4.fc6 set to be updated
--> Processing Dependency: perl(XML::Parser) for package: perl-XML-Simple
---> Package perl-XML-SAX.noarch 0:0.14-5 set to be updated
--> Processing Dependency: perl(XML::NamespaceSupport) for package: perl-XML-SAX
---> Package nmap.x86_64 2:4.11-1.1 set to be updated
---> Package perl-Net-IP.noarch 0:1.25-2.fc6 set to be updated
---> Package perl-Crypt-SSLeay.x86_64 0:0.51-11.el5 set to be updated
---> Package monitor-edid.x86_64 0:2.5-1.el5.1 set to be updated
---> Package perl-libwww-perl.noarch 0:5.805-1.1.1 set to be updated
--> Processing Dependency: perl-HTML-Parser >= 3.33 for package: perl-libwww-perl
--> Processing Dependency: perl(HTML::Entities) for package: perl-libwww-perl
---> Package perl-Compress-Zlib.x86_64 0:1.42-1.fc6 set to be updated
---> Package perl-Net-SSLeay.x86_64 0:1.30-4.fc6 set to be updated
---> Package perl-Proc-Daemon.noarch 0:0.03-1.el5 set to be updated
--> Running transaction check
---> Package perl-XML-Parser.x86_64 0:2.34-6.1.2.2.1 set to be updated
---> Package perl-XML-NamespaceSupport.noarch 0:1.09-1.2.1 set to be updated
---> Package perl-HTML-Parser.x86_64 0:3.55-1.fc6 set to be updated
--> Processing Dependency: perl-HTML-Tagset >= 3.03 for package: perl-HTML-Parser
--> Processing Dependency: perl(HTML::Tagset) for package: perl-HTML-Parser
--> Running transaction check
---> Package perl-HTML-Tagset.noarch 0:3.10-2.1.1 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================
Package Arch Version Repository Size
=========================================================================================================
Installing:
ocsinventory-agent noarch 1.1.2-1.el5 epel 155 k
Installing for dependencies:
monitor-edid x86_64 2.5-1.el5.1 epel 82 k
nmap x86_64 2:4.11-1.1 base 680 k
perl-Compress-Zlib x86_64 1.42-1.fc6 base 52 k
perl-Crypt-SSLeay x86_64 0.51-11.el5 base 45 k
perl-HTML-Parser x86_64 3.55-1.fc6 base 92 k
perl-HTML-Tagset noarch 3.10-2.1.1 base 15 k
perl-Net-IP noarch 1.25-2.fc6 base 31 k
perl-Net-SSLeay x86_64 1.30-4.fc6 base 192 k
perl-Proc-Daemon noarch 0.03-1.el5 epel 9.4 k
perl-XML-NamespaceSupport noarch 1.09-1.2.1 base 15 k
perl-XML-Parser x86_64 2.34-6.1.2.2.1 base 210 k
perl-XML-SAX noarch 0.14-5 base 75 k
perl-XML-Simple noarch 2.14-4.fc6 base 68 k
perl-libwww-perl noarch 5.805-1.1.1 base 376 k

Transaction Summary
=========================================================================================================
Install 15 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 2.0 M
Downloading Packages:
(1/15): perl-Proc-Daemon-0.03-1.el5.noarch.rpm | 9.4 kB 00:00
(2/15): perl-HTML-Tagset-3.10-2.1.1.noarch.rpm | 15 kB 00:00
(3/15): perl-XML-NamespaceSupport-1.09-1.2.1.noarch.rpm | 15 kB 00:00
(4/15): perl-Net-IP-1.25-2.fc6.noarch.rpm | 31 kB 00:00
(5/15): perl-Crypt-SSLeay-0.51-11.el5.x86_64.rpm | 45 kB 00:00
(6/15): perl-Compress-Zlib-1.42-1.fc6.x86_64.rpm | 52 kB 00:00
(7/15): perl-XML-Simple-2.14-4.fc6.noarch.rpm | 68 kB 00:00
(8/15): perl-XML-SAX-0.14-5.noarch.rpm | 75 kB 00:00
(9/15): monitor-edid-2.5-1.el5.1.x86_64.rpm | 82 kB 00:00
(10/15): perl-HTML-Parser-3.55-1.fc6.x86_64.rpm | 92 kB 00:00
(11/15): ocsinventory-agent-1.1.2-1.el5.noarch.rpm | 155 kB 00:00
(12/15): perl-Net-SSLeay-1.30-4.fc6.x86_64.rpm | 192 kB 00:00
(13/15): perl-XML-Parser-2.34-6.1.2.2.1.x86_64.rpm | 210 kB 00:00
(14/15): perl-libwww-perl-5.805-1.1.1.noarch.rpm | 376 kB 00:00
(15/15): nmap-4.11-1.1.x86_64.rpm | 680 kB 00:01
---------------------------------------------------------------------------------------------------------
Total 465 kB/s | 2.0 MB 00:04


exiting because --downloadonly specified
[root@localhost]# ls
monitor-edid-2.5-1.el5.1.x86_64.rpm perl-Net-IP-1.25-2.fc6.noarch.rpm
nmap-4.11-1.1.x86_64.rpm perl-Net-SSLeay-1.30-4.fc6.x86_64.rpm
ocsinventory-agent-1.1.2-1.el5.noarch.rpm perl-Proc-Daemon-0.03-1.el5.noarch.rpm
perl-Compress-Zlib-1.42-1.fc6.x86_64.rpm perl-XML-NamespaceSupport-1.09-1.2.1.noarch.rpm
perl-Crypt-SSLeay-0.51-11.el5.x86_64.rpm perl-XML-Parser-2.34-6.1.2.2.1.x86_64.rpm
perl-HTML-Parser-3.55-1.fc6.x86_64.rpm perl-XML-SAX-0.14-5.noarch.rpm
perl-HTML-Tagset-3.10-2.1.1.noarch.rpm perl-XML-Simple-2.14-4.fc6.noarch.rpm
perl-libwww-perl-5.805-1.1.1.noarch.rpm

As you can see yum just downloaded whole RPMs without instaling them, it says above :

exiting because --downloadonly specified

What we may do now is just copy all those RPMs to other machines or systems (which do not have access to internet repository) and install them, simply getting into directory with RPMs and running this command :

# yum install *

Category :

centos - Download RPMs for all dependencies for package using yum - Stack Overflow

I'm attempting to create a local yum repo on my system containing various packages from, chiefly, the CentOS base repos. The server which is hosting the yum repo will not necessarily have the same base packages installed by default as the servers which will be using the yum repo. For this reason, I need to ensure that my repos contain the packages that I want and every single one of their dependencies.

I'm creating my repos using the yumdownloader tool provided in the yum-utils package to try to download an RPM file for a package using yum from the standard CentOS mirrors. Helpfully it provides a command line option, --resolve, which also downloads dependencies. However, because it's built on yum itself, yumdownloader will only download dependencies for the package that are not already present on the system.

For example, I wish to download package A, which depends on Packages B, C and D. If package D is already installed on the system, yumdownloader --resolve A will only download A, B and C, but not D.

Is there a way to download the RPMs for all dependencies on a package from a yum repo?

linux - How to make rpm auto install dependencies - Stack Overflow

I have built two RPM packages
  • proj1-1.0-1.x86_64.rpm
  • libtest1-1.0-1.x86_64.rpm

proj1 depends on the file libtest1.so being present and it is reflected correctly in the RPM packages as seen here:

user@my-pc:~$ rpm -qp --requires proj1-1.0-1.x86_64.rpm
libtest1.so()(64bit)

user@my-pc:~$ rpm -qp --provides libtest1-1.0-1.x86_64.rpm
libtest1.so()(64bit)

The installation of proj1 fails due to a missing dependency.

user@my-pc:~$ rpm -ivh proj1-1.0-1.x86_64.rpm
error: Failed dependencies:
libtest1.so()(64bit) is needed by proj1-1.0-1.x86_64.rpm

How do I ensure that libtest1-1.0-1.x86_64.rpm is installed automatically during the installation of proj1-1.0-1.x86_64.rpm?

I did try the --aid option with rpm -i as described here but it didn't work for me.

Is there any other way?

Thanks for any help.

share|improve this question edited Sep 13 '13 at 9:55


asked Dec 14 '12 at 10:30

HAL
1,2501417

add a comment |

5 Answers 5

activeoldestvotes
up vote24down voteaccepted Create a (local) repository and use yum to have it resolve the dependencies for you.

The CentOS wiki has a nice page providing a how-to on this. CentOS wiki HowTos/CreateLocalRepos.


Summarized and further minimized (not ideal, but quickest):

  1. Create a directory for you local repository, e.g. /home/user/repo.
  2. Move the RPMs into that directory.
  3. Fix some ownership and filesystem permissions:
    # chown -R root.root /home/user/repo
    
  4. Install the createrepo package if not installed yet, and run
    # createrepo /home/user/repo
    # chmod -R o-w+r /home/user/repo
    
  5. Create a repository configuration file, e.g. /etc/yum.repos.d/myrepo.repo containing
    [local]
    name=My Awesome Repo
    baseurl=file:///home/user/repo
    enabled=1
    gpgcheck=0
    
  6. Install your package using
    # yum install packagename
    

Download Dependencies for a RPM with Yum - Bonus Bits Wiki

This article gives the steps to use Yum to download or check dependencies for an RPM package you have downloaded.

Command

yum localinstall filename.rpm

Example

yum localinstall ImageMagick-6.7.5.6-3.fc18.x86_64.rpm ImageMagick-perl-6.7.5.6-3.fc18.x86_64.rpm

Unavailable Required Packages from Current Repositories

--> Finished Dependency Resolution
Error: Package: ImageMagick-6.7.5.6-3.fc18.x86_64 (/ImageMagick-6.7.5.6-3.fc18.x86_64)
Requires: libpng15.so.15(PNG15_0)(64bit)
Error: Package: ImageMagick-6.7.5.6-3.fc18.x86_64 (/ImageMagick-6.7.5.6-3.fc18.x86_64)
Requires: libgs.so.9()(64bit)
Error: Package: ImageMagick-6.7.5.6-3.fc18.x86_64 (/ImageMagick-6.7.5.6-3.fc18.x86_64)
Requires: libpng15.so.15()(64bit)
Error: Package: ImageMagick-6.7.5.6-3.fc18.x86_64 (/ImageMagick-6.7.5.6-3.fc18.x86_64)
Requires: libc.so.6(GLIBC_2.14)(64bit)
Error: Package: ImageMagick-6.7.5.6-3.fc18.x86_64 (/ImageMagick-6.7.5.6-3.fc18.x86_64)
Requires: libjpeg.so.62(LIBJPEG_6.2)(64bit)
Error: Package: ImageMagick-perl-6.7.5.6-3.fc18.x86_64 (/ImageMagick-perl-6.7.5.6-3.fc18.x86_64)
Requires: perl(:MODULE_COMPAT_5.14.2)

How To Download A RPM Package With All Dependencies In CentOS

The other day I was trying to create a local repository with packages only we use often in CentOS 7. Of course we can download any package using curl or wget commands. These commands however won't download the required dependencies. You have to spend some time and manually search and download the dependencies required by the package to install. Well, not anymore. In this brief tutorial, I will walk you through how to download a RPM package with all dependencies in two methods. I tested this guide on CentOS 7, although the same steps may work on other RPM based systems such as RHEL, Fedora and Scientific Linux.

Method 1 – Download A RPM Package With All Dependencies Using "Downloadonly" plugin

We can easily download any RPM package with all dependencies using "Downloadonly" plugin for yum command.

To install Downloadonly plugin, run the following command as root user.

yum install yum-plugin-downloadonly

Now, run the following command to download a RPM package.

yum install --downloadonly <package-name>

By default, this command will download and save the packages in /var/cache/yum/ in rhel-{arch}-channel/packages location. However, you can download and save the packages in any location of your choice using "–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

rootserver1_001

Now go the location that you specified in the above command. You will see there the downloaded package with all dependencies. In my case, I have downloaded the packages in /root/mypackages/ directory.

Let us 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

rootserver1_003

As you see in the above output, the package httpd has been downloaded with all dependencies.

Please note that this plugin is applicable for "yum install/yum update" and not for "yum groupinstall". By default this plugin will download the latest available packages in the repository. You can however download a particular version by specifying the version.

Example:

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

Also, you can download multiple packages at once as shown below.

yum install --downloadonly --downloaddir=/root/mypackages/ httpd vsftpd
DownloadFree Guide: "10 Easy Ways to Restore Your Linux System"

Method 2 – Download A RPM Package With All Dependencies Using "Yumdownloader" utility

Yumdownloader is a simple, yet useful command-line utility that downloads any RPM package along with all required dependencies in one go.

Install Yumdownloader using the following command as root user.

yum install yum-utils

Once installed, run the following command to download a package, for example httpd.

yumdownloader httpd

To download packages with all dependencies, use –resolve option:

yumdownloader --resolve httpd

By default, Yumdownloader will download the packages in the current working directory.

To download packages along with all dependencies to a specific location, use –destdir option:

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

Or

yumdownloader --resolve --destdir /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
--> 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
(1/5): apr-util-1.5.2-6.el7.x86_64.rpm | 92 kB 00:00:01 
(2/5): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:00:02 
(3/5): apr-1.4.8-3.el7.x86_64.rpm | 103 kB 00:00:02 
(4/5): httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm | 83 kB 00:00:03 
(5/5): httpd-2.4.6-40.el7.centos.4.x86_64.rpm | 2.7 MB 00:00:19

Let us verify whether packages have been downloaded in the specified location.

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

Unlike "Downloadonly" plugin, Yumdownload can download the packages related to a particular group.

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

Personally, I prefer Yumdownloader over "Downloadonly" plugin for yum. But, both are extremely easy and handy and does the same job.

That's all for today. If you find this guide helpful, please share it on your social networks and let others to benefit.

Cheers!

Recommended Links

Google matched content

Softpanorama Recommended

Top articles

Sites

Top articles

Sites

...

Yum Download Rpm And All Dependencies - Patriksson ...



Etc

Society

Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes

Bulletin:

Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D


Copyright © 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to to buy a cup of coffee for authors of this site

Disclaimer:

The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Last modified: March 12, 2019