SPEC文件中的%config、%config(noreplace)

在SPEC文件的%file段通常有一指令:%config(noreplace),这个指令是用来干什么的,和%config有什么区别呢?

1. 一个文件没有被 %config 或 %config(noreplace) 指令配置

此时,不管该文件在安装完成后,有没有在本地被修改过,当升级该 rpm 包时,该文件会被这个新的 rpm 包的里的同名文件替换,(旧文件被删除)。

2. 一个文件被 %config 指令配置

  • 该文件在新的 rpm 包里相对之前的 rpm 有变化,且在本地没有被修改过。

此时执行rpm -Uvh xxxx时,新rpm包里的该文件会替换旧的文件。(旧文件被删除)

  • 该文件在新的 rpm 包里相对之前的 rpm 有变化,且在本地被修改过。

此时执行 rpm -Uvh xxxx 时,新 rpm 包里的该文件会替换掉掉旧的文件,旧的文件会被保存为 xx.rpmsave,如 /etc/redis/redis.conf.rpmsave。

  • 该文件在新的 rpm 包里相对之前的 rpm 没有变化,且在本地没有被修改过。

此时执行r pm -Uvh xxxx 时,新 rpm 包里的该文件会替换掉旧的文件。(旧文件被删除)

  • 该文件在新的 rpm 包里相对之前的 rpm 没有变化,且在本地被修改过。

此时执行 rpm -Uvh xxxx 时,新 rpm 包里的该文件不会覆盖旧的文件,旧文件保持不变。

3. 一个文件被 %config(noreplace) 指令配置

  • 该文件在新的 rpm 包里相对之前的 rpm 有变化,且在本地没有被修改过。

此时执行rpm -Uvh xxxx 时,新rpm包里的该文件会替换旧的文件。(旧文件被删除)

  • 该文件在新的 rpm 包里相对之前的 rpm 有改变,且在本地被修改过。

此时执行rpm -Uvh xxxx 时,旧文件保持不变,新 rpm 包里的该文件被命名为xxxx.rpmnew。

  • 该文件在新的 rpm 包里相对之前的 rpm 没有变化,且在本地没有被修改过。

此时执行 rpm -Uvh xxxx 时,新 rpm 包里的该文件会替换旧的文件。(旧文件被删除)

  • 该文件在新的 rpm 包里相对之前的 rpm 没有变化,且在本地被修改过。

此时执行 rpm -Uvh xxxx 时,新rpm包里的该文件不会覆盖旧的文件,旧文件保持不变。

4.总结

文件标识在RPM升级包中是否更新了?旧版本文件未被用户编辑过旧版本文件被用户编辑过
默认No用新文件覆盖用新文件覆盖
Yes用新文件覆盖用新文件覆盖
%configNo用新文件覆盖保持旧文件
Yes用新文件覆盖旧文件改名为.rpmsave并复制新文件
%config(noreplace)No用新文件覆盖保持旧文件
Yes用新文件覆盖保持旧文件,新文件安装为.rpmnew

其中(noreplace)有效的两种情况上存在以下的问题:当spec文件中的定义改变时会发生什么?结论如下:

文件标识在RPM升级包中是否更新了?旧版本文件被用户编辑过
由%config(noreplace)改为%configYes旧文件改名为.rpmsave并安装新文件
由%config改为%config(noreplace)Yes保持旧文件,新文件安装为.rpmnew
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值