English
Ask Your Question
0

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

asked 2012-10-09 20:39:34 +0000

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
2

answered 2012-10-12 05:58:26 +0000

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
1

answered 2012-10-12 00:07:13 +0000

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', '2.0.0.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

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

[hide preview]

Use your votes!

  • Use the 30 daily voting points that you get!
  • Up-vote well framed questions that provide enough information to enable people provide answers.
  • Thank your helpers by up-voting their comments and answers. If a question you asked has been answered, accept the best answer by clicking on the checkbox on the left side of the answer.
  • Down-voting might cost you karma, but you should consider doing so for incorrect or clearly detrimental questions and answers.

Stats

Asked: 2012-10-09 20:39:34 +0000

Seen: 20,371 times

Last updated: Oct 12 '12