博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rpm -Uvh 升级时的陷阱
阅读量:5882 次
发布时间:2019-06-19

本文共 572 字,大约阅读时间需要 1 分钟。

问题现象

用rpm -Uvh升级后,原先的一个软链接被删除了,而采用先rpm -e 卸载rpm包,再rpm -ivh 安装包的方法,这个软链接还在。这个软链接是在rpm包安装的时候建立,也只有在rpm卸载的时候会删除。

为什么Uvh升级的时候会删除它?

解决过程

软链接的删除是写在 sepc文件的%preun段,软链接的建立在spec文件的%post段,所以我去查了升级的时候,spec文件里各个段的执行顺序。

升级时执行顺序

1、执行新包spec文件中 %pre 段.2、安装新包的相关依赖包.3、执行新包spec文件中的 %post 段.4、执行旧包spec文件中的 %preun 段.5、删除新包中不需要的旧文件。6、执行旧包spec文件中的 %postun 段.

答案就很显然了,升级过程中是先安装新包,再卸载旧包,所以软链接就被删除掉了。

解决方法

当进行不同操作的时候,会传递不同的参数给段,完整的参数传递及释义如下。

%pre和%post段当传递的第一个参数为1时,表示新安装一个rpm包。当传递的第一个参数为2时,表示升级一个已经存在的包。%preun和%postun段当传递的第一个参数为0时,表示删除一个包。当传递的第一个参数为1时,表示更新一个包。

因此,在删除链接之前判断一下所传的参数是0还是1就ok了。

这是个坑!

转载地址:http://gcvix.baihongyu.com/

你可能感兴趣的文章
gitlab 完整部署实例
查看>>
GNS关于IPS&ASA&PIX&Junos的配置
查看>>
影响企业信息化成败的几点因素
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
struts中的xwork源码下载地址
查看>>
ABP理论学习之仓储
查看>>
我的友情链接
查看>>
Tengine新增nginx upstream模块的使用
查看>>
CentOS图形界面和命令行切换
查看>>
HTML5通信机制与html5地理信息定位(gps)
查看>>
汽车常识全面介绍 - 悬挂系统
查看>>
加快ALTER TABLE 操作速度
查看>>
学习笔记之软考数据库系统工程师教程(第一版)
查看>>
PHP 程序员的技术成长规划
查看>>
memcached 分布式聚类算法
查看>>
jquery css3问卷答题卡翻页动画效果
查看>>
$digest already in progress 解决办法——续
查看>>
虚拟机 centos设置代理上网
查看>>
Struts2中Date日期转换的问题
查看>>
mysql 数据类型
查看>>