【发布时间】: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“删除旧包”是我认为新包中不存在(或覆盖)旧包的特定文件。我认为。不过还是很混乱……