2014-09-02 59 views
2

當在已安裝的軟件包上運行yum降級時,yum是否首先刪除軟件包,然後重新安裝以前的軟件包? 作爲一個推論,在yum降級0或1時,哪個參數被傳遞給包的%prever scriptlet?百勝降級會發生什麼?

回答

1

好問題。從yum 3.2.22源代碼(從我的CentOS 5機器)中快速瀏覽一下,看起來它是一個單獨的事務,即remove + install。這會讓我覺得%preun會得到1傳遞給它。

爲yum.YumBase.downgrade內置的幫助,也有這樣一段話:

$ python 
Python 2.4.3 (#1, Jan 9 2013, 06:47:03) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import yum 
>>> help(yum.YumBase.downgrade) 
Help on method downgrade in module yum: 

downgrade(self, po=None, **kwargs) unbound yum.YumBase method 
    Try to downgrade a package. Works like: 
    % yum shell <<EOL 
    remove abcd 
    install abcd-<old-version> 
    run 
    EOL 
+0

我的測試似乎表明%preun得到1傳遞給它。我希望能夠在%preun部分中區分升級和降級,即我想在降級時運行一些代碼,但不升級,但我認爲%preun在兩種情況下都會傳遞1。 – 2014-09-03 11:50:54

+0

是的,這就是你會得到的。我不認爲你可以用'%preun'來判斷這是降級還是升級。無論如何,你在降級時想做什麼? – 2014-09-03 12:54:23

+0

由於歷史原因,我們有一個rpm使用sed命令的負載將更改應用於my.cnf(mysql配置文件),檢查my.cnf是否已更改,如果是,則使用新的my.cnf重新啓動mysql。我想要的是在升級過程中備份舊my.cnf,然後在降級期間恢復備份。我應該補充一點,我們很快就會通過傀儡來管理my.cnf,所以這個問題將會消失。 – 2014-09-03 13:14:58