[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: RPM v4 upgrade?
- From: Jeff Johnson <jbj JBJ ORG>
- To: rpm-list redhat com
- Subject: Re: RPM v4 upgrade?
- Date: Fri, 1 Sep 2000 11:17:27 -0400
On Thu, Aug 31, 2000 at 04:33:37PM -0600, Bryan Stillwell wrote:
> On Wed, Aug 30, 2000 at 06:45:02PM -0400, Jeff Johnson wrote:
> >> Now on to my new problem. I just picked up maintenance of the apt-get
> >> like autoupdater called yup, and my first task is to get it working with
> >> rpm v4. However when checking the validity of the current database it
> >> can't find which package provides rpmlib(PayloadFilesHavePrefix). Even
> >> if I have rpm figure it out, it can't find what provides it:
> >>
> >> (~)> rpm -q --whatprovides rpmlib\(PayloadFilesHavePrefix\)
> >> no package provides rpmlib(PayloadFilesHavePrefix)
> >>
> >
> >And no package shoule *ever* provide rpmlib(...) dependencies, they are
> >provided internally by rpmlib itself in order to track legacy rpm
> >incompatibilities.
>
> When I added rpmlib(...) to the provides section for rpm it fixed
> everything for me... We're using the rpm-python bindings in yup, and
> one of the first things it does is resolve all dependencies. So since
> the new rpm4 rpms require the rpmlib(...) stuff and it can't find
> another package that provides them, it fails. So, I don't understand
> what would be the proper way to handle the rpmlib(...) requirements.
> Should I hardcode it to ignore any rpmlib(...) stuff (which I don't want
> to do), or is there a better way I should handle it?
>
BTW, if you do "rpm --showrc", you will see (these from rpm-3.0.5)
...
Features supported by rpmlib:
rpmlib(VersionedDependencies) = 3.0.3-1
PreReq:, Provides:, and Obsoletes: dependencies support versions.
rpmlib(CompressedFileNames) = 3.0.4-1
file names stored as (dirName,BaseName,dirIndex) tuple, not as path.
rpmlib(PayloadIsBzip2) = 3.0.5-1
package payload compressed using bzip2.
rpmlib(PayloadFilesHavePrefix) = 4.0-1
package payload files have "./" prefix.
...
The the dependencies use the rpm version where the incompatibility was
introduced.
Clearly, adding "rpmlib(PayloadIsBzip2)", which indicates that the
package with the dependency has a bzip2 compressed payload, can only
be resolved by upgrading rpm, since legacy versions of rpm did
not have support for this (Aside: using bzip2 payloads is *NOT*
recommended, since packages with bzip2 payloads are ~5x slower
and require several 100K more memory per-package to install.)
Similarly, "rpmlib(CompressedFileNames)" is tracking a change in
how file names are represented. A package with this dependency, when
installed by a legacy version of rpm using --nodeps, will either segfault
or appear to have no files in the package.
And again, a package with "rpmlib(PayloadFilesHavePrefix)", installed
by legacy rpm using --nodeps, will not install any file at all.
Please don't add rpmlib(...) anything to a package. If you absolutely
must satsify the dependency (and you are willing to live with the
consequences, similar to what is described above), then do
echo "Provides: rpmlib(yadda)" >> /etc/rpmrc
What you really need to do is use python bindings and shared libraries
from rpm-3.0.5 (or rpm-4.0) in order to satisfy rpmlib(...) dependencies
correctly.
73 de Jeff
--
Jeff Johnson ARS N3NPQ
jbj@jbj.org (jbj@redhat.com)
Chapel Hill, NC
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[]