RPM升级安装的脚本注意项 rpm升级时,用到的%postun %preun为旧包(机器中已经安装的包)中卸载脚本。
%pre和%post段 当传递的第一个参数为1时,表示新安装一个rpm包。 当传递的第一个参数为2时,表示升级一个已经存在的包。 %preun和%postun段 当传递的第一个参数为0时,表示删除一个包。 当传递的第一个参数为1时,表示更新一个包。
rpm升级脚本内部调用流程: 旧包 新包
prein
依赖包
postin
preun
删除旧文件
postun
DEB升级安装的脚本流程 以下为安装脚本中打印日志来显示流程,okkkkk 1 表示安装包1, xszzz2表示安装包2。arg0和arg1表示前两个参数。 安装包1: preinst okkkkkzzzz 1111 arg0[/var/lib/dpkg/tmp.ci/preinst], arg1[install] postinst okkkkkzzzz 111 arg0[/var/lib/dpkg/info/mysoft.postinst], arg1[configure]
卸载包1: prerm okkkkkzzzz 1 arg0[/var/lib/dpkg/info/mysoft.prerm], arg1[remove] postrm okkkkkzzzz 1 arg0[/var/lib/dpkg/info/mysoft.postrm], arg1[remove]
安装包1后,升级安装包2: prerm okkkkkzzzz 1 arg0[/var/lib/dpkg/info/mysoft.prerm], arg1[upgrade] preinst okkkkkzzzz 2222 arg0[/var/lib/dpkg/tmp.ci/preinst], arg1[upgrade] postrm okkkkkzzzz 1 arg0[/var/lib/dpkg/info/mysoft.postrm], arg1[upgrade] postinst okkkkkzzzz 222 arg0[/var/lib/dpkg/info/mysoft.postinst], arg1[configure]
通过以上流程,可以看到postinst无论是在安装还是升级安装时,其第二个参数都为configure,因此本次升级改造时,在preinst阶段生成了一个/etc/mysoftconfig/upgrade_flag.tmp临时文件,postinst中通过此文件判断当前是否为升级安装过程。 自动安装之reinstall.flag 当存在/etc/mysoftconfig/reinstall.flag文件时,rpm -ivh 或dpkg -i安装节点包时,也将会和升级安装一样,进行无需交互的自动安装。