RPM 规范文件中每个指令(%build、%install、%clean 等)的预期用途是什么?

What is the intended use of each directive (%build, %install, %clean, etc.) in an RPM spec file?

最近我升级到新版本的 RPM (4.8.0),由于 %install 指令的行为发生变化,我的应用程序的构建过程严重中断。

根据我所做的一些网络拖网,我发现 %install 指令现在做的第一件事是删除构建目录并从头开始创建它。

这很好,只是我的规范文件已经在 %prep%build 指令的构建目录中做了一些工作,然后被 [=10 的新行为破坏了=]指令。

一旦我发现了这一点,修复就很简单了:只需完成 %install 指令中的所有工作即可。

但为什么要改变?我猜我的工作流程不是 "proper" 的方式,早期版本的 RPM 可以容忍它,但现在这种容忍已经被移除。

那么, "proper" 工作流程是什么?各种指令的预期用途是什么?

%prepextracts/etc。您的源文件等(即 Untar)

%build 构建您的二进制文件、文档等(即 ./configure && make

%install 将您的 installed/to-be-packaged 文件复制到 %buildroot.