在升级过程中,rpm 如何知道要删除哪些文件?
during upgrade, how does rpm know which files to delete?
我是包装新手。
This website 声明升级过程中的步骤是:
因此,升级过程中的操作顺序是:
- 运行 正在安装的 RPM 的 %pre 部分。
- 安装 RPM 提供的文件。
- 运行 RPM 的 %post 部分。
- 运行旧包的%preun。
- 删除所有未被新版本覆盖的旧文件。 (此步骤删除新包不需要的文件。)
- 运行旧包的%postun hook。
关于第5步,它究竟是如何确定应该删除哪些文件的?它只删除属于旧版本 %install/%post
步骤的文件吗?或者安装目录中不属于新版本 %install/%post
的任何文件(如果 "the install dir" 的概念甚至有意义)是否会被删除?
%files
部分中列出的文件。这就是为什么需要明确给出它们的原因。
您没有提到如果它们被标记 %config
它们将不会被覆盖。
RPM 将比较 %files
部分的列表。如果旧包中有一些文件在 %files
中列出而新包中没有,则将其删除。如果两个软件包都列出了它,那么 rpm 将不会删除它。
我是包装新手。
This website 声明升级过程中的步骤是:
因此,升级过程中的操作顺序是:
- 运行 正在安装的 RPM 的 %pre 部分。
- 安装 RPM 提供的文件。
- 运行 RPM 的 %post 部分。
- 运行旧包的%preun。
- 删除所有未被新版本覆盖的旧文件。 (此步骤删除新包不需要的文件。)
- 运行旧包的%postun hook。
关于第5步,它究竟是如何确定应该删除哪些文件的?它只删除属于旧版本 %install/%post
步骤的文件吗?或者安装目录中不属于新版本 %install/%post
的任何文件(如果 "the install dir" 的概念甚至有意义)是否会被删除?
%files
部分中列出的文件。这就是为什么需要明确给出它们的原因。
您没有提到如果它们被标记 %config
它们将不会被覆盖。
RPM 将比较 %files
部分的列表。如果旧包中有一些文件在 %files
中列出而新包中没有,则将其删除。如果两个软件包都列出了它,那么 rpm 将不会删除它。