Упаковка EPEL

На этой странице содержатся рекомендации, которые неактуальны или больше не актуальны для Fedora, но всё ещё применяются к пакетам EPEL. Эти рекомендации разработаны во избежание конфликтов с основными рекомендациями по упаковке Fedora, но в случае любых конфликтов эти рекомендации имеют преимущество для пакетов EPEL.

Напоминаем, что эти рекомендации применяются только к пакетам EPEL, а не к пакетам Fedora.

Зависимости пакетов

Все зависимости пакетов EPEL (во время сборки или выполнения) ВСЕГДА ДОЛЖНЫ быть удовлетворимы в пределах целевой базы (как определено политикой EPEL) или в самом EPEL. Слабые зависимости пакетов разрешены для пакетов из других каналов RHEL, не входящих в целевую базу, таких как каналы HighAvailability или ResilientStorage. Это позволяет выполнять проверку закрытости репозитория (repoclosure) только с целевой базой, но позволяет пакетам EPEL подтягивать другие пакеты через слабые зависимости, когда включены дополнительные каналы.

Это не означает, что пакеты EPEL должны неправильно идентифицировать зависимость как слабую (например, менять Requires на Recommends). В индивидуальном порядке Руководящий комитет EPEL может предоставить исключения из этой политики. Чтобы запросить исключение, создайте заявку и добавьте тег "meeting".

ELN

ELN — это новый процесс сборки и компоновки для Fedora, который использует исходные коды Fedora Rawhide из dist-git и эмулирует сборку Red Hat Enterprise Linux. Включённые пакеты основаны на том, что планируется включить в следующий крупный выпуск RHEL, и в этом смысле ELN уже полезен для упаковщиков EPEL.

ELN Extras, однако, является расширением, которое в основном управляется упаковщиками EPEL. Учитывая, что одной из основных проблем при начальной настройке нового EPEL является обработка графа зависимостей пакетов, которые действительно интересуют наших упаковщиков (будь то библиотека, необходимая для какого-то внутреннего ПО или ПО ISV, или инструмент), и их ответвление и сборка, мы можем использовать ELN Extras следующим образом:

  • добавляйте пакеты во входные данные разрешителя содержимого ELN Extras, например пакеты KDE; обратите внимание, что здесь достаточно метаданных, чтобы указать, кто будет поддерживать такие пакеты

  • проверьте зависимости, которые подтягиваются

Первый список — это то, что действительно важно для упаковщиков, второй — просто то, что необходимо включить.

EPEL 8

Скриптлеты

Fedora движется в сторону использования файловых триггеров и отказывается от требования, чтобы упаковщики копировали и вставляли скриптлеты в большое количество пакетов. На момент написания этого текста мы пытаемся перенести все эти изменения обратно в EPEL8, чтобы пакеты Fedora могли легко собираться на EPEL8 без каких-либо изменений. Когда EPEL 8 станет достаточно старым, и обратное портирование станет невозможным или нежелательным, мы перечислим их здесь.

Макросы RPM

Не все макросы, определённые в (или встроенные в) существующих пакетах Fedora, будут работать при преобразовании spec-файла для использования в EPEL. epel-rpm-macros выполняет обратное портирование новых макросов и установлен по умолчанию в средах mock для EPEL.

Скриптлеты

Fedora движется в сторону использования файловых триггеров и отказывается от требования, чтобы упаковщики копировали и вставляли скриптлеты в большое количество пакетов. Эти скриптлеты всё ещё могут понадобиться для EPEL, и поскольку скриптлеты больше не нужны ни в одном выпуске Fedora, они перенесены сюда.

Python

Рекомендации по упаковке Python в Fedora были существенно переработаны в 2021 году. Макросы, используемые в этих рекомендациях, также доступны в RHEL 9. Пакеты Python для EPEL 9 ДОЛЖНЫ использовать эти рекомендации. Пакеты Python для EPEL 9 МОГУТ использовать более старые рекомендации по упаковке Python в Fedora эпохи 201x. Пакеты Python для EPEL 8 ОБЯЗАНЫ использовать старые рекомендации. Новые пакеты Python 2 НЕ ДОЛЖНЫ добавляться в EPEL 8, поскольку поток приложений Python 2.7 в RHEL 8 был прекращён в июне 2024 года.

Автоматически генерируемые зависимости

Генератор зависимостей времени выполнения Python, упомянутый в рекомендациях по упаковке Python в Fedora, включён по умолчанию для сборок EPEL 8 и EPEL 9.

Генератор зависимостей в RHEL 8 значительно ограничен по сравнению с генератором в Fedora и RHEL 9. Простые зависимости и минимальные/максимальные версии работают корректно, но более сложные спецификации, такие как маркеры окружения и условия совместимых выпусков, не работают. Это может привести к отсутствующим зависимостям, включённым зависимостям, которые должны были быть пропущены, или другому некорректному поведению. Упаковщик ОБЯЗАН проверять сгенерированные зависимости на корректность. Если программное обеспечение использует расширенную спецификацию зависимостей, которая не обрабатывается корректно, упаковщик ОБЯЗАН обеспечить включение зависимости. Это можно сделать либо путём исправления исходного кода для достижения желаемого результата от генератора, либо с помощью явных операторов Requires:.