Como verificar com precisão se o pacote está instalado no yum?

51

Eu recebo respostas como:

yum list installed | grep bind

ou

rpm -qa | grep bind

Mas isso não é exato, pois estou recebendo uma lista de alguns outros pacotes de ligação como estes:

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

Isso não é o que eu queria. Em vez disso, gostaria de verificar com precisão se o pacote de núcleo de ligação foi instalado. Por exemplo. bind.x86_64 32:9.8.2-0.17.rc1.el6_4.6

Eu estava esperando por algo como:

yum check installed bind

Mas espero que alguém possa lançar a luz.

    
por checksum 03.12.2013 / 16:18

6 respostas

54

Você já tentou isso?

$ yum list installed bind
    
por 03.12.2013 / 16:24
12

Existe uma maneira muito mais fácil de emitir essa consulta: rpm -qa | grep bind ou rpm -q bind . O primeiro é melhor se você não tiver certeza do nome do pacote.

    
por 03.12.2013 / 16:36
9

A análise dos resultados desse comando é a resposta mais completa. Você precisa saber o nome exato do pacote.

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.
    
por 03.12.2013 / 16:27
1

O melhor forro que eu criei para fazer isso (o que é ótimo para usar rapidamente em scripts) é:

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

Por exemplo: se eu tiver atualmente git instalado:

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

Isso retornará installed

Se eu atualmente não tiver git instalado, o mesmo comando anterior retornará: base/7/x86_64 , que é a instalação atual disponível para git

    
por 11.01.2017 / 19:38
0

Use o código Python para verificar se um pacote está instalado em python usando o yum:

def is_installed(package_name):
    return "not installed" in commands.getstatusoutput("rpm -q " + package_name)[1]
    
por 01.09.2016 / 20:38
-2
yum list installed bind >/dev/null ; echo $?

Se o resultado for 0 (zero), o pacote é instalado

    
por 26.04.2017 / 22:25