Linux-Installation mit apt

21.06.2005 von Jürgen Donauer
Das Installieren von Software unter Linux kann nervig sein. Der Versuch endet oft in einer Liste an nicht erfüllten Abhängigkeiten. Mit dem Tool apt werden Updates und Installation zum Kinderspiel.

apt ist ein Paketmanager und steht für Advanced Packaging Tool. Ursprünglich von Debian entwickelt, ist es mittlerweile auf viele andere Distributionen portiert. Zwei große Vorteile bringt dieses Tool mit. Zum einen ist keine grafische Oberfläche notwendig, zum anderen ist es die Automatisierbarkeit. apt ist ein Kommandozeilenprogramm, das sich wie jedes andere auch in Scripts oder cronjobs einbinden lässt.

apt hält eine Liste aller verfügbaren Pakete lokal vor. Dieses so genannte Repository wird über das Internet aktualisiert. Auch die Installationen laufen in der Regel über das Internet ab. Wollen Sie nun über den Paketverwalter ein Programm installieren, verbindet sich apt zu einem Server, lädt das Paket herunter und spielt es ein. Sind nicht alle Abhängigkeiten erfüllt, erledigt das der Paketmanager für Sie. Das Programm fragt nach, ob Sie die zusätzlichen Pakete installieren möchten. Bejahen Sie das, zieht apt diese auch aus dem Internet und spielt sie auf dem System ein.

Installation und Grundkonfiguration

Mit

rpm -Uvh <Dateiname>.rpm

installieren Sie grundsätzlich Programme für rpm-basierte Systeme.

Für SUSE-Versionen steht das Programm unter http://linux01.gwdg.de/apt4rpm/ zum Download bereit. Fedora- und Red-Hat-Benutzer finden auf http://dag.wieers.com/packages/apt/ eine Installationsanleitung sowie die apt-Pakete. Bei Debian-basierten Distributionen ist apt in der Regel vorhanden.

Im Verzeichnis /etc/apt/sources.list.d/ sind die Server-Listen hinterlegt, zu denen apt eine Verbindung aufbauen soll. In diesem Verzeichnis dürfen auch mehrere Listen stehen. Passen Sie aber auf, dass die Repositories untereinander kompatibel sind. Meist findet sich auf den Homepages der Betreiber eine Anmerkung hierzu. Bei dag.wieers.com steht eine unter dem Punkt D2 in der FAQ. Da das Repository nach der Installation für SUSE recht spärlich ausgestattet ist, holen wir zunächst eine vernünftige Liste. Laden Sie eine der nachfolgenden herunter:

ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.2-i386/examples/sources.list.FTP

oder

ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.2-i386/examples/sources.list.HTTP

Das FTP beziehungsweise HTTP am Ende der Datei steht für das Protokoll der Verbindung, die Sie später aufbauen. Kopieren Sie die Datei ins Verzeichnis /etc/apt/sources.list.d/ und lassen Sie dabei die Endung weg. apt ignoriert das File, wenn es nicht auf .list endet. Unwichtig ist wiederum, was vor .list steht. Ob neu.list, meins.list oder was_auch_immer.list liegt in Ihrer Hand. Löschen Sie danach noch die Datei sources.list aus dem Verzeichnis /etc/apt/. Erstens meckert das System sonst über einen doppelt vorhandenen Server. Zweitens ist es wesentlich übersichtlicher, die Server-Listen in einem separaten Verzeichnis zu halten.

Möchten Sie für andere SUSE-Versionen eine umfangreichere Liste, so ersetzen Sie in den genannten Links "9.2-i386" mit Ihrer Version. Zum Beispiel für SUSE 8.2

ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/8.2-i386/examples/sources.list.FTP

Pakete installieren I

Der grundsätzliche Aufruf, Paketmodifizierungen vorzunehmen, ist

apt-get <Optionen> <Befehl> <Paket_1 Paket_2 ... >

Zunächst einmal bringen Sie das Repository auf den aktuellen Stand. Als root erledigen Sie dies mit

apt-get update

Das verbindet unser System zu den hinterlegten Servern und synchronisiert die Paketinformationen.Mit

apt-get upgrade

prüft die Software, ob es auf dem Server neuere Pakete als die auf dem System vorhandenen gibt. apt sieht aber in dem lokalen Repository nach. Somit sollte vor diesem Aufruf immer ein apt-get update erfolgen.

Gibt es etwas Neues, schlägt das Tool Ihnen vor, die alte Software zu ersetzen. Nach einer Bestätigung legt der Paketmanager los. apt lädt die Pakete herunter und ersetzt die alten. Programme, die den Installationsstatus abhängiger Pakete ändern, bleiben allerdings unberührt. Im Default-Modus hinterlegt der Paketverwalter die aus dem Netz gezogenen Pakete im Verzeichnis

/var/apt/cache/archives/

Das ist praktisch, wenn Sie nicht nur einen Rechner aktualisieren wollen. Es drückt den Internet-Traffic gewaltig, die Pakete mit einem Rechner abzuholen und danach auf andere zu deployen. Vielleicht möchten Sie in einer Produktivumgebung auch erst einmal ausprobieren, ob die Updates ohne Nebenwirkungen bleiben.

Pakete installieren II

Das Distributions-Upgrade

apt-get dist upgrade

führt die Updates auch dann durch, wenn sich der Installationsstatus abhängiger Pakete ändert. Die für das System wichtigeren Komponenten werden dabei zuerst installiert. Damit können Sie Ihren Rechner sogar auf ein neues Release bringen, wenn kein "sanfter" Übergang möglich ist. Eventuell müssen Sie die Source-Listen ändern und den Pfad zu einer höheren Betriebssystemversion eintragen. Das Distributions-Upgrade ist aber mit Vorsicht zu genießen. Eine dringende Empfehlung ist, dies erst auf einem unproduktiven System zu testen. Ein einzelnes Paket installieren Sie mit

apt-get install <Paketname>

Gibt es nicht erfüllte Abhängigkeiten, weist Sie das Programm darauf hin. Bestätigen Sie Zusatzinstallationen mit "yes", holt und spielt apt diese auf Ihrem System ein. Eine kleine Schwierigkeit könnte sein, dass Sie den Namen des Pakets wissen müssen. Der Aufruf

apt-cache search <Suchbegriff>

zeigt Ihnen das Ergebnis auf dem Bildschirm an. Die Ausgabe enthält nur den Namen des Pakets und die Kurzbeschreibung. Sollte <Suchbegriff> auch in der vollständigen Beschreibung vorkommen, ist dies trotzdem auf dem Bildschirm zu sehen. Wundern Sie sich also nicht, wenn mal etwas ausgegeben wird, nach dem Sie scheinbar nicht gesucht haben.Pakete lassen sich mit dem Tool auch wieder deinstallieren.

apt-get remove <Paketname>

erledigt das. Auch hier gilt es, den exakten Paketnamen zu verwenden. Installierte Pakete lassen sich mit

rpm -qa | grep <Suchbegriff>

herausfinden.

apt-get source <Paketname>

holt kein Paket, sondern die Sourcen. Diese finden Sie wieder im Verzeichnis

/usr/src/packages/SOURCE/

Das Archivverzeichnis bereinigen Sie komplett mit

apt-get clean

Möchten Sie in Ihrem Archiv nur Pakete haben, die auch tatsächlich noch zum Download bereit stehen, so erledigt das

apt-get autoclean

Die meisten dieser Aufrufe können Sie mit speziellen Optionen versehen. Die nachfolgende Tabelle gibt einen Überblick über die wichtigsten. Die vollständige Liste gibt es wie immer in den man-Pages

man apt-get

beziehungsweise

man apt-cache

Die wichtigsten Schalter von apt

Schalter

Funktion

-d

download only: lädt die Pakete nur herunter und legt sie im Archivverzeichnis ab

-f

Fix: versucht, ein Repository mit korrupten Abhängigkeiten zu reparieren

-s

simulate: ändert nichts am System, sondern führt nur eine Simulation durch

-y

auto-yes: diese Option verlangt keine Bestätigung, um eine Aktion durchzuführen

-b

kompiliert heruntergeladene Source-Pakete

Das apt-GUI Synaptic

Der Paketmanager ist auch grafisch unter X steuerbar. Das Graphical User Interface Synaptic ist übersichtlich und selbsterklärend. Es muss allerdings erst installiert werden. Hierzu verwenden wir gleich ein

apt-get install synaptic

Wie Sie sehen, holt apt tatsächlich abhängige Pakete gleich mit.

Dummerweise fällt diese Installation bei SUSE erst einmal auf die Nase. Schuld daran ist ein fehlender GPG-key des Synaptic-RPMs. Der Check auf einen gültigen Schlüssel dient der Sicherheit.

Jetzt gibt es zwei Möglichkeiten, das Paket trotzdem zu installieren.

Methode 1: Die Notwendigkeit der Prüfung ist in der Datei gpg-checker im Verzeichnis /etc/apt/apt.conf.d/ hinterlegt. Ändern Sie den Parameter

GPG::Check true;

in

GPG::Check false;

wird auf den Gültigkeits-Check verzichtet, und das Paket installiert sich. Mit dieser Änderung verhält sich der Paketmanager wesentlich weniger streng.Aus Sicherheitsaspekten sollte der Parameter jedoch auf true stehen. Bei Automatisierung von Updates in einem cronjob ist es aber besser, er steht auf false. Oder Sie verwenden den Parameter -d, dann wird sowieso nichts automatisch installiert, und dieser Check ist obsolet.

Methode 2: Das Paket wurde bereits heruntergeladen und liegt im Archivverzeichnis. Wechseln Sie nach /var/cache/apt/archive/. Dann wird Synaptic mit

rpm -Uvh synaptic_0.55.3-0.suse092.rb1_i586.rpm

trotzdem installiert. Natürlich müssen Sie die abhängigen Pakete auch alle händisch installieren. Das ist jetzt kein Problem, da nur diese Pakete im Archiv liegen, und mit

rpm -Uvh *.rpm

ist das schnell erledigt. Wenn sich aber im Archiv schon sehr viele Dateien befinden, kann die Programminstallation schon mal ein bisschen aufwendiger werden.

Fazit

apt eignet sich hervorragend, um Systeme auf dem aktuellen Stand zu halten. Dabei ist nicht die grafische Benutzeroberfläche das Killer-Argument, sondern die Möglichkeit, das Tool zu scripten. Gibt es etwas Schöneres, als morgens ins Büro zu kommen und alle aktualisierten Programme befinden sich bereits auf dem Rechner?

apt ist übrigens nicht der einzige Paketmanager, yum arbeitet ganz ähnlich. Welcher davon zum Einsatz kommt, ist Geschmackssache. (jdo)