Linux Hausputz
Säuberung eines Debian-System nach Release-Upgrades

vom 28.8.2021

 

Anders als manch andere Betriebssysteme muss ein Debian-System bei Erscheinen einer neuen Version nicht neu installiert werden, sondern kann mit Apt einfach auf die neue Version aktualisiert werden. Dabei bleiben jedoch meist einige Paketleichen zurück, so dass ein nachträgliches CleanUp nicht schadet.

Nach mehreren Release Upgrades ist das System ansonsten vollgemüllt mit unnötigen Paketen, Konfigurationsdateien und Scripten, die womöglich noch vom vorvorletzten Release stammen.

Man kann sein System aber in drei Schritten säubern:

1. Deborphan:

Der Befehl deborphan gibt eine Liste der nicht mehr benötigte Bibliotheken aus. Man kann sie händisch löschen oder, wenn man der Standardausgabe von deborphan traut, auch automatisch (als root oder hier mittels sudo):

sudo aptitude --purge-unused purge $(deborphan)

Interessant ist auch die Ausgabe von:

deborphan -a

Dies liefert eine Liste aller Pakete, die manuell installiert wurden, aber nicht für den Betrieb des Grundsystems notwendig sind. Diese Liste kann man manuell durchgehen und all die Programm-Pakete entfernen, von denen man sicher sagen kann, dass man sie nicht (mehr) benötigt.

2. Nicht mehr benötigte Konfigurationsdateien:

Löscht man ein Paket manuell oder wird es von Apt automatisch gelöscht, bleiben seine Konfigurationsdateien in der Regel erhalten - was ja auch sinnvoll ist: Hat man doch vielleicht in die Konfiguration des einen oder anderen Pakets viel Arbeit gesteckt, die sonst verloren ginge.

Wie viele und welche entfernte Pakete es gibt, von denen noch Konfigurationsdateien und Datendateien installiert sind, zeigt:

dpkg -l | awk '/^r/ {print $2}'

Wenn man sie alle loswerden will, geht das mit:

sudo aptitude --purge-unused purge $(dpkg -l | awk '/^r/ {print $2}')

Will man Konfigurationen für einige Pakete erhalten, muss man

3. Pakete, die nicht zum aktuellen Release gehören:

Diese ermittelt man mit:

apt-show-versions | grep -v <release> | grep -v 'not installed'

wobei release hier stable oder testing sein kann oder der entsprechende Toy-Story-Codename für das aktuelle Release, wie Bullseye oder Bookworm, je nachdem, was in der Datei /etc/sources.list als Paketquelle angegeben ist.

Gibt es da Pakete, die man löschen will? Wenn ja, kann man sie mit apt entfernen und danach nochmal ein deborphan (s.o.) durchführen.

Tipp: Findet man viele Pakete, die man deinstallieren will, macht es Sinn, den Prozess mit ein wenig awk-Magie zu vereinfachen:
Zuerst die mit obigem Befehl gefundenen Pakete als ein Paketname pro Zeile in eine Datei (hier: notinRepos.txt) schreiben:

apt-show-versions | grep -v <release> | grep -v 'not installed' | awk '{print $1}' > notinRepos.txt

Dann diese Datei bearbeiten, alle Zeilen mit den Paketen löschen, die man behalten will. Und schließlich die Liste der verbleibenden (zu löschenden) Pakete mit Hilfe von awk in eine Zeile schreiben lassen, so dass sie direkt von aptitude verarbeitet werden können:

sudo aptitude --purge-unused purge $(cat notinRepos.txt | awk '{printf "%s ", $1}')

Nun willkommen bei Familie Linux-Saubermann!

 

⇐ zurück zur Tipps & Tricks Übersicht

 


site info

© 2007-2022 Klaus-M. Klingsporn | Erstellt mit webgen | Seite zuletzt geändert: 28.8.2021 | Impressum