Yanıtlar:
İstediğiniz rpm seçeneği:
rpm -q --whatrequires sqlite
Düzenlendi: eklendi - tartışmalara eklenmiş diğer cevaplara / yorumlara
Düzenlendi: kaldırıldı - rpm için geçersiz bir seçenek olduğundan yüklü
--installed
için bir seçenek repoquery
ama için geçersiz rpm
.
repoquery -q --installed --whatrequires sqlite
rpm -q --whatrequires sqlite
yalnızca paket adlarındaki bağımlılıkları bildirir.
Aksine, repoquery
aşağıdaki gibi davranır (man sayfalarından):
--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.
Paket alalım libdb
.
# rpm -q --whatrequires libdb
no package requires libdb
Hiçbir paket bağlı değildir libdb
, bu yüzden sorunsuz bir şekilde çıkarabilmeliyiz. 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 diğer bazı paketler doğrudan pakete değil, libdb-5.3.so()(64bit)
sağladığı dosyaya bağlıydı.
Son olarak, işte size bağlı olarak gerçek paketlerin listesi libdb
:
# 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
Dnf (yeni yum sürümü) repoquery wrapper komutuyla deneyebilirsiniz:
dnf repoquery --whatrequires sqlite
Mevcut değilse, aşağıdaki komutu kullanarak yükleyebilirsiniz:
dnf -y install dnf-plugins-core
--installed --recursive
Sonunda ihtiyacın var , bu yüzden sadece gerçekte kurulu olanları geri
Bu komutu da deneyebilirsiniz.
repoquery --whatrequires sqlite
Bu komutu ServerFault'dan ve ayrıca Fedora Forumları'ndan aldım .
Gerçekten bilmek istediğin şeyin "sqlite-3.3.6 gerektiren paketler nelerdir, ancak sqlite-3.4.z ile mutlu olmayacaklarını" düşünüyorum ve bunu bulmanın tek iyi yolu ... dene. Sevmek:
echo | yum upgrade sqlite
As Wes Hardaker söyledi , iyi bir dahili yöntemle kullanmaktır rpm -q --whatrequires <package>
. Mesele şu ki, yalnızca Debian / Ubuntu Linux dağıtımları ailesinde olduğu gibi sadece paketlerde değil, bağımlılık çözümü için rpm
de yetenekler üzerinde çalışıyor dpkg
. Diğerlerinin de belirttiği gibi, basitçe yapmak rpm -q --whatrequires sqlite
hikayenin tamamını anlatmaz, bu yüzden neden bazılarının kullanılması önerildi repoquery
. repoquery
Ancak, varsayılan olarak RHEL / CentOS 7 minimal (belki de masaüstü de olabilir) içine kurulmaz, bu yüzden herkes için uygun olmayabilir.
Bir kullanıcı rpm -q --provides <pkgname>
bir paketin sağladığı tüm yetenekleri görmek için yapabilir, daha sonra rpm -q --whatrequires <capability>
hangi yeteneklerin yüklü olduğunu görmek için kullanabilir . Bu bilgi, tek bir BASH astarı kullanılarak kısa sürede sorgulanabilir (burada uzunluk için iki satıra ayrılmıştır):
capabilities=($(rpm -q --provides sqlite | awk -F= '{print $1}'));
for c in "${capabilities[@]}"; do rpm -q --whatrequires "$c"; done
Bu, yalnızca rpm
kendi içinde yerleşik olan seçenekleri kullanır ve bu nedenle herhangi bir ek paket yüklenmesini gerektirmez (örn . yum-utils
İçeren paket olan CentOS 7'de repoquery
).
repoquery
belirli bir paket gerektiren tüm paketlerin yapısını oluşturan güzel bir ağaç benzeri yapı oluşturmak için de kullanılabilir, örneğin:repoquery --pkgnarrow=installed --tree-whatrequires sqlite