2012-12-06 97 views
3

我想檢查我創建了RPM是安裝或由用戶(客戶端)更新 像RPM構建規格文件我要檢查RPM正在安裝或更新

rpm -ivh abc.rpm 

rpm -Uvh abc.rpm 

是他們在spec文件中獲取有關此命令的信息的任何%命令。

我的要求是,如果我有一個名爲RPM ABC-0.1-2.rpm現在用戶要使用命令進行安裝前安裝abc.0.1-1.rpm rpm -ivh abc.0.1-2.rpm則允許安裝 或用戶直接更新在安裝舊版本之前用命令rpm -Uvh abc.0.1-2轉速,然後停止這樣做。

回答

1

您的%pre[un]%post[un]腳本會給出「一個數字,表示在當前安裝或刪除軟件包之後當前安裝在系統上的軟件包實例的數量」,以便告訴您RPM是當前安裝的還是不。見this section of Maximum RPM

+0

怎麼樣%postun?如何檢測軟件包是否被用戶刪除,因爲被刪除的rpm被升級到另一個版本?在這種情況下,$ 1變量會有什麼變化? – nolimit

+1

然後你會得到'0',如參考文獻中所解釋的。 –

6

爲了擴大上述:

在你%post[un]%pre[un]節還有你可以檢查,看看是否這個包在系統上已經存在(被更新的升級/清理),或者不是一個變量(第一次安裝/最終卸載)。

它看起來像這樣:

%post 
if [ $1 -eq 1 ]; then 
    echo "First install complete" 
else 
    echo "Upgrade complete" 
fi