我们在 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 并安装该版本。这总是有效的(假设您拥有所有正确的依赖项);使用yum
,rpm
或其他。