Kullanılmayan paketleri kaldır


Yanıtlar:


39

Kolay değil. "O zamandan beri kaldırdığım bir şey için gerekli olan bir dosyayı" "gerçekten istediğim herhangi bir şey için gerekli olmayan bir dosyadan" nasıl ayırt edersiniz?

Paket bağımlılık grafiğinizdeki "yaprak düğümlerini" listelemek package-cleanupiçin yum-utilspaketten komutu kullanabilirsiniz . Bunlar, başka hiçbir şeyi etkilemeden çıkarılabilen paketlerdir:

$ package-cleanup --leaves

Bu, başka hiçbir şeyin dayanmadığı bir “kütüphaneler” listesi üretecektir. Çoğu durumda bu paketleri güvenle kaldırabilirsiniz. --allKomut satırına eklerseniz :

$ package-cleanup --leaves --all

Ayrıca, kitaplık olarak kabul edilmeyen paketleri de alacaksınız, ancak bu liste o kadar uzun olacak ki muhtemelen faydalı olmayacak.


9
APT (Yum'un Debian eşdeğeri) “otomatik olarak kurulmuş paket” kavramına sahiptir. Bir paket açıkça talep edilmediyse ancak yalnızca bir bağımlılık olarak getirildiyse, ona bağlı olan paketlerin tümü kaldırılırsa otomatik olarak kaldırılır (onay istemi ile). Bu tür bir gösterge olmadan, gerçekten kolay değil.
Gilles 'SO- kötülük'

101

Bir paket ile yüklerseniz yum install, diyelim ki pdftk, bu bağımlılıkları bir çok çeker:

Installed:
  pdftk.x86_64 0:1.44-10.fc18

Dependency Installed:
  bouncycastle.noarch 0:1.46-6.fc18     
  itext-core.noarch 0:2.1.7-14.fc18     
  libgcj.x86_64 0:4.7.2-8.fc18          
  bouncycastle-mail.noarch 0:1.46-6.fc18
  java-1.5.0-gcj.x86_64 0:1.5.0.0-40.fc18
  sinjdoc.x86_64 0:0.5-13.fc18
  bouncycastle-tsp.noarch 0:1.46-5.fc18
  java_cup.noarch 1:0.11a-10.fc18
  itext.x86_64 0:2.1.7-14.fc18   
  javamail.noarch 0:1.4.3-12.fc18

Complete!

yum remove pdftk tüm bağımlılıkları değil, yalnızca bu paketi kaldıracak.

Ancak tüm 'işlemlere' bakabilirsiniz (yükleme, kaldırma vb.):

$ sudo yum history list pdftk
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------  
    88 | install pdftk            | 2012-12-14 13:35 | Install        |   11   

Ve sonra bu işlemi geri alabilirsiniz:

$ sudo yum history undo 88
Undoing transaction 88, from Fri Dec 14 13:35:34 2012
    Dep-Install bouncycastle-1.46-6.fc18.noarch       @fedora
    Dep-Install bouncycastle-mail-1.46-6.fc18.noarch  @fedora
    Dep-Install bouncycastle-tsp-1.46-5.fc18.noarch   @fedora
    Dep-Install itext-2.1.7-14.fc18.x86_64            @fedora
    Dep-Install itext-core-2.1.7-14.fc18.noarch       @fedora
    Dep-Install java-1.5.0-gcj-1.5.0.0-40.fc18.x86_64 @fedora
    Dep-Install java_cup-1:0.11a-10.fc18.noarch       @fedora
    Dep-Install javamail-1.4.3-12.fc18.noarch         @fedora
    Dep-Install libgcj-4.7.2-8.fc18.x86_64            @fedora
    Install     pdftk-1.44-10.fc18.x86_64             @fedora
    Dep-Install sinjdoc-0.5-13.fc18.x86_64            @fedora
    ...
    Complete!

14
+1 Müthiş bir çözüm ve yapmak çok kolay. Hiç duymadım yum history. Teşekkürler!
Stefan Lasiewski

8
Peki ya 89 java_cup'a veya libgcj'ye bağlıysa?
WernerCD

2
Bu kabul edilmiş bir cevap olmamalı mı?
Celdor

61

Fedora 18'den başlayarak, bu komutu basitçe kullanabilirsiniz

yum autoremove

veya

yum remove --setopt=clean_requirements_on_remove=1

Autoremove komutunu belirli bir paketle de uygulayabilirsiniz

yum autoremove <package>

Bu, kurulu olan paketten gereksiz bağımlılıkları kaldıracaktır. autoremoveçok fazla bir takma isim remove --setopt=clean_requirements_on_remove=1ancak bazı nedenlerden dolayı hala belgelenmemiş durumda.


5
komutu yum remove --setopt=clean_requirements_on_remove=1benim için centOS'ta çalışıyor
BMW,

Benim için package-cleanup --leaves && yum autoremovekaldırılan libvorbis ve böylece internet radyo yayını yapan "Ices" uygulamasının ölmesine neden oldu - muhtemelen repolarda olmadığı için ve onu derlemek zorunda kaldım.
Nakilon

Komut yum autoremove, CentOS 7.6'da da çalışmaktadır.
scrutari,

yum autoremove, CentOS 7'deki 4 eski çekirdeği kaldıramadı
user1133275

5

Larsks attım bir adım öteye cevap verdim.

$ package-cleanup -q --leaves | xargs -l1 yum -y remove 

Bu, başka hiçbir şeyi etkilemeden giderilebilecek tüm bağımlılıkları alır ve sonra bunları kaldırır. Daha sonra birer birer geçiyor.

"-q", "yum" u ayarlayan bazı sistemlerde yararlıdır, aksi halde bu komut yum'u siler. Ve istediğin bu değil.


2
package-cleanupMakinemde "Yum ayarlanması" çıktı; bu da Yum'un kendisini kaldırmasıyla sonuçlandı. Şimdi bunun nasıl çözüleceğini çözmeye çalışıyorum.
Paul Lammertsma

@PaulLammertsma sadece -qpaket temizleme için seçenek ekleyin . Bu da başıma geldi: D
Ealhad

1
package-cleanup -q --leaves | xargs -r -l1 yum -y removepaket temizleme çıktısı boşsa, ansar, aşçı, kukla, serseri gibi otomatik komut dosyaları için yararlı olduğunda sessizce xargs atlayacak
Ilya Sheershoff

cevap bu.
xCovelus

1

İle daha yeni Fedoras'ta dnf, dnf repoquery --unneededbunun yerine kullanabilirsiniz package-cleanup --leaves.

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.