Bağımlı paketler nasıl listelenir (ters bağımlılıklar)?


201

Belirli bir paketin kurulumuna neyin neden olduğunu araştırmak için, o pakete bağlı paketlerin bir listesini almak istiyorum. İçinde bariz bir şey bulamadım man dpkg.



5
Eski sorunun yanıtları aptitude, yıllardır varsayılan olarak kurulmamış bir şey etrafında dönüyor . 2017'de Ubuntu'daki herkes hala var apt-cache. Bağlantılı soruyu izleyen herkes, sahip olacağı bir program hakkında yapılan bir tartışmada kaybolacak.
Lambart

Yanıtlar:


252

apt-cache rdepends packagename ne istersen yapmalısın


1
Mükemmel! başka bir paket tarafından kurulmuş apt-cache rdepends tofrodosolduğu şüphesini doğruladı (eski dos2unix).
l0b0

2
Bugün gelince (apt sürüm 0.9.9.1), rdependic ile çalışan --recurse seçeneği var.
jarno

43
Eğer eklerseniz --installed, çıkış diğerleri tarafından kullanılabilir paketleri bile faydalıdır:apt-cache rdepends --installed packagename
quazgar

2
, Recommends bağlı arasına beni farklı olmasına yardım biraz daha farklı bir sözdizimi, Önerdi vb Sözdizimi var sudo apt rdepends packagename(apt-cache ama sadece apt kullanmıyor bunu dikkat edin)
Vahid Pazirandeh

4
Çıktı için, neden bazı paketlerin önlerinde dikey bir çubuk (boru sembolü) var?
Vahid Pazirandeh

62

yetenek bu ele almanın oldukça hoş bir yoludur:

$ aptitude why bash
i   foomatic-filters PreDepends bash (>= 2.05)

Varsayılan olarak, yalnızca "en yüklü, en güçlü, en kısa, en kısa" nedeni listeler, ancak aptitude -v whybulduğu her şeyi çıktı yapmak için kullanabilirsiniz .


4
Görünüşe göre sadece kurulu paketleri dikkate alıyor, mevcut olan her şeyi değil. Ve ihtiyacım olan şey buydu.
Tuukka Mustonen

3
İstediğiniz reverse-dependsiçinubuntu-dev-tools
tumbleweed

Debian nasıl?
Tuukka Mustonen

1
ubuntu-dev-toolsDebian'da
tumbleweed

Bu harika. Yüzlerce x11 bağımlılığı ve ayda düzinelerce güncellemeyi sürükleyerek, başsız bir sunucuya openssh-server tavsiye edildiğini (ve dolayısıyla yüklendiğini) öğrendim . Otomatik paket yönetimi ile ilgili sorun bu! xauth
BaseZen

18
apt-cache showpkg <pkgname> 

Örnek:

apt-cache showpkg lightdm

mevcut sözdizimiapt showpkg <pkgname>
l - marc l

16

Birden fazla yol var, her yöntem farklı bir çıktı gösteriyor.

Tam tersine bağımlılık ağacının ayrıntılı bir görünümü için;

aptitude install apt-rdepends
apt-rdepends -r bash

Alternatif olarak;

apt-cache showpkg bash

Veya kısa bir liste:

apt-cache rdepends bash

rdependsBu ağaçta tam olarak ne var ? apt-rdepends php7.0-fpmgösterir sed. sedPHP'ye bağlı değil, PHP FPM'yi bırakın.
Dan Dascalescu,

Tersine bağlıdır, PHP'nin sed'e bağlı olduğu anlamına gelir.
Erik Berkun-Drevnig,

1
Merhaba çocuklar, aslında "apt-rdepends", "özyinelemeli bağımlılık" anlamına gelir. Özyinelemeli özyinelemeli bağımlılık istiyorsanız, şunu yazmanız gerekir:apt-rdepends -r yourPackageNameHere
SebMa

Apt-cache man sayfası "rdepends, bir paketin sahip olduğu her ters bağımlılığın bir listesini gösterir" diyor. Apt-rdepends, @SebMa'nın dediği gibi -r seçeneğinin ters bağımlılıklar yapmasını gerektirir.
NeilG

8

En basit seçenek hala:

apt rdepends package-name

herhangi bir paket yüklemenizi gerektirmeyen.


1
Bu kabul edilen cevaba ne ekliyor?
l0b0

2
Kabul edilen cevabın bununla hiçbir ilgisi yok. Çıktı tamamen farklı ve apt-cache'lerden insan tüketimi için çok daha kullanışlı. Cevap, apt-cache'nin varsayılan olarak her yere yüklenmediğinden bahseder - bu tek başına bu cevabın amacının neden olduğuna dair iyi bir ipucu olmalıdır. Sonunda, bu aslında aradığım cevap, bu yüzden herhangi bir aşağı oy oldukça saçma.
stefanct

Bunun kabul edilen sürümden daha iyi olmasının çok önemli bir nedeni , s çıktısının aksine, bağımlılıkların sürümünü içermesidir apt-cache. Şu anda tam ihtiyacım olan şeydi (glibc 2.28 uyumsuzluğu, yani can sıkıcı hata ayıklama)
Per Lundberg

Sadece apt kullanmak için oy. Orijinal cevap sırasında, bu adil çözümün geçerli olacağından emin değilim, ama şimdi ise, bu iyi.
RobotHumans

7

Diğer iyi cevaplara ek olarak, bir APT / APT-GET -sbir "benzetilmiş" kaldırma (veya yükleme) yapar.

sudo apt -s remove <pkgname>

Kullanılması -sveya --simulatedpaketleri kaldırmak (veya yüklemek) için, normalde etkilenen tüm bağımlılıklarını listeler. Bu çıkarılırken paketleri yetim veya fiilen yürütme olmadan yüklerken bağımlılıkları gerekli göstermek olacaktır installya remove. Sadece bilgilendirme.


apt remove -s php7.0-fpmgösterir The following additional packages will be installed: apache2 apache2-bin apache2-data libapache2-mod-php7.0 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0. PHP FPM'yi kaldırsam neden apache kuruluyor?
Dan Dascalescu

@DanDascalescu Hmm. Apt pkg için hatalı bir install / remove betiği olabilir ya da apache2'yi dep olarak yükleyen başka bağımlılıklarınız olabilir (bu bir web sunucusu gerekli - ve apache2'nin varsayılan web sunucusu olduğuna inanıyorum). Birkaç şey olabilir. Sadece emin değilim. Bir cevap bulamadıysanız AskUbuntu'da iyi bir yazı kokusu var.
bshea
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.