fragen stichworte

Wie genau prüfen, ob das Paket in yum installiert ist?

Ich bekomme immer wieder Antworten wie:

yum list installed | grep bind

oder

rpm -qa | grep bind

Dies ist jedoch nicht genau, da ich eine Liste mit einigen anderen Bindungspaketen wie diesen bekomme:

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 Bindungskernpaket installiert wurde. Z.B. bind.x86_64 32:9.8.2-0.17.rc1.el6_4.6

Ich habe auf etwas wie gehofft:

yum check installed bind

Aber hoffentlich könnte jemand das Licht werfen.

antworten

Haben Sie das versucht?

$ yum list installed bind

Es gibt eine viel einfachere Möglichkeit, diese Abfrage auszugeben: rpm -qa | grep bind oder rpm -q bind. Ersteres ist am besten, wenn Sie sich des Paketnamens nicht ganz sicher sind.

Das Parsen der Ergebnisse dieses Befehls ist die vollständigste Antwort. Sie müssen den genauen Paketnamen kennen.

yum info bind

Loaded plugins: refresh-packagekit, rhnplugin
This system is receiving updates from RHN Classic or RHN Satellite.
Installed Packages
Name        : bind
Arch        : x86_64
Epoch       : 32
Version     : 9.8.2
Release     : 0.17.rc1.el6_4.6
Size        : 7.3 M
Repo        : installed
From repo   : rhel-x86_64-workstation-6
Summary     : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server
URL         : http://www.isc.org/products/BIND/License     : ISC
Description : BIND (Berkeley Internet Name Domain) is an implementation of the DNS
        : (Domain Name System) protocols. BIND includes a DNS server (named),
        : which resolves host names to IP addresses; a resolver library
        : (routines for applications to use when interfacing with DNS); and
        : tools for verifying that the DNS server is operating properly.

Der beste Liner, mit dem ich das gemacht habe (was großartig für die schnelle Verwendung in Skripten ist) ist:

yum info <package_name> | grep Repo | awk '{ print $3 }'

Zum Beispiel: wenn ich momentan git installiert habe:

yum info git | grep Repo | awk '{ print $3 }'

Dies wird installed

zurückgeben

Wenn ich nicht git installiert habe, wird der gleiche vorherige Befehl zurückgeben: base/7/x86_64 Dies ist die aktuell verfügbare Installation für git

Verwenden Sie Python-Code, um zu prüfen, ob ein Paket in Python mit yum installiert ist:

def is_installed(package_name):
    return "not installed" in commands.getstatusoutput("rpm -q " + package_name)[1]