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