rpm Uvh 公升級時的陷阱

2021-09-20 05:27:21 字數 772 閱讀 8026

用rpm -uvh公升級後,原先的乙個軟鏈結被刪除了,而採用先rpm -e 解除安裝rpm包,再rpm -ivh 安裝包的方法,這個軟鏈結還在。這個軟鏈結是在rpm包安裝的時候建立,也只有在rpm解除安裝的時候會刪除。

為什麼uvh公升級的時候會刪除它?

軟鏈結的刪除是寫在 sepc檔案的%preun段,軟鏈結的建立在spec檔案的%post段,所以我去查了公升級的時候,spec檔案裡各個段的執行順序。

1、執行新包spec檔案中

%pre

段.2、安裝新包的相關依賴包.

3、執行新包spec檔案中的

%post

段.4、執行舊包spec檔案中的

%preun

段.5、刪除新包中不需要的舊檔案。

6、執行舊包spec檔案中的

%postun

段.

答案就很顯然了,公升級過程中是先安裝新包,再解除安裝舊包,所以軟鏈結就被刪除掉了。

當進行不同操作的時候,會傳遞不同的引數給段,完整的引數傳遞及釋義如下。

%pre和%post段

當傳遞的第乙個引數為1時,表示新安裝乙個rpm包。

當傳遞的第乙個引數為2時,表示公升級乙個已經存在的包。

%preun和%postun段

當傳遞的第乙個引數為0時,表示刪除乙個包。

當傳遞的第乙個引數為1時,表示更新乙個包。

因此,在刪除鏈結之前判斷一下所傳的引數是0還是1就ok了。

這是個坑!

建立執行緒時的幾個陷阱

建立執行緒時的幾個陷阱 前幾天幫同事查乙個多執行緒的bug,不到十秒鐘我就找到了問題的根源。n年前我曾犯過類似的錯誤,呵,今天仍然有人在重複。這些問題都比較典型,把它們寫出來,供新手參考吧。l 用臨時變數作為執行緒引數的問題。include include include void start ro...

建立執行緒時的幾個陷阱

同事makcy的blog 前幾天幫同事查乙個多執行緒的bug,不到十秒鐘我就找到了問題的根源。n年前我曾犯過類似的錯誤,呵,今天仍然有人在重複。這些問題都比較典型,把它們寫出來,供新手參考吧。l 用臨時變數作為執行緒引數的問題。include stdio h include include asse...

建立執行緒時的幾個陷阱

建立執行緒時的幾個陷阱 前幾天幫同事查乙個多執行緒的 bug,不到十秒鐘我就找到了問題的根源。n年前我曾犯過類似的錯誤,呵,今天仍然有人在重複。這些問題都比較典型,把它們寫出來,供新手參考吧。l 用臨時變數作為執行緒引數的問題。include stdio h include include asse...