RHEL7: Use yum transaction history.

Share this link

Presentation

Since yum version 3.2.25 (already available in RHEL 6), it is possible to play with a transaction history.
To start with, all package installation or removal operations are recorded in the rpmdb.

To display the rpmdb version, type:

# yum version
Loaded plugins: fastestmirror, langpacks
Installed: 7/x86_64                 539:c8c53419da0ae4cba61f019df443d3c10593a208
Group-Installed: yum                 14:d92850d928d628772a0a1d95c98e078545b0eea0
version

The information in bold represents the rpmdb version. If two servers have got the same rpmdb version, there are strictly identical from a yum point of view.

Transaction history

Then, it can be interesting to know which operations were previously done: it is the main purpose of the transaction history.

To get the last yum operation done, type:

# 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

Here, you can see that the setools-console package was installed. You can also see the rpmdb version before and after the operation, the date, the time taken by the installation and the status of the operation (success/failure).

To get the list of all the previous yum recorded operations, type:

# 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

Note1: The Altered column represents the number of modified packages.
Note2: If you don’t specify the all option, you get the twenty most recent operations.
Note3: The yum history command reads the /var/log/yum.log file.

To get the details of one of these operations (here the operation called 9), type:

# 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

To get even more details about one of the operations (here the operation called 12), type:

# 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

To get the list of all the previous yum recorded operations organized by date, type:

# 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

Note: To get the list of all the previous package installations sorted per date, type:
# rpm -qa –last

To get all the operations concerning a specific package (here the kernel package), type:

# yum history list kernel
Loaded plugins: fastestmirror, langpacks
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     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

To get the details of the operations concerning a specific package (here the kernel package), type:

# 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

Transaction history changes

In the transaction history expression, you can find the transaction term. This means that you can undo and redo each and every yum previously recorded operation, even though multiple packages were involved (you still have to be careful with glibc or selinux-policy packages that have very complicated dependencies).

To undo the last operation, type:

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

To display the transaction history concerning the setools-console package, type:

# 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

To re-install the setools-console package (the operation called 12), type:

# yum history redo 12

Use of rpm

To keep a clean history, you should avoid the use of the rpm command as much as possible because it breaks the transaction history.

For example, here is a transaction history:

# 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

A new package (here zlib-devel) is installed via the rpm command:

# rpm -ivh zlib-devel-1.2.7-13.el7.x86_64.rpm

Later on, a global package update is run:

# yum update
...
Warning: RPMDB altered outside of yum.
...

Now, if we ask for the transaction history, we get:

# 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

The < and > signs displayed show that some information has been lost (the package installed via the rpm command has no associated information).

There is no way to fix this problem. Your only option is to clear the transaction history and hide all the previous yum operations. To do that, type:

# yum history new

To avoid this problem, you can type:

# yum install zlib-devel
or
# yum install /path/to/zlib-devel-1.2.7-13.el7.x86_64.rpm

Transaction recovery

If during an upgrade your system goes down when restarted, type:

# yum-complete-transaction

This command searches for incomplete or aborted yum transactions on a system and attempts to complete them.

In addition, you can watch this Red Hat video about the yum command.

Source: RHEL 6 Deployment Guide.

Additional Resources

You can also watch Andrew Mallett‘s video about Yum History (2min/2016).

1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 4.67 out of 5)
Loading...

Leave a Reply

Be the First to Comment!

Notify of
wpDiscuz

RHCSA7: Task of the day

Allowed time: 5 minutes.
Add 100MB of swap space to the machine using a new logical volume.

RHCE7: Task of the day

Allowed time: 10 minutes.
Set up a default secure MariaDB database called maria with a user named muser with all privileges.

Poll for favorite RHEL 7 book

What is your favorite RHEL 7 book to prepare RHCSA & RHCE exams?

View Results

Loading ... Loading ...

Poll for most difficult RHCSA 7 topic

What do you think is the most difficult RHCSA 7 topic?

View Results

Loading ... Loading ...

Poll for most difficult RHCE 7 topic

What do you think is the most difficult RHCE 7 topic?

View Results

Loading ... Loading ...