Softpanorama

Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
May the source be with you, but remember the KISS principle ;-)
Skepticism and critical thinking is not panacea, but can help to understand the world better

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

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-2018 by Dr. Nikolai Bezroukov. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) in the author free time and 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 make a contribution, supporting development of this site and speed up access. In case softpanorama.org is down you can use the at softpanorama.info

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 author present and former employers, SDNP or any other organization the author may be associated with. 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