2
當在已安裝的軟件包上運行yum降級時,yum是否首先刪除軟件包,然後重新安裝以前的軟件包? 作爲一個推論,在yum降級0或1時,哪個參數被傳遞給包的%prever scriptlet?百勝降級會發生什麼?
當在已安裝的軟件包上運行yum降級時,yum是否首先刪除軟件包,然後重新安裝以前的軟件包? 作爲一個推論,在yum降級0或1時,哪個參數被傳遞給包的%prever scriptlet?百勝降級會發生什麼?
好問題。從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
我的測試似乎表明%preun得到1傳遞給它。我希望能夠在%preun部分中區分升級和降級,即我想在降級時運行一些代碼,但不升級,但我認爲%preun在兩種情況下都會傳遞1。 – 2014-09-03 11:50:54
是的,這就是你會得到的。我不認爲你可以用'%preun'來判斷這是降級還是升級。無論如何,你在降級時想做什麼? – 2014-09-03 12:54:23
由於歷史原因,我們有一個rpm使用sed命令的負載將更改應用於my.cnf(mysql配置文件),檢查my.cnf是否已更改,如果是,則使用新的my.cnf重新啓動mysql。我想要的是在升級過程中備份舊my.cnf,然後在降級期間恢復備份。我應該補充一點,我們很快就會通過傀儡來管理my.cnf,所以這個問題將會消失。 – 2014-09-03 13:14:58