Yum (yellowdog updater, modified) to frontend komendy rpm i preferowane narzędzie do zarządzania pakietami. Narzędzie wymaga aby system miał dostęp do repozytorium pakietów. Repozytoria Red Hat w przeciwieństwie do CentOS dostępne są tylko dla subskrybentów. Możliwe jest uruchomienie własnego repozytorium co wymaga utworzenia pliku z jego definicją w katalogu /etc/yum.repos.d/. Najważniejszą zaletą narzędzia yum jest, że dba ono o zależności pakietów instalując automatycznie dodatkowo wymagane pakiety.
Plik konfiguracyjny yum.
W pliku konfiguracyjnym /etc/yum.conf można zdefiniować osobne sekcje dla każdego nowego repozytorium, z którego ma korzystać system. Lepiej jednak wpisy o repozytoriach umieszczać w katalogu /etc/yum.repos.d.
Domyślna zawartość yum.conf wygląda następująco:
| 1 2 3 4 5 6 7 8 9 10 11 12 |  # cat /etc/yum.conf  [main]  cachedir=/var/cache/yum/$basearch/$releasever  keepcache=0  debuglevel=2  logfile=/var/log/yum.log  exactarch=1  obsoletes=1  gpgcheck=1  plugins=1  installonly_limit=3 | 
| Dyrektywa | Opis | 
| cachedir | Katalog-magazyn do składowania pobranych plików. Domyślnie /var/cache/yum/$basearch/$releasever. | 
| keepcache | Określa czy składować pakiet i nagłówek cache po pozytywnie zakończonej instalacji. Domyślnie wyłączone (0). | 
| debuglevel | Poziom debugowania jakie będzie zapisane w logu. Minimum 1 i maksimum 10, domyślnie 2. Wartość 0 wyłącza tą opcję. | 
| logfile | Położenie pliku z logami. Domyślnie /var/log/yum.log. | 
| exactarch | Określa czy aktualizować tylko pakiety, które pasują do architektury CPU. Domyślnie włączone (1). | 
| obsoletes | Sprawdza i zamienia jakiekolwiek przestarzałe pakiety w czasie aktualizacji. Domyślnie włączone (1). | 
| gpgcheck | Określa czy sprawdzać sygnaturę GPG pod kątem autentyczności pakietu. Domyślnie włączone (1). | 
| plugins | Określa czy wraz z pakietami mają być pobierane pluginy. Domyślnie włączone (1). | 
| installonly_limit | Określa liczbę wersji jądra systemu utrzymywanych w systemie. Domyślna wartość 3 oznacza, że zainstalowane będą maksymalnie 3 jądra. Jeśli podczas aktualizacji systemu będzie instalowane kolejne, najstarsze zostanie usunięte. Zainstalowane jądra będą widoczne w menu gruba, dając możliwość uruchomienia systemu na wybranym z nich. | 
Dodatkowe dyrektywy, które możemy umieścić w sekcji głównej lub w sekcji repo pliku konfiguracyjnego, mogą być wyświetlone komendą yum-config-manager.
Repozytorium yum.
Repozytorium yum jest cyfrową biblioteką służącą do magazynowania pakietów. W Internecie dostępnych jest wiele repozytoriów zarządzanych przed różne podmioty takie jak Red Hat i CentOS. Najlepiej korzystać z repozytoriów zarządzanych przez zaufane podmioty, unikniemy w ten sposób uszkodzenia systemu. Można także uruchomić swoje własne repozytorium co jest dobrą praktyką dla organizacji z dużą ilością systemów RHEL czy CentOS.
Prosty plik z definicją własnego repozytorium wygląda następująco:
| 1 2 3 4 5 |  [rhel7.0_repo] name= rhel7.0 repo baseurl=file:///mnt enabled=1 gpgcheck=0 | 
Pierwsza linia definiuje unikalne ID repozytorium, druga nazwę, trzecia położenie repozytorium, czwarta określa czy repozytorium jest aktywna a linia piąta czy pakiety mają być sprawdzane pod kątem autentyczności przez GPG. Trzy pierwsze linie są obowiązkowe, pozostałe opcjonalne. Repozytorium lokalne wskazuje się używając trzech ukośników (/). Repozytorium zdalne określa się używając dwóch ukośników np.:
- ftp://hostname/network_path
- http://hostname/network_path
- dla NFS:  file:///hostname/network_path.
 Ścieżka powinna oczywiście być rozwiązywalna przez resolver lub powinien być użyty adres IP.
Polecenie yum.
Niektóre opcje polecenia yum znajdują się w tabeli poniżej:
| Opcja | Opis | 
| provides (lub whatprovides) | Szuka pakietu, który zawiera określony plik. | 
| install | Instaluje lub aktualizuje pakiet. | 
| remove / erase | Usuwa pakiet. | 
| search | Szuka pakiety, który zawiera w nazwie określony tekst (łańcuch). | 
| check-update | Sprawdza czy są aktualizacje dla zainstalowanych pakietów. | 
| update | Aktualizuje zainstalowane pakiety. | 
| upgrade | To samo co update ale usuwa stare pakiety. Inaczej yum update --obsoletes. Usuwanie starych pakietów w czasie aktualizacji nie jest bezpieeczne. | 
| list | Listuje zainstalowane i dostępne pakiety. | 
| clean | Usuwa skeszowane dane. | 
| info | Wyświetla informacje o pakiecie. | 
| history | Wyświetla historię wykonywanych przez yum czynności. Składowane w /var/lib/yum/history. | 
| localinstall | Instaluje lub aktualizuje pakiet lokalny. | 
| repolist | Wyświetla listę włączonych repozytoriów. | 
| repository-packages | Traktuje repozytorium jak zbiór pakietów, który może być zainstalowany lub odinstalowany jak jeden pakiet. | 
| group install | Instaluje lub aktualizuje grupę pakietów. | 
| group info | Wyświetla informacje o grupie pakietów. | 
| group list | Listuje dostępne grupy pakietów. | 
| group remove | Usuwa grupę pakietów. | 
Instalacja i aktualizacja pakietów oraz grup pakietów.
Podczas instalacji pakietu tworzone jest niezbędne drzewo katalogów, instalowane są niezbędne pliki i pakiety. Jeżeli pakiet jest już zainstalowany w systemie to jest on aktualizowany. Opcja -y przeprowadza akcję bez potwierdzenia.
Instalacja pakietu system-config-keyboard:
 
| 1 2 3 4 5 | # yum –y install system-config-keyboard  …… . .  Installed:  zsh.x86_64 0:5.0.2-7.el7  Complete! | 
Aby zainstalować lub zaktualizować pakiet dcrew umieszczony lokalnie w katalogu /var/local używamy opcji localinstall:
| 1 | # yum –y localinstall /var/local/dcraw-9.19-6.el7.x86_64.rpm | 
Aby zaktualizować zainstalowany pakiet do najnowszej dostępnej wersji (yum pokaże błąd jeżeli pakiet nie jest zainstalowany):
| 1 | # yum –y update autofs | 
Aktualizacja wszystkich zainstalowanych w systemie pakietów do najnowszej wersji:
| 1 | # yum –y update | 
Instalacja lub aktualizacja grupy pakietów jak np. Smart Card Support:
| 1 | # yum –y group install “Smart Card Support” | 
Aktualizacja Smart Card Support group do najnowszej wersji:
| 1 2 | # yum –y group update “Smart Card Support” <!--EndFragm--> | 
Sprawdzanie czy są aktualizacje do zainstalowanych pakietów.
Yum pozwala nam sprawdzić czy aktualizacje są dostępne i w jakich włączonych repozytoriach się znajdują:
 
| 1 2 3 4 5 6 | # yum check-update  …… . .  dhclient.x86_64 1 2:4.2.5-27.el7_0.1 rhel-7-server-rpms  dhcp-common.x86_64 1 2:4.2.5-27.el7_0.1 rhel-7-server-rpms  dhcp-libs.x86_64 1 2:4.2.5-27.el7_0.1 rhel-7-server-rpms  …… . . | 
Powyższy wynik wskazuje na to, że nowsze wersje dostępne są na wszystkich włączonych repozytoriach.
Usuwania pakietów i grup pakietów.
Podczas usuwania pakietu usuwane zostają także pakiety zależne co wymaga potwierdzenia chyba, że użyta zostanie opcja -y.
Aby usunąć pakiet dcraw i pakiety zależne:
| 1 | # yum -y remove dcraw | 
Aby usunąć grupę pakietów:
| 1 2 3 4 5 6 7 8 | # yum -y group remove "Scientific Support"   …… . .  Removed:  atlas.x86_64 0:3 .1 0.1 -7.el7 lapack.x86_64 0:3 .4.2-4.el7  numpy.x86_64 1 :1 .7.1 -1 0.el7  Dependency Removed:  nfsometer.noarch 0:1 .7-0.el7 python-matplotlib.x86_64 0:1 .2.0-1 5.el7  Complete! | 
Wyszukiwanie pakietów.
Aby wyszukać pakiet, który zawiera konkretny plik np. /bin/bash:
| 1 | # yum provides /bin/bash | 
Aby wyszukać pakiet, który zawiera pliki pasujące do wzorca  np. /bin/bash:
 
| 1 | # yum provides /usr/bin/system-config-* | 
Aby wyszukać pakiet, który ma konkretny łańcuch w nazwie:
| 1 | # yum search system-config | 
Listowanie pakietów i grup pakietów.
Listowanie pakietów zainstalowanych w systemie:
 
| 1 2 3 4 5 | # yum list installed  Installed Packages  GConf2.x86_64 3 .2.6-8.el7 @anaconda/7.0  ModemManager.x86_64 1 .1 .0-6.git201 3 091 3 .el7 @anaconda/7.0  …… . . | 
Listowanie pakietów dostępnych ze wszystkich skonfigurowanych w systemie repozytoriów:
| 1 | # yum list available | 
Listowanie pakietów tych zainstalowanych w systemie i tych dostępnych ze wszystkich skonfigurowanych w systemie repozytoriów:
| 1 | # yum list | 
Listowanie pakietów dostępnych ze wszystkich skonfigurowanych w systemie repozytoriów, które możemy zaktualizować:
| 1 | # yum list updates | 
Sprawdzenie czy dany pakiet (np. bc) jest zainstalowany w systemie lub czy jest dostępny ww repozytorium:
| 1 | # yum list bc | 
Listowanie wszystkich zainstalowanych pakietów posiadających nazwę zaczynającą się od łańcucha “gnome”:
| 1 | # yum list installed gnome* | 
Listowanie ostatnio dodanych pakietów:
| 1 | # yum list recent | 
Listowanie zainstalowanych i dostępnych grup pakietów:
| 1 | # yum groups summary | 
Listowanie wszystkich grup pakietów dostępnych do instalacji:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # yum group list  Available environment groups:  Minimal Install  Infrastructure Server  File and Print Server  Basic Web Server  Virtualization Host  Server with GUI  Available Groups:  Compatibility Libraries  Console Internet Tools  Development Tools  Graphical Administration Tools  Legacy UNIX Compatibility  Scientific Support  Security Tools  Smart Card Support  System Administration Tools  System Management  Done | 
Listowanie konkretnej grupy pakietów o nazwie np. base:
| 1 2 3 4 5 6 7 8 9 10 11 | # yum group info base  …… . .  Group: Base  Group-Id: base  Description: The basic installation of Red Hat Enterprise Linux.  Mandatory Packages:  acl  at  attr  authconfig  …… . . | 
Wyświetlanie informacji o pakietach i o grupach pakietów.
Informacje o pakiecie:
 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # yum info autofs  …… . .  Name : autofs  Arch : x86_64  Epoch : 1  Version : 5.0.7  Release : 40.el7  Size : 3 .6 M  Repo : installed  From repo : dvd  Summary : A tool for automatically mounting and unmounting filesystems  License : GPLv2+  Description : autofs is a daemon which automatically mounts filesystems when you use them, and unmounts them later when you are not using them.  T his can include network filesystems, CD-ROMs, floppies, and so forth.  …… . . | 
Informacje o grupie pakietów:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # yum group info “System Administration Tools”  …… . .  Group: System Administration Tools  Group-Id: system-admin-tools  Description: Utilities useful in system administration.  Optional Packages:  conman  crypto-utils  dump  expect  hardlink  lsscsi  mc  mgetty  …… | 
Pobieranie pakietów.
Narzędzie yumdownloader pozwala pobierać pakiety z dostępnych repozytoriów, np:
 
| 1 2 3 4 | # cd /var/local  # yumdownloader –v dhclient  …… . .  dhclient-4.2.5-27.el7_0.1.x86_64.rpm | 276 kB 00:00 | 
Wyświetlanie historii tranzakcji yum.
Domyślnie yum przechowuje informacje o tranzakcjach w bazie danych w katalogu /var/lib/yum/history. Baza danych historii zawiera numeryczne ID przypisane każdej tranzakcji, konto użytkownika używane do tranzakcji, data i czas tranzakcjji, przeprowadzoną akcję, pakiety zawiązane z tą akcją, status ukończenia i inne.
Aby wyświetlić ostatnie 20 tanzakcji:
| 1 | # yum history list | 
Aby wyświetlić wszystkie poprzednie tranzakcje:
| 1 | # yum history list all | 
Aby wyświetlić podsumowanie wszystkich ostatnich tranzakcji:
| 1 | # yum history summary | 
Aby wyświetlić tylko tranzakcję od 1 do 3:
| 1 | # yum history list 1..3 | 
Ćwiczenie 1. Tworzenie lokalnego repozytorium yum.
Tworzymy katalog /var/local i wchodzimy do niego:
| 1 | # mkdir –p /var/local && cd /var/local | 
Kopiujemy pakiet dcraw-9.19-6.el7.x86_64.rpm z katalogu /mnt/Packages do tego katalogu:
| 1 | # cp /mnt/Packages/dcraw* . | 
Instalujemy pakiet createrepo w systemie:
| 1 2 3 4 5 | # yum –y install createrepo  …… . .  Installed:  createrepo.noarch 0:0.9.9-23.el7  Complete! | 
Wykonujemy polecenie createrepo w katalogu /var/local directory aby utworzyć niezbędną strukturę katalogów dla tego repozytorium. Tworzony zostaje podkatalog repodata, który zawiera potrzebne pliki.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # createrepo –v /var/local  Spawning worker 0 with 1 pkgs  Worker 0: reading dcraw-9.19-6.el7.x86_64.rpm  Workers Finished  Saving Primary metadata  Saving file lists metadata  Saving other metadata  Generating sqlite DBs  Starting other db creation: Sat Sep 20 19:16:23 2014  Ending other db creation: Sat Sep 20 19:16:23 2014  Starting filelists db creation: Sat Sep 20 19:16:23 2014  Ending filelists db creation: Sat Sep 20 19:16:23 2014  Starting primary db creation: Sat Sep 20 19:16:23 2014  Ending primary db creation: Sat Sep 20 19:16:23 2014  Sqlite DBs complete # ll /var/local/repodata  -rw-r--r--. 1 root root 405 Sep 20 20:12 14a0de541849305bd40a7018b37fd84fdd0e01f3cdec84567fa120cd6a27300efilelists.xml.gz  -rw-r--r--. 1 root root 1266 Sep 20 20:12 2dd56fc065d5cbaa0bc40d37fd8beda5201fee6ab841c03837dc46471f2b6e52-  other.sqlite.bz2  -rw-r--r--. 1 root root 1519 Sep 20 20:12 4a9e531db6f1afd7fbd0a183b233fa7a67837b64be2081f3be9443b247a71da7-  filelists.sqlite.bz2  -rw-r--r--. 1 root root 857 Sep 20 20:12 bd2e6608330c3a2fa47b617f5f6bbe13fcf6d3b9b0986a792182d4fb1ece433cprimary.xml.gz  -rw-r--r--. 1 root root 2090 Sep 20 20:12 d6eb83ee59b9e17930105f4f4e365e41dcd1e813eb7bd23e447b66068d33087fprimary.sqlite.bz2  -rw-r--r--. 1 root root 646 Sep 20 20:12  …… . . | 
Tworzymy plik definicji dla repozytorium /etc/yum.repos.d/local.repo. W pliku wpisujemy takie dane:
| 1 2 3 4 5 6 | # vi /etc/yum.repos.d/local.repo  [local]  name=local repo  baseurl=file:///var/local/  enabled=1  gpgcheck=0 | 
Czyszczenie cache yum:
| 1 2 3 4 | # yum clean all   Loaded plugins: langpacks, product-id, subscription-manager   Cleaning repos: local rhel-7-server-rpms   Cleaning up everything | 
Potwierdzenie, że repozytorium zostało utworzone i jest dostępne do użytku:
| 1 2 3 4 5 6 7 8 9 10 11 | # yum –v repolist   …… . .   Repo-id : local   Repo-name : local repo   Repo-revision : 1 411 2583 56   Repo-updated : Sat Sep 20 20:1 2:3 7 201 4   Repo-pkgs : 1   Repo-size : 227 k   Repo-baseurl : file:///var/local   Repo-expire : 21 ,600 second(s) (last: Sat Sep 20 20:1 7:1 9 201 4)   Repo-filename : ///etc/yum.repos.d/local.repo | 
Ćwiczenie 2. Tworzenie repozytorium yum DVD.
Montujemy płytę instalacyjną DVD z RHEL7 w katalogu /mnt:
| 1 | # mount –o ro /dev/cdrom /mnt | 
Tworzymy plik z definicją repozytorium /etc/yum.repos.d/dvd.repo. W pliku definicji wpisujemy:
| 1 2 3 4 5 6 | # vi /etc/yum.repos.d/dvd.repo  [dvd]  name=dvd repo  baseurl=file:///mnt  enabled=1  gpgcheck=0 | 
Potwierdzenie, że repozytorium zostało utworzone i jest dostępne do użytku:
| 1 2 3 4 5 6 7 8 9 10 11 | # yum –v repolist  …… . .  Repo-id : dvd  Repo-name : dvd repo  Repo-revision : 1 3 9944873 2  Repo-updated : Wed May 7 03 :45:3 4 201 4  Repo-pkgs : 4,3 05  Repo-size : 3 .1 G  Repo-baseurl : file:///mnt  Repo-expire : 21 ,600 second(s) (last: Sat Sep 20 20:25:28 201 4)  Repo-filename : ///etc/yum.repos.d/dvd.repo | 
Ćwiczenie 3. Zarządzanie pakietami przy użyciu yum.
Usuwamy pakiet ntp:
| 1 2 3 4 5 6 7 8 | # yum –y erase ntp  …… . .  Running transaction  Erasing : ntp-4.2.6p5-1 8.el7.x86_64 1 /1  Verifying : ntp-4.2.6p5-1 8.el7.x86_64 1 /1  Removed:  ntp.x86_64 0:4.2.6p5-1 8.el7  Complete! | 
Zmieniamy katalog na /var/local i pobieramy pakiet ntp:
| 1 2 | # cd /var/local ; yumdownloader ntp  ntp-4.2.6p5-1 8.el7.x86_64.rpm | 53 9 kB 00:00 | 
Wydajemy polecenie ll command na pliku ntp aby się upewnić, że pakiet został pobrany:
| 1 2 | # ll ntp*  -rw-r--r--. 1 root root 552196 Apr 2 12:39 ntp-4.2.6p5-18.el7.x86_64.rpm | 
Instalujemy pakiet:
| 1 2 3 4 5 6 7 8 | # yum –y localinstall /var/local/ntp-4.2.6p5-18.el7.x86_64.rpm  …… . .  Running transaction  Installing : ntp-4.2.6p5-1 8.el7.x86_64 1 /1  Verifying : ntp-4.2.6p5-1 8.el7.x86_64 1 /1  Installed:  ntp.x86_64 0:4.2.6p5-1 8.el7  Complete! | 
Wyświetlamy informacje o pakiecie:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # yum info ntp  …… . .  Installed Packages  Name : ntp  Arch : x86_64  Version : 4.2.6p5  Release : 1 8.el7  Size : 1 .4 M  Repo : installed  From repo : /ntp-4.2.6p5-1 8.el7.x86_64  Summary : T he NT P daemon and utilities  URL : http://www.ntp.org  License : (MIT and BSD and BSD with advertising) and GPLv2  …… . . | 
Instalujemy grupę pakietów Smart Card Support:
| 1 2 3 4 5 6 7 8 | # yum –y group install “Smart Card Support”  …… . .  Installed:  coolkey.x86_64 0:1 .1 .0-27.el7 esc.x86_64 0:1 .1 .0-27.el7  pam_pkcs11 .x86_64 0:0.6.2-1 7.el7 pcsc-lite-ccid.x86_64 0:1 .4.1 0-5.el7  Dependency Installed:  pcsc-lite.x86_64 0:1 .8.8-4.el7 xulrunner.x86_64 0:24.8.0-1 .el7_0  Complete! | 
Wyświetlamy informacje o grupie:
| 1 2 3 4 5 6 7 8 9 10 11 12 | # yum group info “Smart Card Support”  …… . .  Group: Smart Card Support  Group-Id: smart-card  Description: Support for using smart card authentication.  Default Packages:  =coolkey  =esc  =pam_pkcs11  =pcsc-lite-ccid  Optional Packages:  opencryptoki | 
Usuwamy grupę Smart Card Support:
| 1 2 3 4 5 6 7 8 | # yum –y group remove “Smart Card Support”  …… . .  Removed:  coolkey.x86_64 0:1 .1 .0-27.el7 esc.x86_64 0:1 .1 .0-27.el7  pam_pkcs11 .x86_64 0:0.6.2-1 7.el7 pcsc-lite-ccid.x86_64 0:1 .4.1 0-5.el7  Dependency Removed:  pcsc-lite.x86_64 0:1 .8.8-4.el7  Complete! | 


