Während der Verwendung von APT und aptitude
werden die
Abhängigkeiten der Pakete automatisch aufgelöst und daher auch
zusätzlich benötigte Pakete eingespielt. Deinstallieren Sie zu einem
späteren Zeitpunkt Pakete, werden bei Aptitude alle nicht mehr
benötigten Pakete ebenfalls wieder entfernt. APT (apt
, apt-get
)
weißt im Gegensatz dazu in der Standard-Einstellung nur auf nicht mehr
benötigte Pakete hin, entfernt sie aber nicht automatisch.
So verbleiben mitunter „Reste“ auf dem System zurück, die ohne Bezug zu anderen Paketen sind. Hängt ein Paket von keinem weiteren mehr ab und bildet kein eigenständiges Programm, wird es daher zu einem Waisen – engl. orphan. Häufig betrifft dies Pakete aus den Kategorien für Bibliotheken (libs), veraltete Bibliotheken (oldlibs) und Entwicklungsbibliotheken (libdevel).
Der Umgang mit Waisen ist im Allgemeinen recht unproblematisch. Waisen können Sie bedenkenlos entfernen, um unnötigerweise belegten Speicherplatz auf Ihrem System wieder freizugeben. Wir empfehlen Ihnen, diesen Aufräumvorgang bei der Systempflege als weiteren Schritt mit durchzuführen. Das hält Ihr System sauber und befreit es von unnützen Lasten.
Neben den Mechanismen von APT und aptitude
existieren eine ganze Reihe
von weiteren Programmen, um Waisen aufzuspüren und auch zu entfernen.
Für die Kommandozeile sind das debfoster
(siehe Abschnitt 8.44.2, „debfoster
“) und
deborphan
(siehe Abschnitt 8.44.3, „deborphan“). Auf Ncurses basieren Orphaner und
Editkeep (siehe Abschnitt 8.44.4, „Orphaner und Editkeep“) und auf GTK+ das Pendant
Gtkorphan (siehe [Gtkorphan]). Darüber hinaus bietet wajig
(Abschnitt 8.44.6, „wajig
“) entsprechende Möglichkeiten zur Suche, die wir Ihnen
ebenfalls nicht vorenthalten möchten.
Zwischen der Standardkonfiguration von APT und aptitude
gibt es
subtile Unterschiede, die sich über die Zeit herausgebildet haben und
die es im Alltag zu beachten gilt. Kurz gefasst, beläßt APT verwaiste
Pakete, während aptitude
diese automatisch entfernt.
APT-Versionen aus der Prä-Lenny-Ära – d.h. vor Debian 5.0 Lenny (2009) – nehmen auf die Erzeugung von Waisen kaum Rücksicht. Spätere Veröffentlichungen von APT achten deutlich stärker darauf und weisen den Benutzer darauf hin. Ohne explizite Aufforderung entfernt APT keine Waisen.
Bei aptitude
ist das ganze Prozedere ein klein wenig anders.
aptitude
räumt in der Standard-Einstellung eigenständig auf. Das
betrifft jedoch nur Pakete, die als "automatisch installiert" markiert
sind und von denen wiederum kein manuell installiertes Paket abhängt
(keine reverse dependencies bestehen).
Über die aptitude
-Option aptitude::Delete-Unused
schalten Sie dieses
Verhalten zu oder ab – entweder über die Benutzeroberfläche unter
→ , oder direkt in der Konfigurationsdatei
von aptitude
.
Um den Vorgang der Entfernung ungenutzter Pakete mit APT explizit
anzustoßen, verfügen apt
und apt-get`
über das Unterkommando
autoremove
. Seitdem nicht nur Aptitude sondern auch APT ein solche
Funktionalität besitzt, hat die Bedeutung von deborphan
und
debfoster
deutlich abgenommen.
Pakete automatisch entfernen mit dem Unterkommando autoremove
.
# apt-get autoremove Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig 0 aktualisiert, 0 neu installiert, 0 zu entfernen und 13 nicht aktualisiert. #
aptitude
verfügt zudem über die Option --purge-unused
, die noch
einen Schritt weiter geht. Alle Pakete, die aptitude
mangels
Notwendigkeit entfernt, werden inklusive der dazugehörigen
Konfigurationsdateien entsorgt. Diese Option können Sie über den Eintrag
aptitude::Purge-Unused
aktivieren.
--purge-unused
Diese Option ist sehr mächtig und kombiniert eine ganze Reihe von Einzelschritten. Wir raten Ihnen daher, die Anwendung vorab genau zu prüfen.
Das Paket debfoster
[Debian-Paket-debfoster] ist ein Wrapper für die
beiden Werkzeuge dpkg
und APT. debfoster
pflegt eine Liste mit den
Paketen, die Sie auf ihrem System behalten möchten und auf die Sie Wert
legen.
Mit Hilfe dieser Liste findet es Pakete, die automatisch installiert
wurden, nur weil andere Pakete davon abhängen. Falls diese
Abhängigkeiten nicht mehr bestehen – d.h. ein entsprechendes Paket wurde
entfernt – bekommt debfoster
das mit und fragt Sie, ob Sie das über
die Abhängigkeit benannte Paket ebenfalls mit entfernen möchten.
Zu Beginn erstellt debfoster
auf der Basis Ihrer Rückmeldung eine
Liste mit den derzeit installierten Paketen. Diese Liste speichert
debfoster
in der Datei /var/lib/debfoster/keepers
. Darin vermerkt
es, ob Sie das betreffende Paket behalten oder entfernen möchten. Zum
Schluss löscht es die Pakete, die in der Liste als „entfernen“
gekennzeichnet sind. Ein Aufruf zur Aktualisierung der Liste ist nach
jeder Änderung des Paketbestandes sinnvoll, d.h. einer Installation,
Löschung und Aktualisierung eines oder mehrerer Pakete.
Mit dem Kommando debfoster -qv
erstellen Sie eine initiale Liste. Bei
einem Folgeaufruf zeigt es Ihnen die Pakete, die die unerfüllte
Abhängigkeiten aufweisen plus möglicherweise nicht mehr benötigte
Pakete. debfoster
warnt bei unerfüllten Abhängigkeiten (warning),
wenn diese Pakete in der Liste der „zu behaltenden Pakete“ stehen.
Auflistung der unerfüllten Abhängigkeiten mit debfoster
.
# debfoster -qv warning: package gnome-session-fallback: unsatisfied dependency on notification-daemon 0.7 warning: package gnome-session-fallback: forcing depdency on notification-daemon warning: package timidity: unsatisfied dependency on libjack-jackd2-0 1.9.5~dfsg-14 warning: package libreoffice-filter-mobiledev: unsatisfied dependency on default-jre warning: package libreoffice-filter-mobiledev: unsatisfied dependency on gcj-jre warning: package libreoffice-filter-mobiledev: unsatisfied dependency on java-gcj-compat ... Paket wird behalten: gdm3 Paket wird behalten: krita Paket wird behalten: xfce4-goodies Paket wird behalten: libreoffice Paket wird behalten: bluetooth Paket wird behalten: asciidoc ... #
debfoster
verfügt über eine Reihe von weiteren Optionen. Nachfolgende
Liste ist eine Auswahl bzgl. der Thematik „Waisen“, ausführlicher ist
die Manpage zum Programm.
-q
(Langform --quiet
)
-f
(Langform --force
)
-v
(Langform --verbose
)
-d
(Langform --show-depends
)
-e
und vergleichbar mit dem Unterkommando
depends
des Programms apt-cache
(siehe
Abschnitt 8.19, „Paketabhängigkeiten anzeigen“).
Ausgabe aller Abhängigkeiten mittels debfoster
.
# debfoster -d vim Paket vim hängt ab von: gcc-4.7-base libacl1 libattr1 libc-bin libc6 libc6-i686 libgcc1 libgpm2 libselinux1 libtinfo5 multiarch-support vim-common vim-runtime #
-e
(Langform --show-dependents
)
-d
und vergleichbar mit dem Unterkommando
rdepends
des Programms apt-cache
(siehe
Abschnitt 8.19, „Paketabhängigkeiten anzeigen“).
Ausgabe aller umgekehrten Abhängigkeiten mit debfoster
.
# debfoster -e apt Die folgenden 9 Pakete auf der Aufbewahrungsliste verlassen sich auf apt: xara-gtk synaptic packagesearch gtkorphan debfoster asciidoc installation-report totem gdm3 Pakete bewahrt durch Standardregeln sich verlassen auf apt. #
-s
(Langform --show-orphans
)
-i
(Langform --ignore-default-rules
)
-a
(Langform --show-keepers
)
debfoster
-Datenbank
Ausgabe der Pakete, die sich debfoster
gemerkt hat.
# debfoster -a Die folgenden Pakete stehen auf der Aufbewahrungsliste: abiword acpi acpi-support anacron apache2-utils apcalc apmd app-install-data apt-doc apt-dpkg-ref apt-rdepends apvlv aqbanking-tools arora ascii asciidoc ash aspell-de at ... #
Das Programm deborphan
aus dem gleichnamigen Debian-Paket
[Debian-Paket-deborphan] findet ungenutzte Pakete, die keine weiteren
Abhängigkeiten zu anderen Paketen (siehe
Abschnitt 8.19, „Paketabhängigkeiten anzeigen“) aufweisen. Es gibt Ihnen eine Liste
aller gefundenen Pakete aus, die Sie entfernen sollten, aber nicht
müssen. Grundlage für die Liste sind die Paketabhängigkeiten, die
deborphan
über dpkg
und über die Angaben in der Paketbeschreibung
zur Verfügung stehen.
Rufen Sie deborphan
ohne Optionen auf, beschränkt es sich auf die
beiden Paketkategorien libs und oldlibs, um unbenutzte oder
veraltete Bibliotheken zu ermitteln. Das nachfolgende Beispiel zeigt
diesen Aufruf beispielhaft.
Ausgabe von deborphan
bei der Suche nach verwaisten Paketen.
$ deborphan mktemp liblwres40 libdvd0 libxapian15 libdb4.6 libdb4.5 libevent1 librrd4 libbind9-40 diff dhcp3-common $
deborphan
verfügt über eine ganze Reihe nützlicher Optionen. Daraus
zeigen wir die Optionen, die uns für die Thematik „Waisen“ relevant
erscheinen. Zu weiteren Optionen gibt Ihnen die Manpage des Programms
Auskunft.
-a
(Langform --all-packages
)
--libdevel
-z
(Langform --show-size
)
-P
(Langform --show-priority
)
-s
(Langform --show-section
)
--no-show-section
wieder abschalten.
Auflistung der verwaisten Bibliotheken inkl. Paketkategorie und Größe mittels deborphan
.
$ deborphan -P -z -s 20 main/oldlibs mktemp extra 132 main/libs liblwres40 standard 172 main/libs libdvd0 optional ... $
Für den obigen Aufruf existiert eine Kurzschreibweise, in der Sie
die Optionen in kompakter Form schreiben können. Der Aufruf deborphan
-Pzs
bewirkt das gleiche wie deborphan -P -z -s
.
deborphan
verfügt zudem über einen Ratemodus, um Pakete zu finden,
die für Sie nicht mehr nützlich sein könnten. Es analysiert dazu den
Paketnamen und die Paketbeschreibung. Die Basis bilden die Optionen
--guess-
und --no-guess-
, die Sie mit entsprechenden Suffixen
zur genaueren Eingrenzung kombinieren können. Dazu zählen bspw.
common
, data
, dev
, doc
und mono
, aber auch perl
, pike
,
python
und ruby
für die entsprechenden Programmiersprachen. Eine
ausführliche Auflistung ist in der Manpage dokumentiert.
deborphan
errät nicht mehr nützliche Pakete.
# deborphan --guess-perl | sort gqview libchromaprint0 libconsole libcrypt-rc4-perl libgraphics-magick-perl libimage-exiftool-perl libindicate-gtk3 libpdf-api2-perl librpcsecgss3 librrd4 libtext-pdf-perl ... #
Mit der Option --find-config
suchen Sie nach nicht installierten
Paketen, von denen noch Konfigurationsdateien auf dem System vorliegen.
Das impliziert die Option -a
und durchsucht die gesamte
Paketdatenbank. Das nachfolgende Beispiel sortiert zusätzlich die
Paketliste alphabetisch aufsteigend und gibt die Ausgabe seitenweise
über den Pager more
auf dem Terminal aus.
Aufspüren nicht mehr benötigter Konfigurationsdateien über die Option --find-config
.
$ deborphan --find-config | sort | more baobab bluez-utils dhcdbd dpatch dvipdfmx gnome-screenshot --More-- $
Für das Paket gnome-screenshot aus obiger Ergebnisliste ergibt eine
Suche über dpkg
die nachfolgende Ausgabe. Die Buchstaben rc
zu
Beginn der Zeile mit den Paketdetails zeigen, dass dieses Paket bereits
auf dem System installiert war und zwischenzeitlich wieder entfernt
wurde (Buchstabe r
für removed
in der ersten Spalte). Die
Konfigurationsdateien des Programms sind noch verfügbar (Buchstabe c
für configured
in der zweiten Spalte).
Aufspüren verbliebener Konfigurationsdateien mittels dpkg
.
$ dpkg -l gnome-screenshot Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten | Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/ Halb installiert/Trigger erWartet/Trigger anhängig |/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht) ||/ Name Version Beschreibung +++-===================-===================-================================== rc gnome-screenshot 2.30.0-2 screenshot application for GNOME $
Die ersten beiden Zeichen in der Zeile mit den Paketdetails haben eine besondere Bedeutung und geben den Status des Pakets an. Unter „Paketstatus erfragen“ in Abschnitt 8.4, „Paketstatus erfragen“ stellen wir Ihnen alle weiteren Varianten und deren Bedeutung vor.
Um die verbliebenen Konfigurationsdateien eines Pakets auch noch
zu entfernen, benutzen Sie üblicherweise das Kommando apt-get --purge
remove Paketname
. Für das oben genannte Paket gnome-screenshot heißt
der Aufruf apt-get --purge remove gnome-screenshot
. Weitere Details
dazu finden Sie unter Pakete deinstallieren in
Abschnitt 8.43, „Pakete deinstallieren“.
Eine zusätzliche Möglichkeit bietet die Kombination aus apt-get
und
deborphan
. Die Angabe $(deborphan)
bewirkt die Ausführung des
Kommandos deborphan
in einer Subshell und liefert als Rückgabewert
alle Pakete, die Waisen sind. Indem Sie das als Parameter an APT
übermitteln, sparen Sie einerseits Tipparbeit und können darüber hinaus
auf die Rückfragen von APT reagieren.
Kombinieren von APT und deborphan
.
# apt-get --purge remove $(deborphan) Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Die folgenden Pakete werden ENTFERNT: gqview* libchromaprint0* libconsole* libindicate-gtk3* librpcsecgss3* librrd4* linux-image-2.6-686* mktemp* pdfjam* qemulator* ttf-linux-libertine* virtualbox-ose* virtualbox-ose-dkms* virtualbox-ose-guest-source* virtualbox-ose-guest-utils* virtualbox-ose-source* 0 aktualisiert, 0 neu installiert, 16 zu entfernen und 8 nicht aktualisiert. Nach dieser Operation werden 2.517 kB Plattenplatz freigegeben. Möchten Sie fortfahren [J/n]? ... #
Wenden Sie das Nachfolgende nur an, wenn Sie wissen, was Sie tun, und sich
dessen sicher sind. Das Kommando entsorgt kompromisslos alle Waisen und deren
Konfigurationsdateien. Die Option -y
beantwortet alle Nachfragen
von apt-get
automatisch mit „ja“:
Komplexer Aufruf von deborphan
.
# deborphan | xargs apt-get --purge remove -y
orphaner
und editkeep
sind beides Benutzeroberflächen für
deborphan
(siehe Abschnitt 8.44.3, „deborphan“) und Bestandteil des gleichnamigen
Pakets [Debian-Paket-deborphan]. Ersteres findet und entfernt
verwaiste Pakete, das Zweite hilft Ihnen bei der Pflege und
Zusammenstellung der Liste der Pakete, die nie von deborphan
entfernt werden.
orphaner
und editkeep
sind beides Shellskripte und rufen nach der
Auswahl direkt apt-get
bzw. deborphan
mit den passenden Optionen
auf. Diese beiden Programme verfügen über ein recht ähnliches
Ncurses-Interface. Dargestellt werden zwei Spalten – links der Paketname
und rechts der der Distributionsbereich (siehe
Abschnitt 2.9, „Distributionsbereiche“) und die Kategorie (siehe
Abschnitt 2.8, „Sortierung der Pakete nach Verwendungszweck“), in die das Paket
eingeordnet ist. Über die Buchstabentasten bewegen Sie den Auswahlbalken
zum entsprechenden Menüpunkt. Mit der Leertaste ergänzen bzw. entfernen
Sie das betreffende Paket von der Auswahl. Mit der Eingabetaste legt das
Programm los.
gtkorphan
[Gtkorphan] ist ein graphisches Programm auf der Basis von
GTK, welches deborphan
(siehe Abschnitt 8.44.3, „deborphan“) direkt ansteuert. Die
Ausgaben stammen daher direkt von deborphan
und somit aus der
Paketbeschreibung.
In der Mitte sehen Sie die Paketliste, wobei Sie über den Reiter zwischen der Darstellung für die verwaisten und nicht verwaisten Pakete umschalten können. Für jeden Eintrag ist der Paketname (siehe Abschnitt 2.11, „Benennung einer Paketdatei“), die Paketgröße, der Distributionsbereich (siehe Abschnitt 2.9, „Distributionsbereiche“), die Paketkategorie (siehe Abschnitt 2.8, „Sortierung der Pakete nach Verwendungszweck“) sowie die Paketpriorität (siehe Abschnitt 2.13, „Paket-Priorität und essentielle Pakete“) aufgeführt.
Als zusätzliche Optionen ergänzen Sie die Liste einerseits um bereits gelöschte Pakete, von denen aber noch Konfigurationsdateien vorhanden sind, und andererseits um Pakete aus allen anderen Paketkategorien (siehe Abschnitt 2.8, „Sortierung der Pakete nach Verwendungszweck“). Um den bereits weiter oben angesprochenen Ratemodus zu verwenden, wählen Sie im Auswahlfeld den gewünschten Eintrag aus der Liste der Möglichkeiten aus. Mit einem Klick auf werden alle Waisen von ihrem System entfernt, die Sie zuvor aus der Paketliste ausgewählt haben.
Ähnlich wie die nicht mehr verfügbare aptsh
verfügt wajig
[Debian-Paket-wajig] über
Kommandos zur Suche nach Waisen – orphans
und list-orphans
. Beide
liefern Ihnen das gleiche Ergebnis. Möglich ist ein Aufruf mittels
wajig orphans
oder die Eingabe des Kommandos in der wajig
-Shell.
Damit listet es die Bibliotheken auf, die nicht (mehr) von einem
installierten Paket benötigt werden. Andere Pakete werden bei der
Recherche nicht berücksichtigt.
Die Analyse basiert auf dem Werkzeug deborphan
(siehe Abschnitt 8.44.3, „deborphan“).
Daher muss das entsprechende Paket installiert sein, wenn Sie dieses
Kommando verwenden möchten. Abbildung 8.37, „wajig
mit der Ausgabe des Kommandos orphans
“ zeigt das Ergebnis der
Suche nach Waisen in der wajig
-Shell.
Für rpm-Pakete gibt es ein Gegenstück zu deborphan
namens rpmorphan
[rpmorphan-rpm]. Dieses ist nicht Bestandteil des Debianpakets rpm
[Debian-Paket-rpm] und steht bislang nicht als eigenes Debianpaket zur
Verfügung.