Paul Jakma wrote:
> On Thu, 22 Mar 2007, Ed Gould wrote:
>> The RPM tools do this horribly badly.  They always list the 
>> dependencies as the selection of things present when the RPM was 
>> built.  This forces the admin to upgrade things outside the realm of 
>> what they were trying to install, because the build machine was newer 
>> than the install machine.
> 
> Hmm, in what way?

See below.

>> The only way to get this right is to manually list the lowest version 
>> of each dependency.  It just doesn't work, for a large number of 
>> reasons.  Two of them are human error (how does one manually find all 
>> the dependencies?) and test matrix explosion (I now have to test the 
>> cross product of all version combinations).
> 
> Hmm, but, imagine some library, library X, of which there are several 
> updates that may be present on a machine. The soname and version symbols 
> however remain the same.
> 
> Application Y depends on it, by soname, perhaps by version symbols 
> additionally.
> 
> Why should Y (the project team say) have to look behind the curtain of 
> the interface? If the library offers the soname+versions, then it meets 
> the dependency. If there are problems, it's a regression in the library 
> and should be dealt with as such (fix it and update).
> 
> What's the problem exactly?
> 
> That the customer has no way of knowing that library X has an update 
> which is required to make Y work?
> 
> (That potentially could be dealt with by having a 'pull up' reverse 
> dependency, whereby the X update (X being required by Y) lists that Y

The problem is illustrated by this scenario:  Application A and 
application B both depend on library L.  Version 1 of each of A, B, and 
L are installed.  The admin wants to upgrade A to version 2.  A.2 can 
run perfectly well with L.1, but the machine on which the package for 
A.2 was built had L.2 installed, and L.2 includes an interface change 
that is not compatible with B.1.  So updating A to A.2 drags in L.2, 
even though it didn't really need to.  This either breaks B or requires 
it to be updated, too.  If updating A is required and updating B is not 
allowed, what's the admin to do?  (The "update A but not B" requirement 
is not uncommon.)

Of course, one can often work around a small set of problems like this 
example.  But when the dependency list - with all the sub-dependencies - 
is many hundreds of items long, it can make the update of one simple 
piece into an update of most of the system.  It may not even be possible 
to learn what the extent of the problem is without iteratively 
downloading hundreds of megabytes of updates.
-- 
        --Ed
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ed.gould.vcf
Type: text/x-vcard
Size: 282 bytes
Desc: not available
URL: 
<http://mail.opensolaris.org/pipermail/install-discuss/attachments/20070322/3cc70cad/attachment.vcf>

Reply via email to