Presentazione
Dalla versione 3.2.25 di yum (già disponibile in RHEL 6), è possibile utilizzare la cronologia delle transazioni(transaction history).
Per cominciare, tutte le operazioni di installazione o rimozione del pacchetto sono registrate nel rpmdb.
Per visualizzare la versione rpmdb, digitare:
# yum version Loaded plugins: fastestmirror, langpacks Installed: 7/x86_64 539:c8c53419da0ae4cba61f019df443d3c10593a208 Group-Installed: yum 14:d92850d928d628772a0a1d95c98e078545b0eea0 version
Le informazioni in grassetto rappresentano la versione rpmdb. Se due server hanno la stessa versione di rpmdb, sono strettamente identici dal punto di vista di yum.
Transaction history
Quindi, può essere interessante sapere quali operazioni sono state fatte in precedenza: è lo scopo principale della cronologia delle transazioni.
Per fare l’ultima operazione yum, digita:
# yum history info Loaded plugins: fastestmirror, langpacks Transaction ID : 12 Begin time : Mon Nov 10 11:28:01 2014 Begin rpmdb : 538:541464668d769a2bb7dbfc8337e305ab6db9fb47 End time : 11:28:03 2014 (2 seconds) End rpmdb : 539:c8c53419da0ae4cba61f019df443d3c10593a208 User : root Return-Code : Success Command Line : install setools-console Transaction performed with: Installed rpm-4.11.1-16.el7.x86_64 @anaconda Installed yum-3.4.3-118.el7.centos.noarch @anaconda Installed yum-plugin-fastestmirror-1.1.31-25.el7_0.noarch @updates Packages Altered: Install setools-console-3.3.7-46.el7.x86_64 @base history info
Qui, puoi vedere che il pacchetto setools-console è stato installato. È anche possibile vedere la versione rpmdb prima e dopo l’operazione, la data, il tempo impiegato dall’installazione e lo stato dell’operazione (successo/fallimento).
Per ottenere l’elenco di tutte le operazioni registrate da yum precedentemente, digitare:
# yum history list all Loaded plugins: fastestmirror, langpacks ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 12 | root <root> | 2014-11-10 11:28 | Install | 1 11 | root <root> | 2014-11-01 06:22 | Install | 5 10 | root <root> | 2014-11-01 06:21 | Install | 7 9 | root <root> | 2014-11-01 06:04 | Install | 7 8 | root <root> | 2014-11-01 06:00 | Install | 5 7 | root <root> | 2014-10-29 17:12 | Install | 2 6 | root <root> | 2014-10-29 16:02 | Install | 9 5 | root <root> | 2014-10-29 15:39 | Install | 37 4 | root <root> | 2014-10-27 08:58 | Update | 14 3 | root <root> | 2014-10-16 10:01 | I, U | 47 2 | root <root> | 2014-09-05 15:32 | I, U | 49 1 | System <unset> | 2014-07-19 13:39 | Install | 464 history list
Nota 1: la colonna Altered rappresenta il numero di pacchetti modificati.
Nota 2: se non si specifica l’opzione all, si ottengono le venti operazioni più recenti.
Nota3: il comando yum history legge il file /var/log/yum.log.Per ottenere i dettagli di una di queste operazioni (qui l’operazione ha chiamato 9), digitare:
# yum history list 9 Loaded plugins: fastestmirror, langpacks ID | Command line | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 9 | install gcc | 2014-11-01 06:04 | Install | 7 history list
Per ottenere ulteriori dettagli su una delle operazioni (qui l’operazione chiamata 12), digitare:
# yum history info 12 Loaded plugins: fastestmirror, langpacks Transaction ID : 12 Begin time : Mon Nov 10 11:28:01 2014 Begin rpmdb : 538:541464668d769a2bb7dbfc8337e305ab6db9fb47 End time : 11:28:03 2014 (2 seconds) End rpmdb : 539:c8c53419da0ae4cba61f019df443d3c10593a208 User : root Return-Code : Success Command Line : install setools-console Transaction performed with: Installed rpm-4.11.1-16.el7.x86_64 @anaconda Installed yum-3.4.3-118.el7.centos.noarch @anaconda Installed yum-plugin-fastestmirror-1.1.31-25.el7_0.noarch @updates Packages Altered: Install setools-console-3.3.7-46.el7.x86_64 @base history info
Per ottenere l’elenco di tutte le operazioni registrate da yum precedentemente organizzate per data, digitare:
# yum history summary Loaded plugins: fastestmirror, langpacks Login user | Time | Action(s) | Altered ------------------------------------------------------------------------------- root <root> | Last day | E, I | 3 root <root> | Last 2 weeks | Install | 72 root <root> | Last 3 months | I, U | 110 System <unset> | Last 6 months | Install | 464 history summary
Nota: per ottenere l’elenco di tutte le installazioni dei pacchetti precedenti ordinati per data, digitare:
# rpm -qa –lastPer ottenere tutte le operazioni relative a un pacchetto specifico (qui il pacchetto kernel), digitare:# yum elenco elenco kernel
Plugin caricati: speedmirror, langpacks
ID | Utente di accesso | Data e ora | Azione / i | Alterato
————————————————– —————————–
3 | root <root> | 2014-10-16 10:01 | I, U | 47
2 | root <root> | 2014-09-05 15:32 | I, U | 49
1 | Sistema <unset> | 2014-07-19 13:39 | Installa | 464
lista della storiaPer ottenere i dettagli delle operazioni riguardanti un pacchetto specifico (qui il pacchetto del kernel), digitare:
# yum history package-list kernel Loaded plugins: fastestmirror, langpacks ID | Action(s) | Package ------------------------------------------------------------------------------- 3 | Install | kernel-3.10.0-123.8.1.el7.x86_64 2 | Install | kernel-3.10.0-123.6.3.el7.x86_64 1 | Install | kernel-3.10.0-123.el7.x86_64 history package-list
Modifiche alla transaction history
Nell’espressione transaction history, è possibile trovare il termine della transaction (transazione). Ciò significa che è possibile annullare e ripetere ogni operazione precedentemente registrata, anche se sono stati coinvolti più pacchetti (è necessario fare attenzione ai pacchetti di glibc o selinux-policy che hanno dipendenze molto complicate).
Per annullare l’ultima operazione, digitare:
# yum history undo last Loaded plugins: fastestmirror, langpacks Undoing transaction 12, from Mon Nov 10 11:28:01 2014 Install setools-console-3.3.7-46.el7.x86_64 @base Resolving Dependencies --> Running transaction check ---> Package setools-console.x86_64 0:3.3.7-46.el7 will be erased --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Removing: setools-console x86_64 3.3.7-46.el7 @base 1.1 M Transaction Summary ================================================================================ Remove 1 Package Installed size: 1.1 M Is this ok [y/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Erasing : setools-console-3.3.7-46.el7.x86_64 1/1 Verifying : setools-console-3.3.7-46.el7.x86_64 1/1 Removed: setools-console.x86_64 0:3.3.7-46.el7 Complete!
Per visualizzare la cronologia delle transazioni relativa al pacchetto setools-console, digitare:
# yum history list setools-console Loaded plugins: fastestmirror, langpacks ID | Command line | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 13 | history undo last | 2014-11-10 18:12 | Erase | 1 12 | install setools-console | 2014-11-10 11:28 | Install | 1 history list
Per reinstallare il pacchetto setools-console (l’operazione chiamata 12), digitare:
# yum history redo 12
Uso di rpm
Per mantenere una cronologia pulita, è necessario evitare l’uso del comando rpm il più possibile perché interrompe la cronologia delle transazioni.
Ad esempio, ecco una cronologia delle transazioni:
# yum history Loaded plugins: fastestmirror, langpacks ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 2 | root | 2014-11-21 16:18 | I, U | 85 1 | System | 2014-11-21 14:14 | Install | 464 history list
Un nuovo pacchetto (qui zlib-devel) viene installato tramite il comando rpm:
# rpm -ivh zlib-devel-1.2.7-13.el7.x86_64.rpm
Successivamente, viene eseguito un aggiornamento globale del pacchetto:
# yum update ... Warning: RPMDB altered outside of yum. ...
Ora, se chiediamo la cronologia delle transazioni, otteniamo:
# yum history Loaded plugins: fastestmirror, langpacks ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 3 | root | 2014-11-25 11:15 | I, U | 31 < 2 | root | 2014-11-21 16:18 | I, U | 85 > 1 | System | 2014-11-21 14:14 | Install | 464 history list
I segni < e > visualizzati mostrano che alcune informazioni sono andate perse (il pacchetto installato tramite il comando rpm non ha informazioni associate).
Non c’è modo di risolvere questo problema. L’unica opzione è cancellare la cronologia delle transazioni e nascondere tutte le precedenti operazioni yum. Per farlo, digita:
# yum history new
Per evitare questo problema, puoi digitare:
# yum install zlib-devel or # yum install /path/to/zlib-devel-1.2.7-13.el7.x86_64.rpm
Recupero delle transazioni
Se durante un aggiornamento il sistema si arresta al riavvio, digita:
# yum-complete-transaction
Questo comando cerca le transazioni yum incomplete od interrotte e tenta di completarle.