Determining What Depends On A Rpm

Home » CentOS » Determining What Depends On A Rpm
CentOS 7 Comments

yum remove lightdm

That command tells me that it’s also going to remove lightdm-gobject and lightdm-gtk.

rpm -q –whatrequires lightdm no package requires lightdm

So obviously we can’t take the word of the –whatrequires option from the rpm command since yum remove tells me that there are two.

That being the case, using yum remove to determine the actual dependency chain is not all that helpful since (a) only the root user can do that, which seems unnecessary when all you want to get is a report about the installed packages that the rpm command can already read as a user, and (b) you’re taking a chance of fat-fingering something and destroying your system by accident.

Ultimately it would be very useful to have some kind of a tool that would generate a report from the rpms installed on a system and tell you exactly what depends on what else. Among other things you could use that report to remove stuff that’s not needed in any installation.

7 thoughts on - Determining What Depends On A Rpm

  • Take a look at what the package provides:

    rpm -q –provides lightdm config(lightdm) = 1.25.0-1.el7
    lightdm = 1.25.0-1.el7
    lightdm(x86-64) = 1.25.0-1.el7
    service(graphical-login) = lightdm

    and then look at what requires those ‘provides’:

    rpm -q –whatrequires ‘lightdm(x86-64)’
    lightdm-qt-1.25.0-1.el7.x86_64
    lightdm-gobject-1.25.0-1.el7.x86_64

    It should be simple enough to script that, and that should get you started.

    Hope that helps.

  • While not a simple answer, this bash function will provide what you’re looking for:

    whatrequires () { (rpm -q –qf ‘%{NAME}\n’ “$1” ; rpm -q –provides “$1”
    ) | tr \\n \\0 | xargs -0 rpm -q –whatrequires ; }

  • Perhaps you want the “–requires” instead of “–whatrequires” option.
    “rpm -q –requires lightdm” gives me 41 lines of output.

    You might also try “yum deplist lightdm”.

    Jon

  • True.  I considered that, and then decided that I could never recommend using “rpm -e” as a test, even with the –test flag, due to the risk of operator error.  Though if you put it in an alias, I suppose that the risk is minimal and the answer is simpler.  :)

  • It’s not really dangerous even without –test, because if it has dependencies the remove is not done, you just get an error.

    Regards, Simon

  • And further, the OP originally asked for a solution which could be run as a non-root user (otherwise yum erase PACKAGE would give the same answer), and when run as non-root, the transaction will fail and nothing can be removed anyway. So overall I think it’s a pretty good solution to the OPs question.