Richtlinien für weiche Abhängigkeiten

Einführung

Weiche Abhängigkeiten sind im Grunde Varianten des Requires:-Tags und werden, genau wie reguläre Requires:-Abhängigkeiten, anhand von (virtuellen) Provides:-Abhängigkeiten und Paketnamen mittels Bereichsvergleichen im Epoch-Version-Release-Format abgeglichen. Sie existieren in zwei Stärken: „Weich“ und „Hinweis“ sowie in zwei Richtungen: „vorwärts“ (analog zu Requires:) und „rückwärts“ (wofür es im vorherigen Abhängigkeitssystem kein Äquivalent gab).

Vorwärts

Rückwärts

Weich

Recommends:

Supplements:

Hinweis

Suggests:

Enhances:

Weiche Abhängigkeiten ermöglichen kleinere Minimalinstallationen, während die Standardinstallation weiterhin viele Funktionen bietet. Sie erlauben es Paketen außerdem, Präferenzen für bestimmte Anbieter festzulegen und gleichzeitig die Flexibilität virtueller Anbieter zu erhalten, beispielsweise die Bevorzugung von ruby gegenüber jruby oder community-mysql gegenüber mariadb.

Weiche Abhängigkeiten

Weiche Abhängigkeiten werden standardmäßig wie reguläre Requires: behandelt. Passende Pakete werden der dnf-Transaktion hinzugefügt. Falls das Hinzufügen des Pakets zu einem Fehler führen würde, ignoriert dnf die Abhängigkeit standardmäßig. Dadurch können Benutzer Pakete, die durch weiche Abhängigkeiten hinzugefügt würden, ausschließen oder später entfernen. Um die Installation weicher Abhängigkeiten zu überspringen, übergeben Sie --setopt=install_weak_deps=False an dnf.

Wie bei regulären Abhängigkeiten MÜSSEN auch weiche Abhängigkeiten innerhalb der offiziellen Fedora-Paketquellen aufgelöst werden können.

Weiche Abhängigkeiten dürfen in einem Paket nur dann verwendet werden, wenn das Paket auch ohne die Abhängigkeit funktioniert. Es ist jedoch zulässig, Pakete mit stark eingeschränkter Funktionalität zu erstellen, ohne deren weiche Abhängigkeiten zu verwenden. Weiche Abhängigkeiten sollten nach Möglichkeit eingesetzt werden, um den Installationsaufwand für sinnvolle Anwendungsfälle zu minimieren, insbesondere beim Erstellen von virtuellen Maschinen oder Containern, die nur einen einzigen Zweck erfüllen und nicht den vollen Funktionsumfang des Pakets benötigen.

Typische Anwendungsfälle für weiche Abhängigkeiten sind:

  • Dokumentation

    • Dokumentationsanzeige wird, falls diese fehlt, auf elegante Weise gehandhabt

  • Beispiele

  • Plug-ins oder Add-ons

    • Unterstützung für Dateiformate

    • Unterstützung für Protokolle

    • …​

Hinweise

Hinweise werden von dnf standardmäßig ignoriert. GUI-Werkzeuge können sie nutzen, um Zusatzpakete anzubieten, die nicht standardmäßig installiert sind, aber in Kombination mit den installierten Paketen nützlich sein können. Die Anforderungen der Hauptanwendungsfälle eines Pakets sollten nicht nur durch Hinweise referenziert, sondern durch starke oder weiche Abhängigkeiten eingebunden werden.

Paketreferenz

dnf (genauer: libsolv) verwendet weiche Abhängigkeiten und Hinweise, um bei mehreren gleichwertigen Paketen das zu verwendende Paket auszuwählen. In diesen Fällen werden Pakete bevorzugt, auf die von installierten oder noch zu installierenden Paketen als Abhängigkeiten verwiesen wird. Dies ändert jedoch nichts an den üblichen Regeln der Abhängigkeitsauflösung. Beispielsweise kann durch weiche Abhängigkeiten nicht erzwungen werden, dass eine ältere Version eines Pakets verwendet wird.

Wenn mehrere (typischerweise virtuelle) Anbieter für eine Abhängigkeit existieren, kann das benötigende Paket ein Suggests: hinzufügen, um dem Abhängigkeitsauflöser einen Hinweis auf die bevorzugte Option zu geben. Enhances: sollte nur in seltenen Fällen verwendet werden, wenn das Hauptpaket und die anderen Anbieter übereinstimmen, so dass das Hinzufügen des Hinweises zum benötigten Paket aus irgendeinem Grund die elegantere Lösung darstellt.

Reales Beispiel

Paket A: Benötigt: mysql

Paket mariadb: Stellt bereit: mysql

Paket community-mysql: Stellt bereit: mysql

Wenn Sie mariadb gegenüber community-mysql bevorzugen möchten, fügen Sie Suggests: mariadb zu Paket A hinzu.

Aufwärts- vs. Abwärtsabhängigkeiten

Vorwärtsabhängigkeiten werden, wie bei „Requires:“, für die zu installierenden Pakete ausgewertet. Das beste der passenden (erfüllenden) Pakete wird ebenfalls installiert. Bei Rückwärtsabhängigkeiten werden die Pakete, die die Abhängigkeit enthalten, installiert, sofern ein passendes Paket ebenfalls installiert wird.

Im Allgemeinen sollten Vorwärtsabhängigkeiten verwendet werden. Fügen Sie die Abhängigkeit dem Paket hinzu, wodurch das andere Paket dem System hinzugefügt wird.

Rückwärtsabhängigkeiten sind hauptsächlich für Drittanbieter gedacht, die ihre Plugins/Add-ons/Erweiterungen an Distributionen oder andere Drittanbieterpakete anbinden können. Innerhalb von Fedora sollte die Kontrolle darüber, welche Pakete ein Paket benötigt, beim Paketbetreuer liegen. Es gibt jedoch Fälle, in denen es für das benötigende Paket einfacher ist, sich nicht um alle Add-ons kümmern zu müssen. In diesen Fällen können Rückwärtsabhängigkeiten mit Zustimmung des Paketbetreuers des Zielpakets verwendet werden.

Beachten Sie, dass EPEL oder andere Drittanbieter-Paketquellen möglicherweise eine andere Richtlinie haben (und dazu angehalten werden).