RPM Weak Dependencies and the install media compose process

Stephen Gallagher sgallagh at redhat.com
Fri Jul 10 18:24:46 UTC 2015


On Fri, 2015-07-10 at 13:06 -0500, Dennis Gilmore wrote:
> On Friday, July 10, 2015 08:05:24 AM Stephen Gallagher wrote:
> > (Please keep the conversation on the devel list; I'm CCing it the 
> > rel
> > -eng list to make sure all the relevant people see the initial 
> > message)
> > 
> > This past week, the Fedora Packaging Committee approved the use of
> > "weak dependencies" in Fedora. What this means is that RPM packages 
> > can
> > now have three levels of dependency-resolution: Requires, 
> > Recommends
> > and Suggests.
> >  * Requires: the requested package cannot function without this
> > additional package installed
> >  * Recommends: the requested package can function in some minimal
> > capacity without this additional package installed, but the 
> > majority of
> > installations will want it for full productivity. These are usually
> > core plugins for the primary package. DNF defaults to installing
> > Recommends: dependencies automatically.
> >  * Suggests: the requested package can easily function without this
> > additional package. This module may provide some less-common
> > functionality that a user might want. DNF defaults to *not* 
> > installing
> > Suggests: packages automatically.
> > 
> > Traditionally, we have only supported "Requires" dependencies and 
> > thus
> > the creation of install media (Live and otherwise) has been 
> > relatively
> > straightforward: we create a kickstart file that is fed into the
> > compose process containing a list of packages and groups that we 
> > want
> > installed onto the target system and the compose process 
> > automatically
> > pulls in all of the dependencies. However, with the advent of weak
> > dependencies, we have new questions that need answering about how 
> > this
> > compose process should work. (We also need to investigate what 
> > exactly
> > happens with the tools we have today - some of which still use yum, 
> > not
> > DNF - when weak dependencies are added to the mix).
> > 
> > From my perspective, there are three ways that we could choose to 
> > go:
> > 
> > 1) Follow the default DNF behavior: Requires: and Recommends: 
> > packages
> > are included on the install media (and therefore also installed
> > together onto the target system)
> > 
> > 2) Include *all* dependencies - Requires, Recommends and Suggests - 
> > on
> > the install media. The installer would still follow DNF defaults, 
> > so
> > the target system would get only the Requires and Recommends 
> > packages
> > unless the Suggests: packages are explicitly selected (which will 
> > also
> > require the creation of additional comps.xml changes to include the
> > Suggests packages)
> > 
> > 3) Include only Requires: dependencies by default and require spin
> > -kickstarts owners to explicitly add any Recommends or Suggests
> > packages that they also want to include. Packages added explicitly 
> > will
> > be installed as described in 2) (requiring additional comps.xml 
> > changes
> > to include Suggests stuff)
> > 
> > 
> > Note that at the moment, DNF itself does not have a configuration
> > option to tweak the default install behavior, so 'dnf install'
> > effectively treats Recommends the same way as Requires (but 'dnf
> > remove' will treat them differently, of course). I discussed this 
> > with
> > the DNF developers this morning and they hope to have a 
> > configuration
> > option and/or command-line argument available to change this 
> > behavior
> > before Beta Freeze, so we should still be able to ship F23 with any 
> > of
> > the above options.
> > 
> > I think the best time to make these decisions is now, well in 
> > advance
> > of the Alpha Freeze so we have time to make adjustments as needed.
> > Thank you for reading to the end, I know the above has been a wall
> > -o'
> > -text.
> 
> I think without some flag in dnf that anaconda can toggle on the 
> users request 
> we should only include Requires and Recommends on the media  if users 
> have a 
> toggle to say also include Suggested packages then and only then 
> should we 
> include Suggests.  the experience for installs from Media should 
> match 
> installs from the network.   As we have shown time and time again 
> manually 
> managed lists do not scale or work well. so i think defining suggests 
> in comps 
> groups will be prone to a lot of issues.
> 

I think 1) makes the most sense as long as we have the following test
cases that pass:

Assuming a package named "engine" which Recommends: "common-plugin" and
Suggests: "uncommon-plugin":

* A kickstart that includes "engine" will result in an install medium
that includes "common-plugin" and does not include "uncommon-plugin"
 * Installing from this medium (and no network) with an environment
group that includes "engine" will install both "engine" and "common
-plugin" and will not encounter an error by not being able to locate
"uncommon-plugin".

* A kickstart that includes "engine" but also includes "-uncommon
-plugin" (explicitly excluding it from the medium) will result in a
medium that includes only "engine".
 * Any environment group that includes "engine" will appear in Anaconda
(as long as that group does not require "common-plugin" as a mandatory
package).
 * Installing from this medium (and no network) with an environment
group that includes "engine" will install "engine" and will not
encounter an error by not being able to locate "common-plugin" or
"uncommon-plugin".
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part
URL: <http://lists.fedoraproject.org/pipermail/devel/attachments/20150710/69011692/attachment.sig>


More information about the devel mailing list