如何从一个.spec生成特定于平台和平台的RPM子包?

dma*_*a_k 6 rpm rpmbuild

我有dunno.spec以下结构的文件:

Name:                   dunno
Vesion:                 1.0
...
BuildArch:              x86_64

%description
...
%package common
Summary:                Shared files
BuildArch:              noarch
Run Code Online (Sandbox Code Playgroud)

我想在运行后rpmbuild -ba dunno.spec我应该得到两个二进制包:

  • dunno-1.0.x86_64.rpm
  • dunno-common-1.0.noarch.rpm

但我得到:

  • dunno-1.0.x86_64.rpm
  • dunno-common-1.0.x86_64.rpm

如果我BuildArch: x86_64从规范中删除该行,那么我得到

  • dunno-1.0.noarch.rpm
  • dunno-common-1.0.noarch.rpm

如何解决?

RPM v4.4.2.3.

小智 7

将构建拆分为2个包,一个是x86_64,另一个是noarch.

您可以使用%ifarch逻辑从单个规范执行2个构建(但即使烦人,它通常更容易/更清晰地使用2个规范文件).

在x86_64子包而不是noarch子包中包含与平台无关的内容也没什么坏处.