'''yum''' (''Yellow dog Updater, Modified'') ist ein [[RPM]]-Paketmanagement-Programm, das, ähnlich wie [[apt/RPM|apt4rpm]], automatisch Abhängigkeiten auflöst. Die Syntax ist relativ einfach und yum ist nicht so penibel wie apt. Das Erstellen eigener Installationsquellen (repositories) ist einfacher. yum ist v.a. auf [[Fedora]] sehr zu empfehlen, da er im Gegensatz zu [[RedHat]]s '''up2date''' deutlich schneller funktioniert.

Homepage: http://www.linux.duke.edu/projects/yum/

Lizenz: [[GPL]]

<<TableOfContents>>

= Features =

    * Mehrere Quellen(repositories)
    * Einfache Konfigurationsdatei
    * Korrekte Abhängigkeitsberechnung
    * Schnelles Arbeiten
    * rpm-konsistente Verhaltensweise
    * comps.xml group Support, beinhaltet mehrere Quell-Gruppen
    * Einfache Schnittstelle


= Tipps & Tricks =

== Download zu langsam? ==

Wenn yum so konfiguriert ist, dass er per Zufall aus einer Mirror-Liste herunterlädt kann es sein, dass er einen sehr langsamen Mirror erwischt. Ein Ctrl-C schafft hier Abhilfe. Es bricht nicht die ganze Aktion ab, sondern nur den einen Download. yum versucht es dann mit dem nächsten Mirror. /!\ Gibt es keine weiteren Mirrors, wird die ganze Aktion abgebrochen!

== Grafische Oberfläche? ==

siehe YumEx

= Mini-Howto =

== Repositories ==
 * Einige [[http://www.linux.duke.edu/projects/yum/yum-repo.ptml|yum - Repositories]]
 * Repositories für /RedHat
 * Repositories für [[/Fedora]]


== Eigenes Repository erstellen ==

=== Altes yum ===

Eine "Repository" ist eine Installationsquelle. Um von dem eigenen Rechner (oder auch von einem gemounteten Verzeichnis) Pakete zu installieren, geht man am besten so vor:

{{{
yum-arch /pfad/zu/verzeichnis/mit/rpms
}}}
(Unterverzeichnisse werden mit durchsucht)

und in `/etc/yum.conf` eintragen:
{{{
[lokale Pakete]
name=Meine RPMs
baseurl=/pfad/zu/verzeichnis/mit/rpms
}}}

=== Neues yum ===
(Ab Version 2.?? )

In dem neueren yum wurde die Funktion der Datei /etc/yum.conf geändert. Dort sind jetzt keine Repositories mehr zu finden. Stattdessen gibt es ein Verzeichnis {{{/etc/yum.repos.d/}}}. Dieses enthält voreingestellt einige Dateien, die die Hauptrepositories beschreiben und mit ".repo" enden. In einer ".repo"-Datei kann man das Repository über "enabled=0" per Voreinstellung abschalten. Dann muss man, wenn man dennoch ausnahmsweise ein Paket daraus (z.B. fedora-devel) installieren möchte, etwas angeben wie: {{{yum install --enablerepo=fedora-devel [paketname]}}}

 * Beispiel der Datei [[attachment:fedora-extras.repo]] 

== Pakete installieren/updaten/entfernen ==
||||'''Installieren/Deinstallieren/Updaten'''||
||Installation von RPMs||{{{yum install paket}}}||
||Upgrade einzelner Pakete (nur bereits installierte Pakete)||{{{yum update [paket]}}}||
||Upgrade des kompletten Systems||{{{yum upgrade}}}||
||Deinstallation von Paketen||{{{yum remove [paket]}}}||
||||'''Paketsuche'''||
||Welches Paket enthält Datei oder Feature||{{{yum provides [dateiname]}}}||
||Gibt es dieses Paket||{{{yum list [paket]}}}||
||Paketnamen und Beschreibungen durchsuchen||{{{yum search [begriff]}}}||
||||'''Informationen anzeigen'''||
||Verfügbare Pakete anzeigen||{{{yum list available}}}||
||Updatebare Pakete anzeigen||{{{yum list updates}}}||
||||'''Aufräumen'''||
||Löschen von Paketen/Headern/Metadaten/Cache/Allem ||{{{yum clean [ packages | headers | metadata | cache | all ]}}}||

'''Anmerkung''': Für "paket" kann man auch Namensteile nehmen; wenn man z.B. etwas mit allen  Paketen machen will, so geht das auch via 'gnome*' (natürlich gibt es auch Pakete bei GNOME die anders anfangen, z.B. "libgnome-"). Wichtig sind dabei die Anführungszeichen als Klammerung, weil ansonsten der Verzeichnisinhalt des aktuellen Verzeichnisses zur Vervollständigung des Namens durchsucht wird!

== Gruppenbildung ==

Neuere yum-Versionen unterstützen Paketgruppen. Ein {{{yum grouplist}}} beispielsweise gibt eine Liste der installierten und verfügbaren Gruppen aus, z.B. "Administration Tools", "GNOME Desktop Environment", usw. Um zum Beispiel alle Pakete einer Gruppe zu aktualisieren, kann man {{{yum groupupdate "GNOME Desktop Environment"}}} eingeben.


== Installationskonflikte ==

Folgendes Problem kann beim Mischen verschiedener Repositories, die nicht auf Kompatibilität untereinander achten, auftreten. Hier bei der Installation von InkScape:

{{{
# yum install inkscape
Setting up Install Process
...
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Package inkscape.i386 0:0.39-1.1.fc3.rf set to be installed
--> Running transaction check
--> Processing Dependency: perl(SVG) for package: inkscape
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Package inkscape.i686 0:0.39-0.fdr.1.2 set to be installed
--> Running transaction check
Dependencies Resolved
Transaction Listing:
  Install: inkscape.i386 0:0.39-1.1.fc3.rf
Performing the following to resolve dependencies:
  Install: inkscape.i686 0:0.39-0.fdr.1.2
Is this ok [y/N]: y
Downloading Packages:
Running Transaction Test
Finished Transaction Test
Transaction Check Error:   file /usr/bin/inkscape conflicts between attempted installs of inkscape-0.39-0.fdr.1.2 and inkscape-0.39-1.1.fc3.rf
  file /usr/bin/inkview conflicts between attempted installs of inkscape-0.39-0.fdr.1.2 and inkscape-0.39-1.1.fc3.rf
}}}

 * '''Lösung''': Eine mögliche Lösung, falls man sich nicht auf kompatible Repositories beschränken will, ist es, den kompletten Paketnamen anzugeben. Hier: {{{yum install inkscape-0.39-0.fdr.1.2}}}
 * Welche Repositories nutzt du?
  * fedora.us, dag,livna-stable,updates-released

== Downgrade ==

Historie ansehen:
{{{
yum history
yum history list
yum history info
}}}

Z.B. 5 Eintrag rückgängig machen
{{{
yum history undo 5
}}}

Leider können dabei Scripte, die bereits ausgeführt sind nicht rückgängig gemacht werden. Und Config-Dateien nachher kontrollieren.