Tipps und Tricks zu Yum

Aus LinuxUser 04/2009

Tipps und Tricks zu Yum

© sxc.hu

Echt lecker

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 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.

Abbildung 2: Ein kurze Information vor der eigentlichen Installation, dann spielt Pirut die Software ein.

Abbildung 3: Wem Pirut zu schlicht ist, nutzt am besten Yum-Extender.

Abbildung 3: Wem Pirut zu schlicht ist, nutzt am besten Yum-Extender.

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.

Listing 1
# 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.

Listing 2
[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.

Listing 3
# 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].

Listing 4
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.

Infos

[1] RPM Fusion: http://rpmfusion.org

[2] Zusätzliche Paketquellen: http://www.fedorafaq.org/#getsoftware

[3] Yum Upgrade: http://fedoraproject.org/wiki/YumUpgradeFaq

LinuxUser 04/2009 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben