Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Pakete einspielen. Dabei kommt es zu<br />
wiederholten Paketkonflikten, die Apt<br />
unter anderem löst, indem es zahlreiche<br />
veraltete Pakete löscht.<br />
Aufbau des Cache<br />
Intern führt Apt ein Verzeichnis mit den<br />
aktuellen Paketinformationen (Abbildung<br />
1). Dazu liest es alle Indexdateien der aktivierten<br />
Paketquellen aus dem Verzeichnis<br />
»/var/lib/apt/lists/« und bildet diese<br />
in einer internen Struktur ab. Zusätzlich<br />
verinnerlicht Apt die Statusinformationen<br />
der lokal installierten Pakete über die<br />
Datei »/var/lib/dpkg/status«.<br />
Diese Daten speichert es dann per Memory<br />
Mapping (MMap) in »/var/cache/<br />
apt/pkgcache.bin«. Ändern sich die Paketinformationen<br />
nicht, nutzt das System<br />
diesen MMap-Cache, was wiederholte Zugriffe<br />
beschleunigt. Danach erzeugt Apt<br />
dynamisch einen Dependency-Cache, der<br />
Informationen über Abhängigkeiten der<br />
Pakete untereinander enthält.<br />
Apt kennt Paketgruppen, Pakete und<br />
Versionen. Da moderne x86-Prozessoren<br />
sowohl 32- als auch 64-Bit-Programme<br />
ausführen, kann eine Paketgruppe Pakete<br />
für verschiedene Architekturen enthalten.<br />
Das einzelne Paket ist dagegen einer<br />
Architektur zugeordnet, kann aber in<br />
mehreren Versionen vorliegen.<br />
Apt nutzt eine konfigurierbare Policy, um<br />
die Candidate-Version zu finden, wobei<br />
die neueste Version in der Regel auch<br />
der gesuchte Kandidat ist. Zugleich liest<br />
Apt aus dem »dpkg‐status«, welche Paketversion<br />
auf einem Rechner installiert<br />
ist, und stellt diese Information im Cache<br />
zur Verfügung.<br />
Graduelle Abhängigkeiten<br />
Um Beziehungen zwischen Paketen zu<br />
definieren, nutzt Debians Paketmanagement<br />
ein feingliedriges System (siehe<br />
Kasten „Abhängigkeiten im Detail“)<br />
von Attributen wie Depends, Recommends,<br />
Suggests und Enhances, Konflikte<br />
definiert das System über Conflicts oder<br />
Breaks. Diese Attribute legen für ein Paket<br />
dessen Abhängigkeiten fest.<br />
Das Depends-Attribut signalisiert eine<br />
starke Abhängigkeit: Die dort genannten<br />
Pakete müssen zwingend installiert<br />
sein, damit ein Paket funktioniert. Das<br />
Recommends-Attribut stellt eine schwächere<br />
Form der Abhängigkeit dar. Hier<br />
funktioniert ein Paket auch dann, wenn<br />
die Abhängigkeit nicht installiert ist,<br />
aber eventuell fehlt es dann an wichtiger<br />
Funktionalität. Apt installiert Recommends-Empfehlungen<br />
immer mit, über<br />
die Option »‐‐no‐install‐recommends«<br />
lässt sich diese Option jedoch manuell<br />
abschalten.<br />
Wer nachschauen will, welche Recommends<br />
derzeit nicht installiert sind, verwendet<br />
den Befehl<br />
sudo apt‐get install ‐‐fix‐policy<br />
Suggests unterliegen einer sehr schwachen<br />
Form von Abhängigkeit. Der Admin<br />
MMap<br />
Apt<br />
»/var/cache/apt/pkgcache.bin«<br />
»/var/lib/dpkg/status«<br />
index<br />
index<br />
index<br />
index<br />
Dependency-Cache<br />
»/var/lib/apt/lists«<br />
Abbildung 1: Apt verschafft sich mit Hilfe verschiedener Indexdateien einen Überblick der vorhandenen<br />
Pakete und ihrer Abhängigkeiten untereinander und erzeugt daraus den Dependency-Cache.