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.