Назад | Перейти на главную страницу

Как точно проверить, установлен ли пакет в yum?

Я получаю такие ответы:

yum list installed | grep bind

или

rpm -qa | grep bind

Но это неверно, так как я получаю список нескольких других пакетов связывания, подобных этим:

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

Я этого не хотел. Вместо этого я хотел бы точно проверить, установлен ли пакет ядра привязки. Например. bind.x86_64 32:9.8.2-0.17.rc1.el6_4.6

Я надеялся на что-то вроде:

yum check installed bind

Но, надеюсь, кто-нибудь сможет пролить свет.

Вы пробовали это?

$ yum list installed bind

Есть гораздо более простой способ выполнить этот запрос: rpm -qa | grep bind или rpm -q bind. Первое лучше, если вы не совсем уверены в названии пакета.

Анализ результатов этой команды - наиболее полный ответ. Вам нужно будет знать точное название пакета.

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.

Лучший лайнер, который я придумал для этого (который отлично подходит для быстрого использования в скриптах):

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

Например: если у меня сейчас есть git установлены:

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

Это вернет installed

Если я сейчас не иметь git установленная та же предыдущая команда вернет: base/7/x86_64 это текущая доступная установка для git

Используйте код Python, чтобы проверить, установлен ли пакет в Python с помощью yum:

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

Если результат 0 (ноль), пакет установлен