Enforcing dependencies between RPMs

Erez Zilber erezzi.list at gmail.com
Thu Dec 31 12:17:08 UTC 2009


On Wed, Dec 30, 2009 at 5:23 PM, James Antill <james at fedoraproject.org> wrote:
> On Wed, 2009-12-30 at 15:05 +0200, Erez Zilber wrote:
>> Hi,
>>
>> What is the convention for problems like the following?
>>
>> I have 2 projects ('A' & 'B'). 'B' is compiled against symbols from
>> 'A'. I have a rpm for 'A' and another rpm for 'B'.
>>
>> Now, 'A' & 'B' are installed. I change some symbols in 'A', recreate
>> A.rpm and install the new version of 'A'. When I run 'B' (which was
>> compiled against the old version of 'A'), it fails because 'A' has
>> changed.
>>
>> The question is: how can I enforce that with rpm? What is the
>> convention for such cases?
>
>  In rough order of "goodness", IMO:
>
> 1. Use symbol versions, and let rpmbuild's find_provides/find_requires
> do all the work.
>
> 2. Use SO name versions (and always change the major version when you
> change/remove symbols), and let rpmbuild do most of the work.
>
> 3. Use an explicit provide/require for the ABI. Eg.
>
>  # Package A
>  Provides: pkgA-ABI = 1.1
>  # Package B
>  Requires: pkgA-ABI >= 1.1
>  Requires: pkgA-ABI < 2.0
>
> 4. Use conflicts in pkgA on versions of pkgB that don't work with this
> ABI. Eg.
>
>  # Package A
>  Conflicts: pkgB < 1.6.8
>
> 5. Require explicit versions of pkgA from pkgB. This is often bad
> because you'll be forced to update pkgB just to update the requires,
> when you change pkgA (you can alleviate this somewhat by not requiring a
> specific release, just the version).
>
> --

Thanks for both answers. You've been very helpful.

Erez


More information about the Rpm-list mailing list