Ich versuche, ein RPM-Paket eines Drittanbieters auf RHEL5 zu installieren, das von der Version 3.4 von sqlite abhängt. Laut Yum habe ich bereits 3.3.6 installiert.
Gibt es eine Möglichkeit, die installierten Pakete aufzulisten, die von SQLite 3.3.6 abhängen?
package-management
rhel
yum
Reich
quelle
quelle
repoquery
kann verwendet werden, um eine schöne baumartige Struktur aller Pakete zu generieren, die ein bestimmtes Paket erfordern, zum Beispiel:repoquery --pkgnarrow=installed --tree-whatrequires sqlite
--installed
ist eine Option fürrepoquery
, ist aber ungültig fürrpm
.Antworten
Erklärungen
rpm -q --whatrequires sqlite
meldet nur Abhängigkeiten von Paketnamen.Im Gegenteil,
repoquery
handelt wie folgt (von Manpages):Beispiel
Lass uns ein Paket nehmen
libdb
.Kein Paket hängt davon ab
libdb
, daher sollten wir es problemlos entfernen können. Jedoch...Wie Sie sehen, waren einige andere Pakete nicht direkt vom Paket abhängig, sondern von
libdb-5.3.so()(64bit)
der von ihm bereitgestellten Datei .Schließlich ist hier die reale Liste der Pakete abhängig von
libdb
:quelle
Für dnf (neue Version von yum) können Sie den Befehl repoquery wrapper verwenden:
Wenn es nicht verfügbar ist, können Sie es mit folgendem Befehl installieren:
quelle
--installed --recursive
am Ende nur das zurückgeben, was tatsächlich installiert ist und nicht aus den Repositorys ziehenSie können diesen Befehl auch ausprobieren.
Ich habe diesen Befehl von ServerFault und auch von den Fedora-Foren erhalten.
quelle
Ich denke, was Sie wirklich wissen wollen, ist "Was sind die Pakete, die sqlite-3.3.6 erfordern, aber mit sqlite-3.4.z nicht zufrieden sein werden" ... und der einzige gute Weg, dies herauszufinden, ist zu Versuch es. Mögen:
quelle
Wie Wes Hardaker sagte , ist die Verwendung einer guten eingebauten Methode
rpm -q --whatrequires <package>
. Die Sache ist,rpm
arbeitet mit Funktionen zur Auflösung von Abhängigkeiten, nicht nur mit Paketen, wie dies z. B.dpkg
in der Debian / Ubuntu-Familie von Linux-Distributionen der Fall ist. Wie andere angemerkt haben,rpm -q --whatrequires sqlite
erzählt das einfache Tun nicht die ganze Geschichte, weshalb einige vorgeschlagen haben, es zu verwendenrepoquery
.repoquery
In RHEL / CentOS 7 minimal ist es jedoch nicht standardmäßig installiert (möglicherweise auch auf dem Desktop?), sodass es möglicherweise nicht für alle verfügbar ist.Ein Benutzer kann
rpm -q --provides <pkgname>
alle Funktionen eines Pakets anzeigen und dann anhand derrpm -q --whatrequires <capability>
installierten Pakete ermitteln, welche Funktionen für dieses Paket erforderlich sind. Diese Informationen können mit einem BASH-Einzeiler (hier zweizeilig) kurz abgefragt werden:Dies verwendet nur Optionen, die in sich
rpm
selbst integriert sind, und erfordert daher keine Installation zusätzlicher Pakete (z. B.yum-utils
in CentOS 7, dem Paket, das diese enthältrepoquery
).quelle