26.02.2014 Aufrufe

Linux-Magazin Clean Linux (Vorschau)

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!