Linux
如何驗證 rpm 是從頭安裝還是升級?
我們通過 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 並安裝該版本。這將始終有效(假設您擁有所有正確的依賴項);使用yum
,rpm
或其他。