Ask Your Question

How to fix RPM package "has missing requires of" errors?

asked 2012-10-09 15:39:34 -0600

Christian gravatar image

After an F16 -> F17 upgrade yum shows me a bunch of warnings (usually non-fatal, depending on the yum command I run), such as the following:

** Found 34 pre-existing rpmdb problem(s), 'yum check' output follows:
R-core-2.15.1-1.fc17.x86_64 has missing requires of vi
R-devel-2.15.1-1.fc17.x86_64 has missing requires of pcre-devel
R-devel-2.15.1-1.fc17.x86_64 has missing requires of tcl-devel

I'm able to solve these by doing an rpm -e --nodeps on each package listed on the left, and re-installing it via yum. This is scriptable but a bit tedious, and so I'd like to know if there's an easier way to fix these.

(Note, I saw this question, but the answer only refers to a page with a long list of general post-upgrade cleanups and I cannot make out which, if any, solve the above problem.)

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2012-10-12 00:58:26 -0600

spot gravatar image

While Christian's method is fine, if it were me, I would just run "yum reinstall" on any package which is reporting missing dependencies. What you're looking at is the output of the "yum check" command, which you can run manually. "yum check" is looking at the state of the system's RPMDB and is looking for unfulfilled dependencies on installed packages, in your case, things like R-core and R-devel seem to be missing dependent packages.

This usually happens when you download an RPM file and manually force it in (e.g. "rpm -Uvh --force --nodeps R-*.x86_64.rpm"), but it has been known to happen on packages installed via yum in some corner cases.

The full output from "yum check" is useful to help differentiate those cases, but this advise is generally still good.

edit flag offensive delete link more

answered 2012-10-11 19:07:13 -0600

Christian gravatar image

Here's the best approach I've come up with so far. Run the following script:

yum check dependencies \
  | grep 'has missing requires' \
  | sed 's/.\+has missing requires of //' \
  | sed 's/ [=<>].\+//' \
  | while read dep; do yum -y install "$dep"; done

The first line (whose output is good to inspect before running the whole thing) lists packages with broken dependencies, the second line parses out those with the "missing requires" problem, the third isolates the requires problem itself, the fourth strips version information, and the last conducts the installation. The fourth step is suboptimal, but the format in which the version requirements get reported (e.g. "mono(Mono.Cairo) = ('0', '', None)" don't seem to be understandable to yum directly.

There has got to be some way yum can traverse the existing dependency tree and just pull in what's missing. If you know it, please post.

edit flag offensive delete link more

Question Tools


Asked: 2012-10-09 15:39:34 -0600

Seen: 28,344 times

Last updated: Oct 12 '12