Spec文件中判断是升级or卸载

我们在写spec文件时,有pre、post、preun、postun等模块用于指示安装前后以及卸载前后要执行的动作,而软件升级实际上是先卸载后安装的过程,所以这些模块内动作的编写需要区分是卸载还是升级以便采取不同的动作。

那么如何来进行区分呢?

脚本片段传递一个参数,用于表示本软件包的个数。执行特定动作时,通过向 $1传递不同值,来表示不同动作(安装/升级/卸载),除了 %pretrans 和 %posttrans 它们的 $1 为 0 (rpm 4.4+ 支持 %pretrans 和 %posttrans)。对于安装、升级和卸载,所传递的参数值如下表所示:

项目 安装(install) 升级(update/upgrade) 卸载(remove/erase)
%pre $1==1 $1 == 2 (N/A)
%post $1 == 1 $1 == 2 (N/A)
%preun (N/A) $1 == 1 $1 == 0
%postun (N/A) $1 == 1 $1 == 0
%pretrans $1 == 0 $1 == 0 (N/A)
%triggerprein 安装本包: $1 == 0, $2 == 1 安装目标包: $1 == 1, $2 == 0 $1 == 1, $2 == 1 (N/A)
%triggerin $1 == 1, $2 == 1 升级本包: $1 == 2, $2 == 1升级目标包: $1 == 1, $2 == 2 (N/A)
%triggerun (N/A) $1 == 1, $2 == 1 卸载本包: $1 == 0, $2 == 1卸载目标包: $1 == 1, $2 == 0
%triggerpostun (N/A) 升级目标包: $1 == 1, $2 == 1 卸载目标包: $1 == 1, $2 == 0
%posttrans $1 == 0 $1 == 0 (N/A)

注意,如果安装相同软件包的多个版本,这些参数值将会不同(这发生于同时安装包,如 kernel 和 multilib 包。然而,它会引发错误,防止软件包升级完成)。所以,使用以下结构的脚本是个好主意:

%pre
if [ $1 -gt 1 ] ; then   # -gt大于
fi

Spec文件中判断是升级or卸载相关推荐

  1. linux编译时开启宏,【spec】Linux上编译安装的spec文件中的常用路径以及宏变量

    我们在Linux上利用 rpmbuild 构建 rpm 安装包时,通过命令rpm --showrc 查看实现代码,另外直接通过 rpm --eval "%{macro}"来查看具体 ...

  2. Qt pro工程文件中判断宏定义是否存在

    在Qt工程文件中如果自定义了宏,那么在如果要判断该宏是否存在,可以这么写 xx.pro 添加宏定义: DEFINES += ANDROID_TV 判断宏定义是否存在 contains(DEFINES, ...

  3. QT.pro工程文件中判断宏定义是否存在

    在QT .pro文件中添加自定义了宏: DEFINES += ANDROID_TV 那么如果要判断该宏是否存在,可以这么写 xx.pro contains(DEFINES,ANDROID_TV) { ...

  4. spec linux,linux – 在RPM包中SPEC文件中1%{?dist}的含义是什么?

    1%{?dist}是什么意思? 这是什么意思? 我没有在任何地方找到这个意思 Name: hello Version: 2.8 Release: 1%{?dist} Summary: The &quo ...

  5. spec文件中的 %pre %post %preun %postun

    转载 http://meinit.nl/rpm-spec-prepostpreunpostun-argument-values RPM has 4 parts where (shell) script ...

  6. RPM包制作之Spec文件详解

    看这篇文章的人基本都有一个想法,就是:"劳资不想用YUM的安装!不是版本太低就是文件分布太野路子",此时我们需要自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包 ...

  7. linux rqm包制作 spec文件详解

    看这篇文章的人基本都有一个想法,就是:"不想用YUM的安装!不是版本太低就是文件分布太野路子",此时我们需要自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包,其 ...

  8. linux安装spec编译器,RPM包制作之Spec文件参数详解

    看这篇文章的人基本都有一个想法,就是:"劳资不想用YUM的安装!不是版本太低就是文件分布太野路子",此时我们需要自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包 ...

  9. linux spec 脚本,RPM包制作之Spec文件详解

    看这篇文章的人基本都有一个想法,就是:"劳资不想用YUM的安装!不是版本太低就是文件分布太野路子",此时我们需要自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包 ...

  10. AIX下批量替换文件中的字符串 linux替换包含换行符的内容

    示例:将所有CPP文件中的__cplusplus替换为 __cplusplus_xsz perl -p -i -e "s/__cplusplus/__cplusplus_xsz/g" ...

最新文章

  1. C++语言学习(十二)——C++语言常见函数调用约定
  2. 【译】SQL Server误区30日谈-Day1-正在运行的事务在服务器故障转移后继续执行
  3. windows10下mysql-8.0.21的安装和使用
  4. 一次失败的尝试:Ubuntu 故障修复
  5. 苹果手机数据转移到新手机_买了新手机,数据迁移用它轻松搞定
  6. 计算机组装比赛看什么书呀,现在学习计算机组装,还有硬体知识,看什么书好?推荐一下...
  7. 3750交换机简要配置手册(中文)
  8. 推荐系统——协同过滤
  9. std::mutex详解
  10. [CTSC2017]吉夫特(Lucas定理,DP)
  11. android+查看内存容量apk,如何检查 Android 应用的内存使用情况
  12. 【SEM】1 基本概念
  13. 如何使用Java计算闰年?
  14. 【教学类-07-04】20221113《破译电话号码-加减法版+自制(PDF打印)》(大班主题《我要上小学》)
  15. c语言编写日历作业,c语言实现一个简单日历
  16. 用8051单片机编程由P1.0和P1.1引脚分别输出周期为1ms和500us的方波
  17. Vatti clipping 算法介绍
  18. 正大国际期货:外盘期货中几种买入卖出价有何区别?
  19. JavaAndroid调试方法
  20. java实验指导_《JAVA程序设计》实验指导书(完整).pdf

热门文章

  1. Debian6.02 终端中文设置--FBTerm + ucimf
  2. eclipse vail_屏幕快照:Windows Home Server Beta“ Vail”安装过程
  3. 去除firefox火狐更新提示
  4. 各种IT学习视频和资料
  5. 带你玩转区块链--区块链面试问题及答案-第四章【总结篇】
  6. springboot+社区购物小程序 毕业设计-附源码291720
  7. 大数据查询语句SQL
  8. bootstrap Less
  9. 一年成为Emacs高手 (像神一样使用编辑器)
  10. 复制粘贴之后出现问号怎么办_CAD图形文字复制粘贴以后出现变化该怎么办?