rpm升级处理

1. 使用-U 进行升级新的rpm包的version一定要大于现有的version号(好像是在说废话),否则不能升级

2. 介绍rpm包中预定义的脚本:

%pre 在安装包之前运行

%post 在安装包之后运行

%preun 在卸载包之前运行

%postun 在卸载包之后运行

这些脚本可以帮助用户在不同的时间点完成一些必须的事情。

然后再说下RPM -U中这些脚本的调用步骤:

运行新包的 %pre
安装新文件
运行新包的 %post
运行旧包的 %preun
删除新文件未覆盖的所有旧文件
运行旧包的 %postun

大家可以仔细看看以上步骤,细心的应该已经能发问了:

1. 在执行%pre和%post上如何区分是install还是upgrade

2. 在执行%preun和%postun又如何区分upgrade和uninstall

这里就要介绍rpm的一个内部变量了:$1

Action

Count

Install the first time

1

Upgrade

2 or higher (depending on the number of versions installed)

Remove last version of package

0

对了,在需要通过$1 的值来区分是哪个操作, 如:

[plain] view plaincopy

if [ "$1"="1" ];then  
xxxx  
fi

由于在上一个release的rpm包中没有在%preun进行类似的判断,导致在upgrade中调用了%preun,这个脚本会对现有的rpm进行一些破坏。无法挽回

当然也为接下来的知识点做了铺垫,只能感叹,RPM真是博大精深啊!

请关注这个参数:--nopreun

rpm -Uvh --nopreun xxx-1.1-1.x86_64.rpm


你可能感兴趣的:(rpm升级处理)