APT'de kurulu paketlerin bağımlılıklarını (özyinelemeli) listeleme


17

Yüklediğim her paket için kaldırırsam hangi paketlerin yükleneceğini bilmek istiyorum. İhtiyacım olan çıktıya bir örnek ( package: list of deps):

abc: foo bar
bcd: baz abc
bdd: baz fuubar

ekleme

Paketi pppkullanarak kaldırırsam gerçekten ne kaldırılacağını kontrol edersem apt-get:

$ echo $(apt-get --dry-run remove ppp | grep '^Remv ' | cut -d' ' -f2)
gnome-ppp mint-meta-xfce network-manager-pptp-gnome network-manager-pptp wvdial pppoeconf pppoe pptp-linux pppconfig ppp

apt-cacheŞovun bana verdiğinden farklı olduğunu görüyorum (özyinelemeli bağımlılıkları da dahil etmiyorum):

$ apt-cache show ppp | grep '^Breaks: '
Breaks: network-manager (<= 0.8.0.999-1), network-manager-pptp (<= 0.8.0.999-1), pppdcapiplugin (<= 1:3.9.20060704+dfsg.1-1)

Ek 2

dpkg --get-selections | cut -f1Tekrarlanan yüklü paketlerin listesini almanın güvenilir bir yolu var mı ?


1
Ayrıştırma apt-get --dry-run removetemelde doğru görünüyor. Yalnızca kaldırdığınız paket için gereken otomatik olarak yüklenen paketler için gereken bazı otomatik olarak yüklenen paketleri kaçırabilir. Bu yüzden bunu uygun bir cevap olarak görmüyor musunuz?
Gilles 'SO- kötü olmayı bırak'

Yanıtlar:


11

Burada birkaç farklı soru sordunuz, umarım en azından bir veya iki konuda yardım edebilirim.

Kurulu tüm paketleri listelemek için, dpkgalandan ayrılmış bir listede çıktı almak üzere

dpkg -l 

Ekstra alanlar olmadan paket listesini almak için, başka bir yere koyabilirsiniz.

dpkg -l | awk '{print $2 }' # Pipe to grep after the awk, or glob from dpkg

Örneğin, eski bir çekirdeği kaldırmak istersem,

apt-get purge `dpkg -l linux* | awk '{print $2}' | grep 3.0.0-12`

Gereksiz bağımlılıklardan geçmenin en kolay yolu şudur debfoster. Etkileşimli olarak çalışır ve istediğinizi, bağımlılıklarını gözden geçirir ve özyinelemeli bir bağımlılığı kaldırabilir veya listeleyebilir.

Belirli bir paketin tüm özyinelemeli bağımlılıklarını listelemek için,

debfoster -d $PACKAGE ## PACKAGE is the specific package.

Yürüttükten sonra debfoster, bir paketin sahip olduğu bağımlıları da kontrol edebilirsiniz,

debfoster -e $PACKAGE ## PACKAGE is the specific package.

'Artık' paketleri listelemenin gerçekten harika bir yolu deborphan . Seçeneksiz çalıştır deborphan, tüm 'artık' paketleri listeleyecektir. Bir 'yetim' hiçbir şeye bağlı olmayan ve açıkça yüklemediğiniz bir pakettir.

Yeni bir kurulumdan sonra 'artık' paketleri de temizlemeyi seviyorum. Belirli paketleri kaldırdıktan sonra, kaçırdığınız her şeyi alabilirsiniz apt-get autoremove --purge,

apt-get purge `deborphan`

Sonunda bazen --purge'artıklar' paketi ile bitmiyor ve sonunda, yeni sürümleri apt-getbunları otomatik olarak kaldırabilir. Kaldırılan paketlerin kaldırıldığı tüm 'kalanları' kaldırmak için,

apt-get autoclean

Uygulamasının yeni sürümüne sahip apt-getdeğilseniz, bunları bu komutlarla her zaman kaldırabilirsiniz. Hiçbir 'artık' dosya yoksa hata yaparlar, autoclean ne olursa olsun ara sıra özleyebiliyor gibi görünüyor.

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs dpkg --purge

debfoster hala var, ancak yetenekli özelliklerin yerini aldı
Joshua Clayton

4
apt-cache show pkgname1 pkgname2...

(diğer şeylerin yanı sıra) bu (çalışma zamanı) bağımlılıkları listeleyecektir. Daha fazla işlem için bir makineye beslemediğiniz sürece bu genellikle yeterlidir. Tam olarak belirttiğiniz biçimde istiyorsanız, muhtemelen bir komut dosyası yazmanız gerekecektir.


Üzgünüm, sorumu yanlış formüle ettim. Yüklediğim her paket için hangi paketlerin kaldırılacağını bilmek istiyorum. Ayrıca yüklediğim tüm paketleri de listelemem gerekiyor.
Silinmiş

2
@Deleted: Üzgünüm, bu yorumu şimdiye kadar görmedim. "Yüklediğim her paket için hangi paketlerin kaldırılacağına" yanıt olarak (bu sorunun paket bazında yanıtlanmasını istediğinizi varsayalım) deneyin apt-get remove -s packagename. Yüklediğiniz tüm paketleri listelemek yeterlidir dpkg -l.
Faheem Mitha

@FaheemMitha: eski yazı, ama yine de büyük ipucu apt-get remove -s packagename!
twan163

@ twan163 Mutlu, sizin için yararlı oldu.
Faheem Mitha

1

Sanırım devam etmek ve aynı şey için bir döngü oluşturmak zorunda:

apt-cache depends libtext-wrapi18n-perl |xargs apt-cache depends

Tabii ki başlıkları kaldırın.


2
apt-cache depends bir recures seçeneği vardırapt-cache depends --recurse libtext
Joshua Clayton
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.