Wednesday, July 11, 2012

yum HISTORY: info|list|summary|redo|undo|new

Deși folosesc din august 2011 CentOS 6, de abia acuma am descoperit ce (mai) știe YUM. Funcția yum history este un lucru pe care eu de mult îmi doream de la 'câinele galben'.
Versiunea nouă care vine cu CentOS 6 (cu RHEL 6, cu Fedora 12, etc...), pe lângă altele, are funcția de a reveni la o stare de înainte a sistemului de operare.
Ceva asemănător am folosit înainte cu CentOS 5 cu așa numitul transaction flags: tsflags=repackage în yum.conf. Pe lângă asta, trebuia setat și %_repackage_all_erasures 1 în /etc/rpm/macros, apoi cu comanda rpm -Uhv --rollback 'dată'  se putea pune sistemul într-o stare anterioară. Bineînțeles într-o stare, în care setările de mai sus erau făcute deja.
Vestea bună este că CentOS 6 vine nativ cu versiunea mai nouă a programului yum și implicit cu funcții noi.
Toate instalările, update-urile, dezinstalările se pot vizualiza:
# yum history

Loaded plugins: fastestmirror, priorities

ID     | Login user               | Date and time    | Action(s)      | Altered

-------------------------------------------------------------------------------

    82 | System <unset>           | 2012-07-11 09:25 | I, U           |  136 EE

    81 | System <unset>           | 2012-07-03 12:01 | Update         |    1

    80 | System <unset>           | 2012-07-03 12:00 | Update         |    1 EE

    79 | System <unset>           | 2012-07-02 09:10 | Update         |    1

    78 | System <unset>           | 2012-06-27 12:07 | I, U           |   13

    77 | System <unset>           | 2012-06-27 09:17 | Update         |   10

    76 | System <unset>           | 2012-06-14 09:28 | Update         |    2

    75 | System <unset>           | 2012-06-13 09:12 | Update         |    6

    74 | System <unset>           | 2012-06-11 17:56 | Install        |    2

    73 | System <unset>           | 2012-06-08 09:38 | Update         |    3

    72 | System <unset>           | 2012-06-05 15:51 | Update         |    1 EE

    71 | System <unset>           | 2012-05-30 18:36 | Update         |    2

    70 | System <unset>           | 2012-05-29 08:49 | I, U           |    3

    69 | System <unset>           | 2012-05-25 17:41 | Update         |    1 EE

    68 | System <unset>           | 2012-05-25 16:53 | Install        |    9

    67 | System <unset>           | 2012-05-24 10:08 | Update         |    2

    66 | System <unset>           | 2012-05-22 12:32 | Update         |    1 EE

    65 | System <unset>           | 2012-05-22 12:12 | Update         |    1 EE

    64 | System <unset>           | 2012-05-22 12:05 | Update         |    1

    63 | System <unset>           | 2012-05-17 11:42 | Update         |    1

history list

Informații suplimentare pentru careva modificare cu opțiunea info:
# yum history info 81

Loaded plugins: fastestmirror, priorities

Transaction ID : 81

Begin time     : Tue Jul  3 12:01:57 2012

Begin rpmdb    : 523:ff17c8b87bea4edf9e8d878dcb46b463d865c80e

End time       :            12:02:04 2012 (7 seconds)

End rpmdb      : 523:6de95ce5d3deb90f31ede91c2aded43b1095eb54

User           : System <unset>

Return-Code    : Success

Command Line   : update ./dovecot-2.1.8-1.el6.i686.rpm --nogpgcheck

Transaction performed with:

    Updated       rpm-4.8.0-19.el6_2.1.i686                     @updates

    Updated       yum-3.2.29-22.el6.centos.2.noarch             @updates

    Installed     yum-metadata-parser-1.1.2-16.el6.i686         @base

Loading mirror speeds from cached hostfile

 * base: mirrors.ch-center.com

 * epel: ftp.astral.ro

 * extras: ftp.ines.lug.ro

 * rpmforge: ftp.lug.ro

 * rpmforge-extras: ftp.lug.ro

 * updates: ftp.ines.lug.ro

329 packages excluded due to repository priority protections

    Updated       yum-plugin-fastestmirror-1.1.30-10.el6.noarch ?

Packages Altered:

    Updated dovecot-1:2.1.7-2_132.el6.i686 @/dovecot-2.1.7-2_132.el6.i686

    Update          1:2.1.8-1.el6.i686     @/dovecot-2.1.8-1.el6.i686

history info

Cu opțiunea summary 'packagename', primim informații despre tranzacțiile în care acel pachet a fost implicat:
# yum history summary kernel-headers

Loaded plugins: fastestmirror, priorities

Login user                 | Time                | Action(s)        | Altered

-------------------------------------------------------------------------------

System <unset>             | Last day            | I, U             |      136

System <unset>             | Last 3 months       | Update           |       14

System <unset>             | Last 6 months       | I, O, U          |       39

history summary

package-list 'packagename' informații despre ce s-a întâmplat cu respectivul pachet:
# yum history package-list kernel-headers

Loaded plugins: fastestmirror, priorities

ID     | Action(s)      | Package

-------------------------------------------------------------------------------

    82 | Updated        | kernel-headers-2.6.32-220.23.1.el6.i686            EE

    82 | Update         |                2.6.32-279.el6.i686                 EE

    77 | Updated        | kernel-headers-2.6.32-220.17.1.el6.i686

    77 | Update         |                2.6.32-220.23.1.el6.i686

    63 | Updated        | kernel-headers-2.6.32-220.13.1.el6.i686

    63 | Update         |                2.6.32-220.17.1.el6.i686

    45 | Updated        | kernel-headers-2.6.32-220.7.1.el6.i686

    45 | Update         |                2.6.32-220.13.1.el6.i686

    42 | Updated        | kernel-headers-2.6.32-220.4.1.el6.i686

    42 | Update         |                2.6.32-220.7.1.el6.i686

     2 | Dep-Install    | kernel-headers-2.6.32-220.4.1.el6.i686

history package-list

undo anulează tranzacția dată. Aici, conform documentației, se poate întâmpla că pachetul de versiune mai veche nu mai există nicăieri și atunci operația va eșua. Acest lucru nu se putea întâmpla cu CentOS 5: cum spuneam mai sus tsflags=repackage, adică orice pachet dezinstalat este arhivat local, și dacă este suficient spațiu se poate reveni la orice mai veche stare a sistemului de operare fără bătaie de cap, fără teama că acea versiune oare mai există undeva pe careva mirror.

redo execută din nou exact aceeași tranzacție specificată. Nu este vorba de reinstalare, pur și simplu se execută din nou operațiile din acea tranzacție.

new creează o nouă bază de date cu istoria tranzacțiilor.

4 comments:

  1. multumesc pentru informatii, well posted ! :)

    ReplyDelete
  2. Am citit intreg articolul dar trebuie sa recunosc ca zici ca-i greaca pentru mine! :)

    ReplyDelete
    Replies
    1. Imi pare rau ca nu m-am facut de inteles. Poate asta te ajuta:
      https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Yum-Transaction_History.html

      Delete
  3. Ma bucur de acest articol si felicitari Levi ca ti-ai permis sa dai si raspunsuri!

    ReplyDelete