Manchmal, wenn ich Zypper auffordere, etwas zu installieren, erhalte ich eine Meldung ähnlich dieser:
Problem: foo-tools requires foo-lib, but this requirement cannot be provided
Problem: foo-tools requires foo-lib, but this requirement cannot be provided
uninstallable providers: foo-lib.7.31.13.x86_64
Solution 1: do not install foo-tools
Solution 2: break foo-tools by ignoring some of its dependencies
Warum zum Teufel denkt Zypper, dass das RPM, das ich ihm aus genau diesem Grund gegeben habe, ein "nicht installierbarer Provider" ist? Was bedeutet diese Meldung?bedeuten? Ist die RPM-Datei nicht lesbar? Falsche Architektur? Falsche Version?Worüber ist es verärgert??
Antwort1
Es stellte sich heraus, dass foo-lib
es selbst unerfüllte Abhängigkeiten gab. Das Hinzufügen dieser behob das Problem.
Aber die Frage ist... warum hat Zypper nichtsagendas war das Problem? Wenn ein Abhängigkeitsproblem auftritt, wird Ihnen normalerweise das spezifische Paket angezeigt, das nicht gefunden werden konnte. Warum habe ich diese undurchsichtige Meldung „Anbieter nicht installierbar“ erhalten?
Antwort2
RPM verwaltet eine Datenbank der installierten Dateien (zum Beispiel ausführbare Binärdateien und gemeinsam genutzte Bibliotheken) im System.
Manche Software, wie foo-tools, benötigt andere Software (wie foo-lib), um richtig zu funktionieren. Diese Abhängigkeitsinformationen werden vom RPM-Paketer festgelegt.
Wenn Sie foo-lib und foo-tools als RPM-Dateien zur Verfügung haben, aber keines von beiden installiert ist, können Sie beide (alle) auf der Befehlszeile für RPM bereitstellen (oder auf eine Zypper-äquivalente Weise), damit RPM erkennt, dass alle Abhängigkeiten erfüllt werden. Eine andere Möglichkeit besteht darin, zuerst die erforderlichen Pakete zu installieren.
Wenn foo-lib wiederum eigene Abhängigkeiten hat, müssen diese ebenfalls erfüllt werden. Ist dies nicht der Fall, ist foo-lib kein installierbarer Anbieter von foo-lib.
Nicht empfohlen: Stellen Sie auf andere Weise sicher, dass die Voraussetzungen erfüllt sind (installieren Sie die erforderlichen Dinge manuell, beispielsweise aus der Quelle, und zwingen Sie Zypper, die Abhängigkeiten zu ignorieren. Dies führt später zu Problemen, also tun Sie es nicht).