it-swarm-eu.dev

Odstraňte nepoužité balíčky

Nainstaloval jsem nějaký balíček rpm do své Fedory 17. Některé balíčky měly spoustu závislostí. Odstranil jsem některé balíčky, ale zapomněl jsem odstranit nepoužité závislosti pomocí yum remove.

Jak to mohu udělat teď?

67
mudlee

Není to lehké. Jak rozlišujete mezi „souborem vyžadovaným něčím, co jsem od té doby odstranil“, od „souboru, který nevyžaduje nic jiného, ​​co opravdu chci“?

Můžete použít package-cleanup příkaz z yum-utils balíček pro zobrazení „listových uzlů“ v grafu závislosti na balíčku. Jedná se o balíčky, které lze odstranit, aniž by ovlivnily cokoli jiného:

$ package-cleanup --leaves

Tím vznikne seznam „knihoven“, na nichž nic jiného nezávisí. Ve většině případů můžete tyto balíčky bezpečně odebrat. Pokud přidáte --all na příkazový řádek:

$ package-cleanup --leaves --all

Dostanete také balíčky, které nejsou považovány za knihovny, ale tento seznam bude tak dlouhý, že pravděpodobně nebude užitečný.

39
larsks

Pokud instalujete balíček s yum install, řekněme pdftk, přinese to spoustu závislostí:

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 odstraní pouze tento balíček a ne všechny závislosti.

Můžete se však podívat na všechny „transakce“ (instalace, odstranění atd.):

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

A pak můžete transakci vrátit zpět:

$ 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!
107
Your Mom

Od Fedory 18 můžete tento příkaz jednoduše použít

yum autoremove

nebo

yum remove --setopt=clean_requirements_on_remove=1

Příkaz autoremove můžete také použít s konkrétním balíčkem

yum autoremove <package>

Což odstraní nepotřebné závislosti z nainstalovaného balíčku. autoremove je velmi alias remove --setopt=clean_requirements_on_remove=1 ale z nějakých důvodů je stále nezdokumentován.

67
Finalzone

Vzal jsem larvy odpověď o krok dále.

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

To uchopí všechny závislosti, které lze odstranit, aniž by to ovlivnilo cokoli jiného, ​​a poté je odstraní. Lepší pak projít jeden po druhém.

"-q" je užitečné v některých systémech, které tisknou "Nastavení yum", jinak způsobí, že tento příkaz yum odstraní. A to není to, co chcete.

9
jtoscarson

V novějších Fedorách s dnf můžete použít dnf repoquery --unneeded jako náhrada za package-cleanup --leaves.

2
Thomas Ahle