Andere Sprachen Deutsch ; English ; Français ; |
Synopsis: Nach vielen Diskussionen über den urpme --auto-orphans Befehl, finden Sie nun hier eine Seite aus diesem [[1]].
|
Contents
Wenn ich ein Paket entferne, werden dann auch die Abhängigkeiten entfernt?
Wenn ich ein Paket mit "urpmi <paketname>" installiere und dieses zum Beispiel 9 zugehörige Abhängigkeiten installiert, insgesamt somit 10 Pakete, und ich das Paket mit dem "urpme" Befehl entferne, werden dann alle 10 Pakete entfernt?
Falls nicht, welches ist der beste Befehl um alle 10 Pakete zu entfernen?
Antwort
Nein. Es wird nur das Paket entfernt, welches installiert werden sollte, jedoch nicht die dazugehörigen Abhängigkeiten.
Hierfür ist der Befehl urpme --auto-orphans
gedacht und er funktioniert gewöhnlich wie es geplant ist, falls Sie wissen wie dieser funktioniert, da es hierbei einige Mechaniken gibt, die Sie wissen sollten und Ihre Aufmerksamkeit benötigen, damit dies genau so funktioniert, wie gewünscht.
Here be dragons!URPMI und DNF verwenden verschiedene Methoden, um verwaiste Pakete zu finden.
Falls Sie beide verwenden, sollten Sie niemals die automatische Funktion beider Befehle nutzen. |
Ein kleines Beispiel:
Sie haben ein sauberes System am Anfang, bei dem urpme --auto-orphans
keine orphans - verwaiste Pakete - anzeigt. Alle aktuell installierte Pakete wurden von Ihnen zur Installation ausgewählt. Wenn Sie nun foo
installieren, werden auch die Pakete bar
und baz
angefordert und installiert.
Die orphans Funktion markiert nun bar und baz als Pakete, welche nicht explizit angefordert wurden und fügt diese in /var/lib/rpm/installed-through-deps.list ein. Einige Zeit später möchten Sie nun foo
entfernen, jedoch bleibt bar
und baz
weiterhin als Paket installiert, da diese möglicherweise weiterhin verwendet werden oder gemeinsam genutzte Bibliotheken verwendet, auf die andere Programme zugreifen.
Nun können Sie diese beiden Pakete über den Befehl urpme --auto-orphans
entfernen.
Sie können die Pakete manuell als "un-orphaned" (nicht-verwaist) markieren (zum Beispiel aus der /var/lib/rpm/installed-through-deps.list
entfernen), indem Sie urpmi mitteilen, dass Sie das Paket installieren möchten. Dies führt keine Änderungen an Ihrer Installation aus, sondern entfernt das Paket aus der Liste der verwaisten Pakete (orphan Liste), da Sie urpmi mitteilen, dass Sie es direkt installieren möchten.
Dies ist der Idealfall. Führen Sie einfach urpme --auto-orphans
aus (aber bestätigen Sie dies NICHT mit ja, zum entfernen der Pakete!!!), um anzeigen zu lassen, wie viele "orphans" Sie aktuell haben. Falls Sie diese behalten möchten, welche Sie sehen, verwenden Sie einfach urpmi
...
Damit funktioniert es wie gewünscht und wie oben beschrieben.
Eine weitere Möglichkeit ist es, grep -F [RPM] /var/log/syslog zu verwenden, oder, seit Mageia 3, journalctl -a | grep -F [RPM] und nachzusehen, welche Pakete zusätzlich mit dem Paket installiert wurden, welches Sie entfernen möchten, um diese manuell zu entfernen, jedoch ist dies ermüdend ...
Entfernen mit allen Abhängigkeiten
Beispiel: urpme --auto-orphans task-x11
wird x11 mitsamt der Abhängigkeiten deinstlalieren.
Referenz: * https://bugs.mageia.org/show_bug.cgi?id=3163#c7 - urpmi entfernt einfach das meta-Paket samt dessen Abhängigkeiten, ähnlich zur purge Option von apt.
Warnung
Es gibt gute Gründe vorsichtig mit urpme --auto-orphans zu sein.
Es ist SEHR einfach, unbeabsichtigt wichtige Pakete damit zu entfernen.
Betrachten Sie dieses Beispiel.
Sie haben das Meta-Paket task-plasma
installiert. Ein Metapaket ist ein leeres Paket welches keine Dateien enthält, jedoch viele weitere Pakete als Abhängigkeiten.
task-plasma5
hat hunderte von Pakete als Abhängigkeit.
Nun entfernen Sie nur eines dieser Pakete, da Sie dieses nicht mehr möchten. Nehmen wir als Beispiel den Dokumentenbetrachter okular
. Das entfernen von okular
bedeutet, dass eines der Abhängigkeiten von task-plasma5
fehlt und dass das meta-Paket task-plasma5
auch entfernt wird. Dies ist in Ordnung, da alle andere Pakete, welche als Teil von task-plasma5
installiert wurden, weiterhin vorhanden sind, nur das diese als orphans markiert sind. Wenn Sie nun urpme --auto-orphans
ausführen, werden Ihnen die hunderte Pakete als orphaned Pakete angezeigt und ein Druck auf Ihrer Tastatur wird die komplette Plasma Installation löschen.
Alle verwaiste (orphans) Pakete als nicht-verwaist (un-orphaned) markieren
Um alle verwaiste Pakete als manuell installierte Pakte zu markieren, können Sie folgendes ausführen
urpmi $(urpmq --auto-orphans -f)
Zusätzliche Bemerkungen über Orphans
Das verwalten von Orphans hat in den meisten Fällen eher eine technische Bedeutung, statt einer praktischen. Diese Art der Vorgehensweise benötigen Sie möglicherweise, wenn Sie viele und verschiedene Software ausprobieren möchten und einen begrenzten Speicherplatz haben.
Zugehörige Fehlerberichte
Behoben
mga#920- 'urpme --auto-orphans' message shouldn't be shown when using rpmdrakemga#12567- Target specifications about urpmi orphans mechanismmga#14594(duplicate: mga#11287) - Do not show any message about orphans when using rpmdrake / mgaapplet / drakrpm-update
Zu erwägen
- mga#3947 - orphans detection should record requested files, not installed through deps
- mga#8123 - Add "orphaned" as selective view to rpmdrake
Weitere Methoden um RPMs zu entfernen
Neben den orphans gibt es zusätzliche Methoden um Ihr System zu bereinigen.
Entfernen von nicht benötigten Lokalisierungen und Hardware-Unterstützung
Unser Werkzeug remove-unused-packages
ist, welches wir auch für den Live-Installer ausgeführt wird.
Auf einem installierten System können Sie es manuell als root ausführen. FallsSie nichts zum deinstallieren finden, wird es ohne eine Meldung beendet.
Um zu sehen, was deinstalliert wird, klicken Sie auf die Fortgeschritten Schaltfläche. Falls Sie finden, dass es zu viel ist: brechen Sie entweder den Vorgang ab oder fahren Sie fort und instaliieren Sie die benötigten Pakete danach erneut. Beispiel: Persönlich installiere ich danach locales-en autocorr-en hunspell-en hyphen-en mythes-en erneut - Dies macht die englischsprachige Rechtschreibprüfung einfacher, wenn man damit schreibt... ;)
Persistenter Live-USB
Vor allem bei einem Live USB-Stick mit einer persistenten Partition, und auch bei einer konventionell erstellen Installation auf einem USB-Stick, ist es gut, nicht benötigte Pakete zu entfernen, um Speicherplatz auf der persistenten Partition, sowie Zeit und Bandbreite zu sparen.
(Technisch präziser: Pakete werden nicht von der, als "nur-lesen" eingebunden, Live-ISO Partition entfernt, die sich als Abbild auf dem USB-Stick befindet - jedoch wird es für das Paketsystem aussehen, als wären die Pakete aus dem System entfernt worden, wodurch keine Aktualisierungen abgefragt werden, welche auf der persitenten Partition gespreichert worden wären.)
Verwenden Sie den Befehl remove-unused-packages
auf einem gebooteten Live-ISO System, bevor Sie es aktualsiieren und entfernen Sie ungenutzte Lokalisierungen.
Beachte: Anders als bei einem installierten System auf einem internen Laufwerk, möchten Sie womöglich das entfernen der nicht benötigten Hardware-Unterstütztung abwählen, damit Sie den Stick auch mit anderen Computern einsetzten können.
Entfernen der größten Pakete
Der folgende Befehl listet die 10 größten Pakete auf, die in Ihrem System installiert sind. Falls eines dieser Pakete für Sie nicht mehr nützlich ist, dann können Sie urpme verwenden um dieses zu entfernen und optional, auch die verwaisten Pakete zu entfernen (siehe oben)
rpm -qa --qf '%{SIZE} %{NAME}\n' | sort -nr | head -n 10
Entfernen von Paketen, welche nicht in Ihren Repositorys vorhanden sind
Falls Sie Ihr System (eventuell mehrmals) aktualisiert haben oder manuell einige Pakete installiert haben, sind womöglich auch ein paar Pakete vorhanden, die Sie entfernen möchten. Der unten aufgeführte Befehl wird alle Pakete auflisten, welche nicht in den "Core_Release" Repositorys vorhanden sind (es muss das Update Repository nicht speziell ausgewählt werden: alle Pakete in "Updates" befinden sich auch in "Release") :
rpm -qa | xargs urpmq --media "Core Release","Core 32bit Release" -r
Fühl dich frei, die Repositorys in einem mit kommagetrennten Format aufzulisten.
Um einfach alle Pakete aufzulisten, welche sich nicht in einer der aktuell eingerichteten Repositorys befinden, verwende den Befehl
urpmq --not-available
Sie benötigen womöglich einige Pakete
Sie haben eventuell ein paar Pakete installiert, die Sie nicht deinstallieren möchten, wie zum Beispiel
- Treiber für Drucker von einem Hersteller
- Einige Programme die Sie installiert haben
- ...