RPM Weak Dependencies and the install media compose process

Radek Holy rholy at redhat.com
Mon Jul 13 08:46:38 UTC 2015


----- Original Message -----
> From: "Stephen Gallagher" <sgallagh at redhat.com>
> To: devel at lists.fedoraproject.org
> Cc: rel-eng at lists.fedoraproject.org
> Sent: Friday, July 10, 2015 2:05:24 PM
> Subject: RPM Weak Dependencies and the install media compose process
> 
> (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).

Let me just clarify that there is still one little difference. A package cannot be installed if one of its *required* packages is not available while an unavailable *recommended* package does not block the installation.

> 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.

-- 
Radek HolĂ˝
Associate Software Engineer
Software Management Team
Red Hat Czech


More information about the devel mailing list