如何使用 rpm-ostree db 检查更新信息和变更日志

本文将教您如何使用 rpm-ostree db 及其子命令检查更新、检查更改的软件包以及阅读更改日志。

这些命令将在 Fedora Silverblue 安装,应该可以在任何使用 rpm-ostree 的操作系统上运行。

介绍

假设您对不可变系统感兴趣。 在容器技术之上构建用例时使用只读的基本系统听起来非常有吸引力,它会说服您选择使用 rpm-ostree 的发行版。

你现在发现自己在 Fedora Silverblue(或其他类似发行版)并且您想要检查更新。 但是你遇到了问题。 虽然您可以在 Fedora Silverblue 与 GNOME 软件,您实际上无法阅读他们的变更日志。 您也不能使用 dnf updateinfo 在命令行上读取它们,因为主机系统上没有 DNF。

那你该怎么办? 嗯,rpm-ostree 有子命令可以在这种情况下提供帮助。

查询更新

第一步是检查更新。 只需运行 rpm-ostree upgrade –check:

$ rpm-ostree upgrade --check
...
AvailableUpdate:
Version: 34.20210905.0 (2021-09-05T20:59:47Z)
Commit: d8bab818f5abcfb58d2c038614965bf26426d55667e52018fcd295b9bfbc88b4
GPGSignature: Valid signature by 8C5BA6990BDB26E19F2A1A801161AE6945719A39
SecAdvisories: 1 moderate
Diff: 4 upgraded

请注意,虽然它没有告诉输出中更新的包,但它确实将更新的提交显示为 d8bab818f5abcfb58d2c038614965bf26426d55667e52018fcd295b9bfbc88b4。 这将在以后有用。

接下来你需要做的是找到你正在运行的当前部署的提交。 运行 rpm-ostree status 获取当前部署的 BaseCommit:

$ rpm-ostree status
State: idle
Deployments:
● fedora:fedora/34/x86_64/silverblue
                   Version: 34.20210904.0 (2021-09-04T19:16:37Z)
                BaseCommit: e279286dcd8b5e231cff15c4130a4b1f5a03b6735327b213ee474332b311dd1e
              GPGSignature: Valid signature by 8C5BA6990BDB26E19F2A1A801161AE6945719A39
       RemovedBasePackages: ...
           LayeredPackages: ...
...

为了这 example BaseCommit 是 e279286dcd8b5e231cff15c4130a4b1f5a03b6735327b213ee474332b311dd1e。

现在您可以使用 rpm-ostree db diff 找到两个提交的差异 [commit1] [commit2]. 在此命令中,commit1 将是当前部署的 BaseCommit,commit2 将是升级检查命令中的 Commit。

$ rpm-ostree db diff e279286dcd8b5e231cff15c4130a4b1f5a03b6735327b213ee474332b311dd1e d8bab818f5abcfb58d2c038614965bf26426d55667e52018fcd295b9bfbc88b4
ostree diff commit from: e279286dcd8b5e231cff15c4130a4b1f5a03b6735327b213ee474332b311dd1e
ostree diff commit to:   d8bab818f5abcfb58d2c038614965bf26426d55667e52018fcd295b9bfbc88b4
Upgraded:
  soundtouch 2.1.1-6.fc34 -> 2.1.2-1.fc34

diff 输出显示 soundtouch 已更新并指示版本号。 通过将 –changelogs 添加到上一个命令来查看更改日志:

$ rpm-ostree db diff e279286dcd8b5e231cff15c4130a4b1f5a03b6735327b213ee474332b311dd1e d8bab818f5abcfb58d2c038614965bf26426d55667e52018fcd295b9bfbc88b4 --changelogs
ostree diff commit from: e279286dcd8b5e231cff15c4130a4b1f5a03b6735327b213ee474332b311dd1e
ostree diff commit to:   d8bab818f5abcfb58d2c038614965bf26426d55667e52018fcd295b9bfbc88b4
Upgraded:
  soundtouch 2.1.1-6.fc34.x86_64 -> 2.1.2-1.fc34.x86_64
    * dom ago 29 2021 Uwe Klotz <[email protected]> - 2.1.2-1
    - Update to new upstream version 2.1.2
      Bump version to 2.1.2 to correct incorrect version info in configure.ac

    * sex jul 23 2021 Fedora Release Engineering <[email protected]> - 2.1.1-7
    - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild

此输出显示提交说明以及版本号。

结论

使用 rpm-ostree db,您现在可以拥有等同于 dnf check-update 和 dnf updateinfo 的功能。

如果您想检查有关您安装的更新的详细信息,这将派上用场。