Paketin yum olarak yüklenip yüklenmediğini nasıl doğru bir şekilde kontrol edebilirim?


56

Sürekli şöyle cevaplar alıyorum:

yum list installed | grep bind

veya

rpm -qa | grep bind

Ancak bu gibi birkaç diğer bağlama paketlerinin bir listesini alıyorum çünkü bu doğru değil:

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

Ben istemedim. Bunun yerine, bağlama çekirdek paketinin kurulu olup olmadığını doğru bir şekilde kontrol etmek istiyorum. Örneğin.bind.x86_64 32:9.8.2-0.17.rc1.el6_4.6

Gibi bir şey umuyordum:

yum check installed bind

Ama umarım biri ışığı tutabilir.

Yanıtlar:


61

Bunu denedin mi?

$ yum list installed bind

Ben alıyorum Error: No matching Packages to listve $?1 döndürür ve denedim yum list installed bind-libs, $?0 döndürür. Hangisi doğru olmalı. Komutunuzun doğru bir şekilde bir paketin kurulu olduğunu tespit ettiği sonucuna varabilir miyim? rpm -q bindSadece şimdi öğrendim . Aynı zamanda emrinize eşdeğer mi?
sağlama

Bu doğru, AFAIK, yalnızca paket kurulu ise 0 kodundan çıkın.
plazmid87

Bence bu işe yarıyor. Ve tek hat çözümlerini seviyorum .:D
sağlama toplamı

Bence doğru komut bir joker karakter ile: yum list installed bind*
Alejandro Angelico

2
@NoahSussman Ağdan yum -C list installed bindkaçınmayı deneyebilirsiniz . Bu, tüm eklentileri etkin tutar (sadece yumdb'daki aramaları etkileyen egzotik bir şey varsa) ve paketin yüklendiği
repoyu

13

Bu sorguyu vermenin çok daha kolay bir yolu var: rpm -qa | grep bindveya rpm -q bind. Birincisi paket adından tamamen emin değilseniz en iyisidir.


4
+1 için rpm -q $packagebunun en hızlı ve çözüm olduğuna inanıyorum, çünkü bir şeyler yapmak yumönbellek güncellemesini zorlayabilir (genellikle yavaş).
Alex S

Bu çözüm (kullanma rpm), temiz bir çıkış durumu döndürdüğü ve yumçözümlerde olduğu gibi bir sürü uzak URL'ye çağrı yapmasını gerektirmediğinden kabul edilen cevap olmalıdır .
Noah Sussman

1
@NoahSussman Çıkış , aklıma gelen tüm örneklerde aynı davranışı gösterir yumve uygular rpm(0 = yüklü, 1 = yüklü değil / hata), böylece farklı bir çıkış kodu görüp görmediğinizi bilmek yararlı olacaktır. Lütfen ağ erişimini önlemek için önbelleği kullanma konusundaki
cevabımı inceleyin

@ plasmid87 Yum'un ağ operatörleriyle yum -Ciletişim kurmak için fazladan zaman harcamasını önlemek için kullanabileceğimi bilmiyordum . Teşekkürler, şimdi yum ve rpm'nin burada nasıl birbirlerinin yerine kullanılabileceğini görüyorum !!
Noah Sussman

9

Bu komutun sonuçlarının ayrıştırılması en eksiksiz cevaptır. Paketin tam adını bilmeniz gerekir.

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.

2
Hmm, bindbana kurulu olup olmadığını söylemek yerine mevcut / geçerli yum paketi olduğunu söylemek değil mi?
sağlama

2
Açık değil, ancak eğer yüklü ise Repo etiketi altında listelenmişse yüklüdür. Aksi takdirde, alınabileceği bir depoyu listeler.
Magic Wonder Dog Fred,

Bu, istediğim yalnızca yerel makinemde neler olduğunu görmek olduğunda uzak yum depolarına bağlanmayla sonuçlanıyor .
Noah Sussman

1

Bunu yapmak için geldiğim en iyi liner (scriptlerde hızlıca kullanmak için harika):

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

Örneğin: şu anda gityüklediyseniz:

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

Bu geri dönecek installed

Şu anda ise yok olması git: Aynı önceki komut dönecektir yüklü base/7/x86_64şu anki mevcut kurulum olangit


Bu, istediğim yalnızca yerel makinemde neler olduğunu görmek olduğunda uzak yum depolarına bağlanmayla sonuçlanıyor .
Noah Sussman

1
@NoahSussman, yerel makinenizde şu anda yüklü olan tüm paketleri listelemek için kullanabilirsiniz yum list installed. Oradan aradığınız grepkonuya daha kesin bir cevap almak için bu komutu kullanabilirsiniz . Ayrıca size komutuna o ekleyebilir, belirli bir paket için kontrol etmek istiyorsanız - Ex: php70w. yum list installed php70wya yüklü paket üzerindeki bilgiyi listeler ya da iade ederNo matching Packages to list
domdambrogia

-1

Bir paketin python'a yum kullanılarak yüklenip yüklenmediğini kontrol etmek için Python kodunu kullanın:

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

bu olmamalı not inmıydı?
Inbar Rose

-2
yum list installed bind >/dev/null ; echo $?

Sonuç 0 (sıfır) ise paket kurulur.


rpm -q bindJohn'un cevabında gösterilen çözüme kıyasla bu çok yavaş .
Noah Sussman

Her ne kadar belki de kullanmak yum -C ...hızlı olur.
Noah Sussman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.