Я продолжаю получать ответы как:
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
rpm
package-management
контрольная сумма
источник
источник
Error: No matching Packages to list
и$?
возвращает 1, а когда я пыталсяyum list installed bind-libs
,$?
возвращает 0. Что должно быть правильно до сих пор. Можно ли с уверенностью заключить, что ваша команда точно определит, установлен ли пакет? Я узналrpm -q bind
только сейчас. Это также эквивалентно вашей команде?yum list installed bind*
yum -C list installed bind
избежать сети. Это поддерживает все плагины включенными (на случай, если у вас есть что-нибудь экзотическое, что влияет на поиск в yumdb), а также сообщает вам оСуществует гораздо более простой способ выдачи этого запроса:
rpm -qa | grep bind
илиrpm -q bind
. Первое лучше, если вы не совсем уверены в названии пакета.источник
rpm -q $package
я считаю, что это самое быстрое и решение, поскольку выполнение любых действийyum
может привести к принудительному обновлению кэша (обычно медленному).rpm
) должно быть принятым ответом, поскольку оно возвращает чистый статус выхода и не требует вызова нескольких удаленных URL-адресов, как этоyum
делают решения.yum
иrpm
следуют одному и тому же поведению во всех примерах, которые я могу себе представить (0 = установлено, 1 = не установлено / ошибка), поэтому было бы полезно узнать, видите ли вы другой код выхода. Пожалуйста, посмотрите на мой ответ выше относительно использования кэша, чтобы избежать доступа к сетиyum -C
чтобы не позволить yum тратить все это дополнительное время на общение с сетевыми хостами. Спасибо, теперь я вижу, как yum и rpm могут использоваться здесь взаимозаменяемо!Анализ результатов этой команды является наиболее полным ответом. Вам нужно будет знать точное название пакета.
источник
bind
что доступен / действующий пакет yum вместо того, чтобы сказать мне, установлен ли он?Лучший вариант, который я придумал для этого (который отлично подходит для быстрого использования в скриптах):
Например: если я сейчас
git
установил:Это вернется
installed
Если я в настоящее время не имею
git
установлено , что же предыдущую команда будет возвращать:base/7/x86_64
что имеющаяся в настоящее время установки дляgit
источник
yum list installed
. Оттуда вы можете использоватьgrep
команду, чтобы получить более точный ответ на то, что вы ищете. Кроме того, если вы хотите , чтобы проверить наличие конкретного пакета вы можете добавить , что в вашей команде - Ex:php70w
.yum list installed php70w
будет либо перечислять информацию об установленном пакете, либо возвращатьсяNo matching Packages to list
Используйте код Python, чтобы проверить, установлен ли пакет в Python с использованием yum:
источник
not in
?Если результат равен 0 (ноль), пакет установлен
источник
rpm -q bind
решением, показанным в ответе Джона.yum -C ...
будет быстро.