9.4. 使用事务历史记录
yum history
命令允许用户查看有关 yum 事务时间表、发生日期和时间、受影响的软件包数量、这些事务是否成功还是被中止的信息,以及是否在不同事务之间更改了 RPM 数据库。此外,此命令可用于撤销或恢复某些事务。所有历史记录数据都存储在 /var/lib/yum/history/
目录中的历史记录 DB 中。
9.4.1. 列出事务
以 root
用户身份显示二十项最新事务的列表,或者在没有额外参数的情况下运行 yum history
,或者在 shell 提示符下键入以下内容:
yum
history
list
要显示所有事务,请添加 all
关键字:
yum
history
list
all
要只显示给定范围内的事务,请使用以下格式的命令:
yum history list start_id..end_id
您也可以仅列出与特定软件包或软件包相关的事务。要做到这一点,使用带有软件包名称或 glob 表达式的命令:
yum history list glob_expression…
例 9.19. 列出五个最旧的事务
在 yum history 列表中
,最新的事务会显示在列表的顶部。要显示历史记录数据库中存储的五个最旧的事务的信息,请输入:
~]# yum history list 1..5 Loaded plugins: langpacks, product-id, subscription-manager ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 5 | User <user> | 2013-07-29 15:33 | Install | 1 4 | User <user> | 2013-07-21 15:10 | Install | 1 3 | User <user> | 2013-07-16 15:27 | I, U | 73 2 | System <unset> | 2013-07-16 15:19 | Update | 1 1 | System <unset> | 2013-07-16 14:38 | Install | 1106 history list
所有形式的 yum history list
命令生成表格输出,每行由以下列组成:
-
id
- 标识特定事务的整数值。 -
登录用户
- 用于启动事务的登录会话的用户名称。此信息通常显示在Full Name <username>
表单中。对于不是由用户发布的事务(如自动系统更新),改为使用System <unset>
。 -
日期和时间
- 签发交易的日期和时间。 -
action(s)
- 事务期间执行的操作列表,如 表 9.1 “Action(s)字段的可能值” 所述。 -
更改
- 受事务影响的软件包数量,后跟 表 9.2 “Altered 字段的可能值” 所述的附加信息。
操作 | 缩写 | 描述 |
---|---|---|
|
| 至少一个软件包已降级到较旧版本。 |
|
| 至少已删除一个软件包。 |
|
| 至少已安装了一个新软件包。 |
|
| 至少一个软件包被标记为过时。 |
|
| 至少已重新安装了一个软件包。 |
|
| 至少一个软件包已更新为更新的版本。 |
符号 | 描述 |
---|---|
|
在事务完成前,rpm |
|
事务完成后,rpm |
| 事务未能完成。 |
| 事务成功完成,但 yum 返回一个非零退出代码。 |
| 事务成功完成,但会显示错误或警告。 |
|
事务成功完成,但 |
|
事务成功完成,但是使用了 |
要将任何已安装软件包的 rpmdb
或 yumdb
数据库内容与当前使用的 rpmdb 或
yumdb 数据库
同步,请输入以下内容:
yum
history
sync
要显示有关当前使用历史记录数据库的一些总体统计信息,请使用以下命令:
yum
history
stats
例 9.20. yum history stats 输出示例
~]# yum history stats Loaded plugins: langpacks, product-id, subscription-manager File : //var/lib/yum/history/history-2012-08-15.sqlite Size : 2,766,848 Transactions: 41 Begin time : Wed Aug 15 16:18:25 2012 End time : Wed Feb 27 14:52:30 2013 Counts : NEVRAC : 2,204 NEVRA : 2,204 NA : 1,759 NEVR : 2,204 rpm DB : 2,204 yum DB : 2,204 history stats
yum 还允许您显示所有过去事务的摘要。要做到这一点,以 root
用户身份运行以下命令:
yum
history
summary
要只显示给定范围内的事务,请输入:
yum history summary start_id..end_id
与 yum history list
命令类似,您可以通过提供软件包名称或 glob 表达式来显示与特定软件包或软件包相关的事务摘要:
yum history summary glob_expression…
例 9.21. 五个最新事务摘要
~]# yum history summary 1..5 Loaded plugins: langpacks, product-id, subscription-manager Login user | Time | Action(s) | Altered ------------------------------------------------------------------------------- Jaromir ... <jhradilek> | Last day | Install | 1 Jaromir ... <jhradilek> | Last week | Install | 1 Jaromir ... <jhradilek> | Last 2 weeks | I, U | 73 System <unset> | Last 2 weeks | I, U | 1107 history summary
所有形式的 yum history summary 命令都会
生成与 yum history list
输出类似的简化表格输出。
如上所示,yum history list
和 yum history summary
都面向事务,尽管它们允许您只显示与给定软件包或软件包相关的事务,但它们缺少重要的详情,如软件包版本。要从软件包的视角列出事务,以 root
用户身份运行以下命令:
yum history package-list glob_expression…
例 9.22. 跟踪软件包历史记录
例如,要跟踪 subscription-manager 和相关软件包的历史记录,在 shell 提示符后输入以下内容:
~]# yum history package-list subscription-manager\* Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager ID | Action(s) | Package ------------------------------------------------------------------------------- 2 | Updated | subscription-manager-1.13.22-1.el7.x86_64 EE 2 | Update | 1.15.9-15.el7.x86_64 EE 2 | Obsoleted | subscription-manager-firstboot-1.13.22-1.el7.x86_64 EE 2 | Updated | subscription-manager-gui-1.13.22-1.el7.x86_64 EE 2 | Update | 1.15.9-15.el7.x86_64 EE 2 | Obsoleting | subscription-manager-initial-setup-addon-1.15.9-15.el7.x86_64 EE 1 | Install | subscription-manager-1.13.22-1.el7.x86_64 1 | Install | subscription-manager-firstboot-1.13.22-1.el7.x86_64 1 | Install | subscription-manager-gui-1.13.22-1.el7.x86_64 history package-list
在本例中,初始系统安装过程中安装了三个软件包:subscription -manager、subscription- manager-firstboot 和 subscription-manager-gui。在第三个事务中,所有这些软件包已从 1.10.11 更新至 1.10.17 版本。
9.4.2. 检查事务
要以 root
用户身份显示单个事务的摘要,以以下格式使用 yum history summary
命令:
yum
history
summary
id
在这里,id 代表事务的 ID。
要更详细地检查特定的事务或事务,以 root
用户身份运行以下命令:
yum
history
info
id…
id 参数是可选的,当省略它时,yum 会自动使用最后一个事务。请注意,在指定多个事务时,您还可以使用范围:
yum history info start_id..end_id
例 9.23. yum history info 的输出示例
以下是两个事务的输出示例,每个事务都安装一个新的软件包:
~]# yum history info 4..5 Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Transaction ID : 4..5 Begin time : Mon Dec 7 16:51:07 2015 Begin rpmdb : 1252:d2b62b7b5768e855723954852fd7e55f641fbad9 End time : 17:18:49 2015 (27 minutes) End rpmdb : 1253:cf8449dc4c53fc0cbc0a4c48e496a6c50f3d43c5 User : Maxim Svistunov <msvistun> Return-Code : Success Command Line : install tigervnc-server.x86_64 Command Line : reinstall tigervnc-server Transaction performed with: Installed rpm-4.11.3-17.el7.x86_64 @rhel-7-server-rpms Installed subscription-manager-1.15.9-15.el7.x86_64 @rhel-7-server-rpms Installed yum-3.4.3-132.el7.noarch @rhel-7-server-rpms Packages Altered: Reinstall tigervnc-server-1.3.1-3.el7.x86_64 @rhel-7-server-rpms history info
您还可以查看其他信息,如事务时使用的配置选项,或者从哪个存储库以及安装某些软件包的原因。要确定某个事务有哪些可用的额外信息,以 root
用户身份在 shell 提示符后输入以下内容:
yum
history
addon-info
id
与 yum history info
类似,如果没有提供 id,yum 会自动使用最新的事务。引用最新事务的另一种方法是使用 最后一个
关键字:
yum
history
addon-info
last
例 9.24. yum
history
addon-info
输出示例
对于历史记录中的第四个事务,yum history addon-info
命令提供以下输出:
~]# yum history addon-info 4 Loaded plugins: langpacks, product-id, subscription-manager Transaction ID: 4 Available additional history information: config-main config-repos saved_tx history addon-info
yum
history
addon-info
命令的输出中提供了三种类型的信息:
-
config-main
- 事务期间使用的全局 yum 选项。有关如何更改全局选项的详情,请查看 第 9.5.1 节 “设置 [main] 选项”。 -
config-repos
- 单个 yum 软件仓库的选项。有关如何更改独立软件仓库选项的详情,请查看 第 9.5.2 节 “设置 [repository] 选项”。 -
saved_tx
-yum load-transaction
命令可以使用的数据在另一台计算机上重复事务(参见下方)。
要显示所选类型的附加信息,以 root
用户身份运行以下命令:
yum
history
addon-info
id information
9.4.3. 恢复和重复事务
除了查看事务历史记录外,yum history
命令还提供了恢复或重复所选事务的方法。要恢复事务,以 root
用户身份在 shell 提示符后输入以下内容:
yum
history
undo
id
要重复特定的事务,以 root
用户身份运行以下命令:
yum
history
redo
id
两个命令也接受 最后一个关键字来
撤销或重复最新的事务。
请注意,yum history undo
和 yum history redo
命令只会恢复或重复事务期间执行的步骤。如果事务安装了新软件包,yum history undo
命令将将其卸载,如果事务卸载了软件包,命令将再次安装它。如果这些较旧的软件包仍然可用,这个命令还会尝试将所有更新的软件包降级到之前的版本。
管理多个相同的系统时,yum 还允许您对其中一个系统执行事务,将事务详细信息存储在文件中,并在经过一段时间测试后,在剩余系统上重复同样的事务。要将事务详情保存到文件中,以 root
用户身份在 shell 提示符后输入以下内容:
yum -q history addon-info id saved_tx > file_name
将此文件复制到目标系统后,您可以以 root
用户身份运行以下命令重复事务:
yum load-transaction file_name
您可以配置 load-transaction
来忽略缺少的软件包或 rpmdb 版本。有关这些配置选项的更多信息,请参阅 yum.conf
(5)man page。
9.4.4. 启动新事务历史记录
yum 将事务历史记录存储在单个 SQLite 数据库文件中。要启动新的事务历史记录,以 root
用户身份运行以下命令:
yum
history
new
这将在 /var/lib/yum/history/
目录中创建一个新的空数据库文件。将保留旧的事务历史记录,但只要 目录中存在更新的数据库文件,就无法访问。