如何构建跨发行版的二进制 RPM 包?

Sal*_*leh 8 fedora rpm opensuse dependencies package-management

我正在尝试构建一个在 Fedora 和 openSUSE 下工作的跨发行版二进制 RPM 包。我正在使用Require:标签来设置依赖包名称。问题是每个 GNU/Linux 发行版存储库中的包名称都不同。

阅读:http : //goo.gl/3MXSq,并使用 '%if 0%{?suse_version} ' 语句给出一个跨发行版的 .spec 文件。也就是说,deps 列表将在构建时确定,而不是在安装时确定。

有没有办法在二进制 RPM 包中设置 deps 的条件列表?

Cal*_*leb 0

不,这不是你处理问题的方式。您确实需要为每个发行版构建单独的包。这将需要每个发行版的外观略有不同的规范文件,有时对于发行版的不同版本,您的目标是比当前版本更多。

您的“条件”应该更上一层楼……选择要使用的 RPM,而不是在 RPM 本身内部。如果您愿意,您可以从带有条件的脚本生成这些规范文件,以便为您自动执行此过程,但是当您从规范构建包时,您将需要特定于发行版的规范。

  • 实际上,OP 的问题是好的 - 您可以为多个发行版构建多个二进制包,所有这些都来自一个 .spec。您还可以指定每个发行版的依赖项的条件列表,这是通过 openSUSE 构建服务创建包时通常需要执行的操作:https://build.opensuse.org/ (2认同)