Solved "error: Failed dependencies:" Install/Remove rpm with dependencies Linux

Tips and Tricks, How To, Linux

error failed dependencies rpm install. install rpm with dependencies offline. Remove rpm offline with dependencies in Linux. install rpm centos 7 error failed dependencies. fedora install rpm error failed dependencies. yum install rpm with failed dependencies. yum remove rpm failed dependencies offline. How to install rpm with dependencies in Linux.

Solved “Error: Failed Dependencies:” Install/Remove Rpm With Dependencies Linux

While installing or removing a rpm manually (without yum), you may get Failed dependencies error. It happens because a rpm requires certain pre-requisite rpms to be installed before installing the main rpm.

For example I am trying to install glibc-devel here but the installation fails with Failed dependencies error. As it expected glibc-headers to be installed before installing glibc-devel on this Linux host.

[root@node1 ~]# rpm -ivh glibc-devel-2.17-260.el7_6.5.x86_64.rpm
error: Failed dependencies:
        glibc-headers is needed by glibc-devel-2.17-260.el7_6.5.x86_64
        glibc-headers = 2.17-260.el7_6.5 is needed by glibc-devel-2.17-260.el7_6.5.x86_64

Similarly while trying to remove another rpm I get similar error with failed dependencies, but we will discuss the removal part at the end of this article.

[root@node1 ~]# rpm -e pykickstart
error: Failed dependencies:
        pykickstart >= 1.99.22 is needed by (installed) python-blivet-1:
        pykickstart >= is needed by (installed) anaconda-core-


Install rpm with dependencies

Now with the provided error on screen, it is not sure that this is the only dependency rpm which may be required for glibc-devel. You manually download this version of glibc-header (glibc-headers = 2.17-260.el7_6.5) and then re-attempt the installation of glibc-devel but it is also possible that the next time the rpm installation fails again for another dependency.

If you are lucky enough your rpm may get installed with only few dependencies but it is also possible that you end up downloading and installing tons of rpms as a dependency. This only frustrate you and eat up your time.

To avoid this you must create a local repo and install the primary and dependency rpms using yum. So the first thing we have to do is to get the list of dependency rpms for glibc-devel here.


Download dependency rpms

I have written another article with the steps to automatically locate and download all the dependency rpms.

To use this before trying to install rpm you must have a host which is connected with Internet and has baseline repository. For RHEL nodes the system must be registered with Red Hat Network, while CentOS nodes will have all the default repository files by default available under /etc/yum.repos.d/

In this example we will use repotrack to get the dependency list of rpms

[root@node1 rpms]# repotrack glibc-devel
Downloading basesystem-10.0-7.el7.centos.noarch.rpm
Downloading bash-4.2.46-31.el7.x86_64.rpm
Downloading ca-certificates-2018.2.22-70.0.el7_5.noarch.rpm
Downloading centos-release-7-6.1810.2.el7.centos.x86_64.rpm
Downloading chkconfig-1.7.4-1.el7.x86_64.rpm
Downloading coreutils-8.22-23.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-260.el7_6.5.i686.rpm
Downloading glibc-2.17-260.el7_6.5.x86_64.rpm
Downloading glibc-common-2.17-260.el7_6.5.x86_64.rpm
Downloading glibc-devel-2.17-260.el7_6.5.i686.rpm
Downloading glibc-devel-2.17-260.el7_6.5.x86_64.rpm
Downloading glibc-headers-2.17-260.el7_6.5.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 kernel-headers-3.10.0-957.12.2.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-37.el7_6.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-13.el7.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-36.el7_6.2.i686.rpm
Downloading libgcc-4.8.5-36.el7_6.2.x86_64.rpm
Downloading libselinux-2.5-14.1.el7.x86_64.rpm
Downloading libsepol-2.5-10.el7.x86_64.rpm
Downloading libstdc++-4.8.5-36.el7_6.2.i686.rpm
Downloading libstdc++-4.8.5-36.el7_6.2.x86_64.rpm
Downloading libtasn1-4.10-1.el7.i686.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.1.el7_6.i686.rpm
Downloading nss-util-3.36.0-1.1.el7_6.x86_64.rpm
Downloading openssl-libs-1.0.2k-16.el7_6.1.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 p11-kit-trust-0.23.5-3.el7.i686.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-10.el7.noarch.rpm
Downloading tzdata-2019a-1.el7.noarch.rpm
Downloading zlib-1.2.7-18.el7.x86_64.rpm


List the dependency rpms

Now if you do not have a node with active internet connection and baseline repository then you can also get the list of dependency rpms offline.

For the sake of this article I have used repoquery command as it gives a very clear output with the rpm name and this can be used offline as well.

[root@node1 rpms]# repoquery -R --resolve --recursive glibc-devel
You may see a long list of dependency rpms with this command. Now you may not necessarily have to install all these rpms, as some or most of them must already be installed on your system. So you have to figure out the list of rpms which are already installed and the ones which you have to download to create a repo to install glibc-devel.

Below are the current list of repositories on my Linux node

[root@node1 rpms]# yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base:
 * epel:
 * extras:
 * openstack-stein:
 * updates:
repo id                       repo name                                           status
base/7/x86_64                 CentOS-7 - Base                                     10,019
*epel/x86_64                  Extra Packages for Enterprise Linux 7 - x86_64      13,221
extras/7/x86_64               CentOS-7 - Extras                                      409
openstack-stein/7/x86_64      OpenStack Stein Repository                           1,804
rdo-qemu-ev/x86_64            RDO CentOS-7 - QEMU EV                                  75
updates/7/x86_64              CentOS-7 - Updates                                   1,982
repolist: 27,510


Create a customised repo

Install createrepo rpm if not already installed

[root@node1 rpms]# rpm -qa | grep createrepo

Since I don't have a createrepo rpm installed, I will install it via yum

[root@node1 rpms]# yum -y install creatrepo
If you do not have a yum repository then installation via yum is not possible. In such case you must manually download the createrepo rpm and it's dependency rpms for the installation. You can also get this rpm in your source DVD and then create a repository.

Once you have downloaded all the rpms, next create a repo using createrepo rpm. For the same of this article I have downloaded all my dependency rpms inside /root/rpms.

Navigate inside the directory which contains all the downloaded dependency rpms

[root@node1 ~]# cd /root/rpms

Next create the repo using below command

[root@node1 rpms]# createrepo .
Spawning worker 0 with 58 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

Our repo is created successfully. You can validate this, now a new repodata directory must have been created under /root/rpms.

[root@node1 rpms]# ls -l repodata
total 280
-rw-r--r-- 1 root root 75853 Jun  3 13:00 11e8d76238ff21f69afdfaace67dd0b381d53ea6f50eabc696344dbb975ee9cb-filelists.xml.gz
-rw-r--r-- 1 root root 27064 Jun  3 13:00 225d4da1642be7d9a07567d6ab5f82b6679b5949dbb1158278705f09fda59343-other.xml.gz
-rw-r--r-- 1 root root 45925 Jun  3 13:00 5bf9d5a29b34070dbca033329f65bd28d33135fcd6719d518fb2e8f7be881d37-primary.sqlite.bz2
-rw-r--r-- 1 root root 35572 Jun  3 13:00 60a9bb4940ec7ee4d4cd45b4b83d941f73c155c56f539505f510c1b17fbd1f7e-other.sqlite.bz2
-rw-r--r-- 1 root root 65495 Jun  3 13:00 9ee15ecc9bf5b76ac799022ab7d90acf6d9044a3d79f88743903fc1d063dcab8-filelists.sqlite.bz2
-rw-r--r-- 1 root root 20804 Jun  3 13:00 cd4cf779c31707d754dc77773f943c49593c0324537a1773125355e4b6ad29df-primary.xml.gz
-rw-r--r-- 1 root root  2988 Jun  3 13:00 repomd.xml

[root@node1 rpms]# ls -ld repodata
drwxr-xr-x 2 root root 4096 Jun  3 13:00 repodata

Create a repository file with below content. Modify the baseurl with the location as per your environment. Since I have placed my rpms and created the repository inside /root/rpms hence I have used the same.

[root@node1 rpms]# cat /etc/yum.repos.d/glibc-install.repo
name=glibc rpms

Now for this article I want to make sure only one of my repo is used to install rpm i.e. glibc-devel. Hence I have disabled all of my other repositories and have only enable glibc-rpms repo in the below command to list the available rpms.

[root@node1 rpms]# yum --disablerepo="*" --enablerepo=glibc-rpms list available
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
glibc.i686                                2.17-260.el7_6.5                    glibc-rpms
glibc-devel.i686                          2.17-260.el7_6.5                    glibc-rpms
gmp.i686                                  1:6.0.0-15.el7                      glibc-rpms
keyutils-libs.i686                        1.5.8-3.el7                         glibc-rpms
libffi.i686                               3.0.13-18.el7                       glibc-rpms
libgcc.i686                               4.8.5-36.el7_6.2                    glibc-rpms
libstdc++.i686                            4.8.5-36.el7_6.2                    glibc-rpms
libtasn1.i686                             4.10-1.el7                          glibc-rpms
nspr.i686                                 4.19.0-1.el7_5                      glibc-rpms
nss-softokn-freebl.i686                   3.36.0-5.el7_5                      glibc-rpms
nss-util.i686                             3.36.0-1.1.el7_6                    glibc-rpms
p11-kit.i686                              0.23.5-3.el7                        glibc-rpms
p11-kit-trust.i686                        0.23.5-3.el7                        glibc-rpms
pcre.i686                                 8.32-17.el7                         glibc-rpms

Now in a similar way we will install rpm glibc-devel by disabling all other repos except glibc-rpms repository.

[root@node1 rpms]# yum --disablerepo="*" --enablerepo=glibc-rpms install glibc-devel
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package glibc-devel.x86_64 0:2.17-260.el7_6.5 will be installed
--> Processing Dependency: glibc-headers = 2.17-260.el7_6.5 for package: glibc-devel-2.17-260.el7_6.5.x86_64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.17-260.el7_6.5.x86_64
--> Running transaction check
---> Package glibc-headers.x86_64 0:2.17-260.el7_6.5 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.17-260.el7_6.5.x86_64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.17-260.el7_6.5.x86_64
--> Running transaction check
---> Package kernel-headers.x86_64 0:3.10.0-957.12.2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

 Package               Arch          Version                    Repository         Size
 glibc-devel           x86_64        2.17-260.el7_6.5           glibc-rpms        1.1 M
Installing for dependencies:
 glibc-headers         x86_64        2.17-260.el7_6.5           glibc-rpms        683 k
 kernel-headers        x86_64        3.10.0-957.12.2.el7        glibc-rpms        8.0 M

Transaction Summary
Install  1 Package (+2 Dependent packages)

Total download size: 9.7 M
Installed size: 6.9 M
Is this ok [y/d/N]: y
Downloading packages:
Total                                                      134 MB/s | 9.7 MB  00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : kernel-headers-3.10.0-957.12.2.el7.x86_64                            1/3
  Installing : glibc-headers-2.17-260.el7_6.5.x86_64                                2/3
  Installing : glibc-devel-2.17-260.el7_6.5.x86_64                                  3/3
  Verifying  : glibc-headers-2.17-260.el7_6.5.x86_64                                1/3
  Verifying  : kernel-headers-3.10.0-957.12.2.el7.x86_64                            2/3
  Verifying  : glibc-devel-2.17-260.el7_6.5.x86_64                                  3/3

  glibc-devel.x86_64 0:2.17-260.el7_6.5

Dependency Installed:
  glibc-headers.x86_64 0:2.17-260.el7_6.5  kernel-headers.x86_64 0:3.10.0-957.12.2.el7

As you see with this trick we were successfully able to install our glibc-devel rpm along with all the dependency rpms.


Remove rpm with dependencies

Now since we have a solution to install rpm with dependencies, let us understand the risks of removing rpm with dependencies.

It is very much possible that every time you try to remove or uninstall a rpm, you get "error: failed dependencies". Now here you have two choice with you

  1. Remove rpm along with it's dependencies
  2. Skip the dependency rpms and just remove the primary rpm which you wish to be un-installed

This choice completely depends on the type of rpm and list of dependency rpms. For most rpms like the one I have shown in my example, I see few rpms as dependency so I can choose to ignore the dependencies and just proceed with the offline removal of pykickstart rpm as I know the dependency rpms are required and will not impact my running system.


Remove rpm offline by skipping dependencies

Now you can remove rpm by skipping all the dependencies by using --nodeps

[root@node1 ~]# rpm -e pykickstart
error: Failed dependencies:
pykickstart >= 1.99.22 is needed by (installed) python-blivet-1:
pykickstart >= is needed by (installed) anaconda-core-

[root@node1 ~]# rpm -e pykickstart --nodeps

Now let us validate if the rpm is successfully removed.

[root@node1 ~]# rpm -qa | grep pykickstart
[root@node1 ~]#

So the rpm is removed while the dependencies are still present on my Linux node, as you can see below:

[root@kerberos ~]# rpm -qa | grep python-blivet

[root@kerberos ~]# rpm -qa | grep anaconda-core


Remove rpm with dependencies using yum

Now if you wish to remove rpm along with all the dependencies then you can use yum.

Removing the dependency rpms can sometimes be a risk to your node and it may end us in an unusable state if important binary and library files are removed. Hence we strong recommend to avoid using this step.

To remove rpm along with it's dependencies you can use the below command

[root@kerberos ~]# yum remove pykickstart
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package pykickstart.noarch 0: will be erased
--> Processing Dependency: pykickstart >= 1.99.22 for package: 1:python-blivet-
--> Processing Dependency: pykickstart >= for package: anaconda-core-
--> Running transaction check
---> Package anaconda-core.x86_64 0: will be erased
--> Processing Dependency: anaconda-core = for package: anaconda-gui-
--> Processing Dependency: anaconda-core = for package: anaconda-tui-
---> Package python-blivet.noarch 1: will be erased
--> Running transaction check
---> Package anaconda-gui.x86_64 0: will be erased
--> Processing Dependency: anaconda-gui >= for package: initial-setup-gui-
---> Package anaconda-tui.x86_64 0: will be erased
--> Processing Dependency: anaconda-tui >= for package: initial-setup-
--> Running transaction check
---> Package initial-setup.x86_64 0: will be erased
---> Package initial-setup-gui.x86_64 0: will be erased
--> Finished Dependency Resolution

Dependencies Resolved

 Package                         Arch                 Version                                    Repository               Size
 pykickstart                     noarch                                @base                   1.7 M
Removing for dependencies:
 anaconda-core                   x86_64                       @anaconda               8.1 M
 anaconda-gui                    x86_64                       @anaconda               1.5 M
 anaconda-tui                    x86_64                       @anaconda               443 k
 initial-setup                   x86_64                           @anaconda               221 k
 initial-setup-gui               x86_64                           @anaconda                32 k
 python-blivet                   noarch               1:                         @anaconda               3.0 M

Transaction Summary
Remove  1 Package (+6 Dependent packages)

Installed size: 15 M
Is this ok [y/N]: y <- Press "y" for confirmation
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : initial-setup-gui-                                                              1/7
  Erasing    : anaconda-gui-                                                               2/7
  Erasing    : initial-setup-                                                                  3/7
  Erasing    : anaconda-core-                                                              4/7
  Erasing    : anaconda-tui-                                                               5/7
  Erasing    : 1:python-blivet-                                                                     6/7
  Erasing    : pykickstart-                                                                         7/7
  Verifying  : anaconda-tui-                                                               1/7
  Verifying  : 1:python-blivet-                                                                     2/7
  Verifying  : anaconda-core-                                                              3/7
  Verifying  : initial-setup-gui-                                                              4/7
  Verifying  : pykickstart-                                                                         5/7
  Verifying  : initial-setup-                                                                  6/7
  Verifying  : anaconda-gui-                                                               7/7

  pykickstart.noarch 0:

Dependency Removed:
  anaconda-core.x86_64 0:               anaconda-gui.x86_64 0:
  anaconda-tui.x86_64 0:                initial-setup.x86_64 0:
  initial-setup-gui.x86_64 0:               python-blivet.noarch 1:



Now you must be wondering, why yum shows a larger list of dependency rpms compared to STDERR while doing rpm -e pykickstart?

While doing rpm -e <rpm_name>, the rpm command shows dependency list for the provided rpm. Now before attempting to remove rpm, yum will locate the dependency list of the dependency rpms i.e. for example anaconda-core is a dependency for pykickstart but then anaconda-tui is a dependency for anaconda-core. Hence the entire chain must be removed.

This is the reason why we strongly recommend "NOT TO" use yum for removing rpms with dependencies.


Lastly I hope the steps from the article to remove rpm or install rpm along with dependency rpms (fixing failed dependencies) was helpful. So, let me know your suggestions and feedback using the comment section.


Views: 499
Deepak Prasad

Deepak Prasad

He is the founder of GoLinuxCloud and brings over a decade of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, AWS, Networking, and Security. With extensive experience, he excels in various domains, from development to DevOps, Networking, and Security, ensuring robust and efficient solutions for diverse projects. You can connect with him on his LinkedIn profile.

Can't find what you're searching for? Let us assist you.

Enter your query below, and we'll provide instant results tailored to your needs.

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

Buy GoLinuxCloud a Coffee

For any other feedbacks or questions you can send mail to

Thank You for your support!!

1 thought on “Solved "error: Failed dependencies:" Install/Remove rpm with dependencies Linux”

  1. This is my first time I have visited your site. I found a lot of interesting stuff in your blog. From the tons of comments on your posts, I guess I am not the only one! keep up the good work.


Leave a Comment