http://www.rpm.org/max-rpm/ch-rpm-multi.html проясняет, что RPM можно использовать для таргетинга на разные платформы, но возможно ли использовать RPM для нацеливания на несколько разных вариантов в пределах платформы?

Мотивация: что-то скомпилированное для запуска на x86-64 с использованием расширений AVX не может быть запущено на более раннем оборудовании x86-64. Имя пакета может указывать на то, что используются необходимые флаги компилятора, и можно полагаться на то, что пользователь установит лучший для оборудования, но было бы лучше иметь возможность отложить такую проблему до менеджера пакетов. В противном случае один вынужден использовать только SIMD-поддержку SSE2 с наименьшим общим знаменателем и тратить большую часть аппаратного обеспечения пользователя.

1 ответ1

0

Вы можете создать пакет 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-недавний-amd-only» или «foo-недавний-intel-only»

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .