further package removals/potential package removals

Jeff Johnson n3npq at nc.rr.com
Sun Jan 23 11:16:59 UTC 2005


Havoc Pennington wrote:

>On Sat, 2005-01-22 at 22:16 -0600, Chris Adams wrote:
>  
>
>>nautilus has an explicit dependency in the spec file on gnome-vfs2-smb.
>>It does not have any apparent dependency on libsmb.so that is provided
>>by gnome-vfs2-smb (nothing seems to have such a dependency).  If I don't
>>have any need to browse Windows networks, why do I need the software
>>installed?
>>    
>>
>
>libsmb.so is dlopen'd, so no ldd dependency.
>  
>

And so the problem really is too many dependencies, or -- alternatively 
expressed -- too few sonames.

Perhaps
    Requires: libsmbclient.so.0
is perhaps a more obvious statement of the dependency.

Not that the mode of expression really matters, nautilus has way way too 
many dependencies.

>  
>
>>Features are great; _required_ features are not.
>>    
>>
>
>The reason for a Requires here (and in similar cases) 
>is to suck in gnome-vfs2-smb when anaconda upgrades 
>a system.
>  
>

Yep.

<scarcasm>
Or  anaconda might, perhaps, someday, wish to actually
run nautilus at install/erase time, and so the dependency is added
as a place holder, reserving a bloat slot for future development.
</scarcasm>

Seriously, dependencies have a context, and it's highly unlikely
that the dependency is actually needed by anaconda to install
or remove nautilus. The hint to depsolvers like anaconda necessary
with current implementations to discover an additional edge in
the dependency tree graph could be handled in other ways,
if nautilus were prepared to deal with the dlopen failure at
run-time.

>Comes up with some package in most releases, and there
>are a fair number of Requires: that exist purely for 
>that reason.
>  
>

Yep. Existence of other examples does not imply that dlopen'd module 
dependencies
necessarily have to be expressed as a Requires:  however.

The current practice of using a manual Requires: to hint of an edge on
a dependency graph has the side affect of forcing packages to be installed
whose contents may never be used.

A "missingok" (or "dlopen") context marker on a Requires: would provide 
the hint of an
edge in the dependency graph to existing depsolvers, and yet mark the 
context of the
dependency as "optional" in the sense that an application like nautilus 
was prepared to
deal with a dlopen failure from libsmbclient.so.0 at run-time, rather 
than during install/erase.

The net effect of a "missingok" (or "dlopen") context marker would be 
that nautilus could
be installed without dragging in the samba sub-tree, with similar effect 
for other dlopen'd
modules.

73 de Jeff





More information about the fedora-devel-list mailing list