CentOS/RHEL查看yum history命令的详细历史记录

时间:2020-01-09 10:44:15  来源:igfitidea点击:

如何查看有关yum交易历史的详细信息,例如更新,已删除的软件包以及其他信息。
如何在基于CentOS Linux/RHEL 6.x或者7.x的服务器上查看yum命令的历史记录?
如何使用yum命令撤消,重做或者回滚软件包?

yum命令在最新版本的CentOS/RHEL v6.x +上具有history选项。
通常在/var/lib/yum/history /目录中找到数据库。
历史记录选项是在2009年底(或者其附近)添加到yum命令的。

history命令允许管理员访问有关已在系统上运行的yum事务的历史记录的详细信息。
您可以查看过去的事务中发生了什么(假设设置了history_record config。
选项)。
您可以使用各种命令行选项来查看发生的情况,使用undo/redo/rollback对该信息进行操作并启动新的历史记录文件。
本教程显示如何使用yum history命令查找有关已安装,已更新和已删除软件包的信息。

配置要求:在CentOS/RHEL上找到yum命令版本

您需要yum版本3.2.xx或者CentOS/RHEL6.x。
使用以下命令对此进行验证:

# yum info yum | grep --color Version

CentOS v6.5的输出示例:

Version     : 3.2.29

CentOS/RHEL查看yum命令的详细历史记录

yum history命令使sysadmin可以查看有关所有Yum命令事务的信息,包括:

  • 它们发生的日期和时间。
  • 受影响的软件包数量。
  • 事务是成功还是中止。
  • 如果在事务之间更改了RPM数据库。
  • 撤消或者重做某些交易。

yum history命令语法

基本语法为:

yum history
yum history command #ID
yum history [options]
history [info|list|packages-list|summary|addon-info|redo|undo|rollback|new]

yum history命令示例以列出软件包更新

首先,验证是否已为yum命令配置了历史记录。

# ls -l /var/lib/yum/history/

输出示例:

total 1036
drwxr-xr-x. 30 root root    4096 Dec  9 11:40 2012-11-08
-rw-------.  1 root root 1050624 Dec  9 11:40 history-2012-11-08.sqlite

列出历史记录和yum历史记录

执行以下命令:

# yum history

或者

# yum history list

其中:

  • ID交易编号。
  • "登录用户",其登录会话用于发起yum的用户名。
  • 日期和时间yum发出交易的日期和时间。
  • "动作"交易期间执行的动作的列表,如下所示:
  • " D"或者"降级"软件包已降级为较旧的版本。
  • E或者Erase软件包已被删除。
  • I或者Install已安装新软件包。
  • O包或者过时包已被标记为已过时。
  • R或者Reinstall软件包已被重新安装。
  • U或者Update软件包已更新至较新版本。
  • Altered受Yum影响的软件包数量,如下所示:
    • lt;`在事务完成之前,在yum之外更改了rpmdb数据库。
  • 事务完成后,在yum之外更改了rpmdb数据库。
  • *事务未能完成。
  • ##事务成功完成,但是yum返回了一个非零的退出代码。
  • E事务成功完成,但是显示了错误或者警告。
  • P事务成功完成,但是rpmdb数据库中已经存在问题。
  • 事务成功完成,但是使用了跳过中断的命令行选项,并且跳过了某些软件包。

要查看所有交易,请按如下所示通过add选项:

# yum history list all

您只能列出一个交易或者给定范围内的交易:

# yum history list 7
# yum history list 1..3

输出示例:

Loaded plugins: downloadonly, fastestmirror, security
ID     | Login user               | Date and time    | Action(s)      | Altered
------------------------------------------------------------------------------
     3 | 106300                   | 2013-08-12 15:14 | Update         |    1   
     2 | 88177                    | 2012-11-09 14:24 | Install        |    2   
     1 | System <unset>           | 2012-11-08 19:19 | Install        |  380   
history list

如何查看列出使用yum命令完成的内核软件包操作

运行以下两个命令来查找上一次安装或者更新Linux内核软件包的时间:

# yum history list kernel
`### get info about ID no. 112 ###`
# yum history info 112

列出所有过去所有交易的摘要

语法为:

# yum history summary
# yum history summary 3
# yum history summary 1..3

输出示例:

Loaded plugins: downloadonly, fastestmirror, security
Login user                 | Time                | Action(s)        | Altered 
------------------------------------------------------------------------------
<Hyman>                   | Last day            | Install          |        1
<Hyman>                   | Last week           | E, I             |        3
root <root>                | Last week           | Update           |        1
<Hyman>                   | Last 2 weeks        | I, U             |      139
<Hyman>                   | Last 3 months       | Update           |        1
root <root>                | Last 3 months       | I, O, U          |      284
106300                     | Last 6 months       | I, U             |        6
88177                      | Over a year ago     | Install          |        2
System <unset>             | Over a year ago     | Install          |      380
history summary

找出名为nginx的软件包的历史记录

基本语法为:

# yum history list PackageNameHere
# yum history list nginx

输出示例:

Loaded plugins: downloadonly, fastestmirror, security
ID     | Login user               | Date and time    | Action(s)      | Altered
------------------------------------------------------------------------------
    28 |  <Hyman>                 | 2013-12-09 11:40 | Install        |    1 EE
history list

您还可以看到完整的历史记录,如下所示,包括版本号在内的mysql软件包,运行:

# yum history package-list mysql

输出示例:

Loaded plugins: downloadonly, fastestmirror, security
ID     | Action(s)      | Package                                              
------------------------------------------------------------------------------
    26 | Install        | mysql-5.1.71-1.el6.x86_64                            
    25 | Erase          | mysql-5.1.71-1.el6.x86_64                          EE
    24 | Install        | mysql-5.1.71-1.el6.x86_64                            
history package-list

现在,使用ID#24获取有关mysql软件包的详细信息:

# yum history info 24

输出示例:

Loaded plugins: downloadonly, fastestmirror, security
Transaction ID : 24
Begin time     : Mon Dec  2 11:35:59 2013
Begin rpmdb    : 401:d28899f68a6631be573730605bd4825fe661fcce
End time       :            11:36:03 2013 (4 seconds)
End rpmdb      : 405:47873bf26c150bf0a26279da5c62d4ae4b1c227d
User           :  <Hyman>
Return-Code    : Success
Command Line   : install mysql-server mysql
Transaction performed with:
    Installed     rpm-4.8.0-37.el6.x86_64                       @base
    Installed     yum-3.2.29-40.el6.centos.noarch               @base
    Installed     yum-plugin-fastestmirror-1.1.30-14.el6.noarch @base
Packages Altered:
    Install     mysql-5.1.71-1.el6.x86_64         @base
    Install     mysql-server-5.1.71-1.el6.x86_64  @base
    Dep-Install perl-DBD-MySQL-4.013-3.el6.x86_64 @base
    Dep-Install perl-DBI-1.609-4.el6.x86_64       @base
history info

要找出可用于某笔交易的其他信息:

# yum history addon-info id
# yum history addon-info 24

要仅获取有关上一笔交易的信息:

# yum history addon-info last

如何撤消/还原交易?

假设您使用yum命令删除了nginx软件包:

# yum erase ngnix

现在,使用yum history命令来查看事务历史记录,yum history命令提供了还原或者重复选定事务的方法。
要还原(撤消)事务,请以root用户身份在shell提示符下执行以下内容:

# yum history undo id

要撤消nginx擦除操作,请执行:

# yum history
# yum history package-list nginx

输出示例:

Loaded plugins: downloadonly, fastestmirror, security
ID     | Action(s)      | Package                                              
------------------------------------------------------------------------------
    29 | Erase          | nginx-1.4.4-1.el6.ngx.x86_64                         
    28 | Install        | nginx-1.4.4-1.el6.ngx.x86_64                       EE
history package-list

要撤消使用ID 29:

# yum history undo 29

确认再次安装了nginx:

# yum history package-list nginx
Loaded plugins: downloadonly, fastestmirror, security
ID     | Action(s)      | Package                                              
------------------------------------------------------------------------------
    30 | Install        | nginx-1.4.4-1.el6.ngx.x86_64                       EE
    29 | Erase          | nginx-1.4.4-1.el6.ngx.x86_64                         
    28 | Install        | nginx-1.4.4-1.el6.ngx.x86_64                       EE
history package-list

如何重做/重复事务?

要重复特定事务,请运行:

# yum history redo id

yum历史记录回滚选项

语法为:

# yum history rollback id

rollback命令将撤消所有事务,直到指定事务为止。
例如,如果您有3个交易,则包A; B和C分别安装其中。
然后,yum history undo 1将尝试删除软件包A,yum history重做1将尝试安装软件包A(如果尚未安装),而yum history回滚1将尝试删除软件包B和C。

yum新选项

如上所述,yum命令将交易历史存储在/var/lib/yum/history /目录中的单个SQLite数据库文件中。
要启动新的事务历史记录,请运行以下命令:

# yum history new

使用以下命令进行验证:

# yum history