On Thu, 10 Mar 2005, TomWalsh wrote:

> James Yonan wrote:
> > On Sun, 6 Mar 2005, TomWalsh wrote:
> > 
> > 
> >>As long as we are on the subject of "Requires" in the openvpn.spec file, 
> >>shouldn't there also be a:
> >>
> >>Requires:  bridge-utils >= 0.9.7
> > 
> > 
> > Why is this required?  What if you are not bridging?
> > 
> > James
> > 
> 
> Ok, my view on an RPM is that the package is there to provide some level 
> of convenience to the end-installer.  All aspects of the package are 
> incorporated into the RPM: config, init.d scripts, binaries, additional 
> packages, etc.  The bridge utils only comprise 60K of drivespace.

In my mind, it's not so much an issue of drivespace (though 60K matters in
a tight embeddded environment).  Rather, it's the principle that an
installer should not assert a mandatory dependency for optional
components.  This component is optional -- it is only needed for ethernet
bridging.  To require it would force people to track down an RPM that they
might not need.

You are also, to a certain extent, contaminating the dependency graph of
the RPM database by adding "Requires" for optional components.  RPM will 
think that openvpn cannot be installed unless bridge-utils is present.  If 
bridge-utils has any "Requires" then they would now be required as well.  
If you take this to the extreme, i.e. if every RPM spec file lists as 
"Requires" all optional components, you break down the ability of the 
global dependency graph to communicate useful information about the 
minimal component tree required to install a given package.

For example, until recently, the OpenVPN RPM install was requiring perl as
a mandatory dependency.  This requirement was being auto-generated by
rpmbuild because it noticed the inclusion of the auth-pam.pl script.  Of
course this is silly because most people are not going to use this script
-- it is provided mostly as a code sample.  People running OpenVPN in a
tight embedded environment were rightly annoyed by this gratuitous
dependency (it has since been removed by disabling the auto-generation of
dependencies).

I think the important philosophical point here is that OpenVPN tries to be 
lightweight.  While lightweight refers to code size, it also refers to the 
complexity of the dependency tree.  I would rather address the need for 
optional components in the docs, than making the dependency tree larger 
than it needs to be.

James

Reply via email to