Разбор спека пакета с модулем apache2: различия между версиями
(Первая версия) |
Нет описания правки |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
При создании пакетов с модулями {{pkg|apache2}} рекомендуется использовать следующие шаблоны<ref name="min_apache2_evr">Шаблоны спеков рассчитаны на сборку и взаимодействие с компонентами {{pkg|apache2}} более новыми чем {{pkg|apache2-2.2.22-alt15}} (в {{pkg|apache2-2.2.22-alt16}} были изменены список подпакетов и их зависимости).</ref>: | При создании пакетов с модулями {{pkg|apache2}} рекомендуется использовать следующие шаблоны<ref name="min_apache2_evr">Шаблоны спеков рассчитаны на сборку и взаимодействие с компонентами {{pkg|apache2}} более новыми чем {{pkg|apache2-2.2.22-alt15}} (в {{pkg|apache2-2.2.22-alt16}} были изменены список подпакетов и их зависимости).</ref>: | ||
* [http://git.altlinux.org/people/solo/public/?p=specs.git;a=blob;f=sample.spec;h=065b3a9a5fa0a851f9f70ace8c2ebe05e7482665;hb=ALT/apache2/mod {{path|sample.spec}}], находящийся в бранче [http://git.altlinux.org/people/solo/public/?p=specs.git;a=shortlog;h=refs/heads/ALT/apache2/mod ALT/apache2/mod] репозитория [http://git.altlinux.org/people/solo/public/specs.git specs.git]; | * [http://git.altlinux.org/people/solo/public/?p=specs.git;a=blob;f=sample.spec;h=065b3a9a5fa0a851f9f70ace8c2ebe05e7482665;hb=ALT/apache2/mod {{path|sample.spec}}], находящийся в бранче [http://git.altlinux.org/people/solo/public/?p=specs.git;a=shortlog;h=refs/heads/ALT/apache2/mod ALT/apache2/mod] репозитория [http://git.altlinux.org/people/solo/public/specs.git specs.git]; | ||
Строка 19: | Строка 17: | ||
Requires: %apache2_libaprutil_name >= %apache2_libaprutil_evr | Requires: %apache2_libaprutil_name >= %apache2_libaprutil_evr | ||
Requires: %apache2_libapr_name >= %apache2_libapr_evr | Requires: %apache2_libapr_name >= %apache2_libapr_evr | ||
(Если модуль линкуется с {{pkg|libaprutil1}} и/или {{pkg| | (Если модуль линкуется с {{pkg|libaprutil1}} и/или {{pkg|libapr}}, то соответствующий <code>Requires</code> можно опустить.) | ||
Прошу обратить внимание на макросы: | Прошу обратить внимание на макросы: | ||
;<code>%apache2_mmn</code>:Возвращает MMN<ref name="mmn"/> пакета {{pkg|apache2}} используемого при сборке. Определён в {{pkg|rpm-build-apache2}}<ref>Начиная от {{pkg|rpm-build-apache2-2.2.22-alt16}}</ref>. | ;<code>%apache2_mmn</code>:Возвращает MMN<ref name="mmn"/> пакета {{pkg|apache2}} используемого при сборке. Определён в {{pkg|rpm-build-apache2}}<ref>Начиная от {{pkg|rpm-build-apache2-2.2.22-alt16}}</ref>. | ||
Строка 63: | Строка 61: | ||
----- | ----- | ||
{{Category navigation|title= | {{Category navigation|title=SampleSpecs|category=SampleSpecs|sortkey={{SUBPAGENAME}}}} | ||
[[Категория:Sisyphus]] | [[Категория:Sisyphus]] |
Текущая версия от 21:21, 14 января 2025
При создании пакетов с модулями apache2 рекомендуется использовать следующие шаблоны[1]:
- sample.spec, находящийся в бранче ALT/apache2/mod репозитория specs.git;
- SampleSpecs/apache2module;
Зависимости модуля
Для корректной работы, от apache2 модулям необходимо:
- Совместимость интерфейса (ABI) предоставляемого httpd2 с вариантом использованным при сборке модуля;
- Отсутствие несовместимостей на уровне инфраструктуры apache2;
Зависимость на инфраструктуру задать достаточно просто:
Requires: %apache2_name-base > 2.2.22-alt15
С ABI httpd2 сложнее: модули недолинкованы и set-versions не работает для данного случая. Приходится опираться на:
В спеке это выглядит так:
Requires: %apache2_name-mmn = %apache2_mmn Requires: %apache2_libaprutil_name >= %apache2_libaprutil_evr Requires: %apache2_libapr_name >= %apache2_libapr_evr
(Если модуль линкуется с libaprutil1 и/или libapr, то соответствующий Requires
можно опустить.)
Прошу обратить внимание на макросы:
%apache2_mmn
- Возвращает MMN[2] пакета apache2 используемого при сборке. Определён в rpm-build-apache2[4].
%apache2_libaprutil_evr
и%apache2_libapr_evr
- Возвращают
%EVR
[3] пакетов libaprutil1 и libaprutil1 используемых при сборке. Определены в rpm-macros-apache2[5]. Из за использования макроса%get_SVR
, необходимо чтобы пакеты libaprutil1-devel и libapr1-devel запрашивались черезBuildRequires(pre)
(либо таким образом запрашивался пакет от их зависящий).
Сборочные зависимости модуля
Как правило достаточно:
BuildRequires(pre): apache2-devel > 2.2.22-alt15
При этом нужные версии apache2-httpd, rpm-build-apache2, rpm-macros-apache2, libaprutil1-devel и libapr1-devel будут установлены автоматически.
Файлы пакета
Типичный пакет с модулем apache2 в секции %files
содержит[6]:
# бинарники модулей %apache2_moduledir/* # загрузочные файлы (содержат LoadModule) %config(noreplace) %apache2_mods_available/*.load # конфиги модулей (могут отсутсвовать) %config(noreplace) %apache2_mods_available/*.conf # старт файлы (присутсвие _крайне_ желательно) %config(noreplace) %apache2_mods_start/*.conf # симлинки удаляемые вместе с пакетом %ghost %apache2_mods_enabled/*.load %ghost %apache2_mods_enabled/*.conf
Скрипты %post
/%preun
В связи с переходом на реконфигурацию и перезапуск httpd2 с помощью файлтриггеров, вариант использование для этих целей %post
/%preun
скриптов устарел, и его лучше не использовать: запуск a2chkconfig и/или перезапуск httpd2 в рамках rpm транзакции может приводить к ошибкам. Теперь реконфигурация и перезапуск httpd2 при установке/обновлении/удалении пакета с модулем apache2, выполняются автоматически, файлтриггерами, при условии присутствия в пакете файлов в каталогах:
%apache2_{mods,sites,ports,extra}_start
[7]- Выполняется запуск a2chkconfig с последующим перезапуском httpd2.
%apache2_basedir
[8] или%apache2_moduledir
[9]- Выполняется перезапуск httpd2.
Т. е. для типичного содержимого пакета с модулем httpd2 (см. Apache2/modulespec#Файлы пакета) запускать a2chkconfig и/или перезапускать httpd2 в скриптах %post
/%preun
вообще не надо[10].
Примеры спеков
- apache2-mod_auth_ahttpd-1.0.0-alt4.1
- apache2-mod_auth_ahttpd.spec
- apache2-mod_auth_mysql-3.0.0-alt7.1
- apache2-mod_auth_mysql.spec
- apache2-mod_dnssd-0.6-alt1
- apache2-mod_dnssd.spec
- mod_mono.git-1.9-alt1.1
- mod_mono.spec
Примечания
- ↑ Шаблоны спеков рассчитаны на сборку и взаимодействие с компонентами apache2 более новыми чем apache2-2.2.22-alt15 (в apache2-2.2.22-alt16 были изменены список подпакетов и их зависимости).
- ↑ 2,0 2,1 Module Magic Number (MMN)
- ↑ 3,0 3,1
%{?epoch:%epoch:}%{version}-%{release}
- ↑ Начиная от rpm-build-apache2-2.2.22-alt16
- ↑ Начиная от rpm-macros-apache2-3.12-alt1
- ↑ См. Apache2/Configs#Основные отличия от Debian
- ↑ /etc/httpd2/conf/{mods,sites,ports,extra}-start.d
- ↑ /etc/httpd2
- ↑ /usr/lib{,64}/apache2/modules
- ↑ Если автоматики не хватает, то инфицировать срабатывание файлтриггеров можно через макросы
%post_apache2_{rpma2chkconfigfile,rpmhttpdrestartfile}