zoukankan      html  css  js  c++  java
  • rpm -Uvh 升级时的陷阱

    问题现象

            用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了。

            这是个坑!

  • 相关阅读:
    37.altium designer中的class和rules?
    36.Altium Designer(Protel)网络连接方式Port和Net Label详解
    35.在PCB中删除元件
    34.pad designer警告
    33.allegro中Autosilk top, Silkscreen top 和Assembly top三个什么区别(转)
    32.DDR2仿真结果
    31.DDR2问题3_waring?
    30.DDR2问题2_local_init_done为什么没拉高?
    29.DDR2问题1仿真模型文件
    lnmp 基础设置
  • 原文地址:https://www.cnblogs.com/morgan363/p/12369530.html
Copyright © 2011-2022 走看看