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

Именование пакетов RPM для альтернативных конфигураций

В настоящее время я устанавливаю PHP из исходного кода в нескольких различных конфигурациях в своей среде, каждая из которых обеспечивает минимальный набор функций, необходимый для конкретного развертывания: для одного развертывания требуется поддержка сокетов UNIX через '--enable-sockets', например, но я предпочитаю не предоставлять эта функция в других развертываниях ради безопасности.

Я хотел бы встроить это в RPM, но я не уверен, как обрабатывать эти варианты конфигурации: должен ли я создавать отдельный пакет php-sockets, который предоставляет PHP, созданный с помощью --enable-sockets? Есть ли способ предоставить единый именованный пакет, который можно развернуть с разными вариантами сборки? Могу ли я свести все это в один файл спецификации, чтобы можно было делать новые обновления PHP для автоматической сборки всех различных вариантов, которые мне требуются?

Я не в своей глубине RPM по этому вопросу - просветите меня, пожалуйста!

Поскольку сокеты PHP могут быть встроены в отдельное расширение, я рекомендую вам посмотреть, как существующие SRPM собирают и упаковывают свои расширения, и проделать то же самое со своими собственными. php-sockets пакет расширения. Обратите внимание, что пакеты поставщиков обычно предоставляют встроенные сокеты, поэтому вы можете столкнуться с некоторыми удаленными пакетами, которые ожидают, что он будет установлен как часть php пакет.

В любом случае вам понадобится два отдельных пакета. Однако есть другой способ решить эту проблему. Вы можете разделить свои пакеты php на три отдельные группы пакетов: core, sockets, no-sockets. В этом случае ядро ​​будет содержать все файлы, которые являются общими для параметров компиляции сокетов и без сокетов. Затем версии с сокетами и без сокетов будут скомпилированы с соответствующими параметрами, но для этого потребуется основной пакет. Этот метод используется в пакетах Zabbix в Fedora. Вы можете посмотреть там файл спецификации, если вам интересно.