Software-Installation mit yum

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

Yum ist ein Paketmanager und steht für „Yellow Dog Updater Modified“. Es bietet zwei große Vorteile: Zum einen ist keine grafische Oberfläche notwendig, zum anderen können Sie es beliebig automatisieren. Da es ein Kommandozeilenprogramm ist, lässt es sich wie jedes andere auch in Scripts oder cronjobs einbinden.

Yum 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 yum 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, holt yum diese auch aus dem Internet und spielt sie auf dem System ein.

Schlüsselimport

Das Programm finden Sie bei Red-Hat-basierenden Systemen in der Regel vorinstalliert. Im Folgenden zeigen wir die Konfiguration für das freie Server-Betriebssystem CentOS. Auch hier ist das Programm selbst in der Default-Installation bereits vorhanden.

Als Erstes sollten Sie den GPG-Schlüssel für RPM-Pakete von CentOS installieren. Das ist notwendig, da yum vor jeder Installation oder jedem Upgrade prüft, ob das Paket auch vertrauenswürdig signiert wurde. Der Schlüssel ist laut den Entwicklern in der Grundinstallation aus Sicherheitsgründen nicht vorkonfiguriert. Das Programm rpm kann dies allerdings für Sie automatisch erledigen. Führen Sie folgenden Befehl als root aus: rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-4.

Damit holt und installiert rpm den Schlüssel über das Internet. Aus Sicherheitsgründen sollten Sie aber den Schlüssel des Installationsmediums nehmen. Sie finden ihn im root-Verzeichnis der CD unter dem Namen RPM-GPG-KEY. Wenn Sie diese Variante bevorzugen, wechseln Sie in das Verzeichnis und importieren den Schlüssel mit rpm --import RPM-GPG-KEY.

Grundkonfiguration

Yum holt sich benötigte Konfigurationsinformationen von zwei verschiedenen Stellen: Zum einen aus der Datei /etc/yum.conf und zum anderen aus dem Verzeichnis /etc/yum.repos.d.

Die Datei /etc/yum.conf

Diese Datei enthält die Grundkonfiguration von yum. Im Prinzip könnten Sie Ihre Repositories auch hier eintragen. Es ist jedoch übersichtlicher, diese in einer eigenen Datei im Verzeichnis /etc/yum.repos.d vorzuhalten. Weiterhin können Sie hier auch festlegen, in welchem Verzeichnis yum die heruntergeladenen Dateien speichern soll. Der Parameter cachedir ist dafür zuständig. Default-mäßig sieht das so aus: cachedir=/var/cache/yum. In diesem Verzeichnis finden Sie alle RPMs, die yum aus dem Internet heruntergeladen hat.

Das Verzeichnis /etc/yum.repos.d

Im Verzeichnis /etc/yum.repos.d/ ist die Liste mit Servern hinterlegt, zu denen yum eine Verbindung aufbauen soll. In diesem Verzeichnis dürfen auch mehrere Listen stehen. Achten Sie aber darauf, dass die Repositories untereinander kompatibel sind, sollten Sie neue hinzufügen.

Jede dieser Dateien endet auf repo. Eine genauere Erläuterung, wie diese Dateien aufgebaut sind, ist eigentlich nicht notwendig. Sollten Sie bei Red-Hat-basierenden Systemen neue Repositories hinzufügen müssen, stellen Ihnen die Betreiber normalerweise vorkonfigurierte Dateien zu Verfügung. Diese brauchen Sie dann nur noch ins Verzeichnis /etc/yum.repos.d/ kopieren.

Sie können diese Datei benennen, wie Sie möchten. Ob neu.repo, meins.repo oder was_auch_immer.repo, liegt in Ihrer Hand. Sie können den Dateiinhalt an den Stellen enabled= und gpgcheck= abändern. Setzen Sie die Parameter auf 0, so versteht yum dies als deaktiviert. Es ist aus Sicherheitsgründen allerdings nicht empfehlenswert, den Prüfsummencheck (gpgcheck) zu deaktivieren.

Pakete aktualisieren

Der grundsätzliche Aufruf, Paketmodifizierungen vorzunehmen, ist yum <Optionen> <Befehl> <Paket_1 Paket_2 ... >. Zunächst einmal bringen Sie das Repository auf den aktuellen Stand. Als Super-User root erledigen Sie dies mit yum check-update.

Yum verbindet sich nun mit den hinterlegten Servern und synchronisiert die Paketinformationen. Mit yum update prüft die Software, ob es auf dem Server neuere Pakete gibt als die auf dem System vorhandenen. Yum synchronisiert vor jedem Update das lokale Repository. Es hält sich somit automatisch auf dem neuesten Stand.

Gibt es etwas Neues, schlägt das Tool Ihnen vor, die alte Software zu ersetzen. Nach einer Bestätigung legt der Paketmanager los. Er 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/cache/yum/updates-released/packages.

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 verteilen. Vielleicht möchten Sie in einer Produktivumgebung auch erst einmal ausprobieren, ob die Updates ohne Nebenwirkungen bleiben.

Pakete installieren

Ein einzelnes Paket installieren Sie mit yum install <Paketname>. Bestehen nicht aufgelöste Abhängigkeiten, weist Sie das Programm darauf hin. Bestätigen Sie Zusatzinstallationen mit "y", holt yum diese und spielt sie auf Ihrem System ein. Eine kleine Schwierigkeit könnte sein, dass Sie den Namen des Pakets wissen müssen.

Der Aufruf yum search <Suchbegriff> zeigt Ihnen das Ergebnis auf dem Bildschirm an. Die Ausgabe enthält nur den Namen des Pakets und die Kurzbeschreibung, obwohl yum auch in den Beschreibungen sucht. Wundern Sie sich also nicht, wenn Pakete ausgegeben werden, nach denen Sie scheinbar nicht gesucht haben. Pakete lassen sich mit dem Tool auch wieder deinstallieren, der Befehl lautet yum remove <Paketname> oder yum erase >Paketname>.

Auch hier gilt es, den exakten Paketnamen zu verwenden. Installierte Pakete lassen sich mit dem Tool rpm herausfinden: rpm -qa | grep <Suchbegriff>.

list und andere Schalter

Alternativ können Sie auch den Parameter list von yum verwenden. List kennt noch einige zusätzliche Optionen, die Sie in der folgenden Tabelle finden.

List-Optionen

Befehl

Auswirkung

yum list

Liefert als Ergebnis alle verfügbaren und installierten Pakete.

yum list available

Gibt Ihnen alle in den Repositories zur Installation verfügbaren Pakete zurück.

yum list updates

Liefert alle Pakete zurück, für die derzeit Updates verfügbar sind.

yum list extras

Gibt Ihnen all die Pakete als Ergebnis, die zwar installiert sind, aber in keinem Repository auftauchen.

Über die Option clean sprechen Sie die diversen Aufräumfunktionen von yum an. Der Paketmanager hat drei verschiedene Arten mit der clean-Funktion umzugehen. Eine komplette Bereinigung des Archivverzeichnisses erreichen Sie mit yum clean packages.

Möchten Sie die kompletten Header, also die Dateien löschen, welche die Verfügbarkeit der Pakete auf den Remote-Servern halten, verwenden Sie den Befehl yum clean headers. Damit zwingen Sie den Paketmanager zu einer kompletten Neusynchronisation beim nächsten Aufruf.

Der Befehl yum clean all fasst die beiden Optionen packages und headers in einem Aufruf zusammen. 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.

Die wichtigsten Schalter von yum

Schalter

Funktion

-h

ruft die Hilfefunktion auf

-y

Auto-„yes“, ein Bestätigen durch eine „y“-Eingabe ist nicht mehr notwendig

-d

Setzen des Debugging-Levels. Schalter sollte zwischen 0 und 10 sein. Je nach Höhe erhalten Sie mehr Informationen auf dem Bildschirm angezeigt. Somit können Sie den Default-Wert 2 überschreiben, der in der Datei /etc/yum.conf hinterlegt ist (debuglevel)

-R [Zeit in Minuten]

Gibt die maximal zu wartende Zeit ab, bevor yum einen Befehl ausführt

-C

damit holt yum alle Informationen aus dem Cache. Es lädt nur dann Daten aus dem Internet, wenn dies unbedingt erforderlich ist

Das yum-GUI yumex

Der Paketmanager ist auch grafisch unter X steuerbar. Das Graphical User Interface yumex ist übersichtlich und selbst erklärend. Um das Tool zu installieren, ist ein wenig Handarbeit nötig. Als ersten Schritt laden Sie das SRPM des Yum-Extenders von der Seite http://linux.rasmil.dk/cms/modules/mydownloads/herunter. Da hier für CentOS kein fertiges RPM zur Verfügung steht, bastelt man sich aus dem Source-RPM, das für Fedora Core 3 zur Verfügung steht, selbst ein Paket. Dazu brauchen Sie das Paket rpm-build.i386. Sofern noch nicht installiert, lassen Sie das am besten gleich wieder von yum erledigen.

Als Benutzer root geben Sie folgenden Befehl ein yum -y install rpm-build.i386. Um Fehlermeldungen vorzubeugen, sollten Sie außerdem das Verzeichnis redhat anlegen mkdir /usr/src/redhat. Danach wechseln Sie in das Verzeichnis, in dem sich das yumex SRPM befindet, und installieren dies mit rpm -ivh yumex-0.34-1.tla.1.FC3.src.rpm

Im nächsten Schritt wechseln Sie ins SPECS-Verzeichnis und generieren das fertige RPM mit den Befehlen cd /usr/src/redhat/SPECS und rpmbuild -ba yumex.spec. Das Resultat finden Sie im Verzeichnis ../RPMS/noarch.

Als letzter Schritt folgt das Installieren des fertigen Pakets: rpm -ivh yumex*. Nun ist das Programm installiert und Sie können es als Benutzer root über den Befehl yumex aufrufen.

Die eigentliche Installation

Hier können Sie zum Beispiel mit nur wenigen Mausklicks neue Repositories hinzufügen. Allerdings sollte Sie aufpassen, dass die Archive untereinander kompatibel sind. Yum meldet jedoch normalerweise solche Inkompatibilitäten und bricht ab.

Installationen, Updates und Paket-Removals sind mit yumex keine große Kunst: Klick, Suchbegriff eingeben, Klick, fertig. Was eigentlich im Hintergrund abläuft, können Sie über den Schalter Output in Erfahrung bringen. Dieses Ausgabefenster eignet sich besonders gut, wenn es um Fehleranalyse geht.

Fazit

Yum eignet sich hervorragend, um Systeme auf dem aktuellen Stand zu halten. Dabei ist nicht die grafische Benutzeroberfläche das Killerargument, 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?

Yum ist übrigens nicht der einzige Paketmanager, apt arbeitet ganz ähnlich. Meist entscheidet das Entwicklerteam, welches der beiden Tools zum Einsatz kommen soll. Für manche Systeme, wie zum Beispiel Fedora Core oder auch CentOS sind sowohl yum als auch apt verfügbar.

Auf diesen Systemen kommt dann ausschließlich der persönliche Geschmack zum Zuge. Praktikabel und einfach zu bedienen sind beide. (jdo)