From Mageia wiki
Revision as of 17:23, 1 November 2020 by Psyca (talk | contribs)
Jump to: navigation, search


Drakconf multiflag.png
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]].

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.

Dragon-head.png 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 rpmdrake
  • mga#12567 - Target specifications about urpmi orphans mechanism
  • mga#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
  • ...