Block > Systembereinigung
6 min (1230 Wörter, 7170 Zeichen)
Inhaltsverzeichnis
Hinweis
Dieser Eintrag ist älter als 3 Jahre und entspricht vermutlich nicht mehr dem neuesten Stand der Technik/Realität.
Da bei mir gerade Hausputz angesagt ist, wollte ich auch digital mal mein System entruempeln, denn da hat sich ueber die Jahre maechtig viel Kram angesammelt …
Info
Das Alter der aktuellen Distribution kann ueber folgenden Befehl herausgefunden werden:
$ ls -ld /lost+found
drwx------ 2 root root 16384 May 24 2011 /lost+found/
Hier stelle ich ein paar Loesungen vor, das digitale /home
(und auch
den Rest der Festplatte) zu entschlacken.
Generell #
Da wir gerade am aufraeumen sind, koennen ja auch mal die ganzen toten Links geloescht werden, die sich so ueber die Jahre angesammelt haben. Das geht ganz einfach mit (Quelle ):
sudo find / -type l -! -exec test -e {} \; -print
Diese Liste kann dann nach und nach durchgegangen werden und die Links alle einzeln geloescht werden oder direkt so (aber erst kontrollieren!):
sudo find / -type l -! -exec test -e {} \; -delete
Es gibt auch spezielle Programme, die uns die Aufraeumarbeit etwas
erleichtern koennen. BleachBit (aehnlich zum Programm CCleaner unter
Windows) raeumt dabei z.B. die Caches verschiedener Browser auf,
beseitigt (mit u.U. etwas laengerer Wartezeit) alle .DS_Store
- und
Thumbs.db
-Dateien von OS X bzw. Windows oder loescht alle nicht
benoetigten Lokalisierungen (= Sprachdateien).
Installiert werden kann es mit folgendem Befehl:
sudo pacman -S bleachbit
Da es mit normalen Rechten nicht Systemdateien wie z.B. die
Lokalisierungen loeschen kann und es umgekehrt mit Root-Rechten nicht
die Caches der $USER
-Browser leeren kann, muss es zweimal ausgefuehrt
werden, einmal mit und einmal ohne Root-Rechte, um wirklich alles zu
loeschen.
Pakete #
Ein weiterer Sammelplatz fuer viel Kram sind die Pakete, die via Paketverwaltung installiert wurden. Noch schlimmer wird es nur durch Pakete im AUR oder selbst kompilierte Pakete.
Da ja nach “Don’t try this at home”-Manier nie alle Paketdateien
geloescht werden sollten, da ja unter Umstaenden ein Downgrade
durchgefuehrt werden muss, hilft nur eine teilweise Bereinigung der
alten Paketdaten.
Dafuer gibt es mit paccache
ein eigenes Programm, das mit pacman
daherkommt (Quelle ).
Um maximal drei Versionen eines Paketes aufzubewahren, reicht
folgender Befehl:
paccache -r
Dabei werden aber auch Versionen schon nicht mehr installierter
Pakete beibehalten, die aber eigentlich nicht mehr benoetigt werden.
Die koennen so direkt geloescht werden:
paccache -ruk0
Paccache hat noch ein paar mehr Optionen, die sich per paccache -h
anzeigen lassen.
Auch noch ab und zu sinnvoll ist das optimieren der
Paketverwaltungsdatenbank. Diese besteht naemlich aus vielen kleinen
Dateien, die ueber die ganze Festplatte verstreut liegen. Der folgende
Befehl sammelt diese ein und platziert sie so um, dass sie alle nah
beinander auf der Festplatte liegen, damit der Lese-Schreibkopf sich
nicht so viel bewegen muss (Quellen: Arch Linux Wiki und
pacman-optimize -h
):
sudo pacman-optimize && sync
Ueber die Jahre sammeln sich auch generell viele “Orphans” an, also Pakete, um die sich niemand seit dem letzten Update gekuemmert hat. Diese koennnen wie folgt aufgelistet werden (Quelle ):
pacman -Qtdq
Achtung
Sollen diese Orphans direkt alle auf einmal geloescht werden, reicht dieser Befehl aus:
sudo pacman -Rns $(pacman -Qtdq)
Um mal die Liste der explizit installierten Pakete aus den offiziellen Paketquellen (Repositories ) zu entschlacken, kann folgender Befehl verwendet werden (Quelle ):
pacman -Qen
Und folgender Befehl schliesslich listet alle explizit installierten Pakete aus den inoffiziellen Paketquellen auf:
pacman -Qem
$HOME/.* #
Sofern nicht von Anfang an die XDG Spezifikation umgesetzt wurde, hat sich
das $HOME
mit all den versteckten Dateien in ein wahres Schlachtfeld
verwandelt, denn natuerlich will jedes Programm mitmachen und legt die
Konfigurationsdateien schoen brav direkt ins $HOME
ab und raeumt diese
auch nicht weg, wenn es deinstalliert wird.
Um XDG zu “aktivieren”, d.h. einige Umgebungsvariablen zu definieren,
reicht es, in der Shell-Konfigurationsdatei (z.B. .bashrc
oder
.zshrc
) folgende Zeilen hinzuzufuegen:
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_CACHE_HOME="$HOME/.cache"
Danach reicht ein simples source ~/.bashrc
bzw. source ~/.zshrc
um
die Variablen zu setzen (oder einfach eine neue Shell aufmachen).
Ich habe leider nicht vor dem Aufraeumen gezaehlt, aber es waren bestimmt ueber 150 versteckte Dateien und Ordner bei mir im Home. Nun sind es nach einigem Aufraeumen 88:
ls -d .* | wc -l
Hier hilft leider kein Programm, zumindest habe ich kein brauchbares
gefunden.
Letztendlich bin ich alle Dateien nach und nach nach folgendem Prinzip
durchgegangen:
-
Ist das Programm ueberhaupt noch installiert? Dazu habe ich einfach die Paketdatenbank gefragt (
$NAME
sollte sich von der Datei ableiten, also z.B. heisst die Datei.tmux.conf
, dann sollte das Paket und damit$NAME
tmux
sein):pacman -Qs $NAME
Wenn der Befehl nichts findet, ist das Programm unter Umstaenden nicht installiert, und die Datei kann geloescht werden. Vorsichtshalber habe ich die Datei zuerst in einen Ordner
TRASH
verschoben, den ich nach einiger Benutzungszeit loesche. -
Kann die Datei auch nach dem XDG-Prinzip wo anders abgelegt werden? Da half nur die jeweilige Hilfe bzw. Manpage oder eine Suchmaschine mit “XDG $NAME” weiter.
Dabei gab es folgende Moeglichkeiten:-
Entweder liess sich dann eine Umgebungsvariable setzen, die ich in der Konfigurationsdatei meiner Shell (
zsh
) gesetzt habe:export ACKRC="$XDG_CONFIG_HOME/ack/ackrc"
-
Oder das Programm erwartet von sich aus die Konfigurationsdateien nach dem XDG-Schema, dann konnte die Datei einfach in den jeweilgen Ordner verschoben werden:
mkdir $XDG_CONFIG_HOME/git && mv ~/.gitk $XDG_CONFIG_HOME/git/gitk
-
Oder es sind zwar einige Hacks noetig, aber es geht. Spezielle Kandidaten sind z.B.
vim
(Anleitung ) undzsh
(Anleitung ).
Wenn dieviminfo
nicht direkt in den Cache wandert, hilft vielleicht diese Loesung .
Die ZSH hat nun bei mir immer noch eine Datei im$HOME
, naemlich.zshrc
. Denn dort werden ja die ganzen XDG-Pfade erst definiert. Ansonsten fuehrt das zur Configception oder so 😉 Der Pfad zur.zshrc
kann auch in/etc/profile
festgelegt werden (Quelle ), ich hab mich aber damit nun abgefunden. -
Oder aber das Programm unterstuetzte weder Umgebungsvariablen noch XDG. In diesem Falle gibt es zwei Moeglichkeiten: den Quellcode via ABS runterladen, aendern und kompilieren oder (von mir bevorzugt) aufgeben.
Eine gute Anlaufstelle hierbei ist das Debian Wiki .
-
-
Wird das Programm ueberhaupt noch benoetigt? Bei meiner Reise durch die ganzen Konfigurationsdateien bin ich immer wieder auf Programme gestossen, die ich seit Jahren (ok, Monaten) nicht benutzt habe bzw. einfach nicht benoetige.
Da macht es dann schon Sinn, diese einfach zu deinstallieren:sudo pacman -Rns $NAME
Es macht uebrigens Sinn, nicht nur
-R
zu verwenden, um ein Paket zu entfernen, denn-n
sorgt dafuer, dass auch die Konfigurationsdateien geloescht werden und-s
, dass keine “Orphans” zurueckbleiben (also die nicht benoetigten und nicht selbst installierten Abhaengigkeiten). Fuer mehr Infos: sieheman pacman
.Danach kann die Datei bzw. der Ordner geloescht werden.
In Zukunft gilt es nun, direkt bei der Installation eines neuen Programms die Moeglichkeit zu ueberpruefen, XDG zu nutzen.
Wahrscheinlich ist aber der Beste Ansatz, von neu anzufangen. Also:
sudo mv /home/NAME /home/NAME.bak && sudo mkdir /home/NAME
Und dann die wichtigen Dateien rueberkopieren, also zumindest mal angefangen mit den Shell-Konfigurationsdateien.
Altes und alles andere #
Christian hat einen guten Beitrag zur Entruempelung geschrieben, in
dem er mit einem kleinen Skript mit find
, grep
und gawk
Dateileichen findet, um sie dann durchzusehen und ggf. zu loeschen.
Dieses Skript hat auch mir schon geholfen 😊
Ein anderer Weg ist, mit einem Programm die Speicherbelegung der
Ordner im $HOME
anzuzeigen, um dann die groessten Dateien zu
entfernen.
Ein solches Programm ist z.B. ncdu , welches wie folgt installiert
werden kann:
sudo pacman -S ncdu
Nach der Aufraeumaktion gilt es, von nun an moeglichst die Vermuellung
zu vermeiden.
Wie das gehen koennte, hat Vain in einem Artikel beschrieben (auch
die Kommentare beachten).
Viel Spass beim entruempeln 😊