Eu continuo recebendo 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
Não é isso que eu queria. Em vez disso, gostaria de verificar com precisão se o pacote principal de ligação foi instalado. Por exemplo.bind.x86_64 32:9.8.2-0.17.rc1.el6_4.6
Eu esperava algo como:
yum check installed bind
Mas espero que alguém possa lançar a luz.
yum
rpm
package-management
soma de verificação
fonte
fonte
Error: No matching Packages to list
e$?
retornando 1 e, quando tenteiyum list installed bind-libs
,$?
retorna 0. O que deve estar correto até agora. Posso concluir com segurança que seu comando é determinar com precisão que um pacote está instalado? Eu descobrirpm -q bind
agora. É equivalente ao seu comando também?yum list installed bind*
yum -C list installed bind
evitar a rede. Isso mantém todos os plugins ativado (apenas no caso de você ter qualquer coisa exótica que afeta pesquisas em yumdb) e também lhe diz o repo o pacote foi instalado a partir deExiste uma maneira muito mais fácil de emitir esta consulta:
rpm -qa | grep bind
ourpm -q bind
. O primeiro é melhor se você não tiver certeza absoluta do nome do pacote.fonte
rpm -q $package
acredito que essa é a solução e a mais rápida, pois fazer qualquer coisayum
pode forçar uma atualização de cache (geralmente lenta).rpm
) deve ser a resposta aceita, pois retorna um status de saída limpo e não requer a chamada de vários URLs remotos como asyum
soluções.yum
erpm
seguem o mesmo comportamento em todos os exemplos em que consigo pensar (0 = instalado, 1 = não instalado / erro), portanto, seria útil saber se você está vendo um código de saída diferente. Por favor, dê uma olhada na minha resposta acima sobre usando o cache para evitar o acesso à redeyum -C
para impedir que o yum passasse todo esse tempo extra entrando em contato com os hosts da rede. Obrigado, agora vejo como yum e rpm podem ser usados de forma intercambiável aqui !!A análise dos resultados deste comando é a resposta mais completa. Você precisará saber o nome exato do pacote.
fonte
bind
está disponível / pacote yum válido, em vez de me dizer se está instalado?O melhor liner que eu criei para fazer isso (o que é ótimo para usar rapidamente em scripts) é:
Por exemplo: se eu atualmente tenho
git
instalado:Isso retornará
installed
Se atualmente eu não tenho
git
instalado, o mesmo comando anterior retornará:base/7/x86_64
qual é a instalação disponível atualmente paragit
fonte
yum list installed
. A partir daí, você pode usar ogrep
comando para obter uma resposta mais precisa do que está procurando. Além disso, se você quiser verificar para um pacote específico você pode acrescentar que para o seu comando - Ex:php70w
.yum list installed php70w
seria ou lista as informações sobre o pacote instalado ou retornoNo matching Packages to list
Use o código Python para verificar se um pacote está instalado no python usando o yum:
fonte
not in
?Se o resultado for 0 (zero), o pacote está instalado
fonte
rpm -q bind
solução mostrada na resposta de John.yum -C ...
seja rápido.