“dnf升级...”删除文件

“dnf升级...”删除文件

我的应用程序位于三个不同的rpm包中,我编写了它的.spec文件,安装按预期工作,dnf remove删除包并清理其配置文件等,根据需要引入依赖项等等。但是我注意到,dnf upgrade这样做时确实会用新文件覆盖旧文件(如预期的那样),但也会以某种方式删除我的配置文件。我的理解是,dnf upgrade不会先删除然后安装软件包,而是在旧文件之上安装新文件。这是交易日志dnf

Running transaction
  Preparing        :                                                              1/1
  Running scriptlet: my-app-libs-0.1.0.0-0071.x86_64                              1/1
  Upgrading        : my-app-libs-0.1.0.0-0071.x86_64                              1/6
  Upgrading        : my-app-hooks-0.1.0.0-0071.x86_64                             2/6
  Upgrading        : my-app-0.1.0.0-0071.x86_64                                   3/6
  Running scriptlet: my-app-0.1.0.0-0071.x86_64                                   3/6
  Running scriptlet: my-app-0.1.0.0-0048.x86_64                                   4/6
  Cleanup          : my-app-0.1.0.0-0048.x86_64                                   4/6
  Running scriptlet: my-app-0.1.0.0-0048.x86_64                                   4/6
  Cleanup          : my-app-hooks-0.1.0.0-0048.x86_64                             5/6
  Cleanup          : my-app-libs-0.1.0.0-0048.x86_64                              6/6
  Running scriptlet: my-app-libs-0.1.0.0-0048.x86_64                              6/6
  Verifying        : my-app-libs-0.1.0.0-0071.x86_64                              1/6
  Verifying        : my-app-libs-0.1.0.0-0048.x86_64                              2/6
  Verifying        : my-app-hooks-0.1.0.0-0071.x86_64                             3/6
  Verifying        : my-app-hooks-0.1.0.0-0048.x86_64                             4/6
  Verifying        : my-app-0.1.0.0-0071.x86_64                                   5/6
  Verifying        : my-app-0.1.0.0-0048.x86_6                                    6/6

我想知道什么是清理上面的阶段正在做。以及脚本的作用运行脚本实际上调用?

答案1

在安装、升级和卸载时调用触发器。 “升级”实际上是卸载旧版本,然后安装新版本。触发器有一个标志 ( $1),指示是否升级。完整的描述位于https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/

我在规范文件中使用以下内容:

%post
if [ $1 == 1 ] 
then
  # first time install, rather than upgrade
fi

%postun
if [ $1 == 0 ] 
then
  # actual uninstall, rather than upgrade
fi

相关内容