http://www.rpm.org/max-rpm/ch-rpm-multi.html明确指出 RPM 可用于针对不同的平台,但是否可以使用 RPM 针对平台内的多种不同风格?
动机:使用 AVX 扩展编译为在 x86-64 上运行的程序无法在早期的 x86-64 硬件上运行。软件包名称可以指定使用了必要的编译器标志,并且可以依靠用户安装最适合硬件的标志,但最好能够将此类问题推迟到软件包管理器。否则,人们将被迫仅使用最小公分母 SSE2 SIMD 支持,并浪费大量用户硬件。
答案1
您可以创建启用某些扩展的 RPM 软件包。这没有问题。但是您不能使用 /usr/bin/rpm 来处理限制并为平台选择最佳软件包。
但用户可以这样做。
您可以创建以下包:
Name: foo-general
Provides: foo
然后还有一些其他的:
Name: foo-recent-amd-only
Provides: foo
Name: foo-recent-intel-only
Provides: foo
每个包都可以用不同的编译器标志来构建。它们甚至可以从一个源包构建。
因此,如果其他软件需要(或用户安装)“foo”,他可以选择安装 foo-general、foo-recent-amd-only 或 foo-recent-intel-only