在升级过程中,rpm 如何知道要删除哪些文件?

during upgrade, how does rpm know which files to delete?

我是包装新手。

This website 声明升级过程中的步骤是:

因此,升级过程中的操作顺序是:

  1. 运行 正在安装的 RPM 的 %pre 部分。
  2. 安装 RPM 提供的文件。
  3. 运行 RPM 的 %post 部分。
  4. 运行旧包的%preun。
  5. 删除所有未被新版本覆盖的旧文件。 (此步骤删除新包不需要的文件。)
  6. 运行旧包的%postun hook。

关于第5步,它究竟是如何确定应该删除哪些文件的?它只删除属于旧版本 %install/%post 步骤的文件吗?或者安装目录中不属于新版本 %install/%post 的任何文件(如果 "the install dir" 的概念甚至有意义)是否会被删除?

%files 部分中列出的文件。这就是为什么需要明确给出它们的原因。

您没有提到如果它们被标记 %config 它们将不会被覆盖。

RPM 将比较 %files 部分的列表。如果旧包中有一些文件在 %files 中列出而新包中没有,则将其删除。如果两个软件包都列出了它,那么 rpm 将不会删除它。