Packages build with rpm 4.0.4 can fail to install because they are apparently erroneously demanding it be installed.
RPM 4.0.4 itself appears to make erroneous complaints about various perl modules not being installed when they are.
How Reproducible: every time
Attempt to install the neeed packages for gcc-3.1-0.20.i386.rpm on a RedHat computer not currently with rpm 4.0.4.
It will fail complaining....
rpmlib(PartialHarLinkSets) <= 4.0.4-1 is needed.
I would think gcc shouldn't be concerned too much about what version of rpm I have.
Attempting to install the current rpm also fails with apparently erroneous complaints about missing perl modules...
perl(Data::Dumper) is needed by rpm-build-4.0.4-0.23
perl(strict) is needed by rpm-build-4.0.4-0.23
perl(Sys::Hostname) is needed by rpm-build-4.0.4-0.23
Re-assigning to correct component.
Assigning to owner of RPM component.
There are two problems here:
1) rpm has a a tracking dependency that identifies
packages that have hard-linked files, and is needed
attempts to associate a package with a version of
rpm that is prepared to handle installing a sub-set
of the entire hardlink set. Either
a) Use symlinks rather than hardlinks in
b) use rpm-4.0.4 to install.
2) rpm now auto-generates perl dependencies. Either
a) disable the autogeneration
chmod -x /usr/lib/rpm/pelrl.req
b) install packages that provide the needed dependencies.
Yes, both of the above are gonna be painful, can't be helped.
For the end user, only part b) of option #1 is readily feasible.
So then I assume part #2 is intended to permit installation of rpm 4.0.4. For part a) There are two perl files in /usr/lib/rpm
perl.prov which is executable and perl.req which is *already* not executable, and I assume that's the one you mean. So I am not clear what that was supposed to accomplish.
I don't how to do part b) since the perl modules rpm 4.0.4 asks for are already installed.
Yup 1b) is gonna be the final answer pretty soon, release is
perl dependency affect much more than the rpm package.
We're in the process of sanitizing perl dependencies in
Raw Hide. Either get the package that has a needed Provides:
from Raw Hide, or rebuild the package with the Requires: with
the execute bit on perl.req turned off.
The modules may be already installed, but they do not have the
necessary Provides:. Again, rebuilding/reinstalling is the answer.