Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Titelthema<br />
www.linux-magazin.de Apt intern 09/2013<br />
30<br />
Systeme aktualisieren mit Apt<br />
Gruppenreise<br />
Wer auf Debian- und Ubuntu-Rechnern ein Upgrade anschiebt, setzt im Hintergrund eine Reihe unsichtbarer<br />
Mechanismen in Gang, die sich gegenseitig bedingen und die Apt-Spezialist und -Maintainer Michael Vogt in<br />
diesem Artikel im Detail erklärt. Michael Vogt<br />
© dhoch kr, photocase.com<br />
Apt ist nicht irgendein Werkzeug zur<br />
Softwareverwaltung, sondern schlicht<br />
das Standardwerkzeug zur Paketverwaltung<br />
auf Debian-basierten Systemen wie<br />
Ubuntu, Mint und Debian selbst. Mit<br />
»apt‐rpm« existiert zudem eine RPM-Portierung.<br />
Apt entstand 1998, eine Gruppe<br />
von Debian- und Ubuntu-Programmierern<br />
entwickelt es seitdem kontinuierlich<br />
weiter. Eine seiner zentralen Aufgaben<br />
besteht im Installieren und Aktualisieren<br />
von Software.<br />
Architektonisches<br />
Apt arbeitet mit dem Low-Level-Tool<br />
»dpkg« zusammen. Apt ruft es auf, um<br />
lokale ».deb«-Pakete auf dem Dateisystem<br />
zu installieren oder zu löschen. Außerdem<br />
überprüft »dpkg«, ob Dateipfade kollidieren<br />
und ob es jede Datei einem Paket<br />
zuordnen kann. Daneben ruft es vor oder<br />
nach einem Lösch- oder Installationsprozess<br />
die so genannten Maintainer-Skripte<br />
Preinst, Postinst, Prerm und Postrm auf<br />
und kümmert sich um das Verarbeiten<br />
von Triggern, die in bestimmten Installationsfällen<br />
Aktionen auslösen, beispielsweise<br />
die Manpage aktualisieren.<br />
Apt selbst behält hingegen die größeren<br />
Zusammenhänge im Auge. Es gruppiert<br />
Pakete in Repositories und stellt sicher,<br />
dass diese sich darin authentifizieren lassen.<br />
Es erlaubt zudem, in den lokalisierten<br />
Paketbeschreibungen zu suchen, und<br />
löst Abhängigkeiten zwischen Paketen<br />
auf. Es ist auch dafür zuständig, Pakete<br />
auf das lokale System zu kopieren. Dazu<br />
stehen Apt verschiedene Transportprotokolle<br />
zur Verfügung, etwa HTTP(S),<br />
FTP, SSH oder bewegliche Medien wie<br />
CD-ROMs und DVDs.<br />
Aktualisierungen<br />
Zu den großen Aufgaben von Apt gehört<br />
aber, die Software eines Rechners aktuell<br />
zu halten. Dazu prüft es, welche Version<br />
eines Pakets lokal installiert ist und welche<br />
in einer der konfigurierten Paketquellen<br />
steckt. Grob lassen sich zwei Aktualisierungsvarianten<br />
unterscheiden. Zum<br />
einen spielt Apt Updates und Upgrades<br />
für die installierte Software einer Distribution<br />
auf den Rechner. Zum anderen<br />
kümmert es sich um Upgrades auf eine<br />
neue Version der Distribution.<br />
Das Einspielen von Aktualisierungen für<br />
eine installierte Distribution ist einfach<br />
und erfolgt über »sudo apt‐get upgrade«.<br />
Dabei aktualisiert Apt nur vorhandene<br />
Softwarepakete, installiert aber keine<br />
neuen oder löscht überflüssige. Vereinzelt<br />
bestehen für Pakete, etwa den Kernel bei<br />
ABI-Änderungen, jedoch neue Abhängigkeiten,<br />
dann ist der Aufruf von »sudo<br />
apt‐get dist‐upgrade« notwendig.<br />
Aber nicht nur dazu: Auch die Aktualisierung<br />
auf eine neue Version einer Distribution<br />
funktioniert über »sudo apt‐get<br />
dist‐upgrade«, allerdings erst nach dem<br />
Anpassen der Datei »/etc/apt/sources.<br />
list«. Hierbei aktualisieren Debian beziehungsweise<br />
Ubuntu eine große Zahl<br />
von Paketen, es kommen zahlreiche<br />
neue Abhängigkeiten hinzu, welche die<br />
Distributionen auflösen, indem sie neue<br />
Abhängigkeiten im Detail<br />
Bei der Installation speichert »dpkg« für jedes<br />
Paket den aktuellen Status. Wird das Deb-<br />
Paket zunächst ausgepackt, setzt »dpkg«<br />
dessen internen Zustand auf »unpacked«.<br />
Anschließend konfiguriert es das Paket, indem<br />
es das Maintainer-Skript »DEBIAN/postinst«<br />
aufruft.<br />
Erst wenn dies fehlerfrei geschehen ist, weist<br />
»dpkg« dem Paket den Zustand »installed«<br />
zu. In der Datei »/var/log/dpkg.log« lassen<br />
sich die Übergänge zwischen den (internen)<br />
»dpkg«-Zuständen beobachten.