From Fedora Project Wiki

Soft Dependencies in rpm

Version: 0.1
Date: July 18, 2007
Changelog:

  • 0.1: first try


Rationale

rpm packagers want the flexibility of being able to specify soft dependencies.


Good Stuff

  • Lot's of existing Requires aren't really hard dependencies at all, since the status-quo offers only all or nothing
  • could help manage package bloat, benefiting small respins, like olpc.
  • allows packagers to express package interdependencies

Bad Stuff

  • Complicates package management. Yes, things will get more complicated, for rpm, yum, QA, rel-eng.
  • Potential for abuse: Policy will have to be clear when/how these new tags used. Policy should be (at first, anyway) that Enhances be banned outright, since this is, in effect, adding a Suggests to someone else's package.


Implementation

How would soft dependencies work?

First try: KISS. System-wide preference: soft_deps yes/no (default no).

In short, if soft_deps=no, behavior will remain the same as it is now, all Suggests = Requires, ie no soft dependencies.

(possible) rpm tags: Suggests aka Requires(hint)

We'll leave Enhances out for now (see Potential for abuse above).


soft_deps=yes behavior

With soft_deps=yes, items marked as soft dependencies would not be considered as dependencies at all.

Possible enhancements here would be that rpm/yum could provide feedback to user listing all Suggestions.


Examples

Come up with some (imaginary) examples of soft_deps=yes in action.

Discussion

  • Can you please outline why Enhances is likely to be abused. Of course its purpose is to "add a Suggests to someone else's package". Can you also come up with some examples, please? -- FlorianFesti [[DateTime(2007-07-19T11:12:45Z)]
  • It might be worth having two kinds of Suggests tags, like Suggests and Suggests(default). The normal Suggests would be for extra packages, that would not be installed by default. The Suggests(default) tag would be for packages which are optional but are installed/selected by default. For example, a word processor 'Suggests(defualt)' printing libraries, but only 'Suggests' scripting support. Though I can't see why you would want soft_deps disabled (especially by default), in this situation it could mean Suggests are ignored, and Suggests(default) are treated as Requires. -- KieranClancy [[DateTime(2007-07-21T02:53:59Z)]