如何验证 rpm 是否是从头安装的或升级的?

如何验证 rpm 是否是从头安装的或升级的?

我们在 redhat 版本 5 上通过 yum 安装了以下 rpm

# rpm -qa --last | head -10
  kernel-headers-2.6.18-408.el5                 Wed May 18 13:33:59 2016
  bind-utils-9.3.6-25.P1.el5_11.6               Wed May 18 13:33:59 2016
  redhat-release-5Server-5.11.0.2               Wed May 18 13:33:58 2016
  nss-3.19.1-4.el5_11                           Wed May 18 13:33:58 2016
  nspr-4.10.8-2.el5_11                          Wed May 18 13:33:58 2016
  bind-libs-9.3.6-25.P1.el5_11.6                Wed May 18 13:33:58 2016
  kernel-2.6.18-409.el5                         Wed May 18 04:13:58 2016

我如何知道这些 RPM 是从头安装的还是刚刚升级的?

我尝试rpm-qi

但从rpm-qi,如果 rpm 是从头安装的或者升级的,我们将无法获得信息。

其次,如果 rpm 已升级,那么我该如何将其降级到以前的版本?

当我尝试降级时的示例:

 yum downgrade openssh-server-5.3p1-117.el6.x86_64

 Loaded plugins: product-id, rhnplugin, security, subscription-manager
 This system is receiving updates from RHN Classic or RHN Satellite.
 Setting up Downgrade Process
 Only Upgrade available on package: openssh-server-5.3p1-117.el6.x86_64
 Nothing to do



  yum list 'openssh-server'

  Loaded plugins: product-id, rhnplugin, security, subscription-manager
  This system is receiving updates from RHN Classic or RHN Satellite.

  openssh-server.x86_64      5.3p1-117.el6
  Available Packages
  penssh-server.x86_64   5.3p1-118.1.el6_8 

答案1

显然(因为我不是yum用户,所以没有经验),yum保留交易历史记录,您可以使用

yum history

或者

yum history list 

获取交易列表然后

yum history info <transaction id>

它会告诉你安装/更新了什么等等

您可以使用以下方式撤销交易

yum history undo <transaction index>

仅基于rpm命令,据我所知,没有办法知道 rpm 是从头安装的还是更新的。我也不知道 yum 是否保留了安装后的所有 rpm 的版本。如果没有;则不能保证您可以撤消某项事务。假设 package-1 是从安装 cd(或任何其他不再可用的存储库)安装的;然后更新为 package-2。假设您想要撤消该更新事务;这只有在您有 package-1.rpm 可用时才有可能;但情况并非总是如此(并且大多数情况下并非如此)。

假设你想降级一个 rpm;你可以搜索(yum search;或rpm 搜索或...)您想要的较低版本的 rpm 并安装该版本。这总是有效的(假设您拥有所有正确的依赖项);使用yumrpm或其他。

相关内容