Product SiteDocumentation Site

6.2.2. Директивы преамбулы

В Директивы преамбулы spec-файла перечислены директивы, используемые в разделе преамбулы файла спецификации RPM.

Таблица 6.1. Директивы преамбулы spec-файла

SPEC-директива
Определение
Name
Базовое имя пакета (должно совпадать с именем spec-файла)
Version
Версия upstream-кода
Release
Релиз пакета используется для указания номера сборки при данной версии upstream-кода.
Для пакетов Sisyphus поле Release должно иметь вид:
  • в простых случаях — altN;
  • в сложных — altN[суффикс].
Значение N начинается с 1 для каждой новой upstream-версии и увеличивается на 1 для каждой новой сборки:
  • 1.0-alt1
  • 1.0-alt2
Epoch
Используется, если необходимо уменьшить версию или релиз пакета по сравнению с имеющимся в репозитории. В этом случае значение Epoch увеличивается на единицу относительно предыдущего (отсутствие поля эквивалентно значению 0), а версия и релиз устанавливаются в требуемые значени
Epoch не входит в имя RPM-файла, поэтому следует избегать пакетов с одинаковыми Version и Release, но разными Epoch.
Summary
Краткое однострочное описание пакета. Должно начинаться с заглавной буквы и не заканчиваться точкой
License
Лицензия программного обеспечения. Должна указываться в точности так, как сформулировано в upstream-пакете.
При указании лицензии рекомендуется пользоваться макросами из пакета rpm-build-licenses, добавив его в список BuildRequires.
Текст лицензии включается в пакет только если он отсутствует в /usr/share/license (пакет common-licenses). В противном случае достаточно указать название лицензии
Group
Категория пакета. Должна соответствовать списку групп RPM (файл /usr/lib/rpm/GROUPS из пакета rpm)
URL
Полный URL-адрес для получения дополнительной информации о программе.
Рекомендуется указывать действующий URL домашней страницы проекта или другой источник исходного кода.
Для директивы URL можно использовать утилиту rpmurl. Например, проверка доступности URL:
$ rpmurl -c пакет.spec
Source0
Путь или URL к архиву исходного кода (без учёта патчей). Должен указывать на надёжный внешний источник (например, upstream), а не на локальное хранилище.
Дополнительные источники задаются как Source1, Source2 и т. д.
Patch0
Название первого патча, применяемого к исходному коду. Дополнительные патчи задаются как Patch1, Patch2 и т. д.
BuildArch
Явное указание архитектуры, под которую собирается двоичный пакет. Если не задано, используется архитектура системы сборки (например, x86_64).
Для архитектурно-независимых пакетов указывается noarch.
BuildRequires, BuildPreReq, BuildRequires(pre)
Список пакетов, необходимых для сборки (разделяется запятыми или пробелами). Может быть несколько записей BuildRequires, каждая в отдельной строке.
BuildRequires обычно формируется автоматически (например, с помощью buildreq). Дополнительные зависимости рекомендуется указывать в BuildPreReq
Requires, PreReq
Список пакетов, необходимых для работы программы после установки (разделяется запятыми или пробелами). Может быть несколько записей Requires, каждая в отдельной строке.
ExcludeArch
Исключает архитектуры, на которых пакет не может быть собран или работать
Conflicts
Список пакетов, конфликтующих с данным. Используется при наличии файловых, RPC- или логических конфликтов
Provides
Указывает, какую функциональность предоставляет пакет (например, альтернативное или устаревшее имя). Следует применять только в случае реальной необходимости и, как правило, в форме
Provides: something = %version-%release
При переименовании пакета используется совместно с Obsoletes
Obsoletes
Перечисляет устаревшие пакеты/версии. Обычно применяется при переименовании и используется вместе с Provides
Каждая директива разделяется от значения символом «:». Между именем директивы и двоеточием пробелы не допускаются.
Директивы Name, Version и Release формируют имя RPM-пакета. Их часто называют N-V-R или NVR, поскольку имя пакета имеет формат: NAME-VERSION-RELEASE.
Увидеть пример NAME-VERSION-RELEASE можно, выполнив запрос с использованием rpm для конкретного пакета:
$ rpm -q rpmspec
rpmspec-4.13.0.1-alt40.x86_64
Здесь:
  • rpmspec — имя пакета;
  • 4.13.0.1 — версия
  • alt40 — релиз
  • x86_64 — сведения об архитектуре.
В отличие от NVR, архитектура не управляется напрямую сборщиком и определяется средой сборки. Исключение составляют архитектурно-независимые пакеты (noarch).