it-swarm-tr.com

Yüklü başka bir pakete bağlı olan Yum içindeki paketleri listeleme

Sqlite 3.4 sürümüne bağlı RHEL5 3. taraf RPM paketi yüklemeye çalışıyorum. Yum Ben zaten 3.3.6 yüklü var.

Sqlite 3.3.6'ya bağlı olan kurulu paketleri listelemenin bir yolu var mı?

53
Rich

İstediğiniz rpm seçeneği:

rpm -q --whatrequires sqlite

Düzenlendi: eklendi - tartışma başına diğer cevaplarda/yorumlarda yüklü

Düzenlendi: kaldırıldı - rpm için geçersiz bir seçenek olduğu için yüklendi

50
Wes Hardaker

Cevap

repoquery -q --installed --whatrequires sqlite

Açıklamalar

rpm -q --whatrequires sqlite Yalnızca paket adlarına bağımlılıkları bildiriyor.

Aksine, repoquery aşağıdaki gibi hareket eder (sayfalardan):

   --alldeps
          When used with --whatrequires, look for non-explicit dependencies in addition to explicit ones (e.g. files and Provides  in  addition  to  package  names).
          This is the default.

Misal

libdb paketini alalım.

# rpm -q --whatrequires libdb
no package requires libdb

Hiçbir paket libdb değerine bağlı değildir, bu nedenle paketi sorunsuz bir şekilde kaldırabilmemiz gerekir. Ancak...

# yum remove -y libdb
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package libdb.x86_64 0:5.3.21-19.el7 will be erased
--> Processing Dependency: libdb(x86-64) = 5.3.21-19.el7 for package: libdb-utils-5.3.21-19.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: pam-1.1.8-12.el7_1.1.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-libs-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: libdb-utils-5.3.21-19.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: cyrus-sasl-lib-2.1.26-20.el7_2.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-python-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: python-libs-2.7.5-39.el7_2.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-devel-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: 2:postfix-2.10.1-6.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-build-libs-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: iproute-3.10.0-54.el7_2.1.x86_64
--> Running transaction check
. . .
. . .
. . .
Error: Trying to remove "systemd", which is protected
Error: Trying to remove "yum", which is protected

Gördüğünüz gibi bazı paketler doğrudan pakete değil, onun sağladığı libdb-5.3.so()(64bit) dosyasına bağlıydı.

Son olarak, libdb'ye bağlı olarak gerçek paket listesi:

# repoquery -q --installed --whatrequires libdb
cyrus-sasl-lib-0:2.1.26-20.el7_2.x86_64
iproute-0:3.10.0-54.el7_2.1.x86_64
libdb-utils-0:5.3.21-19.el7.x86_64
pam-0:1.1.8-12.el7_1.1.x86_64
postfix-2:2.10.1-6.el7.x86_64
python-libs-0:2.7.5-39.el7_2.x86_64
rpm-0:4.11.3-17.el7.x86_64
rpm-build-libs-0:4.11.3-17.el7.x86_64
rpm-devel-0:4.11.3-17.el7.x86_64
rpm-libs-0:4.11.3-17.el7.x86_64
rpm-python-0:4.11.3-17.el7.x86_64
43

Dnf (yum'un yeni sürümü) için repoquery wrapper komutunu deneyebilirsiniz:

dnf repoquery --whatrequires sqlite

Kullanılamıyorsa şu komutla yükleyebilirsiniz:

dnf -y install dnf-plugins-core
12
teoincontatto

Ayrıca bu komutu deneyebilirsiniz.

repoquery --whatrequires sqlite

Bu komutu ServerFault ve ayrıca Fedora Forumları.

7
FilBot3

Ben gerçekten bilmek istediğiniz şey "sqlite-3.3.6 gerektiren, ancak sqlite-3.4.z ile mutlu olmayacak paketleri nedir" olduğunu düşünüyorum ... ve bunu öğrenmenin tek iyi yolu, dene. Sevmek:

echo | yum upgrade sqlite
3
James Antill

Wes Hardaker'ın dediği gibi , iyi bir yerleşik yöntem rpm -q --whatrequires <package>. Mesele şu ki, rpm bağımlılık çözümü için yetenekler üzerinde çalışıyor, sadece paketler üzerinde değil, ör. dpkg Debian/Ubuntu Linux dağıtım ailesinde yapar. Diğerlerinin de belirttiği gibi, sadece rpm -q --whatrequires sqlite tüm hikayeyi anlatmaz, bu yüzden bazıları neden repoquery kullanılmasını önerdi. repoquery, ancak, RHEL/CentOS 7 minimalde (belki masaüstü de mi?) varsayılan olarak yüklenmez, bu yüzden herkes için mevcut olmayabilir.

Bir kullanıcı rpm -q --provides <pkgname> bir paketin sağladığı tüm özellikleri görmek için rpm -q --whatrequires <capability> hangi paketlerin bu özelliği gerektirdiğini görmek için. Bu bilgi, bir BASH tek astar kullanılarak kısa bir şekilde sorgulanabilir (burada uzunluk için iki satıra ayrılır):

capabilities=($(rpm -q --provides sqlite | awk -F= '{print $1}'));
for c in "${capabilities[@]}"; do rpm -q --whatrequires "$c"; done

Bu yalnızca rpm için yerleşik seçenekleri kullanır ve bu nedenle başka paketlerin (ör. yum-utils, repoquery) içeren paket olan CentOS 7'de.

1
villapx