Wie kann ich verwaiste Pakete in Fedora entfernen?

42

Ich bin gerade von Ubuntu auf Fedora14 umgestiegen. In Ubuntu hatten wir die apt-get autoremoveMöglichkeit, verwaiste / unbenutzte Pakete zu entfernen. Was ist das Gegenstück in Fedora?

c0da
quelle

Antworten:

36

package-cleanup --quiet --leavesAus dem yum-utils- Paket werden die Bibliothekspakete aufgelistet, auf die sich andere Pakete nicht verlassen. Leider neigt es dazu, ein bisschen übereifrig zu sein. Auf meinem System schlug es beispielsweise vor, libvirt zu entfernen. Das Hinzufügen des --exclude-binArguments hilft. Wenn Sie mit dem Vorschlag zufrieden sind, gehen Sie wie folgt vor, um die Pakete zu bereinigen:

# package-cleanup --quiet --leaves --exclude-bin | xargs yum remove -y

quelle
1
Getestet nach der Installation und dem Entfernen netbeans-platformsowie nach der Paketbereinigung werden einige Dinge aufgelistet, jedoch keine der zuvor installierten netbeans-platformAbhängigkeiten (unter Verwendung von Fedora 17).
Maxschlepzig
2
Funktioniert nicht, wie von @maxschlepzig
c0da
30

DNF, der YUM-Ersatz seit Fedora 22, bietet auch einen autoremoveUnterbefehl, der nach dem Vorbild von apt-get / yum autoremove erstellt wurde.

Beispiele:

# dnf autoremove

die versucht, alle automatisch installierten und ansonsten nicht verwendeten Abhängigkeitspakete zu entfernen - sollte so ziemlich gleichwertig sein apt-get autoremove.

# dnf autoremove examplepackage

Dadurch werden das Beispielpaket und alle automatisch installierten (und ansonsten nicht verwendeten) Abhängigkeiten entfernt.

Lecker

Yum hat den Befehl zum automatischen Entfernen seit Fedora 19 und ist seit Fedora 20 / RHEL 7 dokumentiert.

Die Verwendung ist analog zur dnf-Implementierung, zB:

# yum autoremove

oder

# yum autoremove examplepackage

Ändern Sie das Verhalten von yum entfernt

Yum unterstützt eine Konfigurationsoption zum Ändern des Standardverhaltens des removeUnterbefehls (z. B. über /etc/yum.conf):

clean_requirements_on_remove=yes

yum.conf (5)

Wenn dies festgelegt ist, yum removeversucht der nächste auch, automatisch installierte Abhängigkeiten zu entfernen, wenn sie von anderen Paketen nicht benötigt werden.

Sie können diese Option auch vorübergehend über Folgendes testen:

# yum --setopt=clean_requirements_on_remove=1 remove examplepackage

Problemumgehung für die alte Fedora-Version

(Für Fedora-Versionen, in denen der Unterbefehl yum autoremove nicht verfügbar ist und / oder clean_requirements_on_removenicht funktioniert.)

Obwohl bei der Installation von Paketen installierte Abhängigkeiten als solche gekennzeichnet sind (scheint eine relativ neue Funktion von rpm / yum zu sein).

Sie finden nicht benötigte Abhängigkeiten über:

$ package-cleanup --leaves -q --all \
    | xargs repoquery --installed --qf '%{nvra} - %{yumdb_info.reason}' \
    | grep -- '- dep' \
    | cut -d' ' -f1 > tmp

Diese Befehlszeile ist vom Skript von fenris02 inspiriert .

Nach der Überprüfung tmp(und vielleicht auch nach der Kuration) können Sie sie folgendermaßen entfernen:

# xargs yum remove < tmp
maxschlepzig
quelle
Es gab den Fehler "Ungültiger yumdb querytag 'Grund' für installiertes pkg: adobe-release-x86_64-1.0-1.noarch". Was ist das jetzt
c0da
@ c0da, ich denke, dass die Funktion, die yum in seiner Datenbank den "Grund" der Installation (zB "dep" oder "user") für jedes Paket aufzeichnet, relativ neu ist. Vielleicht ist Ihre Fedora-Instanz älter als die Einführung dieser Funktion, sodass Sie noch (einige) alte Pakete ohne diesen Tag-Satz installiert haben.
Maxschlepzig
Ich habe Fedora 18 vor ein paar Tagen installiert. Daher denke ich, dass das erforderliche Tag vorhanden sein sollte.
c0da
1
@ c0da, vielleicht wurde der 'Grund' nicht aufgezeichnet, weil du das Paket adobe-releaseviayum localinstall
maxschlepzig 13.07.13
16

du musst das yum plugin "remove-with-leaves" installieren:

# yum install yum-plugin-remove-with-leaves.noarch

einmal installiert:

# yum remove --remove-leaves package

Viel Glück!

mrc
quelle
3
und wie läuft es für alle installierten apps?
CND
Scheint auch
maxschlepzig
1
Für RHEL / CentOS / Oracle Linux 6 muss das yum-plugin-remove-with-leaves.noarchPaket installiert seinpackage-cleanup
Terry Wang,
8
# package-cleanup --orphans >/tmp/junk

Bearbeiten Sie die /tmp/junkDatei und entfernen Sie die erste informative Zeile aus der Befehlszeile. Geben Sie Folgendes ein:

for file in `cat /tmp/junk`
do
  yum remove $file
done
Larry Mohr
quelle
1
package-cleanup (1) sagt: '--orphans Listet installierte Pakete auf, die in derzeit konfigurierten Repositorys nicht verfügbar sind.' Dies ist nicht gleichbedeutend mit dem, was apt-get autoremovetut. apt-get (8) sagt: 'Mit autoremove werden Pakete entfernt, die automatisch installiert wurden, um Abhängigkeiten für ein Paket zu erfüllen, und die nicht mehr benötigt werden.'
Maxschlepzig
1
Geht nicht Ich muss mich vorher geirrt haben. Thanks @maxschlepzig
c0da
Dies hat früher bei mir funktioniert, aber in CentOS 6.6 werden tatsächlich alle installierten Pakete aufgelistet, nicht nur Waisenkinder.
Gaia
4

HINWEIS: Diese Antwort ist korrekt, gilt jedoch nur für RHEL 7+ und Fedora 20+ (wobei das automatische Entfernen als neue Funktion hinzugefügt wurde).

# yum autoremove

Bestätigen Sie einfach, um die ausgewählten Pakete zu entfernen.

Kühler Milly
quelle
0

Aufbauend auf Larry Mohrs Antwort :

package-cleanup --orphans | sed '1d' | sed '/^ * /d' | sed '/Loading mirror speeds from cached hostfile/d' | xargs sudo yum remove

(Beinhaltet das Überspringen für den schnellsten Spiegel, wenn Sie sich fragen.)

Bengt
quelle
0

In Fedora bedeutet das Orphan-Paket, dass es keine Kandidaten-Repos zum Aktualisieren gibt!

  1. Wenn die verwaisten Pakete von Ihnen generiert wurden, deaktivieren Sie yum.repos.d / some.conf.

    yum distro-sync
    
  2. Bei anderen verwaisten Paketen kann der Befehl gefährlich sein.

    yum remove $(package-cleanup --orphans)
    

    Oder verwenden Sie einfach den Sicherheitsbefehl.

    yum remove name-of-page
    
firo
quelle