Spec: различия между версиями

Материал из ALT Linux Wiki
(Новая: == Заголовок spec-а == == <tt>%package</tt> == == <tt>%description</tt> == == <tt>%prep</tt> == == <tt>%build</tt> == == <tt>%install</tt> == == <tt>%pre</tt> == == <tt>...)
 
(Начало: всасывание релевантных частей из ALT specfile conventions, ALT RPM changes, ALT secure packaging policy)
Строка 1: Строка 1:
{{Stub}}
== Заголовок spec-а ==
== Заголовок spec-а ==
=== <tt>Summary</tt> ===
Значение тэга <tt>Summary</tt> должно начинаться с заглавной буквы. В конце <tt>Summary</tt> не должно быть точки.
=== <tt>Group</tt> ===
Указанная группа должна находиться в списке групп, известном RPM. Этот список располагается в файле <tt>/usr/lib/rpm/GROUPS</tt>, находящемся в пакете <tt>rpm</tt>.
=== <tt>Patch</tt> ===
Рекомендуемое именование патчей:
* <tt>NAME-VERSION-ORIGIN-WHAT.patch</tt>, где
** <tt>NAME</tt> и <tt>VERSION</tt> — имя и версия пакета, для которого сделан патч,
** <tt>ORIGIN</tt> — аббревиатура источников патча (обычно дистрибутивов),
** <tt>WHAT</tt> — краткое описание патча.
Если патч образован из нескольких частей, полученных из разных источников, <tt>ORIGIN</tt> должен включать аббревиатуры всех источников. Аббревиатура ALT Linux / Sisyphus — <tt>alt</tt>. Для патчей, полученных на основе системы контроля версий, <tt>ORIGIN</tt> должен включать в себя дату или номер ревизии.
В описании патча рекомендуется пользоваться следующими сокращениями:
* <tt>makefile</tt> — патчи, затрагивающие исключительно <tt>Makefile*</tt>,
* <tt>bound</tt> — проверки на границы (буфера, целых чисел и т. д.),
* <tt>config</tt> — патчи, затрагивающие исключительно конфигурационные файлы,
* <tt>configure</tt> — патчи, затрагивающие исключительно <tt>configure*</tt>,
* <tt>doc</tt> — патчи, затрагивающие исключительно документацию,
* <tt>fixes</tt> — кумулятивные патчи/исправления по надёжности и/или безопасности,
* <tt>format</tt> — патчи на использование форматирования строк (типа <tt>printf</tt>),
* <tt>install</tt> — патчи на выполнение <tt>make install</tt> непривилегированным пользователем,
* <tt>linux</tt> — патчи для портирования По на Linux,
* <tt>man</tt> — патчи, затрагивающие исключительно man-страницы,
* <tt>texinfo</tt> — патчи, затрагивающие исключительно документацию в формате texinfo,
* <tt>tmp</tt> — патчи, предназначенные для решения различных вопросов, связанных с временными файлами,
* <tt>vitmp</tt> — патчи для поддержки <tt>vitmp(1)</tt>
* <tt>warnings</tt> — патчи, исправляющие предупреждения, выданные компилятором
=== <tt>Requires</tt>, <tt>PreReq</tt> ===
При наличии логических зависимостей между пакетами внутри одного spec-файла, пакетная зависимость между ними должна включать полную версию пакета, например так:
Requires: %name = %epoch:%version-%release
=== <tt>BuildRoot</tt> ===
Тэг <tt>BuildRoot</tt> бесполезен для RPM из Sisyphus: обработку <tt>BuildRoot</tt> RPM производит самостоятельно.
=== <tt>BuildHost</tt> ===
Новый опциональный тэг в Sisyphus RPM. Позволяет переопределить имя сборочного хоста. По умолчанию используется, как и в остальных версиях RPM, результат вызова <tt>uname(2)</tt>.


== <tt>%package</tt> ==
== <tt>%package</tt> ==
Строка 10: Строка 58:


== <tt>%install</tt> ==
== <tt>%install</tt> ==
== <tt>%clean</tt> ==
Sisyphus RPM автоматически очищает BuildRoot пакета (с помощью макроса <tt>%clean_buildroot</tt>). Таким образом, ручная очистка BuildRoot является ненужной (а точнее - вредной, поскольку повышает вероятность ошибки).
Если секция <tt>%clean</tt> пуста, то рекомендуется вообще не включать её в spec-файл.


== <tt>%pre</tt> ==
== <tt>%pre</tt> ==
Строка 22: Строка 76:


== <tt>%files</tt> ==
== <tt>%files</tt> ==
В отличие от других веток RPM, Sisyphus RPM автоматически подставляет в начало каждой секции <tt>%files</tt> и в начало каждого файла, включаемого с помощью <tt>%files -f</tt>, директиву <tt>%defattr</tt> со значением макроса <tt>%_defattr</tt>.
Таким образом, ручное указание <tt>%defattr</tt> является излишним.


== <tt>%changelog</tt> ==
== <tt>%changelog</tt> ==
{{Main|Руководство по написанию changelog}}

Версия от 16:00, 19 октября 2008

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Заголовок spec-а

Summary

Значение тэга Summary должно начинаться с заглавной буквы. В конце Summary не должно быть точки.

Group

Указанная группа должна находиться в списке групп, известном RPM. Этот список располагается в файле /usr/lib/rpm/GROUPS, находящемся в пакете rpm.

Patch

Рекомендуемое именование патчей:

  • NAME-VERSION-ORIGIN-WHAT.patch, где
    • NAME и VERSION — имя и версия пакета, для которого сделан патч,
    • ORIGIN — аббревиатура источников патча (обычно дистрибутивов),
    • WHAT — краткое описание патча.

Если патч образован из нескольких частей, полученных из разных источников, ORIGIN должен включать аббревиатуры всех источников. Аббревиатура ALT Linux / Sisyphus — alt. Для патчей, полученных на основе системы контроля версий, ORIGIN должен включать в себя дату или номер ревизии.

В описании патча рекомендуется пользоваться следующими сокращениями:

  • makefile — патчи, затрагивающие исключительно Makefile*,
  • bound — проверки на границы (буфера, целых чисел и т. д.),
  • config — патчи, затрагивающие исключительно конфигурационные файлы,
  • configure — патчи, затрагивающие исключительно configure*,
  • doc — патчи, затрагивающие исключительно документацию,
  • fixes — кумулятивные патчи/исправления по надёжности и/или безопасности,
  • format — патчи на использование форматирования строк (типа printf),
  • install — патчи на выполнение make install непривилегированным пользователем,
  • linux — патчи для портирования По на Linux,
  • man — патчи, затрагивающие исключительно man-страницы,
  • texinfo — патчи, затрагивающие исключительно документацию в формате texinfo,
  • tmp — патчи, предназначенные для решения различных вопросов, связанных с временными файлами,
  • vitmp — патчи для поддержки vitmp(1)
  • warnings — патчи, исправляющие предупреждения, выданные компилятором

Requires, PreReq

При наличии логических зависимостей между пакетами внутри одного spec-файла, пакетная зависимость между ними должна включать полную версию пакета, например так:

Requires: %name = %epoch:%version-%release

BuildRoot

Тэг BuildRoot бесполезен для RPM из Sisyphus: обработку BuildRoot RPM производит самостоятельно.

BuildHost

Новый опциональный тэг в Sisyphus RPM. Позволяет переопределить имя сборочного хоста. По умолчанию используется, как и в остальных версиях RPM, результат вызова uname(2).

%package

%description

%prep

%build

%install

%clean

Sisyphus RPM автоматически очищает BuildRoot пакета (с помощью макроса %clean_buildroot). Таким образом, ручная очистка BuildRoot является ненужной (а точнее - вредной, поскольку повышает вероятность ошибки).

Если секция %clean пуста, то рекомендуется вообще не включать её в spec-файл.

%pre

%post

%preun

%postun

%triggerpostun

%files

В отличие от других веток RPM, Sisyphus RPM автоматически подставляет в начало каждой секции %files и в начало каждого файла, включаемого с помощью %files -f, директиву %defattr со значением макроса %_defattr.

Таким образом, ручное указание %defattr является излишним.

%changelog