# Yellowdog Updater, Modified

YUM (Yellowdog Updater, Modified) ist ein Paketmanagement-System, das für die Linux-Distribution Yellow Dog Linux entwickelt wurde. Mit dem Kommandozeilenprogramm lassen sich RPM-Software-Pakete suchen, installieren und aktualisieren.

## Geschichte

Um RPM-Pakete einfacher zu installieren und zu verwalten, wurde für das Yellow Dog Linux das Programm YUP geschrieben und unter die GNU General Public License gestellt. YUP war aber sehr langsam, da es zur Auflösung der Abhängigkeiten immer alle Pakete herunterlud, statt nur die wichtigen Kopfzeilen jedes Pakets. Seth Vidal schrieb eine abgeänderte Version und gab ihr den Namen "yellowdog updater, modified". Diese wurde nach und nach bis zum heutigen Stand erweitert. Nachdem YUM mächtig genug war und genügend Funktionen besaß, wurde es auch von der Distribution Red Hat Enterprise Linux übernommen.
Mittlerweile unterstützt auch openSUSE YUM rudimentär, setzt jedoch standardmäßig auf ZYpp.
YUM wurde ebenso auf eComStation und OS/2 portiert.

## Funktionsweise

In der Datei /etc/yum.conf werden alle notwendigen Konfigurationen des Programms gespeichert, die Paketquellen finden sich im Verzeichnis /etc/yum.repos.d/. Die Paket-Repositories (englisch für Lager, Depot) können dabei lokale Verzeichnisse, CDs, HTTP- oder FTP-Server sein. Wird das Programm aufgerufen, so durchsucht es zuerst alle eingetragenen Repositories nach neuen Paketen. Werden welche gefunden, lädt es die Kopfzeilen des Pakets herunter. Zu diesen Kopfzeilen gehören zum Beispiel der Name des Pakets, Abhängigkeiten zu anderen Paketen, enthaltene Dateien, Version etc.
Nach der Aktualisierung der Paketdaten und dem Abgleich mit der lokalen Paketdatenbank verhält sich das Programm entsprechend der übergebenen Befehlsoption. Wurde es etwa mit der Option yum install firefox übergeben, sucht es dann in den Kopfzeilen nach dem Paketnamen firefox und lädt das entsprechende Paket zusammen mit allen weiteren dazugehörigen Paketen herunter. Lautet die Option yum upgrade, so werden alle Pakete des lokalen Systems erneuert, von den es auf den Repositories eine neuere Version gibt. Diese Option wird auch ausgeführt, wenn ein Dienst, wie z. B. PackageKit ein automatisches Systemupdate ausführt.
YUM lädt die für eine Installation oder ein Update nötigen RPM-Pakete von Repositories herunter und speichert sie temporär auf der Festplatte. Für den Installationsvorgang selbst und die Verwaltung der Paketdatenbank, ruft YUM im Hintergrund das Programm RPM auf.

### Besonderheiten

Eine Besonderheit von YUM gegenüber anderen Paketmanagern ist, dass YUM so konfiguriert werden kann, dass es bei jedem Aufruf aus einer Liste im Internet einen günstigen Server heraussucht, statt immer nur auf denselben zuzugreifen. Diese dynamische Konfiguration ermöglicht auch das Ausweichen auf andere Server im laufenden Betrieb, falls ein Server ausfällt oder sich als nicht aktuell herausstellen sollte.
Des Weiteren kann YUM durch eine Plugin-Schnittstelle nahezu beliebig erweitert werden. Die Plugins werden dabei in Python geschrieben. Zu den Funktionen, die durch Plugins realisiert werden, gehören unter anderem die Überwachung der Verbindungsgeschwindigkeiten zu den Download-Servern und die Auswahl des jeweils schnellsten Servers sowie eine automatische Aktualisierung von externen Kernelmodulen bei der Installation neuer Kernel.

## Frontends

YUM ist eine Software für die Kommandozeile, die in den ersten Fedora-Versionen ohne grafisches Frontend ausgeliefert wurde. Dies änderte sich erstmals, als die auf Fedora Linux basierende Linux-Distribution Cobind das Programm GYUM integrierte, welches eine an die Gnome-Umgebung angepasste grafische Oberfläche bot. GYUM wurde zunächst von der Fedora-Core-Gemeinde übernommen, aber Version 2.1 von YUM wurde die Weiterentwicklung zu Gunsten von pup eingestellt.
Mittlerweile existieren mehrere grafische Frontends für YUM. Besonders erwähnenswert sind Yum Extender (yumex) und KYUM, die in die Fedora-Distributionen aufgenommen wurden und aktiv weiterentwickelt werden.
Für Fedora Core 5 bis Fedora 8 steht ein grafisches Aktualisierungswerkzeug namens pup bereit, das auf YUM aufbaut. Außerdem gibt es dort auch ein grafisches Paketverwaltungs-Benutzeroberfläche („frontend“) namens pirut, welche neben den Installations-CDs auch auf YUM und seine Funktionen zurückgreift.
Seit Fedora 9 wird PackageKit als grafisches standard Frontend für YUM eingesetzt.
Für eComStation und OS/2 wurde als graphisches Frontend das Programm anpm (ArcaNoaePackageManager) entwickelt.

## Yum-updates

Ab Fedora Core 6 gibt es den Dienst yum-updatesd. Dies ist ein Daemon, der das System periodisch auf Updates überprüft und, wenn neue verfügbar sind, diese Information über verschiedene Kanäle ausgeben kann. Mögliche Ausgaben sind per E-Mail, Syslog oder D-Bus. Es gibt Applets, die darauf hinweisen, wenn Aktualisierungen verfügbar sind.