Linux

如何驗證 rpm 是從頭安裝還是升級?

  • May 18, 2016

我們通過 yum 在 redhat 版本 5 上安裝了以下 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 是否保留了安裝後所有 rpm 的版本。如果不; 不能保證您可以撤消某個事務。假設 package-1 是從 install cd(或任何其他不再可用的儲存庫)安裝的;然後更新到 package-2。假設您要撤消該更新事務;這只有在您有 package-1.rpm 可用時才有可能;情況並非總是如此(而且大多數情況下並非如此)。

假設你想降級一個 rpm;您可以搜尋(yum search; 或rpm 搜尋或…)您想要的較低版本的 rpm 並安裝該版本。這將始終有效(假設您擁有所有正確的依賴項);使用yumrpm或其他。

引用自:https://serverfault.com/questions/777573