7.3. Paketcache aufräumen

7.3.1. Weshalb aufräumen?

Während APT Softwarepakete von der hinterlegten Paketquelle bezieht — in der Regel von einem Paketmirror — behält APT die Pakete im Verzeichnis /var/cache/apt/archives/partial. Ist der Download abgeschlossen, werden diese in das Verzeichnis /var/cache/apt/archives verschoben, anschließend ausgepackt und installiert.

Die bezogenen Pakete verbleiben im Cache. Werden die Pakete zu einem späteren Zeitpunkt nochmals benötigt und die Paketversion ist (noch) identisch, schaut APT zuerst im Paketcache nach und entnimmt diese von dort, bevor es die Pakete erneut von der Quelle bezieht. Das geht meist schneller, als diese erneut herunterzuladen.

Nachteil ist, dass diese Pakete Speicherplatz auf dem Datenträger ihres Debian-Systems belegen. Wird es damit knapp, raten wir Ihnen daher, diesen Speicherplatz regelmäßig aufzuräumen. Mittlerweile ist die Bezugszeit der Pakete über das Internet vielfach so gering, dass sich ein längerfristiges Vorhalten im Paketcache eigentlich erübrigt. Es ist in diesem Fall Abwägungssache und hängt davon ab, wie häufig Sie Pakete entfernen und später wieder einspielen.

Den Paketcache finden Sie im Verzeichnis /var. Je nach Partitionierung ihres Datenträgers ist der Bereich nicht separat und möglicherweise Bestandteil der /-Partition. Ist diese vollständig mit Daten gefüllt, funktioniert vieles auf ihrem Linuxsystem nicht mehr.

Bei ausgefeilteren Installationen bestehen häufig separate Partitionen für /var oder /var/cache. Läuft einer dieser Bereiche voll, können im einfachsten Fall keine weiteren Pakete zwischengespeichert und auch nicht temporär entpackt werden. Falls der Bereich /var vollständig belegt ist, können auch keine Logdateien mehr angelegt oder weitere Informationen daran angehängt werden.

Einen Ausweg aus diesem Dilemma gelingt Ihnen mit dem Anlegen einer separaten Partition für /var/cache/apt/archives. Wie Sie diese einrichten und mit welchen Vor- und Nachteilen dieser Schritt verbunden ist, zeigen wir Ihnen unter „Cache-Verzeichnis auf separater Partition“ in Kapitel 29, Cache-Verzeichnis auf separater Partition.

7.3.2. Paketverwaltung passend konfigurieren

Die Programme dpkg, apt-get, aptitude und Synaptic räumen den Paketcache in der Standardeinstellung nicht eigenständig auf und belassen die Pakete nach der Installation oder Aktualisierung im Paketcache. Ob überhaupt, wann und insbesondere wie aufgeräumt wird, entscheiden Sie als Systembetreuer selbst und müssen dazu das von ihnen verwendete Werkzeug entsprechend konfigurieren.

Aus unserer Sicht sind die einzelnen Werkzeuge in Debian GNU/Linux wie folgt konfiguriert:

bei dpkg
Es belässt sowohl die .deb-Datei im Verzeichnis, als rührt auch den Paketcache nicht an.
bei apt-get
Die Pakete verbleiben im Paketcache und werden nicht daraus entfernt.
bei aptitude

Die Pakete verbleiben im Paketcache und werden nicht daraus entfernt. Dieses Verhalten steuern Sie über den Eintrag aptitude::AutoClean-After-Update in der Konfigurationsdatei ~/.aptitude/config. Der Default-Wert ist false, d.h. das Paket verbleibt im Paketcache. Mit der Angabe true aktivieren Sie das Aufräumen. Alternativ setzen Sie die Option über den Menüpunkt „Einstellungen“ aus dem Menü „Optionen“ (siehe Abbildung 7.1, „Alte Pakete aus dem Paketcache mittels Aptitude entfernen“):

Abbildung 7.1. Alte Pakete aus dem Paketcache mittels Aptitude entfernen

werkzeuge/paketcache/aptitude-alte-pakete-entfernen.png

bei apt
Laden Sie ein oder mehrere Pakete mittels apt install oder apt upgrade herunter und installieren diese erfolgreich, entfernt apt diese Pakete danach aus dem Paketcache. Dieses Verhalten wird über den Eintrag Clean-Installed in apt.conf gesteuert, der Default-Wert dafür ist on und steht für das Aufräumen.

7.3.3. Kommandos zum Aufräumen

Grundsätzlich gibt es mehrere, unterschiedlich radikale Ansätze zum Aufräumen des Paketcaches. Die Variante eins umfasst das Löschen von Paketen aus dem Cache, die in keinem der verwendeten APT-Repositories mehr verfügbar sind. Die beiden Aufrufe apt-get autoclean und aptitude autoclean implementieren diesen Ansatz. Bei Synaptic nutzen Sie dazu den Menüpunkt EinstellungenDateien und selektieren im Dialogfenster den Eintrag „Nur Pakete löschen, die nicht länger verfügbar sind“ (siehe Abbildung 7.2, „Großreinemachen mit Hilfe von Synaptic“). In der Standardeinstellung erleichtern diese Kommandos den Cache auch um Pakete, die Sie in der vorliegenden Version nicht mehr vom Spiegelserver beziehen können, die aber noch auf ihrem Linuxsystem installiert sind.

Um hingegen lediglich die Pakete aus dem Cache zu löschen, die auch nicht, oder nicht mehr installiert sind, hilft Ihnen die Konfigurationsoption APT::Clean-Installed=off in der Konfiguration von APT. Alternativ teilen Sie das apt-get mit diesem Aufruf explizit mit:

Aufruf von apt-get mit ausdrücklicher Konfiguration. 

# apt-get -o APT::Clean-Installed=off autoclean
...
#

Allerdings besteht keine Möglichkeit mehr, diese Pakete mittels APT zu einem späteren Zeitpunkt wieder zu installieren, da sie ja in keiner Paketliste mehr vorkommen. Benötigen Sie eines der Pakete später doch wieder, hilft Ihnen nur der Rückgriff auf dpkg in Kombination mit dem dazugehörigen deb-Paket weiter. Dazu benutzen Sie den Aufruf dpkg -i Paketname. Paketname bezeichnet den Namen und Pfad der lokalen Datei für das benötigte deb-Paket (siehe Abschnitt 8.37, „Pakete installieren“).

Variante zwei umfasst das Löschen sämtlicher Pakete aus dem Paketcache — damit schaffen Sie radikal Platz. Die passenden Kommandos dazu lauten apt-get clean und aptitude clean. Übrig bleiben danach nur die beiden Verzeichniseinträge für die Sperrdatei lock und das Unterverzeichnis partial, in dem die Fragmente für Pakete landen, die nur teilweise bezogen wurden.

Aufräumen mittels apt-get clean

# apt-get clean
# ls /var/cache/apt/archives/
lock  partial
#

Bei Synaptic bildet zunächst der Eintrag EinstellungenDateien den Ausgangspunkt. Über den Knopf „Alle Paketdateien im Zwischenspeicher löschen“ lösen Sie die Aufräumaktion aus (siehe Abbildung 7.2, „Großreinemachen mit Hilfe von Synaptic“).

Abbildung 7.2. Großreinemachen mit Hilfe von Synaptic

werkzeuge/paketcache/synaptic-paketcache-leeren.png

Selbstverständlich können Sie auch als Administrator agieren und dabei gezielt nur ausgewählte oder auch alle vorliegenden deb-Dateien manuell aus dem Verzeichnis /var/cache/apt/archives/ mittels rm Paketdatei löschen. Gerade bei den Paketen, die Daten für Spiele beinhalten — z.B. 0ad-data mit ca. 530 MB Paketdateigröße — , reicht es oft aus, diese einzelnen Dateien aus dem Paketcache zu entfernen, um dort wieder ausreichend Platz zu haben.

Alle derzeit von Debian unterstützten Versionen von APT klagen nicht, wenn Sie das gesamte Verzeichnis /var/cache/apt/archives/partial/ klammheimlich hinter dem Rücken der beiden Programme einfach komplett entsorgen. APT und aptitude legen es bei einem späteren Bedarf einfach von selbst wieder an. Anders sieht es hingegen bei älteren Veröffentlichungen wie z.B. Debian 4.0 Etch oder Debian 5.0 Lenny, Ubuntu 10.04 LTS Lucid Lynx sowie Debian-Derivaten aus der Zeit vor Mitte 2010 aus. Beachten Sie bitte, dass APT vor Version 0.8 beim Löschen eines der beiden Verzeichnisse /var/cache/apt/archives/partial/ oder /var/lib/apt/lists/partial/ dann einfach den Dienst verweigert. Sie beheben das Problem flink, indem Sie die genannten Verzeichnisse manuell wieder anlegen. Haben Sie /var/cache/ als tmpfs-Dateisystem eingehängt (siehe Kapitel 29, Cache-Verzeichnis auf separater Partition), so können Sie mit dem Aufruf mkdir -p /var/cache/apt/archives/partial als Eintrag in der Datei /etc/rc.local dauerhaft Abhilfe schaffen.

7.3.4. Empfehlungen zum Zeitpunkt des Aufräumens

Wann Sie am besten aufräumen, hängt etwas von der Nutzung und dem verfügbaren Plattenplatz ab. In den meisten Fällen ist nach dem Installieren und Aktualisieren der Pakete ein guter Zeitpunkt. aptitude bietet dies sogar über die Option Aptitude::Autoclean-After-Update an (siehe unten).

Ist jedoch der Plattenplatz recht knapp, so kann auch es auch helfen, den Cache bereits vor dem Installieren und Aktualisieren aufzuräumen. Das ist insbesondere dann sinnvoll, wenn Sie dies selbst nicht regelmäßig machen und diese Aktion stattdessen per Cron-Job oder über die Konfiguration der Paketverwaltung ausführen lassen. Es macht jedoch keinen Sinn, wenn Sie beispielsweise gleichzeitig die APT-Option APT::Periodic::Download-Upgradeable-Packages eingeschaltet haben und damit nachts automatisch alle aktualisierbaren Pakete herunterladen lassen. Leeren Sie den Paketcache danach mit apt-get clean komplett, hat das zur Folge, dass die frisch bezogenen Pakete wieder gelöscht werden und ein nachfolgendes apt-get upgrade diese erneut herunterladen muss.

7.3.5. Automatisch und regelmäßig Aufräumen

Das manuelle Aufrufen der o.g. Kommandos kostet Zeit. Daher bieten APT und aptitude unterschiedliche Möglichkeiten, um diese Vorgänge zu automatisieren.

Das Paket apt bringt mit dem Skript /etc/cron.daily/apt einen Cron-Job mit, der diverse Aufgaben einmal pro Tag ausführen kann. Konfiguriert wird das Skript ebenfalls über die Datei /etc/apt/apt.conf. Den Paketcache betreffen die beiden Einstellungen APT::Periodic::Download-Upgradeable-Packages und APT::Periodic::AutocleanInterval.

Einstellung APT::Periodic::Download-Upgradeable-Packages
Damit legen Sie die Regelmäßigkeit der Aktualisierung fest. Setzen Sie den Wert auf 1, so füllt der Cron-Job den Paketcache einmal pro Tag, falls Paketaktualisierungen verfügbar sind. Setzen Sie den Wert hingegen auf 7, so lädt er verfügbare Paketaktualisierungen nur einmal die Woche herunter. Der Wert 0 (Null) ist die Standardeinstellung und deaktiviert die Funktionalität vollständig.
Einstellung APT::Periodic::AutocleanInterval
Damit regeln Sie die Häufigkeit, mit der das Kommando apt-get autoclean ausgeführt wird. Auch hier steht der Wert für den Abstand in Tagen zwischen zwei Ausführungen. Der Wert 0 (Null) schaltet das nächtliche Aufräumen ganz ab und ist auch die Standardvorgabe.

Die Dokumentation zu diesem Skript finden Sie in den Kommentarzeilen am Anfang der Datei /etc/cron.daily/apt. Dort finden sich noch weitere und feinere Einstellmöglichkeiten zum automatischen Aufräumen des Paketcaches, z.B. anhand des Alters der Pakete.

aptitude dagegen bietet eine Zeitsteuerung über Schalter und Optionen an. Damit erfolgt das Aufräumen via autoclean oder clean vor oder nach der Installation von Paketen automatisch:

Schalter --clean-on-startup
entspricht dem Aufruf aptitude clean
Schalter --autoclean-on-startup
entspricht dem Aufruf aptitude autoclean

Ähnliches ermöglicht Ihnen aptitude auch über die Text-Modus-Bedienoberfläche. Setzen Sie in den Einstellungen unter „Veraltete Paketdateien nach dem Laden von neuen Paketlisten löschen“ ein Häkchen, entspricht das der Konfigurationsoption Aptitude::AutoClean-After-Update. Damit löscht Aptitude nach jeder Aktualisierung der Paketlisten (durch aptitude) alle Paketdateien aus dem Paketcache, die nicht mehr von einem in /etc/apt/sources.list aufgeführten Paketmirror heruntergeladen werden können.