如何validationrpm是从头还是升级?

我们在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 

显然 (没有经验,因为我不是一个yum用户), yum保留了交易的历史,你可以列出使用

 yum history 

要么

 yum history list 

得到一个交易清单,然后

 yum history info <transaction id> 

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

你可以使用撤销事务

 yum history undo <transaction index> 

纯粹基于rpm命令,afaik没有办法知道rpm是从头安装还是更新。 我不知道yum是否保留了一次所有rpms的版本。 如果不; 不保证您可以撤消某个交易。 假设package-1是从安装cd(或任何其他不可用的版本库)安装的。 然后更新到包-2。 假设你想撤销更新事务; 那只有在package-1.rpm可用的情况下才有可能; 这并不总是(而且大多不是)的情况。

假设你想降级一个rpm; 你可以search( yum search ;或rpmsearch或…)一个较低版本的rpm你想要的,并安装一个。 这将始终工作(假设你有所有正确的依赖关系); 使用yumrpm或其他。