RPM bağımlılıkları nasıl listelenir?


36

Üretim sunucumuz CentOS sürüm 5.2 (Final) kullanıyor.

Önceden kurulu bir RPM paketinin tüm bağımlılıklarını nasıl görebilirim / alabilir / listelerim ?

Örneğin: SQLite v3.3.6 sunucuda zaten kurulu. Bu özel paketin tüm bağımlılıklarını görmek istiyorum.

İşte komutun çıktısı: rpm -qa |grep sqlite

python-sqlite-1.1.7-1.2.1
sqlite-3.3.6-2
sqlite-3.3.6-2

Ayrıca, neden sqlite-3.3.6-2burada 2 giriş listeleniyor ?

Yanıtlar:


28
  1. rpm -q --requires somepackagehere

  2. Biri i?86paket, diğeri x86_64paket.


İşletim sistemim 64 bit. 2 mimari paket aynı sunucuda bir arada bulunabilir mi? Aynı anda 2 mimari pakete sahip olmanın amacı / ihtiyacı nedir?
Gnanam

2
RH- / Fedora'dan türetilmiş dağıtımlar çoklu yayı desteklemektedir , böylece "yeterince-benzer-benzer" yaylara ait çoklu paketler, her iki yay için oluşturulmuş çalıştırılabilir dosyalara izin vermek üzere bir arada bulunabilir.
Ignacio Vazquez-Abrams

Ne yazık ki bu, paketin yerel olarak önceden kurulmasını gerektirir: \
rogerdpack

@ rogerdpack: Evet, evet. Tam olarak sorulan soru buydu.
Ignacio Vazquez-Abrams

Evet, maalesef Google, "RPM bağımlılıklarını listele" yi googleda "herkese doğrudan burada" gönderiyor. Ne olursa olsun, bu işlevi isteyen izleyicilerin davey'in cevabına bakınız.
rogerdpack

34

Bu yum deplistkomut size hangi rpm'nin bağımlılık olduğunu gösterecektir , işte expectpaket için bir örnek (bu paket henüz yerel olarak kurulmamış olsa bile çalışacaktır):

# yum deplist expect
..
..
package: expect.i386 5.43.0-5.1
 dependency: libc.so.6
  provider: glibc.i686 2.5-49
  provider: glibc.i686 2.5-49
 dependency: libtcl8.4.so
  provider: tcl.i386 8.4.13-4.el5

Bu komut çalışmıyor. Bir şey mi eksik veya emrinizde eksik olan bir şey mi var?
Gnanam

Maalesef eksik bir boşluk vardı, komut yum deplist paketi.
Davey

1
+1 'in YUM kullanımı burada yinelemelidir ve' perl (COnfig :: Tiny) 'veya' libc.so (64bit) 'gibi şeyleri çözer.
djhaskin987

6

Ignacio'nin cevabını takiben, aşağıdakileri yaparak paketlerin kendine özgü mimarisini görebilirsiniz:

$ rpm -qa --queryformat "%{NAME} %{ARCH}\n" sqlite
sqlite i686

Benim durumumda, sadece bir tane, i686 paketi var ... ancak paketlerle ilgili mimariyi bu şekilde elde edebilirsiniz. --Queryformat öğesinden başka neler bulabileceğinizle ilgileniyorsanız, rpm --querytagsmevcut değişkenlerin listesini görmek için a sorun .


1
+1 Mimarlığa göre listeleme komutunuz da yardımcı olacaktır.
Gnanam

3

Yüklü tüm paketleri bağımlılıkları ile birlikte basan hızlı bir kabuk pasajına sahibim:

for i in `rpm -qa` ; do echo "Package [$i]:"; rpm -q --requires $i ; echo ; done

3

İnsanlar zaten yanıt verdi:

  1. rpm -q --requires PKG
  2. yum -q deplist PKG

Evet, ya çalışır ya rpmda yumsoruyu doğru cevaplar. Arasındaki temel fark rpmve yumyum da yüklemek ne paketler gösterileri kütüphane ve / veya dosya gereksinimlerini karşılamak üzere olmasıdır. Ne yazık ki, paket kurulmamışsa, bu yöntemlerden hiçbiri yararlı değildir. Orijinal poster, kontrol ettiğiniz paketin kurulu olduğunu belirttiğinden, bu sessiz bir nokta.

Ya paket kurulu değilse? yumhala kullanılabilir, ancak dolaylı olarak. Kurulum işlemini iptal ederek sahte kurulum yapabilirsiniz.

printf n  |  yum install PKG  |  grep -- "---> Package"

İşte bir örnek:

printf n  |  yum install php  |  grep -- "---> Package"
---> Package php.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-cli.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-common.x86_64 0:5.4.16-45.el7 will be installed
---> Package libzip.x86_64 0:0.10.1-8.el7 will be installed

Raporlama sınırlamaları için mükemmel geçici çözüm.
MarkHu
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.