Re: problem comparing capability version strings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This situation you describe is normal.

A package -dev generally requires only the NV capability of the primary package: it generally doesn't depends of the particolar Package Release eg. the rpm package lifecycle versus principal program lifecycle .

In this case Name=Gconf2 and Version is 2.14.0 (release is 0.el5). So the package A required dependency (on Version) is OK.

hth

On Thu, Apr 10, 2008 at 4:11 AM, Dave Peterson <dave_peterson@xxxxxxxxxx> wrote:
Hi,

I have a question about capability version string comparisons.
Using RPM library calls, I examine the following Centos 5
packages:

   package A: GConf2-devel-2.14.0-9.el5.i386.rpm
   package B: GConf2-2.14.0-9.el5.i386.rpm

I see that one capability required by A is the following:

   capability name:    GConf2
   capability version: 2.14.0
   flags:              RPMSENSE_EQUAL

I also see that one capability provided by B is the following:

   capability name:    GConf2
   capability version: 2.14.0-9.el5
   flags:              RPMSENSE_EQUAL

To see if the GConf2 capability provided by B satisfies A's
requirement, I call rpmvercmp() as follows:

  int result = rpmvercmp("2.14.0", "2.14.0-9.el5");

The return value is -1, indicating that "2.14.0-9.el5" is newer
than "2.14.0".  Since the "flags" value for A is RPMSENSE_EQUAL,
and rpmvercmp() says that the version strings are not equal, I
conclude that the GConf2 capability provided by B does not
satisfy the GConf2 dependency required by A.  Looking at the
packages installed on my own machine, I observe the following:

   $ rpm -qa | grep GConf2
   GConf2-2.14.0-9.el5
   GConf2-devel-2.14.0-9.el5
   $
   $ rpm -q --provides GConf2-2.14.0-9.el5 | grep '^GConf2'
   GConf2 = 2.14.0-9.el5
   $
   $ rpm -q --requires GConf2-devel-2.14.0-9.el5 | grep '^GConf2'
   GConf2 = 2.14.0
   $
   $ rpm -q --whatprovides GConf2
   GConf2-2.14.0-9.el5
   $
   $ rpm -V GConf2-devel-2.14.0-9.el5
   $

It looks like B is the only installed package that provides the
GConf2 capability, and the RPM command doesn't complain that A is
missing any dependencies.

What is going on here?  I suspect that the capability versions
"2.14.0" and "2.14.0-9.el5" should be considered equal due to
some usage convention(s) that I am unaware of.  Is this correct?
What is the proper way to compare two capability version strings
in order to determine whether a package dependency is satisfied?
Is there one way that is guaranteed to work across all distros,
or does it vary from one distro to another?

Thanks,
Dave

_______________________________________________
Rpm-list mailing list
Rpm-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/rpm-list

_______________________________________________
Rpm-list mailing list
Rpm-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/rpm-list

[Index of Archives]     [RPM Ecosystem]     [Linux Kernel]     [Red Hat Install]     [PAM]     [Red Hat Watch]     [Red Hat Development]     [Red Hat]     [Gimp]     [Yosemite News]     [IETF Discussion]

  Powered by Linux