it-swarm.com.de

Entfernen Sie nicht verwendete Pakete

Ich habe ein RPM-Paket auf meinem Fedora 17 installiert. Einige Pakete hatten viele Abhängigkeiten. Ich habe einige Pakete entfernt, aber ich habe vergessen, nicht verwendete Abhängigkeiten mit yum remove zu entfernen.

Wie kann ich das jetzt machen?

67
mudlee

Es ist nicht einfach. Wie unterscheidet man zwischen "einer Datei, die von etwas benötigt wurde, das ich inzwischen entfernt habe" und "einer Datei, die von nichts anderem benötigt wird, was ich wirklich will"?

Du kannst den ... benutzen package-cleanup Befehl vom yum-utils Paket, um "Blattknoten" in Ihrem Paketabhängigkeitsdiagramm aufzulisten. Dies sind Pakete, die entfernt werden können, ohne etwas anderes zu beeinflussen:

$ package-cleanup --leaves

Dadurch wird eine Liste von "Bibliotheken" erstellt, von denen nichts anderes abhängt. In den meisten Fällen können Sie diese Pakete sicher entfernen. Wenn Sie --all zur Kommandozeile:

$ package-cleanup --leaves --all

Sie erhalten auch Pakete, die nicht als Bibliotheken gelten, aber diese Liste wird so lang sein, dass sie wahrscheinlich nicht nützlich ist.

39
larsks

Wenn Sie ein Paket mit yum install Installieren, z. B. pdftk, werden viele Abhängigkeiten berücksichtigt:

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 Entfernt nur dieses Paket und nicht alle Abhängigkeiten.

Sie können sich jedoch alle 'Transaktionen' ansehen (installieren, entfernen usw.):

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

Und dann können Sie diese Transaktion rückgängig machen:

$ 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

Ab Fedora 18 können Sie diesen Befehl einfach verwenden

yum autoremove

oder

yum remove --setopt=clean_requirements_on_remove=1

Sie können den Autoremove-Befehl auch auf ein bestimmtes Paket anwenden

yum autoremove <package>

Dadurch werden nicht benötigte Abhängigkeiten von diesem installierten Paket entfernt. autoremove ist ein Alias ​​von remove --setopt=clean_requirements_on_remove=1 ist aber aus bestimmten Gründen noch nicht dokumentiert.

67
Finalzone

Ich nahm Larsks Antwort einen Schritt weiter.

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

Dadurch werden alle Abhängigkeiten erfasst, die entfernt werden können, ohne dass sich dies auf andere auswirkt, und anschließend entfernt. Besser als eins nach dem anderen durchzugehen.

"-q" ist auf einigen Systemen nützlich, die andernfalls "Yum einrichten" ausgeben, wodurch dieser Befehl yum entfernt. Und das willst du nicht.

9
jtoscarson

In neueren Fedoras mit dnf können Sie dnf repoquery --unneeded Als Ersatz für package-cleanup --leaves Verwenden.

2
Thomas Ahle