我有点是编写规范文件和构建RPM的新手。目前,我有一个RPM,应该将某些文件部署在2个可能的目录中的1个中,这些目录会随操作系统的不同而不同。

如何在%files部分中验证它们?我不能使用变量...我无法验证这两个路径,因为肯定会失败...我试图在%install部分的前面定义一个宏,但是它只会被定义一次,并且不会被重新定义在每个RPM安装中...

我在这里可以做什么?

谢谢

最佳答案

%files节中可以包含变量,但是通常这类似于您定义的路径,因此您不必一堆重复。因此%{long_path}/file_name,其中long_path是在规范文件中较早定义的。 %files部分是进入RPM数据库的所有信息,并且是在构建RPM时创建的,因此安装时将无法根据计算机信息更改这些值。

如果确实要执行此操作,则可以在主tarball中包含一个tar文件,该文件会根据某些条件被提取(因为spec文件只是bash)。现在请记住,这是一个可怕的主意。 RPM数据库不会跟踪这些文件,因此,当您删除RPM时,这些文件将仍然存在。

实际上,您应该构建两个RPM,这将为将来提供更好的支持,以便将来您必须将其移交给某人时,以及从现在起一年保留自己的理智(当您需要更新RPM时)。

关于rpmbuild - 如果条件在SPEC文件的%Files部分中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18701771/

10-14 22:45