Назад | Перейти на главную страницу

Как собрать RPM для всех версий Centos 7.X?

Разработчик предоставил источнику файл спецификации. Можно ли создать RPM, который работает во всех сборках CentOS 7.x, и это хорошая идея?

С точки зрения разработчика пакета CentOS == Red Hat Enterprise Linux (без лицензионного / защищенного авторским правом содержимого и логотипов Red Hat и без уровней поддержки предприятия)

Так что вы можете использовать обширную документацию Red Hat (хороший обзор Вот)

Совместимость с основным выпуском
Одна из основных целей семейства продуктов Red Hat Enterprise Linux - обеспечить стабильную, согласованную среду выполнения для сторонних приложений. Для достижения этой цели Red Hat стремится сохранить двоичную совместимость приложений, совместимость файлов конфигурации и совместимость файлов данных для всех обновлений пакетов, выпущенных в рамках основного выпуска. Например, обновление пакета с Red Hat Enterprise Linux 6.1 до Red Hat Enterprise Linux 6.2 или обновление пакета, которое устраняет выявленную уязвимость безопасности, не должны нарушать функциональность развернутых приложений. при условии, что они соответствуют стандартным двоичным интерфейсам приложений (ABI).
источник

Если разработчик пакета следовал инструкциям в Руководство разработчика и совместимость приложений тогда должна быть возможность создать один двоичный пакет RPM, который работает на всех уровнях исправлений / второстепенных выпусков основного выпуска CentOS / RHEL.

И это, безусловно, хорошая идея.

Если пакет не зависит от другого обновления библиотеки или чего-то, что было введено в точечном выпуске, одной сборки для всей CentOS 7 будет достаточно.

Вы можете увидеть примеры этого в репозиториях обновлений. Многие пакеты будут использовать тег% dist, который el7, но вы также можете увидеть некоторые из них, помеченные el7_4.

Видеть: http://vault.centos.org/7.4.1708/updates/x86_64/Packages/

Вы можете использовать условные выражения в вашем файле спецификации, чтобы установить определенные зависимости на основе значения тега% dist. Обычно это делается для обработки различий в зависимостях между основными выпусками, но вы можете адаптировать его к точечному выпуску.

%if "%{dist}" == "el7"
Require: package-versionA
%end
%if "%{dist}" == "el7_4"
Require: package-versionB
%end

Заметка: Это непроверенный псевдокод. Возможно, вам потребуется внести изменения, но это должно быть близко.

Затем вам нужно будет убедиться, что ваша среда сборки предоставила правильное значение тега dist для процесса сборки. Это можно сделать несколькими способами, и нам нужно будет больше узнать о вашей среде сборки.

Все Centos 7.x являются незначительными обновлениями, поэтому я не думаю, что вам нужно менять скорость вращения. Все пакеты centos имеют суффикс el7, не с el7.6 или что-то подобное, так что я думаю, вы можете сделать это безопасно (мы делаем это уже как минимум два года).