【问题标题】:rpm scriptlet ordering for install/remove/upgrade using yum使用 yum 进行安装/删除/升级的 rpm scriptlet 排序
【发布时间】:2014-03-17 13:55:26
【问题描述】:

我正在处理我们的 rpm 小脚本中的一个错误,该错误可能源于我们的小脚本在软件包安装/删除/升级期间的执行顺序。我们在 Redhat Enterprise 上使用 yum。

显然,我首先需要很好地理解 rpm 脚本的顺序 - 有趣的是,我还没有在任何地方找到一个很好的总结。

根据我的gather,这是 升级 的 scriptlet 排序:

  • %pretrans 新包
  • %pre 新包prein
  • 包安装
  • %post 新包postin
  • %preun旧包
  • 删除旧包
  • %postun旧包
  • %posttrans 新包

但是它没有列出 安装 一个以前不在系统上的新包(即不是升级)和 删除 一个的 scriptlet 顺序? 从上面的顺序我可以猜到这些顺序的样子,但我也想得到一些有根据的意见......

【问题讨论】:

  • scriptlet 的执行顺序(包括触发器)记录在 /usr/share/doc/rpm*/triggers 中多年。
  • 这怎么可能是正确的? 99% 的情况下,升级肯定只更改了几个文件,所以“删除旧包”公司怎么可能?说 /usr/sbin/nginx 在安装新版本后运行。它必须是包替换更改的文件,然后对现在过时的文件进行一些选择性的包删除,对吗?不是“删除旧包”?
  • @teknopaul“删除旧包”是我认为新包中不存在(或覆盖)旧包的特定文件。我认为。不过还是很混乱……

标签: rpm scriptlet


【解决方案1】:

第一次安装单个包的包顺序:

  • %pretrans 新包
  • %pre 新包
  • 包安装
  • %post 新包
  • %posttrans 新包

移除单个包裹的包裹顺序:

  • %preun旧包
  • 删除旧包
  • %postun旧包

【讨论】:

    【解决方案2】:

    如果您同时安装两个不同的包(例如primarysecondary),其中一个依赖于另一个(secondary 需要primary),顺序为:

    • %pretransprimary
    • %pretranssecondary
    • %preprimary
    • 安装primary
    • %postprimary
    • %presecondary
    • 安装secondary
    • %postsecondary
    • %posttransprimary
    • %posttranssecondary

    当一次删除这些包时,顺序是:

    • %preunsecondary
    • 删除secondary
    • %postunsecondary
    • %preunprimary
    • 删除primary
    • $postunprimary

    【讨论】:

      【解决方案3】:

      您有根据的猜测是正确的 - 只有相关的步骤。

      【讨论】:

        猜你喜欢
        • 2011-01-31
        • 2019-02-06
        • 1970-01-01
        • 2014-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-22
        • 2014-12-09
        相关资源
        最近更新 更多