Yum

YUM History

Yum (Yellowdog Updater, Modified) jest otwartym narzędziem do zarządzania pakietami rpm. Zapewnia automatyczne rozwiązywanie zależności pomiędzy pakietami, a także zautomatyzowany mechanizm aktualizowania oprogramowania. Yum, poza szeroko znanymi komendami (install, remove, update, remove, provides, search), od wersji 3.2.25 posiada także opcję history. Yum history jest użytecznym narzędziem w sytuacji, gdy chcemy na przykład cofnąć niepożądane skutki […]

Yum (Yellowdog Updater, Modified) jest otwartym narzędziem do zarządzania pakietami rpm. Zapewnia automatyczne rozwiązywanie zależności pomiędzy pakietami, a także zautomatyzowany mechanizm aktualizowania oprogramowania. Yum, poza szeroko znanymi komendami (install, remove, update, remove, provides, search), od wersji 3.2.25 posiada także opcję history. Yum history jest użytecznym narzędziem w sytuacji, gdy chcemy na przykład cofnąć niepożądane skutki działania yum. W tym artykule postaram się zaprezentować podstawowe funkcjonalności wspomnianej komendy.

yum history i yum history list

Yum history pozwala na wgląd w ostatnie operacje wykonane przez narzędzie yum.

[root@yum_history ~]# yum history
Loaded plugins: fastestmirror, langpacks
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     9 | osboxes.org <osboxes>    | 2018-10-21 12:30 | Install        |    4   
     8 | osboxes.org <osboxes>    | 2018-10-21 12:10 | Install        |   12   
     7 | osboxes.org <osboxes>    | 2018-10-21 12:07 | Install        |   12   
     6 | osboxes.org <osboxes>    | 2018-10-21 12:05 | Install        |    5   
     5 | osboxes.org <osboxes>    | 2018-10-21 10:48 | Update         |    5   
     4 | osboxes.org <osboxes>    | 2018-10-21 10:33 | Update         |    2   
     3 | osboxes.org <osboxes>    | 2018-10-21 09:30 | I, U           |   12  <
     2 | osboxes.org <osboxes>    | 2018-10-21 09:09 | Install        |    1 > 
     1 | System <unset>           | 2018-09-09 16:23 | Install        | 1362   
history list

Natomiast yum history list poszerza funkcjonalność yum history, umożliwiając wgląd do całej historii operacji lub tylko wybranych operacji na pakietach. Aby wylistować wszystkie operacje yum dla kernela, wykonujemy:

[root@yum_history ~]# yum history list kernel
Loaded plugins: fastestmirror, langpacks
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     2 | osboxes.org <osboxes>    | 2018-10-21 09:09 | Install        |    1   
     1 | System <unset>           | 2018-09-09 16:23 | Install        | 1362

yum history list all pozwala na wylistowanie wszystkich operacji yum w systemie.

yum history info i summary

Aby zobaczyć więcej szczegółów dotyczących danego pakietu, warto użyć yum history info:

[root@yum_history ~]# yum history info httpd
Loaded plugins: fastestmirror, langpacks
Transaction ID : 6
Begin time     : Sun Oct 21 12:05:54 2018
Begin rpmdb    : 1374:ad2f30313dd7d31dddaf0766c386f71736b1e3f0
End time       :            12:06:00 2018 (6 seconds)
End rpmdb      : 1379:0e91361104fbf27ec1de941a5d4168ffae26c9c5
User           : osboxes.org <osboxes>
Return-Code    : Success
Command Line   : install httpd
Transaction performed with:
    Installed     rpm-4.11.3-32.el7.x86_64                      @anaconda
    Installed     yum-3.4.3-158.el7.centos.noarch               @anaconda
    Installed     yum-metadata-parser-1.1.4-10.el7.x86_64       @anaconda
    Installed     yum-plugin-fastestmirror-1.1.31-45.el7.noarch @anaconda
Packages Altered:
    Dep-Install apr-1.4.8-3.el7_4.1.x86_64               @base
    Dep-Install apr-util-1.5.2-6.el7.x86_64              @base
    Install     httpd-2.4.6-80.el7.centos.1.x86_64       @updates
    Dep-Install httpd-tools-2.4.6-80.el7.centos.1.x86_64 @updates
    Dep-Install mailcap-2.1.41-2.el7.noarch              @base
history info

Z kolei yum history summary pozwala na uzyskanie krótkiego podsumowania dotyczącego historii pakietu:

[root@yum_history ~]# yum history summary docker
Loaded plugins: fastestmirror, langpacks
Login user                 | Time                | Action(s)        | Altered 
-------------------------------------------------------------------------------
osboxes.org <osboxes>      | Last day            | Install          |       12
history summary

Summary oraz info pozwalają także na identyfikację transakcji na podstawie id.

[root@yum_history ~]# yum history summary 11
Loaded plugins: fastestmirror, langpacks
Login user                 | Time                | Action(s)        | Altered 
-------------------------------------------------------------------------------
osboxes.org <osboxes>      | Last day            | Update           |        6
history summary

Yum history redo, undo, rollback

Yum history nie ogranicza nas jednak tylko do wyświetlania informacji na temat zainstalowanych pakietów. Dzięki trzem podkomendom możemy:

  • undo – cofnąć konkretną transakcję;
  • redo – powtórzyć wykonane operacje;
  • rollback – cofnąć wszystkie transakcje do momentu wskazanego przez użytkownika.
# yum history undo 9
# yum history redo 9

Komenda package-list pozwala zaobserwować akcje wykonane przez powyższe operacje dla pakietu php:

[root@yum_history ~]# yum history package-list php
Loaded plugins: fastestmirror, langpacks
ID     | Action(s)      | Package                                              
-------------------------------------------------------------------------------
    13 | Install        | php-5.4.16-45.el7.x86_64                             
    12 | Erase          | php-5.4.16-45.el7.x86_64                             
     9 | Install        | php-5.4.16-45.el7.x86_64                             
history package-list

Yum history package-info daje możliwość uzyskania większej ilości szczegółów dotyczących danej transakcji. Obydwa polecenia mogą przyjmować więcej niż jeden argument.

Warto wspomnieć o tym, że yum history redo posiada dwa opcjonalne argumenty wpływające na jego działanie:

  • force-install – reinstaluje wszystkie pakiety, które zostały zainstalowane w danej transakcji;
  • force-remove – usuwa wszystkie pakiety zaktualizowane i zdeaktualizowane podczas danej transakcji.

Baza danych yum history

Uzyskanie informacji na temat danych yum history jest zapewnione przez kilka podkomend:

  • addon-info – podaje źródła dodatkowych informacji:
[root@yum_history ~]# yum history addon-info
Loaded plugins: fastestmirror, langpacks
Transaction ID: 13
Available additional history information:
  config-main
  saved_tx
  config-repos

history addon-info
  • stats – jak sama nazwa wskazuje, podaje statystyki bazy danych:
[root@yum_history ~]# yum history stats
Loaded plugins: fastestmirror, langpacks
File        : //var/lib/yum/history/history-2018-09-09.sqlite
Size        : 1,984,512
Transactions: 13
Begin time  : Sun Sep  9 16:23:56 2018
End time    : Sun Oct 21 23:37:26 2018
Counts      :
  NEVRAC :  1,442
  NEVRA  :  1,442
  NA     :  1,426
  NEVR   :  1,442
  rpm DB :  1,442
  yum DB :  1,442
history stats
  • sync – yum history sync umożliwia uaktualnienie danych rpmdb/yumdb przechowywanych dla zainstalowanych pakietów.

Aby utworzyć nowy plik historii, należy wykonać polecenie:

[root@yum_history ~]# yum history new
Loaded plugins: fastestmirror, langpacks
history new
[root@yum_history ~]# yum history
Loaded plugins: fastestmirror, langpacks
No transactions
No accessible history to list

Jak widać na powyższych przykładach, yum history jest bardzo przydatnym narzędziem pozwalającym nie tylko na uzyskanie informacji na temat operacji na pakietach, ale także umożliwiającym powtarzanie oraz cofanie dokonanych zmian. W powyższym artykule zostały zaprezentowane podstawowe fakty dotyczące yum history. Więcej informacji z pewnością znajdziesz w manualu yum:

# man yum

Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.