9.4. 使用事务历史记录
yum history 命令允许用户查看有关 yum 事务时间表、发生日期和时间、受影响的软件包数量、这些事务是否成功还是被中止的信息,以及是否在不同事务之间更改了 RPM 数据库。此外,此命令可用于撤销或恢复某些事务。所有历史记录数据都存储在 /var/lib/yum/history/ 目录中的历史记录 DB 中。
9.4.1. 列出事务 复制链接链接已复制到粘贴板!
以 root 用户身份显示二十项最新事务的列表,或者在没有额外参数的情况下运行 yum history,或者在 shell 提示符下键入以下内容:
yum history list
yum history list
要显示所有事务,请添加 all 关键字:
yum history list all
yum history list all
要只显示给定范围内的事务,请使用以下格式的命令:
yum history list start_id..end_id
yum history list start_id..end_id
您也可以仅列出与特定软件包或软件包相关的事务。要做到这一点,使用带有软件包名称或 glob 表达式的命令:
yum history list glob_expression…
yum history list glob_expression…
例 9.19. 列出五个最旧的事务
在 yum history 列表中,最新的事务会显示在列表的顶部。要显示历史记录数据库中存储的五个最旧的事务的信息,请输入:
所有形式的 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 sync
要显示有关当前使用历史记录数据库的一些总体统计信息,请使用以下命令:
yum history stats
yum history stats
例 9.20. yum history stats 输出示例
yum 还允许您显示所有过去事务的摘要。要做到这一点,以 root 用户身份运行以下命令:
yum history summary
yum history summary
要只显示给定范围内的事务,请输入:
yum history summary start_id..end_id
yum history summary start_id..end_id
与 yum history list 命令类似,您可以通过提供软件包名称或 glob 表达式来显示与特定软件包或软件包相关的事务摘要:
yum history summary glob_expression…
yum history summary glob_expression…
例 9.21. 五个最新事务摘要
所有形式的 yum history summary 命令都会 生成与 yum history list 输出类似的简化表格输出。
如上所示,yum history list 和 yum history summary 都面向事务,尽管它们允许您只显示与给定软件包或软件包相关的事务,但它们缺少重要的详情,如软件包版本。要从软件包的视角列出事务,以 root 用户身份运行以下命令:
yum history package-list glob_expression…
yum history package-list glob_expression…
例 9.22. 跟踪软件包历史记录
例如,要跟踪 subscription-manager 和相关软件包的历史记录,在 shell 提示符后输入以下内容:
在本例中,初始系统安装过程中安装了三个软件包: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
yum history summary id
在这里,id 代表事务的 ID。
要更详细地检查特定的事务或事务,以 root 用户身份运行以下命令:
yum history info id…
yum history info id…
id 参数是可选的,当省略它时,yum 会自动使用最后一个事务。请注意,在指定多个事务时,您还可以使用范围:
yum history info start_id..end_id
yum history info start_id..end_id
例 9.23. yum history info 的输出示例
以下是两个事务的输出示例,每个事务都安装一个新的软件包:
您还可以查看其他信息,如事务时使用的配置选项,或者从哪个存储库以及安装某些软件包的原因。要确定某个事务有哪些可用的额外信息,以 root 用户身份在 shell 提示符后输入以下内容:
yum history addon-info id
yum history addon-info id
与 yum history info 类似,如果没有提供 id,yum 会自动使用最新的事务。引用最新事务的另一种方法是使用 最后一个 关键字:
yum history addon-info last
yum history addon-info last
例 9.24. yum history addon-info输出示例
对于历史记录中的第四个事务,yum 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
yum history addon-info id information
9.4.3. 恢复和重复事务 复制链接链接已复制到粘贴板!
除了查看事务历史记录外,yum history 命令还提供了恢复或重复所选事务的方法。要恢复事务,以 root 用户身份在 shell 提示符后输入以下内容:
yum history undo id
yum history undo id
要重复特定的事务,以 root 用户身份运行以下命令:
yum history redo id
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
yum -q history addon-info id saved_tx > file_name
将此文件复制到目标系统后,您可以以 root 用户身份运行以下命令重复事务:
yum load-transaction file_name
yum load-transaction file_name
您可以配置 load-transaction 来忽略缺少的软件包或 rpmdb 版本。有关这些配置选项的更多信息,请参阅 yum.conf(5)man page。
9.4.4. 启动新事务历史记录 复制链接链接已复制到粘贴板!
yum 将事务历史记录存储在单个 SQLite 数据库文件中。要启动新的事务历史记录,以 root 用户身份运行以下命令:
yum history new
yum history new
这将在 /var/lib/yum/history/ 目录中创建一个新的空数据库文件。将保留旧的事务历史记录,但只要 目录中存在更新的数据库文件,就无法访问。