Usuń nieużywane paczki


Odpowiedzi:


39

To nie jest łatwe. Jak odróżnić „plik, który był wymagany od czegoś, co od tego czasu usunąłem” z „pliku, który nie jest wymagany przez nic innego, czego naprawdę chcę”?

Możesz użyć package-cleanuppolecenia z yum-utilspakietu, aby wyświetlić „węzły liści” na wykresie zależności pakietu. Są to pakiety, które można usunąć bez wpływu na nic innego:

$ package-cleanup --leaves

Spowoduje to utworzenie listy „bibliotek”, od których nie zależy nic więcej. W większości przypadków możesz bezpiecznie usunąć te pakiety. Jeśli dodasz --alldo wiersza poleceń:

$ package-cleanup --leaves --all

Dostaniesz również pakiety, które nie są uważane za biblioteki, ale ta lista będzie tak długa, że ​​prawdopodobnie nie będzie przydatna.


9
APT (odpowiednik Yum w Debianie) ma pojęcie „automatycznie zainstalowany pakiet”. Jeśli pakiet nie został wyraźnie zażądany, ale został pobrany tylko jako zależność, zostanie automatycznie usunięty (z monitem o potwierdzenie), jeśli wszystkie pakiety, które od niego zależą, zostaną usunięte. Bez wskazania tego typu to naprawdę nie jest łatwe.
— Gilles

101

Jeśli zainstalujesz pakiet yum install, powiedzmy pdftk, spowoduje on wiele zależności:

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 usunie tylko ten pakiet, a nie wszystkie zależności.

Ale możesz spojrzeć na wszystkie „transakcje” (instalacja, usuwanie itp.):

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

Następnie możesz cofnąć tę transakcję:

$ 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 Niesamowite rozwiązanie i bardzo łatwe do zrobienia. Nigdy o tym nie słyszałem yum history. Dzięki!
— Stefan Lasiewski

8
A jeśli 89 zależy od java_cup lub libgcj?
— WernerCD

2
Czy nie powinna to być zaakceptowana odpowiedź?
— Celdor

61

Począwszy od Fedory 18, możesz po prostu użyć tego polecenia

yum autoremove

lub

yum remove --setopt=clean_requirements_on_remove=1

Możesz także zastosować polecenie autorove z określonym pakietem

yum autoremove <package>

Co usunie niepotrzebne zależności z zainstalowanego pakietu. autoremovejest w dużej mierze pseudonimem, remove --setopt=clean_requirements_on_remove=1ale z pewnych powodów jest wciąż nieudokumentowane.


5
polecenie yum remove --setopt=clean_requirements_on_remove=1działa dla mnie w centOS
— BMW

Dla mnie package-cleanup --leaves && yum autoremoveusunięta libvorbis i tak umarła aplikacja do przesyłania strumieniowego radia internetowego „Ices” - prawdopodobnie dlatego, że nie ma jej w repozytorium i musiałem ją skompilować.
— Nakilon,

Command yum autoremovedziała również na CentOS 7.6.
— scrutari

yum autorove nie usuwa 4 starych jąder z CentOS 7
— 1133275,

5

Odpowiedziałem Lararsowi o krok dalej.

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

Pobiera to wszystkie zależności, które można usunąć bez wpływu na nic innego, a następnie usuwa je. Lepiej niż jeden po drugim.

„-q” jest użyteczne w niektórych systemach, które w przeciwnym razie wypisują „Konfigurowanie yum”, powodując usunięcie tego polecenia przez to polecenie. I nie tego chcesz.


2
package-cleanupwypisuje „Konfigurowanie yum” na moim komputerze, co spowodowało, że Yum sam się usunął. Teraz próbuję wymyślić, jak to rozwiązać.
— Paul Lammertsma

@PaulLammertsma wystarczy dodać -qopcję do czyszczenia pakietu. To samo mi się przydarzyło: D
— Ealhad

1
package-cleanup -q --leaves | xargs -r -l1 yum -y removedyskretnie pominąć xargs jeśli wyjście package-cleanup jest pusta, przydatne dla automatycznych skryptów takich jak ansibla, kucharz, marionetka, Vagrant
— Ilya Sheershoff

to jest odpowiedź.
— xCovelus

1

W nowszych Fedorach z dnfmożesz użyć dnf repoquery --unneededjako zamiennika package-cleanup --leaves.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.