Der Yellowdog Updater Modified stammt ursprünglich von Yellow Dog Linux, hat sich aber erst als Standard-Paketmanager von Fedora einen Namen gemacht. Lesen Sie hier, was Yum alles bietet.
Yum arbeitet bei Fedora und Yellow Dog Linux als Schnittstelle zum darunterliegenden RPM-System und lässt sich mit Zypper oder Apt vergleichen. Grafisch bedienen Sie den Paketmanager über eines der zahlreichen grafischen Frontends wie Pirut (Abbildung 1 und 2), Gyum, Yum-Extender (Abbildung 3) oder Kyum, doch wenn Sie die wichtigsten Yum-Befehle kennen, brauchen Sie kaum noch ein GUI.

Abbildung 1: Fedora nutzt seit einigen Versionen das grafische Frontend Pirut als Standard-Paketmanager.

Abbildung 2: Ein kurze Information vor der eigentlichen Installation, dann spielt Pirut die Software ein.
Grundlagen
Yum ist wirklich einfach zu bedienen. Die Installation eines Paketes erfolgt mit yum install Paketname, wobei Sie beliebig viele Pakete auf einmal angeben können. Sie installieren zum Beispiel das Spiel Pingus durch die Eingabe von yum install pingus.
Yum lädt im Hintergrund zuerst die Headerdateien mit den Paket-Metadaten der neuen Pakete herunter, um alle Abhängigkeiten nach den neuen Gegebenheiten zu untersuchen. Nachdem die Abhängigkeiten aufgelöst sind, gibt Yum zusätzlich zu den installierenden Paketen eine Liste aller benötigten Pakete (Installing for dependencies) aus (Listing 1). Das Tool fragt danach noch einmal, ob Sie die Installation vornehmen möchten. Beantworten Sie die Frage mit [Y], beginnt der Installationsprozess und meldet mit Complete! die ordnungsgemäße Installation der aufgelisteten Pakete.
# yum install pingus Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: pingus i386 0.7.0-0.4.20060721.fc6 fedora 18 M Installing for dependencies: ClanLib i386 0.8.0-4.fc7 fedora 1.2 M SDL i386 1.2.12-1.fc7 updates 219 k SDL_gfx i386 2.0.13-8.fc7 fedora 52 k … Transaction Summary ============================================================================= Install 11 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 31 M Is this ok [y/N]: … Complete!
Fallen Ihnen die ständigen Ja/Nein-Nachfragen zu lästig, veranlassen Sie mit der Option -y das automatische Beantworten aller Fragen mit “Ja”, zum Beispiel mit yum -y install pingus. Bei Deinstallationen sollten Sie hier Vorsicht walten lassen, da das automatische Entfernen abhängiger Pakete zu unangenehmen Nebeneffekten führen kann.
In der Grundeinstellung installiert Yum aus den eingerichteten Paketquellen (DVD, Internet-Repositories). Sie können aber auch einzelne RPM-Dateien mit yum anstelle von rpm einspielen. Yum beachtet dabei die Abhängigkeiten und ergänzt eventuelle fehlende Pakete über die Repositories automatisch. Der Befehl lautet in diesem Fall yum localinstall Paketname.
Auch beim Entfernen von Paketen nimmt Ihnen Yum sehr viel Arbeit ab, indem es nicht mehr benötigte Komponenten mitlöscht. Im Beispiel der Pingus-Installation spielt Yum zum Beispiel auch sdl und ClanLib mit ein. Möchten Sie diese Pakete wieder entfernen, müssen Sie sie dem RPM-Befehl explizit nennen, zum Beispiel rpm -e pingus SDL Clanlib ... . Das kostet oft viel Zeit, da man die Abhängigkeiten der zu entfernenden Pakete meist erst durch die Fehlerausgabe von RPM erfährt. Der Aufruf von yum remove ClanLib listet hingegen die zu deinstallierenden Pakete inklusive der Abhängigkeiten auf. Yum fragt noch einmal kurz nach, ob man wirklich alle aufgeführten Pakete deinstallieren möchte und fährt bei einer positiven Antwort mit der Arbeit fort.
Das Aktualisieren eines Pakets oder aller Pakete erfolgt über Befehl yum update Paketname beziehungsweise yum update. Bevorzugen Sie eine grafische Oberfläche, dann starten Sie den Package Updater pup aus der Konsole oder aus dem Menü heraus. Pup gehört zum Paket pirut, das Sie über yum install pirut einrichten.
Der Yum-Update-Daemon frischt das System bei Bedarf auch komplett automatisch auf. Dazu muss in der Konfigurationsdatei /etc/yum/yum-updatesd.conf allerdings der Eintrag do_update auf yes eingestellt sein (Listing 2). Ob der updatesd-Dienst automatisch beim Booten startet oder nicht, ermitteln Sie über chkconfig:
# chkconfig --list | grep -i yum
Die Ausgabe zeigt, für welche Runlevel der Dienst aktiviert ist. Den aktuellen Runlevel gibt der Befehl runlevel zurück. Der automatische Start beim Booten erfolgt durch das Aktivieren des Dienstes mit chkconfig yum-updatesd on. Möchten Sie den Daemon einmalig aktivieren, rufen Sie service yum-updatesd start auf.
Am häufigsten benötigen Sie vermutlich den Suchbefehl yum search Stichwort. Er sucht mit dem angegebenen Stichwort in den Paketnamen und Infos sämtlicher verfügbarer Pakete. Möchten Sie nur nach dem Paketnamen suchen, kommen Sie mit yum list | grep Stichwort schneller ans Ziel.
[main] # how often to check for new updates (in seconds) run_interval = 3600 # how often to allow checking on request (in seconds) updaterefresh = 600 # how to send notifications (valid: dbus, email, syslog) emit_via = dbus # automatically install updates do_update = yes # automatically download updates do_download = no # automatically download deps of updates do_download_deps = no
Die Yum-Shell
Wollen Sie über Yum mehrere Aktionen nacheinander vornehmen, erledigen Sie das am besten über die Yum-Shell. Sie erlaubt, mehrere Aktionen nacheinander auszuführen, ohne dass man auf die Rückgabe der vorhergehenden Aktion warten muss. Ein typisches Szenario wäre etwa das Löschen des Caches, die Installation von Paketen und die Deinstallation anderer Pakete.
Sie starten die Shell mit yum shell. Der Eingabeprompt akzeptiert die üblichen Kommandos wie install, remove oder update. Die Eingabe von run startet anschließen den zuvor eingegebenen Batch-Ablauf. Sie verlassen die Shell nach getaner Arbeit mit quit. Einen weiteren Anwendungsfall der Yum-Shell stellt der Einsatz innerhalb einer Pipe dar, um zum Beispiel direkt aus einem Shell-Script heraus zu installieren: # echo -e “install pingus\n run\n quit” | yum -y shell
Zu diesem Zweck kommt häufig auch ein Here-Dokument zum Einsatz, wie es Listing 3 zeigt.
# yum -y shell <<EOF clean all install … remove … run quit EOF
Manchmal möchte man mehrere RPM-Pakete herunterladen, um sie später zu installieren oder auf mehreren gleichartig konfigurierten Systemen einzuspielen. Dazu eignet sich das Programm yumdownloader aus dem Paket yum-utils. Um das Spiel Pingus nur herunterzuladen, genügt der Befehl yumdownloader pingus. Yumdownloader legt das angegebene Paket im aktuellen Verzeichnis ab, aus dem Sie es dann über
# yum localinstall pingus-0.7.2-3.fc10.i386.rpm
installieren, um auch die Abhängigkeiten einzubeziehen. Möchten Sie die Abhängigkeiten bereits beim Download auflösen, rufen Sie yuminstaller mit der Option --resolve auf.
Das Tool eignet sich auch vorzüglich dazu, Quellpakete herunterzuladen und manuell zu übersetzen. Dazu dient die Option --source . Die Eingabe
# yumdownloader –source pingus
legt zum Beispiel das RPM-File pingus-0.7.2-3.fc10.i386.rpm in das aktuelle Verzeichnis. Das einrichten erfolgt mit # rpm -ihv pingus-0.7.2-3.fc10.i386.rpm
Das Source-Archiv liegt danach unter /usr/src/redhat/SOURCES/, wo Sie es entpacken und selbst kompilieren.
Caching
Yum aktualisiert bei jedem Start die Header-Dateien und lädt bei mehrmaligem Installieren eines Pakets diese Daten stets von neuem herunter. Um diese Doppelarbeit zu vermeiden, schalten Sie das Caching von Header- und Paketdateien ein. Dazu setzen Sie in der Konfigurationsdatei /etc/yum.conf die Option keepcache=1. Rufen Sie yum mit der Option -C auf, erfolgt der Zugriff auf den Cache ebenfalls, unabhängig von den Einstellungen in /etc/yum.conf. Natürlich funktioniert das nur, sofern die benötigten Ressourcen im Cache liegen. Fehlen sie, zeigt Yum die Meldung Caching enabled but no local cache of … an.
Yum-Plugins
Für Yum gibt es eine ganze Reihe von Erweiterungen, die Sie ganz einfach aus dem Repository heraus installieren. Die Funktionalität von Yum erweitert sich dadurch automatisch.
Beim Plugin Fastestmirror ist der Name Programm: Es sucht automatisch im Hintergrund den schnellsten Spiegelserver für den Download heraus. Sie installieren und aktivieren das Plugin über yum install yum-fastestmirror.
Sind mehrere Mirrors im Spiel, lohnt sich der Einsatz des Plugins Priorities, über das Sie die Priorität der einzelnen Repositories steuern. Die Installation erfolgt über yum -y install yum-priorities. Danach finden Sie im Verzeichnis /etc/yum/pluginconf.d/ die Datei priorities.conf :
[main] enabled = 1 check_obsoletes = 1
Mehr zum Einsatz dieses Plugins lesen Sie im folgenden Abschnitt “Alternative Repositories”.
Alternative Repositories
Um rechtlichen Problemen vorzubeugen, bringt Fedora nur Software mit, die unter einer freien Lizenz stehen. So enthalten die Fedora-Standard-Repositories keine proprietären Programme, aus lizenzrechtlichen Gründen fehlen aber auch viele freie Anwendungen wie zum Beispiel mplayer. Sie finden diese Software in Paketquellen von Drittanbietern.
Zu den bekanntesten Vertretern dieser Gattung zählen Livna, Rpmforge, Dribble, Freshrpms und Atrpms. Seit Fedora 10 haben sich Dribble, Freshrpms und Livna zu einem Repository zusammengeschlossen, das nun RPM Fusion [1] heißt. Wie Sie Livna beziehungsweise RPM Fusion den bereits eingerichteten Paketquellen hinzufügen, beschreibt die inoffizielle Fedora-FAQ-Seite [2], für Fedora 10 genügt zum Beispiel der Befehl:
# rpm -Uvh http://rpm.livna.org/livna-release-10.rpm
Die Konfigurationdateien der diversen Repositories liegen unter /etc/yum-repos.d/. Sie aktivieren oder deaktivieren die einzelnen Repositories durch den Eintrag enabled=1 respektive enabled=0 in diesen Konfigurationsdateien. Die meisten Repo-Dateien bringen mehrere Einträge mit, von denen Sie in der Regel nur den obersten benötigen.
Nach einer Standardinstallation von Fedora inklusive RPM-Fusion-Repo gibt es unter /etc/yum.repos.d/ die drei Konfigurationsdateien fedora.repo, fedora-updates.repo und livna.repo. Hier setzen Sie jeweils den obersten Eintrag auf enabled=1, die restlichen auf enabled = 0. Alternativ löschen und deaktivieren Sie sämtliche zusätzliche Repository-Einträge durch
# rpm -e yum-priorities yum-fedorafaq livna-release
Hier kommt das im vorigen Abschnitt beschriebene Yum-Plugin yum-priorities zum Einsatz. Eine Liste sämtlicher eingebundener Repositories erhalten Sie über den Befehl yum repolist.
Upgrades mit Yum
Mit Yum lässt sich ein Fedora-System im laufenden Betrieb auf die nächste Version aktualisieren. Das funktioniert allerdings selten völlig reibungslos und bringt bei fast bei jedem Release mehr oder minder ausführliche Nacharbeiten mit sich.
Wollen Sie sich bei der Aktualisierung voll auf Yum verlassen, leeren Sie zunächst den Yum-Cache und aktualisieren dann die Paketquellen. Die nötigen Schritte für ein Upgrade auf Fedora 11 – es erscheint voraussichtlich Ende Mai 2009 – beschreibt Listing 4 in Kurzform. Eine ausführlichere Darstellung finden Sie im Fedora-Wiki [3].
yum clean all rpm -Uhv ftp://download.fedora.redhat.com/pub/fedora/linux/releases/11/Fedora/i386/os/Packages/fedora-release-*.noarch.rpm yum upgrade
Paketgruppen
Wer Ubuntu nutzt und gelegentlich auch einmal etwas kompiliert, kennt das Paket build-essential. Dabei handelt es sich nicht um ein Debian-Paket im engen Sinne, sondern um ein Metapaket, das automatisch eine festgelegte Software-Auswahl installiert. Fedora kennt ein solches Feature ebenfalls; hier heißt es “Paketgruppen”.
Eine Liste der vorhandenen Paketgruppen erhalten Sie über yum grouplist. Hier finden Sie auch die Rubrik Development Tools, die Sie über
# yum -y groupinstall 'Development Tools'
einspielen. Möchten Sie sämtliche Spiele oder vielleicht alle Office-Programme installieren, dann holen Sie sich aus der Liste die entsprechende Kategorie und installieren diese wie oben beschrieben.
Rollback-Funktion
Wer kennt das nicht: Man spielt Programmpakete ein und muss aufgrund von Inkompatibilitäten, Programmfehlern oder Ähnlichem den Urzustand des Systems wiederherstellen. Das gestaltet sich unter Umständen ziemlich schwierig, da zum einen ältere Pakete schwer zu finden und zum anderen Konfigurationen überschrieben sind. Eine automatische Systemwiederherstellung wäre hier auf jeden Fall die schnellste, einfachste und auch die sauberste Variante.
Um das anbieten zu können, muss das System muss vor jedem Ändern der Paketzusammenstellung – also bei jedem Update, bei jeder Installation und bei jedem Löschen von Paketen – den aktuellen System-Zustand speichern. RPM besitzt zu diesem Zweck eine so genannte Repackage-Funktion. Der Repackage-Vorgang fasst alle relevanten Dateien wie Konfigurationsdateien, Daten und Programmdateien zu einem neuen RPM-Archiv zusammen. Die Repackage-Funktion von RPM versieht jedes Archiv mit einer Transaktions-ID und speichert das Archiv an einem festen Ort.
Das Zurückspielen eines früheren Installationszustands erfolgt dann per Löschen der neu eingespielten Pakete und Einrichten der zuvor erstellten Repackage-Dateien. Damit RPM weiß, welche Repackage-Dateien es einspielen soll, erhält jede RPM-Transaktion eine eindeutige Nummer. Haben Sie zum Beispiel mehrere Pakete und auch deren Abhängigkeiten gelöscht, so erhalten alle Repackage-Dateien eine eindeutige Transaktions-ID. Laut RPM-Manpage handelt es sich dabei um einen einfachen Unix-Zeitstempel.
Yum kann die Rollback-Funktionalität von RPM nutzen, sofern das Feature in den Konfigurationsdateien aktiviert ist. Dazu setzen Sie in /etc/rpm/macros folgenden Eintrag:
%_repacke_all_erasures 1
Falls die Konfigurationsdatei /etc/rpm/macros noch nicht existiert, müssen Sie sie gegebenfalls noch anlegen. In der Datei /etc/yum.conf tragen Sie zudem folgende Zeile ein:
tsflags=repackage
Einmal konfiguriert, merkt sich das System jeden Zustand im Verzeichnis /var/spool/repackage. Löschen Sie ein Paket, stellt zum Beispiel
# rpm -Uhv --rollback '3 minutes ago'
den Zustand des Rechners von vor 3 Minuten wieder her. Die zusätzliche Angabe der Option --test bewirkt einen Probelauf mit Anzeige der einzelnen durchzuführenden Aktionen ohne tatsächlichen Rollback. Die Zeitangabe für den Rollback kann auch in der Form
# rpm -Uhv --rollback 'YYYY-MM-DDHH:MM'
erfolgen. Erinnern Sie sich an den Zeitpunkt der zurückzunehmenden Installation nicht mehr, sehen Sie einfach die Zeitstempel der Repacke-Dateien im Verzeichnis /var/spool/repackage durch. So lassen sich Rückschlüsse auf einen günstigen Rollback-Zeitpunkt ziehen.
Der Autor
Daniel Niedzielski arbeitet hauptberuflich als Software-Entwickler. Er hat eine Familie mit 3 Kindern, studiert im Fernstudium Bachelor der Informatik an der Fernuni in Hagen und arbeitet zurzeit an seiner LPIC-2-Zertifizierung.
Glossar
-
Here-Dokument
-
Besondere Form, um Befehle auf den Stdin-Kanal eines Programms umzuleiten. Im Unterschied zu einem normalen Echo-Befehl bleiben dabei Einzüge und Zeilenumbrüche weitgehend erhalten.
[1] RPM Fusion: http://rpmfusion.org
[2] Zusätzliche Paketquellen: http://www.fedorafaq.org/#getsoftware
[3] Yum Upgrade: http://fedoraproject.org/wiki/YumUpgradeFaq






