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