RPM Community Forums

Mailing List Message of <rpm-devel>

Re: rpm5 and apt-rpm: Almost working

From: Jeff Johnson <n3npq@mac.com>
Date: Fri 18 Jul 2008 - 14:49:41 CEST
Message-id: <8239F6C7-6104-4177-B4AC-F33525402E82@mac.com>

On Jul 18, 2008, at 8:09 AM, Bernhard Rosenkränzer wrote:

> Hi,
> I finally got around to fixing various problems with apt-rpm when  
> used with
> rpm5 -- the last being "apt-get update" hanging because of a bug in
> rpm4compat.h.
>
> Now it gets the lists and starts resolving dependencies, but it  
> complains
> about the rpm internal dependencies for loads of installed packages:
>
>
> The following packages have unmet dependencies:
>   ImageMagick: Depends: VersionedDependencies (<= 3.0.3-1) but it  
> is not
> installable
>                Depends: PayloadFilesHavePrefix (<= 4.0-1) but it is  
> not
> installable
>                Depends: CompressedFileNames (<= 3.0.4-1) but it is not
> installable
>                Depends: PayloadIsBzip2 (<= 3.0.5-1) but it is not  
> installable
>   apr: Depends: PayloadIsLzma (<= 4.4.6-1) but it is not installable
> [...]
>

I nuked these ancient tracking dependencies, the issues have long  
since vanished.

One can re-add the dependencies in lib/rpmds.c rather easily ...

> Of course, the crude hack approach to get it up and running is adding
> Provides: VersionedDependencies = 3.0.3-1
> Provides: PayloadFilesHavePrefix = 4.0-1
> ....
>
> to the rpm5 spec file, but I prefer to stay off junk like that.  
> Before digging
> deeper, does anyone have any ideas why apt is seeing those bogus  
> requirements
> instead of the correct rpmlib(PayloadIsBzip2) <= 3.0.5-1 type deps?  
> (The
> packages are ok, rpm --requires shows the correct deps.)
>

Yes, you don't want to be adding rpmlib(...) dependencies to  
packages, very much
the wrong thing to do, the rpmlib() dependencies MUST be satisfied by  
the rpmlib implementation,
not from packages. Adding to packages would just raise false  
expectations.

OTOH, you can retrofit any dependencies by adding to /etc/rpm/sysinfo/ 
Providename,
that's likely what I would do.

Hmm, but you seem to be asking where the rpmlib(...) wrapping went.

The parser for "name spaces" is in rpmdb/rpmns.c, different classes  
of dependencies
have their foo(...) wrapper parsed off. Look in lib/depends.c  
unsatisfiedDepends() for the main
usage case for rpmnsParse().

But try re-adding the ancient rpmlib(...) deps in lib/rpmds.c first,  
that will likely Just Work.

hth

73 de Jeff
Received on Fri Jul 18 14:52:11 2008
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.