Ich bekomme immer wieder Antworten wie:
yum list installed | grep bind
oder
rpm -qa | grep bind
Dies ist jedoch nicht korrekt, da ich eine Liste mit wenigen anderen Bind-Paketen wie den folgenden erhalte:
bind-utils-9.8.2-0.17.rc1.el6_4.5.x86_64
rpcbind-0.2.0-11.el6.x86_64
bind-libs-9.8.2-0.17.rc1.el6_4.5.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-winbind-clients-3.6.9-151.el6.x86_64
ypbind-1.20.4-30.el6.x86_64
Das wollte ich nicht. Stattdessen möchte ich genau prüfen, ob das Bind Core-Paket installiert wurde. Z.B.bind.x86_64 32:9.8.2-0.17.rc1.el6_4.6
Ich hatte gehofft auf etwas wie:
yum check installed bind
Aber hoffentlich könnte jemand Licht ins Dunkel bringen.
yum
rpm
package-management
Prüfsumme
quelle
quelle
Error: No matching Packages to list
und$?
gebe 1 zurück, und wenn ich es versucheyum list installed bind-libs
,$?
gebe ich 0 zurück. Was soweit richtig sein sollte. Kann ich sicher schließen, dass Ihr Befehl genau feststellt, dass ein Paket installiert ist? Ich habe esrpm -q bind
gerade herausgefunden. Entspricht es auch Ihrem Befehl?yum list installed bind*
yum -C list installed bind
, das Netzwerk zu umgehen. Dadurch bleiben alle Plugins aktiviert (nur für den Fall, dass Sie etwas Exotisches haben, das die Suche in yumdb beeinflusst) und Sie erfahren auch, vonEs gibt eine viel einfachere Möglichkeit, diese Abfrage zu erstellen:
rpm -qa | grep bind
oderrpm -q bind
. Ersteres ist am besten, wenn Sie den Paketnamen nicht genau kennen.quelle
rpm -q $package
ich glaube, dies ist die schnellste und Lösung, da alles, was mit getan wirdyum
, ein Cache-Update erzwingen kann (normalerweise langsam).rpm
) sollte die akzeptierte Antwort sein, da sie einen sauberen Beendigungsstatus zurückgibt und nicht das Aufrufen einer Reihe von Remote-URLs erfordert, wie dies bei denyum
Lösungen der Fall ist .yum
undrpm
folgen demselben Verhalten in allen Beispielen, die ich mir vorstellen kann (0 = installiert, 1 = nicht installiert / Fehler). Es wäre also nützlich zu wissen, ob Sie einen anderen Exit-Code sehen. Bitte werfen Sie einen Blick auf meine Antwort oben in Bezug auf die Verwendung des Cache, um Netzwerkzugriff zu vermeidenyum -C
verhindern könnte , dass yum die ganze zusätzliche Zeit damit verbringt, Netzwerk-Hosts zu kontaktieren. Danke, ich sehe jetzt, wie yum und rpm hier austauschbar verwendet werden können !!Das Parsen der Ergebnisse dieses Befehls ist die vollständigste Antwort. Sie müssen den genauen Paketnamen kennen.
quelle
bind
gültiges yum-Paket verfügbar ist, anstatt mir mitzuteilen, ob es installiert ist?Der beste Liner, den ich mir dafür ausgedacht habe (der sich hervorragend für die schnelle Verwendung in Skripten eignet), ist:
Zum Beispiel: wenn ich gerade
git
installiert habe:Dies wird zurückkehren
installed
Wenn ich zur Zeit nicht habe
git
installiert , dass gleicher vorheriger Befehl zurück:base/7/x86_64
die die aktuell verfügbare Installation ist fürgit
quelle
yum list installed
. Von dort aus können Sie dengrep
Befehl verwenden, um eine genauere Antwort für das zu erhalten, wonach Sie suchen. Auch wenn Sie für ein bestimmtes Paket überprüfen Sie , dass auf Ihren Befehl hinzufügen können - Ex:php70w
.yum list installed php70w
würde entweder die Informationen über das installierte PaketNo matching Packages to list
Verwenden Sie Python-Code, um mit yum zu überprüfen, ob ein Paket in Python installiert ist:
quelle
not in
?Wenn das Ergebnis 0 (Null) ist, wird das Paket installiert
quelle
rpm -q bind
in Johns Antwort gezeigten Lösung.yum -C ...
schnell gehen würde.