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.